From 18dd95757bedb2d5e83e92d8fc056b3a84f68d4e Mon Sep 17 00:00:00 2001 From: George Fu Date: Tue, 24 Sep 2024 14:02:12 -0400 Subject: [PATCH] fix(core): add compatibility redirect for submodule types (#1415) --- .changeset/modern-pumpkins-yell.md | 5 +++++ packages/core/.gitignore | 1 + packages/core/cbor.d.ts | 7 +++++++ packages/core/package.json | 5 +++-- packages/core/scripts/lint.js | 21 ++++++++++++++++++++- 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 .changeset/modern-pumpkins-yell.md create mode 100644 packages/core/cbor.d.ts diff --git a/.changeset/modern-pumpkins-yell.md b/.changeset/modern-pumpkins-yell.md new file mode 100644 index 00000000000..38b5ee6956b --- /dev/null +++ b/.changeset/modern-pumpkins-yell.md @@ -0,0 +1,5 @@ +--- +"@smithy/core": patch +--- + +add compatibility types redirect diff --git a/packages/core/.gitignore b/packages/core/.gitignore index 3d1714c9806..8bb2369d66e 100644 --- a/packages/core/.gitignore +++ b/packages/core/.gitignore @@ -6,3 +6,4 @@ *.tgz *.log package-lock.json +!*.d.ts \ No newline at end of file diff --git a/packages/core/cbor.d.ts b/packages/core/cbor.d.ts new file mode 100644 index 00000000000..c44b7074ca5 --- /dev/null +++ b/packages/core/cbor.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/cbor" { + export * from "@smithy/core/dist-types/submodules/cbor/index.d"; +} diff --git a/packages/core/package.json b/packages/core/package.json index 8b7eaad9eff..9581ca747b0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -68,8 +68,9 @@ } }, "files": [ - "dist-*/**", - "./cbor.js" + "./cbor.d.ts", + "./cbor.js", + "dist-*/**" ], "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/core", "repository": { diff --git a/packages/core/scripts/lint.js b/packages/core/scripts/lint.js index 2a47a91921b..2eea0d15522 100644 --- a/packages/core/scripts/lint.js +++ b/packages/core/scripts/lint.js @@ -28,9 +28,11 @@ for (const submodule of submodules) { }; fs.writeFileSync(path.join(root, "package.json"), JSON.stringify(pkgJson, null, 2) + "\n"); } - if (!pkgJson.files.includes(`./${submodule}.js`)) { + if (!pkgJson.files.includes(`./${submodule}.js`) || !pkgJson.files.includes(`./${submodule}.d.ts`)) { pkgJson.files.push(`./${submodule}.js`); + pkgJson.files.push(`./${submodule}.d.ts`); errors.push(`package.json files array missing ${submodule}.js compatibility redirect file.`); + pkgJson.files = [...new Set(pkgJson.files)].sort(); fs.writeFileSync(path.join(root, "package.json"), JSON.stringify(pkgJson, null, 2) + "\n"); } // tsconfig metadata. @@ -54,6 +56,23 @@ for (const submodule of submodules) { * This is a compatibility redirect for contexts that do not understand package.json exports field. */ module.exports = require("./dist-cjs/submodules/${submodule}/index.js"); +` + ); + } + // compatibility types file. + const compatibilityTypesFile = path.join(root, `${submodule}.d.ts`); + if (!fs.existsSync(compatibilityTypesFile)) { + errors.push(`${submodule} is missing compatibility types file in the package root folder.`); + fs.writeFileSync( + compatibilityTypesFile, + ` +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/${submodule}" { + export * from "@smithy/core/dist-types/submodules/${submodule}/index.d"; +} ` ); }