@wyw-in-js/transform 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/babel.js.map +1 -1
- package/esm/cache.js +15 -4
- package/esm/cache.js.map +1 -1
- package/esm/debug/fileReporter.js.map +1 -1
- package/esm/evaluators/index.js.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/module.js +174 -15
- package/esm/module.js.map +1 -1
- package/esm/options/buildOptions.js +123 -4
- package/esm/options/buildOptions.js.map +1 -1
- package/esm/options/buildOptions.test.js +41 -0
- package/esm/options/buildOptions.test.js.map +1 -0
- package/esm/options/loadBabelOptions.js.map +1 -1
- package/esm/plugins/babel-transform.js.map +1 -1
- package/esm/plugins/collector.js.map +1 -1
- package/esm/plugins/dynamic-import.js +35 -12
- package/esm/plugins/dynamic-import.js.map +1 -1
- package/esm/plugins/preeval.js +4 -0
- package/esm/plugins/preeval.js.map +1 -1
- package/esm/plugins/shaker.js +170 -23
- package/esm/plugins/shaker.js.map +1 -1
- package/esm/shaker.js +6 -3
- package/esm/shaker.js.map +1 -1
- package/esm/transform/BaseEntrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.helpers.js +105 -15
- package/esm/transform/Entrypoint.helpers.js.map +1 -1
- package/esm/transform/Entrypoint.js +13 -2
- package/esm/transform/Entrypoint.js.map +1 -1
- package/esm/transform/Entrypoint.types.js.map +1 -1
- package/esm/transform/EvaluatedEntrypoint.js.map +1 -1
- package/esm/transform/actions/AbortError.js.map +1 -1
- package/esm/transform/actions/BaseAction.js +5 -0
- package/esm/transform/actions/BaseAction.js.map +1 -1
- package/esm/transform/actions/UnprocessedEntrypointError.js.map +1 -1
- package/esm/transform/actions/actionRunner.js.map +1 -1
- package/esm/transform/actions/types.js.map +1 -1
- package/esm/transform/generators/baseProcessingHandlers.js.map +1 -1
- package/esm/transform/generators/collect.js.map +1 -1
- package/esm/transform/generators/createStylisPreprocessor.js +118 -2
- package/esm/transform/generators/createStylisPreprocessor.js.map +1 -1
- package/esm/transform/generators/evalFile.js.map +1 -1
- package/esm/transform/generators/explodeReexports.js +10 -10
- package/esm/transform/generators/explodeReexports.js.map +1 -1
- package/esm/transform/generators/extract.js.map +1 -1
- package/esm/transform/generators/getExports.js.map +1 -1
- package/esm/transform/generators/index.js.map +1 -1
- package/esm/transform/generators/processEntrypoint.js +5 -8
- package/esm/transform/generators/processEntrypoint.js.map +1 -1
- package/esm/transform/generators/processImports.js.map +1 -1
- package/esm/transform/generators/resolveImports.js +41 -2
- package/esm/transform/generators/resolveImports.js.map +1 -1
- package/esm/transform/generators/transform.js +7 -3
- package/esm/transform/generators/transform.js.map +1 -1
- package/esm/transform/generators/workflow.js.map +1 -1
- package/esm/transform/helpers/loadWywOptions.js +15 -2
- package/esm/transform/helpers/loadWywOptions.js.map +1 -1
- package/esm/transform/helpers/withDefaultServices.js +2 -0
- package/esm/transform/helpers/withDefaultServices.js.map +1 -1
- package/esm/transform/isStaticallyEvaluatableModule.js +153 -0
- package/esm/transform/isStaticallyEvaluatableModule.js.map +1 -0
- package/esm/transform/rootLog.js.map +1 -1
- package/esm/transform/types.js.map +1 -1
- package/esm/transform.js +15 -6
- package/esm/transform.js.map +1 -1
- package/esm/types.js.map +1 -1
- package/esm/utils/EventEmitter.js.map +1 -1
- package/esm/utils/ShakerMetadata.js.map +1 -1
- package/esm/utils/TransformMetadata.js.map +1 -1
- package/esm/utils/addIdentifierToWywPreval.js.map +1 -1
- package/esm/utils/collectExportsAndImports.js +97 -6
- package/esm/utils/collectExportsAndImports.js.map +1 -1
- package/esm/utils/collectTemplateDependencies.js +1 -1
- package/esm/utils/collectTemplateDependencies.js.map +1 -1
- package/esm/utils/createId.js.map +1 -1
- package/esm/utils/dispose-polyfill.js.map +1 -1
- package/esm/utils/findIdentifiers.js.map +1 -1
- package/esm/utils/getConstantStringValue.js +58 -0
- package/esm/utils/getConstantStringValue.js.map +1 -0
- package/esm/utils/getFileIdx.js.map +1 -1
- package/esm/utils/getMemberExpressionPropertyName.js +11 -0
- package/esm/utils/getMemberExpressionPropertyName.js.map +1 -0
- package/esm/utils/getPluginKey.js.map +1 -1
- package/esm/utils/getScope.js.map +1 -1
- package/esm/utils/getSource.js.map +1 -1
- package/esm/utils/getTagProcessor.js +34 -6
- package/esm/utils/getTagProcessor.js.map +1 -1
- package/esm/utils/getVisitorKeys.js.map +1 -1
- package/esm/utils/hasWywPreval.js.map +1 -1
- package/esm/utils/importOverrides.js +47 -0
- package/esm/utils/importOverrides.js.map +1 -0
- package/esm/utils/isExports.js.map +1 -1
- package/esm/utils/isGlobal.js.map +1 -1
- package/esm/utils/isNode.js.map +1 -1
- package/esm/utils/isNodePath.js.map +1 -1
- package/esm/utils/isNotNull.js.map +1 -1
- package/esm/utils/isRemoved.js.map +1 -1
- package/esm/utils/isRequire.js.map +1 -1
- package/esm/utils/isSerializable.js.map +1 -1
- package/esm/utils/isTypedNode.js.map +1 -1
- package/esm/utils/isUnnecessaryReactCall.js.map +1 -1
- package/esm/utils/parseRequest.js +29 -0
- package/esm/utils/parseRequest.js.map +1 -0
- package/esm/utils/peek.js.map +1 -1
- package/esm/utils/removeDangerousCode.js +32 -2
- package/esm/utils/removeDangerousCode.js.map +1 -1
- package/esm/utils/replaceImportMetaEnv.js +44 -0
- package/esm/utils/replaceImportMetaEnv.js.map +1 -0
- package/esm/utils/scopeHelpers.js.map +1 -1
- package/esm/utils/traversalCache.js.map +1 -1
- package/esm/utils/unwrapExpression.js +18 -0
- package/esm/utils/unwrapExpression.js.map +1 -0
- package/esm/utils/unwrapSequence.js.map +1 -1
- package/esm/utils/valueToLiteral.js.map +1 -1
- package/esm/utils/visitors/JSXElementsRemover.js.map +1 -1
- package/esm/vm/createVmContext.js +44 -0
- package/esm/vm/createVmContext.js.map +1 -1
- package/esm/vm/process.js.map +1 -1
- package/lib/babel.js.map +1 -1
- package/lib/cache.js +16 -5
- package/lib/cache.js.map +1 -1
- package/lib/debug/fileReporter.js +1 -1
- package/lib/debug/fileReporter.js.map +1 -1
- package/lib/evaluators/index.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/module.js +177 -16
- package/lib/module.js.map +1 -1
- package/lib/options/buildOptions.js +127 -6
- package/lib/options/buildOptions.js.map +1 -1
- package/lib/options/buildOptions.test.js +44 -0
- package/lib/options/buildOptions.test.js.map +1 -0
- package/lib/options/loadBabelOptions.js.map +1 -1
- package/lib/plugins/babel-transform.js.map +1 -1
- package/lib/plugins/collector.js.map +1 -1
- package/lib/plugins/dynamic-import.js +34 -12
- package/lib/plugins/dynamic-import.js.map +1 -1
- package/lib/plugins/preeval.js +4 -0
- package/lib/plugins/preeval.js.map +1 -1
- package/lib/plugins/shaker.js +172 -22
- package/lib/plugins/shaker.js.map +1 -1
- package/lib/shaker.js +8 -4
- package/lib/shaker.js.map +1 -1
- package/lib/transform/BaseEntrypoint.js.map +1 -1
- package/lib/transform/Entrypoint.helpers.js +106 -15
- package/lib/transform/Entrypoint.helpers.js.map +1 -1
- package/lib/transform/Entrypoint.js +13 -2
- package/lib/transform/Entrypoint.js.map +1 -1
- package/lib/transform/Entrypoint.types.js.map +1 -1
- package/lib/transform/EvaluatedEntrypoint.js.map +1 -1
- package/lib/transform/actions/AbortError.js.map +1 -1
- package/lib/transform/actions/BaseAction.js +5 -0
- package/lib/transform/actions/BaseAction.js.map +1 -1
- package/lib/transform/actions/UnprocessedEntrypointError.js.map +1 -1
- package/lib/transform/actions/actionRunner.js.map +1 -1
- package/lib/transform/actions/types.js.map +1 -1
- package/lib/transform/generators/baseProcessingHandlers.js.map +1 -1
- package/lib/transform/generators/collect.js.map +1 -1
- package/lib/transform/generators/createStylisPreprocessor.js +119 -3
- package/lib/transform/generators/createStylisPreprocessor.js.map +1 -1
- package/lib/transform/generators/evalFile.js +1 -1
- package/lib/transform/generators/evalFile.js.map +1 -1
- package/lib/transform/generators/explodeReexports.js +11 -11
- package/lib/transform/generators/explodeReexports.js.map +1 -1
- package/lib/transform/generators/extract.js.map +1 -1
- package/lib/transform/generators/getExports.js.map +1 -1
- package/lib/transform/generators/index.js.map +1 -1
- package/lib/transform/generators/processEntrypoint.js +5 -8
- package/lib/transform/generators/processEntrypoint.js.map +1 -1
- package/lib/transform/generators/processImports.js.map +1 -1
- package/lib/transform/generators/resolveImports.js +41 -2
- package/lib/transform/generators/resolveImports.js.map +1 -1
- package/lib/transform/generators/transform.js +8 -3
- package/lib/transform/generators/transform.js.map +1 -1
- package/lib/transform/generators/workflow.js.map +1 -1
- package/lib/transform/helpers/loadWywOptions.js +16 -2
- package/lib/transform/helpers/loadWywOptions.js.map +1 -1
- package/lib/transform/helpers/withDefaultServices.js +3 -2
- package/lib/transform/helpers/withDefaultServices.js.map +1 -1
- package/lib/transform/isStaticallyEvaluatableModule.js +159 -0
- package/lib/transform/isStaticallyEvaluatableModule.js.map +1 -0
- package/lib/transform/rootLog.js.map +1 -1
- package/lib/transform/types.js.map +1 -1
- package/lib/transform.js +15 -6
- package/lib/transform.js.map +1 -1
- package/lib/types.js.map +1 -1
- package/lib/utils/EventEmitter.js.map +1 -1
- package/lib/utils/ShakerMetadata.js.map +1 -1
- package/lib/utils/TransformMetadata.js.map +1 -1
- package/lib/utils/addIdentifierToWywPreval.js.map +1 -1
- package/lib/utils/collectExportsAndImports.js +97 -6
- package/lib/utils/collectExportsAndImports.js.map +1 -1
- package/lib/utils/collectTemplateDependencies.js +1 -1
- package/lib/utils/collectTemplateDependencies.js.map +1 -1
- package/lib/utils/createId.js.map +1 -1
- package/lib/utils/dispose-polyfill.js.map +1 -1
- package/lib/utils/findIdentifiers.js.map +1 -1
- package/lib/utils/getConstantStringValue.js +66 -0
- package/lib/utils/getConstantStringValue.js.map +1 -0
- package/lib/utils/getFileIdx.js.map +1 -1
- package/lib/utils/getMemberExpressionPropertyName.js +18 -0
- package/lib/utils/getMemberExpressionPropertyName.js.map +1 -0
- package/lib/utils/getPluginKey.js.map +1 -1
- package/lib/utils/getScope.js.map +1 -1
- package/lib/utils/getSource.js +1 -1
- package/lib/utils/getSource.js.map +1 -1
- package/lib/utils/getTagProcessor.js +33 -6
- package/lib/utils/getTagProcessor.js.map +1 -1
- package/lib/utils/getVisitorKeys.js.map +1 -1
- package/lib/utils/hasWywPreval.js.map +1 -1
- package/lib/utils/importOverrides.js +57 -0
- package/lib/utils/importOverrides.js.map +1 -0
- package/lib/utils/isExports.js.map +1 -1
- package/lib/utils/isGlobal.js.map +1 -1
- package/lib/utils/isNode.js.map +1 -1
- package/lib/utils/isNodePath.js.map +1 -1
- package/lib/utils/isNotNull.js.map +1 -1
- package/lib/utils/isRemoved.js.map +1 -1
- package/lib/utils/isRequire.js.map +1 -1
- package/lib/utils/isSerializable.js.map +1 -1
- package/lib/utils/isTypedNode.js.map +1 -1
- package/lib/utils/isUnnecessaryReactCall.js.map +1 -1
- package/lib/utils/parseRequest.js +37 -0
- package/lib/utils/parseRequest.js.map +1 -0
- package/lib/utils/peek.js.map +1 -1
- package/lib/utils/removeDangerousCode.js +32 -2
- package/lib/utils/removeDangerousCode.js.map +1 -1
- package/lib/utils/replaceImportMetaEnv.js +50 -0
- package/lib/utils/replaceImportMetaEnv.js.map +1 -0
- package/lib/utils/scopeHelpers.js.map +1 -1
- package/lib/utils/traversalCache.js.map +1 -1
- package/lib/utils/unwrapExpression.js +25 -0
- package/lib/utils/unwrapExpression.js.map +1 -0
- package/lib/utils/unwrapSequence.js.map +1 -1
- package/lib/utils/valueToLiteral.js.map +1 -1
- package/lib/utils/visitors/JSXElementsRemover.js.map +1 -1
- package/lib/vm/createVmContext.js +45 -2
- package/lib/vm/createVmContext.js.map +1 -1
- package/lib/vm/process.js.map +1 -1
- package/package.json +13 -15
- package/types/cache.d.ts +1 -1
- package/types/cache.js +15 -4
- package/types/evaluators/index.js +1 -1
- package/types/module.d.ts +1 -2
- package/types/module.js +189 -11
- package/types/options/buildOptions.d.ts +0 -1
- package/types/options/buildOptions.js +125 -9
- package/types/options/loadBabelOptions.js +1 -2
- package/types/plugins/babel-transform.js +1 -1
- package/types/plugins/collector.js +3 -3
- package/types/plugins/dynamic-import.js +38 -18
- package/types/plugins/preeval.js +5 -2
- package/types/plugins/shaker.d.ts +4 -1
- package/types/plugins/shaker.js +189 -24
- package/types/shaker.js +9 -3
- package/types/transform/BaseEntrypoint.d.ts +0 -1
- package/types/transform/Entrypoint.helpers.d.ts +0 -1
- package/types/transform/Entrypoint.helpers.js +122 -25
- package/types/transform/Entrypoint.js +14 -2
- package/types/transform/Entrypoint.types.d.ts +0 -1
- package/types/transform/EvaluatedEntrypoint.d.ts +0 -1
- package/types/transform/actions/BaseAction.d.ts +1 -1
- package/types/transform/actions/BaseAction.js +5 -0
- package/types/transform/actions/actionRunner.js +2 -3
- package/types/transform/generators/collect.js +1 -2
- package/types/transform/generators/createStylisPreprocessor.d.ts +0 -1
- package/types/transform/generators/createStylisPreprocessor.js +168 -13
- package/types/transform/generators/evalFile.js +1 -2
- package/types/transform/generators/explodeReexports.js +12 -15
- package/types/transform/generators/extract.js +1 -2
- package/types/transform/generators/getExports.js +2 -3
- package/types/transform/generators/processEntrypoint.js +13 -7
- package/types/transform/generators/processImports.js +1 -2
- package/types/transform/generators/resolveImports.js +41 -5
- package/types/transform/generators/transform.d.ts +1 -1
- package/types/transform/generators/transform.js +16 -6
- package/types/transform/generators/workflow.js +1 -2
- package/types/transform/helpers/loadWywOptions.js +16 -5
- package/types/transform/helpers/withDefaultServices.d.ts +1 -1
- package/types/transform/helpers/withDefaultServices.js +19 -8
- package/types/transform/isStaticallyEvaluatableModule.d.ts +2 -0
- package/types/transform/isStaticallyEvaluatableModule.js +177 -0
- package/types/transform/rootLog.d.ts +0 -1
- package/types/transform/types.d.ts +1 -1
- package/types/transform.js +17 -9
- package/types/types.d.ts +1 -1
- package/types/utils/addIdentifierToWywPreval.js +2 -3
- package/types/utils/collectExportsAndImports.js +102 -20
- package/types/utils/collectTemplateDependencies.js +3 -4
- package/types/utils/findIdentifiers.js +2 -3
- package/types/utils/getConstantStringValue.d.ts +2 -0
- package/types/utils/getConstantStringValue.js +94 -0
- package/types/utils/getFileIdx.js +1 -2
- package/types/utils/getMemberExpressionPropertyName.d.ts +2 -0
- package/types/utils/getMemberExpressionPropertyName.js +46 -0
- package/types/utils/getScope.js +1 -2
- package/types/utils/getTagProcessor.js +35 -9
- package/types/utils/getVisitorKeys.js +1 -2
- package/types/utils/hasWywPreval.js +1 -1
- package/types/utils/importOverrides.d.ts +19 -0
- package/types/utils/importOverrides.js +40 -0
- package/types/utils/isExports.js +1 -2
- package/types/utils/isNodePath.js +1 -2
- package/types/utils/isNotNull.js +1 -2
- package/types/utils/isRemoved.js +1 -2
- package/types/utils/isRequire.js +1 -2
- package/types/utils/isSerializable.js +1 -2
- package/types/utils/isUnnecessaryReactCall.js +1 -2
- package/types/utils/parseRequest.d.ts +7 -0
- package/types/utils/parseRequest.js +29 -0
- package/types/utils/removeDangerousCode.js +37 -2
- package/types/utils/replaceImportMetaEnv.d.ts +3 -0
- package/types/utils/replaceImportMetaEnv.js +39 -0
- package/types/utils/scopeHelpers.js +7 -8
- package/types/utils/traversalCache.d.ts +1 -1
- package/types/utils/unwrapExpression.d.ts +2 -0
- package/types/utils/unwrapExpression.js +57 -0
- package/types/utils/unwrapSequence.js +1 -2
- package/types/utils/valueToLiteral.js +1 -2
- package/types/utils/visitors/JSXElementsRemover.js +1 -2
- package/types/vm/createVmContext.d.ts +0 -1
- package/types/vm/createVmContext.js +68 -9
- package/types/vm/process.d.ts +0 -2
- package/LICENSE +0 -21
- package/esm/options/babel-merge.d.js +0 -2
- package/esm/options/babel-merge.d.js.map +0 -1
- package/lib/options/babel-merge.d.js +0 -2
- package/lib/options/babel-merge.d.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSerializable =
|
|
3
|
+
exports.isSerializable = isSerializable;
|
|
4
4
|
const shared_1 = require("@wyw-in-js/shared");
|
|
5
5
|
function isSerializable(o) {
|
|
6
6
|
if (Array.isArray(o)) {
|
|
@@ -15,4 +15,3 @@ function isSerializable(o) {
|
|
|
15
15
|
}
|
|
16
16
|
return (typeof o === 'string' || typeof o === 'number' || typeof o === 'boolean');
|
|
17
17
|
}
|
|
18
|
-
exports.isSerializable = isSerializable;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isUnnecessaryReactCall =
|
|
3
|
+
exports.isUnnecessaryReactCall = isUnnecessaryReactCall;
|
|
4
4
|
const collectExportsAndImports_1 = require("./collectExportsAndImports");
|
|
5
5
|
const getScope_1 = require("./getScope");
|
|
6
6
|
function getCallee(p) {
|
|
@@ -73,4 +73,3 @@ function isUnnecessaryReactCall(path) {
|
|
|
73
73
|
const { imports } = (0, collectExportsAndImports_1.collectExportsAndImports)(programPath);
|
|
74
74
|
return isJSXRuntime(path, imports) || isClassicReactRuntime(path, imports);
|
|
75
75
|
}
|
|
76
|
-
exports.isUnnecessaryReactCall = isUnnecessaryReactCall;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripQueryAndHash = exports.parseRequest = void 0;
|
|
4
|
+
const getFirstSuffixIndex = (request) => {
|
|
5
|
+
const queryIdx = request.indexOf('?');
|
|
6
|
+
const hashIdx = request.indexOf('#');
|
|
7
|
+
if (queryIdx === -1)
|
|
8
|
+
return hashIdx;
|
|
9
|
+
if (hashIdx === -1)
|
|
10
|
+
return queryIdx;
|
|
11
|
+
return Math.min(queryIdx, hashIdx);
|
|
12
|
+
};
|
|
13
|
+
const parseRequest = (request) => {
|
|
14
|
+
const firstSuffixIndex = getFirstSuffixIndex(request);
|
|
15
|
+
if (firstSuffixIndex === -1) {
|
|
16
|
+
return { filename: request, hash: '', query: '' };
|
|
17
|
+
}
|
|
18
|
+
const filename = request.slice(0, firstSuffixIndex);
|
|
19
|
+
const queryIdx = request.indexOf('?');
|
|
20
|
+
const hashIdx = request.indexOf('#');
|
|
21
|
+
const query = queryIdx === -1
|
|
22
|
+
? ''
|
|
23
|
+
: request.slice(queryIdx + 1, hashIdx !== -1 ? hashIdx : undefined);
|
|
24
|
+
const hash = hashIdx === -1 ? '' : request.slice(hashIdx + 1);
|
|
25
|
+
return { filename, hash, query };
|
|
26
|
+
};
|
|
27
|
+
exports.parseRequest = parseRequest;
|
|
28
|
+
const stripQueryAndHash = (request) => (0, exports.parseRequest)(request).filename;
|
|
29
|
+
exports.stripQueryAndHash = stripQueryAndHash;
|
|
@@ -42,6 +42,7 @@ const isBrowserGlobal = (id) => {
|
|
|
42
42
|
const isSSRCheckField = (id) => {
|
|
43
43
|
return ssrCheckFields.has(id.node.name) && isGlobal(id);
|
|
44
44
|
};
|
|
45
|
+
const promiseCallbackMethods = new Set(['then', 'catch', 'finally']);
|
|
45
46
|
const getPropertyName = (path) => {
|
|
46
47
|
if (path.isIdentifier()) {
|
|
47
48
|
return path.node.name;
|
|
@@ -51,6 +52,40 @@ const getPropertyName = (path) => {
|
|
|
51
52
|
}
|
|
52
53
|
return null;
|
|
53
54
|
};
|
|
55
|
+
const isPromiseCallbackArgument = (path, ref) => {
|
|
56
|
+
return path
|
|
57
|
+
.get('arguments')
|
|
58
|
+
.some((arg) => arg === ref || arg.isAncestor(ref));
|
|
59
|
+
};
|
|
60
|
+
const findPromiseCallbackOwner = (path) => {
|
|
61
|
+
const owner = path.findParent((parent) => {
|
|
62
|
+
if (parent.isNewExpression()) {
|
|
63
|
+
const callee = parent.get('callee');
|
|
64
|
+
return (callee.isIdentifier({ name: 'Promise' }) &&
|
|
65
|
+
isPromiseCallbackArgument(parent, path));
|
|
66
|
+
}
|
|
67
|
+
if (parent.isCallExpression()) {
|
|
68
|
+
const callee = parent.get('callee');
|
|
69
|
+
if (!callee.isMemberExpression())
|
|
70
|
+
return false;
|
|
71
|
+
const propName = getPropertyName(callee.get('property'));
|
|
72
|
+
return (propName !== null &&
|
|
73
|
+
promiseCallbackMethods.has(propName) &&
|
|
74
|
+
isPromiseCallbackArgument(parent, path));
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
});
|
|
78
|
+
return owner;
|
|
79
|
+
};
|
|
80
|
+
const removeForbiddenGlobal = (path) => {
|
|
81
|
+
const promiseOwner = findPromiseCallbackOwner(path);
|
|
82
|
+
if (promiseOwner) {
|
|
83
|
+
(0, scopeHelpers_1.removeWithRelated)([promiseOwner]);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
(0, scopeHelpers_1.removeWithRelated)([path]);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
54
89
|
const getImport = (path) => {
|
|
55
90
|
const programPath = path.findParent((p) => p.isProgram());
|
|
56
91
|
if (!programPath) {
|
|
@@ -237,11 +272,11 @@ const removeDangerousCode = (programPath, options) => {
|
|
|
237
272
|
// window.fetch will be handled by the windowScoped block below
|
|
238
273
|
return;
|
|
239
274
|
}
|
|
240
|
-
(
|
|
275
|
+
removeForbiddenGlobal(p);
|
|
241
276
|
return;
|
|
242
277
|
}
|
|
243
278
|
if (state.windowScoped.has(p.node.name)) {
|
|
244
|
-
(
|
|
279
|
+
removeForbiddenGlobal(p);
|
|
245
280
|
}
|
|
246
281
|
else if (isGlobal(p)) {
|
|
247
282
|
state.globals.push(p);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.replaceImportMetaEnv = replaceImportMetaEnv;
|
|
4
|
+
const IMPORT_META_ENV = '__wyw_import_meta_env';
|
|
5
|
+
const isRecord = (obj) => typeof obj === 'object' && obj !== null;
|
|
6
|
+
function isImportMeta(obj) {
|
|
7
|
+
if (!isRecord(obj)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
const { meta, property } = obj;
|
|
11
|
+
if (!isRecord(meta) || !isRecord(property)) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
return meta.name === 'import' && property.name === 'meta';
|
|
15
|
+
}
|
|
16
|
+
function isImportMetaEnv(node) {
|
|
17
|
+
const { computed, object, property } = node;
|
|
18
|
+
if (computed) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (!isImportMeta(object)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return property.type === 'Identifier' && property.name === 'env';
|
|
25
|
+
}
|
|
26
|
+
function replaceImportMetaEnv(programPath, t) {
|
|
27
|
+
programPath.traverse({
|
|
28
|
+
MemberExpression(path) {
|
|
29
|
+
if (isImportMetaEnv(path.node)) {
|
|
30
|
+
path.replaceWith(t.identifier(IMPORT_META_ENV));
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
OptionalMemberExpression(path) {
|
|
34
|
+
if (isImportMetaEnv(path.node)) {
|
|
35
|
+
path.replaceWith(t.identifier(IMPORT_META_ENV));
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
/* eslint-disable no-restricted-syntax */
|
|
3
3
|
/* eslint @typescript-eslint/no-use-before-define: ["error", { "functions": false }] */
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.
|
|
5
|
+
exports.reference = reference;
|
|
6
|
+
exports.dereference = dereference;
|
|
7
|
+
exports.referenceAll = referenceAll;
|
|
8
|
+
exports.findActionForNode = findActionForNode;
|
|
9
|
+
exports.applyAction = applyAction;
|
|
10
|
+
exports.mutate = mutate;
|
|
11
|
+
exports.removeWithRelated = removeWithRelated;
|
|
6
12
|
const types_1 = require("@babel/types");
|
|
7
13
|
const findIdentifiers_1 = require("./findIdentifiers");
|
|
8
14
|
const getScope_1 = require("./getScope");
|
|
@@ -41,7 +47,6 @@ function reference(path, referencePath = path, force = false) {
|
|
|
41
47
|
binding.referencePaths.push(referencePath ?? path);
|
|
42
48
|
binding.references = binding.referencePaths.length;
|
|
43
49
|
}
|
|
44
|
-
exports.reference = reference;
|
|
45
50
|
function isReferenced(binding) {
|
|
46
51
|
const { kind, referenced, referencePaths, path } = binding;
|
|
47
52
|
if (path.isFunctionExpression() &&
|
|
@@ -106,7 +111,6 @@ function dereference(path) {
|
|
|
106
111
|
nonTypeReferences.length + referencesInConstantViolations.length > 0;
|
|
107
112
|
return binding;
|
|
108
113
|
}
|
|
109
|
-
exports.dereference = dereference;
|
|
110
114
|
function dereferenceAll(path) {
|
|
111
115
|
return (0, findIdentifiers_1.findIdentifiers)([path])
|
|
112
116
|
.map((identifierPath) => dereference(identifierPath))
|
|
@@ -115,7 +119,6 @@ function dereferenceAll(path) {
|
|
|
115
119
|
function referenceAll(path) {
|
|
116
120
|
(0, findIdentifiers_1.findIdentifiers)([path]).forEach((identifierPath) => reference(identifierPath));
|
|
117
121
|
}
|
|
118
|
-
exports.referenceAll = referenceAll;
|
|
119
122
|
const deletingNodes = new WeakSet();
|
|
120
123
|
const isEmptyList = (list) => list.length === 0 || list.every((i) => deletingNodes.has(i));
|
|
121
124
|
const getPathFromAction = (action) => {
|
|
@@ -353,7 +356,6 @@ function findActionForNode(path) {
|
|
|
353
356
|
}
|
|
354
357
|
return ['remove', path];
|
|
355
358
|
}
|
|
356
|
-
exports.findActionForNode = findActionForNode;
|
|
357
359
|
// @babel/preset-typescript transpiles enums, but doesn't reference used identifiers.
|
|
358
360
|
function referenceEnums(program) {
|
|
359
361
|
/*
|
|
@@ -481,7 +483,6 @@ function applyAction(action) {
|
|
|
481
483
|
staticEvaluate(parent);
|
|
482
484
|
});
|
|
483
485
|
}
|
|
484
|
-
exports.applyAction = applyAction;
|
|
485
486
|
function removeWithRelated(paths) {
|
|
486
487
|
if (paths.length === 0)
|
|
487
488
|
return;
|
|
@@ -518,7 +519,6 @@ function removeWithRelated(paths) {
|
|
|
518
519
|
referencedIdentifiers = referenced;
|
|
519
520
|
}
|
|
520
521
|
}
|
|
521
|
-
exports.removeWithRelated = removeWithRelated;
|
|
522
522
|
function mutate(path, fn) {
|
|
523
523
|
const dereferenced = dereferenceAll(path);
|
|
524
524
|
const mutated = fn(path);
|
|
@@ -578,4 +578,3 @@ function mutate(path, fn) {
|
|
|
578
578
|
});
|
|
579
579
|
removeWithRelated(forDeleting);
|
|
580
580
|
}
|
|
581
|
-
exports.mutate = mutate;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NodePath } from '@babel/traverse';
|
|
2
2
|
import type { Node } from '@babel/types';
|
|
3
|
-
export declare const getTraversalCache: <TValue, TKey extends
|
|
3
|
+
export declare const getTraversalCache: <TValue, TKey extends NodePath | Node = NodePath>(path: NodePath, name: string) => WeakMap<TKey, TValue>;
|
|
4
4
|
export declare const invalidateTraversalCache: (path: NodePath) => void;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.unwrapExpression = unwrapExpression;
|
|
37
|
+
const t = __importStar(require("@babel/types"));
|
|
38
|
+
const unwrapOnce = (node) => {
|
|
39
|
+
if (t.isTSAsExpression(node))
|
|
40
|
+
return node.expression;
|
|
41
|
+
if (t.isTSTypeAssertion(node))
|
|
42
|
+
return node.expression;
|
|
43
|
+
if (t.isTSNonNullExpression(node))
|
|
44
|
+
return node.expression;
|
|
45
|
+
if (t.isParenthesizedExpression(node))
|
|
46
|
+
return node.expression;
|
|
47
|
+
return node;
|
|
48
|
+
};
|
|
49
|
+
function unwrapExpression(node) {
|
|
50
|
+
let current = node;
|
|
51
|
+
let next = unwrapOnce(current);
|
|
52
|
+
while (next !== current) {
|
|
53
|
+
current = next;
|
|
54
|
+
next = unwrapOnce(current);
|
|
55
|
+
}
|
|
56
|
+
return current;
|
|
57
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.unwrapSequence =
|
|
3
|
+
exports.unwrapSequence = unwrapSequence;
|
|
4
4
|
/**
|
|
5
5
|
* If expression is a sequence like `(a, b, c)`, returns `c`
|
|
6
6
|
* otherwise returns an original expression
|
|
@@ -14,4 +14,3 @@ function unwrapSequence(path) {
|
|
|
14
14
|
}
|
|
15
15
|
return path;
|
|
16
16
|
}
|
|
17
|
-
exports.unwrapSequence = unwrapSequence;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.valueToLiteral =
|
|
3
|
+
exports.valueToLiteral = valueToLiteral;
|
|
4
4
|
const getSource_1 = require("./getSource");
|
|
5
5
|
const isSerializable_1 = require("./isSerializable");
|
|
6
6
|
function valueToLiteral(value, ex) {
|
|
@@ -61,4 +61,3 @@ function valueToLiteral(value, ex) {
|
|
|
61
61
|
}
|
|
62
62
|
throw ex.buildCodeFrameError(`The expression evaluated to '${value}', which is probably a mistake. If you want it to be inserted into CSS, explicitly cast or transform the value to a string, e.g. - 'String(${(0, getSource_1.getSource)(ex)})'.`);
|
|
63
63
|
}
|
|
64
|
-
exports.valueToLiteral = valueToLiteral;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JSXElementsRemover =
|
|
3
|
+
exports.JSXElementsRemover = JSXElementsRemover;
|
|
4
4
|
const core_1 = require("@babel/core");
|
|
5
5
|
const getScope_1 = require("../getScope");
|
|
6
6
|
const scopeHelpers_1 = require("../scopeHelpers");
|
|
@@ -49,4 +49,3 @@ function JSXElementsRemover(path) {
|
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
exports.JSXElementsRemover = JSXElementsRemover;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import * as vm from 'vm';
|
|
3
2
|
import type { FeatureFlags, StrictOptions } from '@wyw-in-js/shared';
|
|
4
3
|
export declare function createVmContext(filename: string, features: FeatureFlags<'happyDOM'>, additionalContext: Partial<vm.Context>, overrideContext?: StrictOptions['overrideContext']): {
|
|
@@ -15,19 +15,75 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.createVmContext =
|
|
36
|
+
exports.createVmContext = createVmContext;
|
|
27
37
|
const vm = __importStar(require("vm"));
|
|
28
38
|
const shared_1 = require("@wyw-in-js/shared");
|
|
29
39
|
const process = __importStar(require("./process"));
|
|
30
40
|
const NOOP = () => { };
|
|
41
|
+
const IMPORT_META_ENV = '__wyw_import_meta_env';
|
|
42
|
+
let importMetaEnvWarned = false;
|
|
43
|
+
function createImportMetaEnvProxy() {
|
|
44
|
+
const target = Object.create(null);
|
|
45
|
+
const warnOnce = () => {
|
|
46
|
+
if (importMetaEnvWarned)
|
|
47
|
+
return;
|
|
48
|
+
importMetaEnvWarned = true;
|
|
49
|
+
// eslint-disable-next-line no-console
|
|
50
|
+
console.warn([
|
|
51
|
+
`[wyw-in-js] import.meta.env was accessed during build-time evaluation, but no env values were provided.`,
|
|
52
|
+
``,
|
|
53
|
+
`If you're using Vite, make sure @wyw-in-js/vite plugin is enabled (it injects Vite env for evaluation).`,
|
|
54
|
+
`Otherwise provide "__wyw_import_meta_env" via pluginOptions.overrideContext.`,
|
|
55
|
+
].join('\n'));
|
|
56
|
+
};
|
|
57
|
+
return new Proxy(target, {
|
|
58
|
+
get(obj, key) {
|
|
59
|
+
if (typeof key === 'symbol') {
|
|
60
|
+
return Reflect.get(obj, key);
|
|
61
|
+
}
|
|
62
|
+
warnOnce();
|
|
63
|
+
return obj[key];
|
|
64
|
+
},
|
|
65
|
+
has(obj, key) {
|
|
66
|
+
if (typeof key === 'symbol') {
|
|
67
|
+
return Reflect.has(obj, key);
|
|
68
|
+
}
|
|
69
|
+
warnOnce();
|
|
70
|
+
return Reflect.has(obj, key);
|
|
71
|
+
},
|
|
72
|
+
getOwnPropertyDescriptor(obj, key) {
|
|
73
|
+
return Reflect.getOwnPropertyDescriptor(obj, key);
|
|
74
|
+
},
|
|
75
|
+
ownKeys(obj) {
|
|
76
|
+
return Reflect.ownKeys(obj);
|
|
77
|
+
},
|
|
78
|
+
set(obj, key, value) {
|
|
79
|
+
if (typeof key === 'symbol') {
|
|
80
|
+
return Reflect.set(obj, key, value);
|
|
81
|
+
}
|
|
82
|
+
warnOnce();
|
|
83
|
+
return Reflect.set(obj, key, value);
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
31
87
|
function createWindow() {
|
|
32
88
|
const { Window, GlobalWindow } = require('happy-dom');
|
|
33
89
|
const HappyWindow = GlobalWindow || Window;
|
|
@@ -89,8 +145,12 @@ function createVmContext(filename, features, additionalContext, overrideContext
|
|
|
89
145
|
const { teardown, window } = isHappyDOMEnabled
|
|
90
146
|
? createHappyDOMWindow()
|
|
91
147
|
: createNothing();
|
|
148
|
+
const envContext = {
|
|
149
|
+
[IMPORT_META_ENV]: createImportMetaEnvProxy(),
|
|
150
|
+
};
|
|
92
151
|
const baseContext = createBaseContext(window, overrideContext({
|
|
93
152
|
__filename: filename,
|
|
153
|
+
...envContext,
|
|
94
154
|
...additionalContext,
|
|
95
155
|
}, filename));
|
|
96
156
|
const context = vm.createContext(baseContext);
|
|
@@ -99,4 +159,3 @@ function createVmContext(filename, features, additionalContext, overrideContext
|
|
|
99
159
|
teardown,
|
|
100
160
|
};
|
|
101
161
|
}
|
|
102
|
-
exports.createVmContext = createVmContext;
|
package/types/vm/process.d.ts
CHANGED
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2023 Anton Evzhakov
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"babel-merge.d.js","names":[],"sources":["../../src/options/babel-merge.d.ts"],"sourcesContent":["declare module 'babel-merge' {\n import type { TransformOptions } from '@babel/core';\n\n interface Options {\n clone?: boolean;\n customMerge?: (\n key: string,\n options?: Options\n ) => ((x: unknown, y: unknown) => unknown) | undefined;\n arrayMerge?(\n target: unknown[],\n source: unknown[],\n options?: Options\n ): unknown[];\n isMergeableObject?(value: object): boolean;\n }\n\n interface BabelMerge {\n (\n source?: TransformOptions,\n overrides?: TransformOptions,\n deepmergeOpts?: Options\n ): TransformOptions;\n all(\n values: (TransformOptions | undefined)[],\n deepmergeOpts?: Options\n ): TransformOptions;\n }\n\n const babelMerge: BabelMerge;\n\n export = babelMerge;\n}\n"],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"babel-merge.d.js","names":[],"sources":["../../src/options/babel-merge.d.ts"],"sourcesContent":["declare module 'babel-merge' {\n import type { TransformOptions } from '@babel/core';\n\n interface Options {\n clone?: boolean;\n customMerge?: (\n key: string,\n options?: Options\n ) => ((x: unknown, y: unknown) => unknown) | undefined;\n arrayMerge?(\n target: unknown[],\n source: unknown[],\n options?: Options\n ): unknown[];\n isMergeableObject?(value: object): boolean;\n }\n\n interface BabelMerge {\n (\n source?: TransformOptions,\n overrides?: TransformOptions,\n deepmergeOpts?: Options\n ): TransformOptions;\n all(\n values: (TransformOptions | undefined)[],\n deepmergeOpts?: Options\n ): TransformOptions;\n }\n\n const babelMerge: BabelMerge;\n\n export = babelMerge;\n}\n"],"mappings":""}
|