@ts-bridge/cli
Advanced tools
+14
-1
@@ -10,2 +10,14 @@ # Changelog | ||
| ## [0.5.0] | ||
| ### Added | ||
| - Add shim for `require.resolve` ([#51](https://github.com/ts-bridge/ts-bridge/pull/51)) | ||
| - This will replace `require.resolve` calls with an ESM-compatible version | ||
| when targeting ESM. | ||
| ### Fixed | ||
| - Fix detection of global symbols ([#50](https://github.com/ts-bridge/ts-bridge/pull/50)) | ||
| ## [0.4.4] | ||
@@ -127,3 +139,4 @@ | ||
| [Unreleased]: https://github.com/ts-bridge/ts-bridge/compare/@ts-bridge/cli@0.4.4...HEAD | ||
| [Unreleased]: https://github.com/ts-bridge/ts-bridge/compare/@ts-bridge/cli@0.5.0...HEAD | ||
| [0.5.0]: https://github.com/ts-bridge/ts-bridge/compare/@ts-bridge/cli@0.4.4...@ts-bridge/cli@0.5.0 | ||
| [0.4.4]: https://github.com/ts-bridge/ts-bridge/compare/@ts-bridge/cli@0.4.3...@ts-bridge/cli@0.4.4 | ||
@@ -130,0 +143,0 @@ [0.4.3]: https://github.com/ts-bridge/ts-bridge/compare/@ts-bridge/cli@0.4.2...@ts-bridge/cli@0.4.3 |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EAEJ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,UAAU,MAAM,YAAY,CAAC;AAgBpC;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,WAUnB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,WAWnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,UAQb;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,GAClC,OAAO,CA2BT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,SAAS,GAAG,SAAS,EAAE,CA8GzB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,iCA4BxD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,iCAqBxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAW9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,wCAQ/B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,YAElC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,OAA+B,2BAqB/C"} | ||
| {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,MAAM,EACN,iBAAiB,EACjB,SAAS,EACT,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,UAAU,MAAM,YAAY,CAAC;AAgBpC;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,WAUnB;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,MAAM,WAiBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,UAQb;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CACxB,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,CAAC,eAAe,CAAC,GAClC,OAAO,CA2BT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,MAAM,GACb,SAAS,GAAG,SAAS,EAAE,CA8GzB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,iCA4BxD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,iCAqBxD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,qBAW9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,wCAQ/B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,YAElC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,aAAa,GAAE,OAA+B,2BAqB/C"} |
| import typescript from 'typescript'; | ||
| import { getCommonJsExports, isCommonJs } from './module-resolver.js'; | ||
| import { getIdentifierName } from './utils.js'; | ||
| import { getDefinedArray, getIdentifierName } from './utils.js'; | ||
| const { factory, isNamedExports, isNamedImports, isNamespaceImport, isStringLiteral, NodeFlags, SymbolFlags, SyntaxKind, } = typescript; | ||
@@ -30,3 +30,9 @@ /** | ||
| symbol.escapedName === `_${symbolName}`); | ||
| return foundSymbol?.parent?.escapedName === '__global'; | ||
| const declarations = getDefinedArray(foundSymbol?.getDeclarations()); | ||
| for (const declaration of declarations) { | ||
| if (declaration.getSourceFile().isDeclarationFile) { | ||
| return true; | ||
| } | ||
| } | ||
| return false; | ||
| } | ||
@@ -33,0 +39,0 @@ /** |
+6
-7
@@ -100,8 +100,5 @@ import type { Statement } from 'typescript'; | ||
| * ```ts | ||
| * import { createRequire } from 'module'; | ||
| * import { createRequire as $createRequire } from 'module'; | ||
| * | ||
| * function require(identifier: string, url: string): any { | ||
| * const fn = createRequire(url); | ||
| * return fn(identifier); | ||
| * } | ||
| * const $require = $createRequire(import.meta.url); | ||
| * ``` | ||
@@ -113,6 +110,8 @@ * | ||
| * | ||
| * @param functionName - The name of the function to create. | ||
| * @param functionName - The name of the require function to create. | ||
| * @param createRequireFunctionName - The name of the `createRequire` function | ||
| * to import. | ||
| * @returns The AST for the `require` function. | ||
| */ | ||
| export declare function getRequireHelperFunction(functionName: string): [Statement, Statement]; | ||
| export declare function getRequireHelperFunction(functionName: string, createRequireFunctionName: string): [Statement, Statement]; | ||
| //# sourceMappingURL=shims.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"shims.d.ts","sourceRoot":"","sources":["../src/shims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,kCAyDlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,kCA6H5D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,yBAAyB,EAAE,MAAM,EACjC,mBAAmB,EAAE,MAAM,kCAqC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,kCA+E5D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,GACnB,CAAC,SAAS,EAAE,SAAS,CAAC,CA0ExB"} | ||
| {"version":3,"file":"shims.d.ts","sourceRoot":"","sources":["../src/shims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,kCAyDlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,kCA6H5D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,yBAAyB,EAAE,MAAM,EACjC,mBAAmB,EAAE,MAAM,kCAqC5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,kCA+E5D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,yBAAyB,EAAE,MAAM,GAChC,CAAC,SAAS,EAAE,SAAS,CAAC,CA6CxB"} |
+12
-17
@@ -156,8 +156,5 @@ import typescript from 'typescript'; | ||
| * ```ts | ||
| * import { createRequire } from 'module'; | ||
| * import { createRequire as $createRequire } from 'module'; | ||
| * | ||
| * function require(identifier: string, url: string): any { | ||
| * const fn = createRequire(url); | ||
| * return fn(identifier); | ||
| * } | ||
| * const $require = $createRequire(import.meta.url); | ||
| * ``` | ||
@@ -169,20 +166,18 @@ * | ||
| * | ||
| * @param functionName - The name of the function to create. | ||
| * @param functionName - The name of the require function to create. | ||
| * @param createRequireFunctionName - The name of the `createRequire` function | ||
| * to import. | ||
| * @returns The AST for the `require` function. | ||
| */ | ||
| export function getRequireHelperFunction(functionName) { | ||
| export function getRequireHelperFunction(functionName, createRequireFunctionName) { | ||
| return [ | ||
| factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([ | ||
| factory.createImportSpecifier(false, factory.createIdentifier('createRequire'), factory.createIdentifier(functionName)), | ||
| factory.createImportSpecifier(false, factory.createIdentifier('createRequire'), factory.createIdentifier(createRequireFunctionName)), | ||
| ])), factory.createStringLiteral('module'), undefined), | ||
| factory.createFunctionDeclaration(undefined, undefined, factory.createIdentifier('require'), undefined, [ | ||
| factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('identifier'), undefined, factory.createKeywordTypeNode(SyntaxKind.StringKeyword), undefined), | ||
| factory.createParameterDeclaration(undefined, undefined, factory.createIdentifier('url'), undefined, factory.createKeywordTypeNode(SyntaxKind.StringKeyword), undefined), | ||
| ], factory.createKeywordTypeNode(SyntaxKind.AnyKeyword), factory.createBlock([ | ||
| factory.createVariableStatement(undefined, factory.createVariableDeclarationList([ | ||
| factory.createVariableDeclaration(factory.createIdentifier('fn'), undefined, undefined, factory.createCallExpression(factory.createIdentifier(functionName), undefined, [factory.createIdentifier('url')])), | ||
| ], NodeFlags.Const)), | ||
| factory.createReturnStatement(factory.createCallExpression(factory.createIdentifier('fn'), undefined, [factory.createIdentifier('identifier')])), | ||
| ], true)), | ||
| factory.createVariableStatement(undefined, factory.createVariableDeclarationList([ | ||
| factory.createVariableDeclaration(factory.createIdentifier(functionName), undefined, undefined, factory.createCallExpression(factory.createIdentifier(createRequireFunctionName), undefined, [ | ||
| factory.createPropertyAccessExpression(factory.createMetaProperty(SyntaxKind.ImportKeyword, factory.createIdentifier('meta')), factory.createIdentifier('url')), | ||
| ])), | ||
| ], NodeFlags.Const)), | ||
| ]; | ||
| } |
@@ -187,10 +187,7 @@ import { evaluateModule, getVirtualEnvironment } from '@ts-bridge/test-utils'; | ||
| it('returns the `require` helper function', () => { | ||
| const ast = getRequireHelperFunction('createRequire'); | ||
| const ast = getRequireHelperFunction('require', 'createRequire'); | ||
| expect(compile(ast)).toMatchInlineSnapshot(` | ||
| ""use strict"; | ||
| import { createRequire as createRequire } from "module"; | ||
| function require(identifier, url) { | ||
| const fn = createRequire(url); | ||
| return fn(identifier); | ||
| } | ||
| const require = createRequire(import.meta.url); | ||
| " | ||
@@ -203,3 +200,3 @@ `); | ||
| const code = ` | ||
| ${compile(getRequireHelperFunction('createRequire'))} | ||
| ${compile(getRequireHelperFunction('require', 'createRequire'))} | ||
| export { require }; | ||
@@ -206,0 +203,0 @@ `; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"} |
+13
-2
@@ -253,2 +253,3 @@ import typescript from 'typescript'; | ||
| let insertShim = false; | ||
| const requireFunctionName = getUniqueIdentifier(typeChecker, sourceFile, 'require'); | ||
| const createRequireFunctionName = getUniqueIdentifier(typeChecker, sourceFile, 'createRequire'); | ||
@@ -262,4 +263,14 @@ const visitor = (node) => { | ||
| insertShim = true; | ||
| return factory.createCallExpression(factory.createIdentifier('require'), undefined, [node.arguments[0], getImportMetaUrl()]); | ||
| return factory.createCallExpression(factory.createIdentifier(requireFunctionName), undefined, [node.arguments[0]]); | ||
| } | ||
| if (isCallExpression(node) && | ||
| isPropertyAccessExpression(node.expression) && | ||
| isIdentifier(node.expression.expression) && | ||
| node.expression.expression.text === 'require' && | ||
| node.expression.name.text === 'resolve' && | ||
| isGlobal(typeChecker, node, 'require') && | ||
| node.arguments[0]) { | ||
| insertShim = true; | ||
| return factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier(requireFunctionName), 'resolve'), undefined, [node.arguments[0]]); | ||
| } | ||
| return visitEachChild(node, visitor, context); | ||
@@ -270,3 +281,3 @@ }; | ||
| return factory.updateSourceFile(modifiedSourceFile, [ | ||
| ...getRequireHelperFunction(createRequireFunctionName), | ||
| ...getRequireHelperFunction(requireFunctionName, createRequireFunctionName), | ||
| ...modifiedSourceFile.statements, | ||
@@ -273,0 +284,0 @@ ]); |
@@ -508,7 +508,4 @@ import { getFixture } from '@ts-bridge/test-utils'; | ||
| "import { createRequire as $createRequire } from "module"; | ||
| function require(identifier, url) { | ||
| const fn = $createRequire(url); | ||
| return fn(identifier); | ||
| } | ||
| const { builtinModules } = require('module', import.meta.url); | ||
| const $require = $createRequire(import.meta.url); | ||
| const { builtinModules } = $require('module'); | ||
| console.log(builtinModules); | ||
@@ -518,2 +515,10 @@ " | ||
| }); | ||
| it('adds a shim when using `require.resolve`', async () => { | ||
| expect(files['require-resolve.js']).toMatchInlineSnapshot(` | ||
| "import { createRequire as $createRequire } from "module"; | ||
| const $require = $createRequire(import.meta.url); | ||
| console.log($require.resolve('path/to/file.js')); | ||
| " | ||
| `); | ||
| }); | ||
| it('does not add a shim when `require` refers to a variable in scope', async () => { | ||
@@ -520,0 +525,0 @@ expect(files['require-in-scope.js']).toMatchInlineSnapshot(` |
+1
-1
| { | ||
| "name": "@ts-bridge/cli", | ||
| "version": "0.4.4", | ||
| "version": "0.5.0", | ||
| "description": "Bridge the gap between ES modules and CommonJS modules with an easy-to-use alternative to `tsc`.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
296501
0.41%6555
0.2%33
-5.71%