@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,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.findExportsInImports = findExportsInImports;
|
|
4
|
+
exports.getExports = getExports;
|
|
4
5
|
const collectExportsAndImports_1 = require("../../utils/collectExportsAndImports");
|
|
5
6
|
function findExportsInImports(entrypoint, imports) {
|
|
6
7
|
const results = [];
|
|
@@ -21,7 +22,6 @@ function findExportsInImports(entrypoint, imports) {
|
|
|
21
22
|
}
|
|
22
23
|
return results;
|
|
23
24
|
}
|
|
24
|
-
exports.findExportsInImports = findExportsInImports;
|
|
25
25
|
function* getExports() {
|
|
26
26
|
const { entrypoint, services: { cache }, } = this;
|
|
27
27
|
const { loadedAndParsed } = entrypoint;
|
|
@@ -62,4 +62,3 @@ function* getExports() {
|
|
|
62
62
|
cache.add('exports', entrypoint.name, result);
|
|
63
63
|
return result;
|
|
64
64
|
}
|
|
65
|
-
exports.getExports = getExports;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
3
3
|
if (value !== null && value !== void 0) {
|
|
4
4
|
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
5
|
-
var dispose;
|
|
5
|
+
var dispose, inner;
|
|
6
6
|
if (async) {
|
|
7
7
|
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
8
8
|
dispose = value[Symbol.asyncDispose];
|
|
@@ -10,8 +10,10 @@ var __addDisposableResource = (this && this.__addDisposableResource) || function
|
|
|
10
10
|
if (dispose === void 0) {
|
|
11
11
|
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
12
12
|
dispose = value[Symbol.dispose];
|
|
13
|
+
if (async) inner = dispose;
|
|
13
14
|
}
|
|
14
15
|
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
16
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
15
17
|
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
16
18
|
}
|
|
17
19
|
else if (async) {
|
|
@@ -25,17 +27,22 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
25
27
|
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
26
28
|
env.hasError = true;
|
|
27
29
|
}
|
|
30
|
+
var r, s = 0;
|
|
28
31
|
function next() {
|
|
29
|
-
while (env.stack.
|
|
30
|
-
var rec = env.stack.pop();
|
|
32
|
+
while (r = env.stack.pop()) {
|
|
31
33
|
try {
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
35
|
+
if (r.dispose) {
|
|
36
|
+
var result = r.dispose.call(r.value);
|
|
37
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
38
|
+
}
|
|
39
|
+
else s |= 1;
|
|
34
40
|
}
|
|
35
41
|
catch (e) {
|
|
36
42
|
fail(e);
|
|
37
43
|
}
|
|
38
44
|
}
|
|
45
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
39
46
|
if (env.hasError) throw env.error;
|
|
40
47
|
}
|
|
41
48
|
return next();
|
|
@@ -45,7 +52,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
45
52
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
46
53
|
});
|
|
47
54
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
-
exports.processEntrypoint =
|
|
55
|
+
exports.processEntrypoint = processEntrypoint;
|
|
49
56
|
const AbortError_1 = require("../actions/AbortError");
|
|
50
57
|
/**
|
|
51
58
|
* The first stage of processing an entrypoint.
|
|
@@ -85,4 +92,3 @@ function* processEntrypoint() {
|
|
|
85
92
|
throw e;
|
|
86
93
|
}
|
|
87
94
|
}
|
|
88
|
-
exports.processEntrypoint = processEntrypoint;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.processImports =
|
|
3
|
+
exports.processImports = processImports;
|
|
4
4
|
/**
|
|
5
5
|
* Creates new entrypoints and emits processEntrypoint for each resolved import
|
|
6
6
|
*/
|
|
@@ -18,4 +18,3 @@ function* processImports() {
|
|
|
18
18
|
yield* this.getNext('processEntrypoint', nextEntrypoint, undefined, null);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
exports.processImports = processImports;
|
|
@@ -1,9 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.syncResolveImports = syncResolveImports;
|
|
4
|
+
exports.asyncResolveImports = asyncResolveImports;
|
|
4
5
|
/* eslint-disable no-continue,no-await-in-loop,require-yield */
|
|
5
6
|
const getFileIdx_1 = require("../../utils/getFileIdx");
|
|
6
7
|
const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
|
|
8
|
+
const importOverrides_1 = require("../../utils/importOverrides");
|
|
9
|
+
function applyImportOverrides(services, entrypoint, resolvedImports) {
|
|
10
|
+
const overrides = services.options.pluginOptions.importOverrides;
|
|
11
|
+
if (!overrides || Object.keys(overrides).length === 0) {
|
|
12
|
+
return resolvedImports;
|
|
13
|
+
}
|
|
14
|
+
const { root } = services.options;
|
|
15
|
+
const importer = entrypoint.name;
|
|
16
|
+
const stack = (0, Entrypoint_helpers_1.getStack)(entrypoint);
|
|
17
|
+
return resolvedImports.map((dependency) => {
|
|
18
|
+
const { key } = (0, importOverrides_1.toImportKey)({
|
|
19
|
+
source: dependency.source,
|
|
20
|
+
resolved: dependency.resolved,
|
|
21
|
+
root,
|
|
22
|
+
});
|
|
23
|
+
const override = overrides[key];
|
|
24
|
+
if (!override) {
|
|
25
|
+
return dependency;
|
|
26
|
+
}
|
|
27
|
+
const nextOnly = (0, importOverrides_1.applyImportOverrideToOnly)(dependency.only, override);
|
|
28
|
+
const nextResolved = override.mock
|
|
29
|
+
? (0, importOverrides_1.resolveMockSpecifier)({
|
|
30
|
+
mock: override.mock,
|
|
31
|
+
importer,
|
|
32
|
+
root,
|
|
33
|
+
stack,
|
|
34
|
+
})
|
|
35
|
+
: dependency.resolved;
|
|
36
|
+
return {
|
|
37
|
+
...dependency,
|
|
38
|
+
only: nextOnly,
|
|
39
|
+
resolved: nextResolved,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
7
43
|
function emitDependency(emitter, entrypoint, imports) {
|
|
8
44
|
emitter.single({
|
|
9
45
|
type: 'dependency',
|
|
@@ -52,11 +88,11 @@ function* syncResolveImports(resolve) {
|
|
|
52
88
|
resolved,
|
|
53
89
|
};
|
|
54
90
|
});
|
|
55
|
-
const
|
|
91
|
+
const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
|
|
92
|
+
const filteredImports = filterUnresolved(entrypoint, overriddenImports);
|
|
56
93
|
emitDependency(eventEmitter, entrypoint, filteredImports);
|
|
57
94
|
return filteredImports;
|
|
58
95
|
}
|
|
59
|
-
exports.syncResolveImports = syncResolveImports;
|
|
60
96
|
/**
|
|
61
97
|
* Asynchronously resolves specified imports with a provided resolver.
|
|
62
98
|
*/
|
|
@@ -117,8 +153,8 @@ async function* asyncResolveImports(resolve) {
|
|
|
117
153
|
return resolveTask;
|
|
118
154
|
}));
|
|
119
155
|
log('resolved %d imports', resolvedImports.length);
|
|
120
|
-
const
|
|
156
|
+
const overriddenImports = applyImportOverrides(this.services, entrypoint, resolvedImports);
|
|
157
|
+
const filteredImports = filterUnresolved(entrypoint, overriddenImports);
|
|
121
158
|
emitDependency(eventEmitter, entrypoint, filteredImports);
|
|
122
159
|
return filteredImports;
|
|
123
160
|
}
|
|
124
|
-
exports.asyncResolveImports = asyncResolveImports;
|
|
@@ -7,7 +7,7 @@ type PrepareCodeFn = (services: Services, item: Entrypoint, originalAst: File) =
|
|
|
7
7
|
imports: Map<string, string[]> | null,
|
|
8
8
|
metadata: WYWTransformMetadata | null
|
|
9
9
|
];
|
|
10
|
-
export declare const prepareCode: (services: Services, item: Entrypoint, originalAst: File) =>
|
|
10
|
+
export declare const prepareCode: (services: Services, item: Entrypoint, originalAst: File) => ReturnType<PrepareCodeFn>;
|
|
11
11
|
export declare function internalTransform(this: ITransformAction, prepareFn: PrepareCodeFn): SyncScenarioForAction<ITransformAction>;
|
|
12
12
|
/**
|
|
13
13
|
* Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
6
|
+
exports.prepareCode = void 0;
|
|
7
|
+
exports.internalTransform = internalTransform;
|
|
8
|
+
exports.transform = transform;
|
|
4
9
|
const buildOptions_1 = require("../../options/buildOptions");
|
|
10
|
+
const dynamic_import_1 = __importDefault(require("../../plugins/dynamic-import"));
|
|
11
|
+
const preeval_1 = __importDefault(require("../../plugins/preeval"));
|
|
5
12
|
const TransformMetadata_1 = require("../../utils/TransformMetadata");
|
|
6
13
|
const getPluginKey_1 = require("../../utils/getPluginKey");
|
|
7
14
|
const EMPTY_FILE = '=== empty file ===';
|
|
@@ -14,10 +21,13 @@ function runPreevalStage(babel, evalConfig, pluginOptions, code, originalAst, ev
|
|
|
14
21
|
const plugins = [
|
|
15
22
|
...preShakePlugins,
|
|
16
23
|
[
|
|
17
|
-
|
|
18
|
-
{
|
|
24
|
+
preeval_1.default,
|
|
25
|
+
{
|
|
26
|
+
...pluginOptions,
|
|
27
|
+
eventEmitter,
|
|
28
|
+
},
|
|
19
29
|
],
|
|
20
|
-
|
|
30
|
+
dynamic_import_1.default,
|
|
21
31
|
...(evalConfig.plugins ?? []).filter((i) => !hasKeyInList(i, pluginOptions.highPriorityPlugins)),
|
|
22
32
|
];
|
|
23
33
|
const transformConfig = (0, buildOptions_1.buildOptions)({
|
|
@@ -53,6 +63,8 @@ const prepareCode = (services, item, originalAst) => {
|
|
|
53
63
|
onlyExports: only,
|
|
54
64
|
highPriorityPlugins: pluginOptions.highPriorityPlugins,
|
|
55
65
|
features: pluginOptions.features,
|
|
66
|
+
importOverrides: pluginOptions.importOverrides,
|
|
67
|
+
root: options.root,
|
|
56
68
|
};
|
|
57
69
|
const [, transformedCode, imports] = eventEmitter.perf('transform:evaluator', () => evaluator(evalConfig, preevalStageResult.ast, preevalStageResult.code, evaluatorConfig, babel));
|
|
58
70
|
log('[evaluator:end]');
|
|
@@ -103,7 +115,6 @@ function* internalTransform(prepareFn) {
|
|
|
103
115
|
metadata,
|
|
104
116
|
};
|
|
105
117
|
}
|
|
106
|
-
exports.internalTransform = internalTransform;
|
|
107
118
|
/**
|
|
108
119
|
* Prepares the code for evaluation. This includes removing dead and potentially unsafe code.
|
|
109
120
|
* Emits resolveImports and processImports events.
|
|
@@ -111,4 +122,3 @@ exports.internalTransform = internalTransform;
|
|
|
111
122
|
function transform() {
|
|
112
123
|
return internalTransform.call(this, exports.prepareCode);
|
|
113
124
|
}
|
|
114
|
-
exports.transform = transform;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.workflow =
|
|
3
|
+
exports.workflow = workflow;
|
|
4
4
|
const AbortError_1 = require("../actions/AbortError");
|
|
5
5
|
/**
|
|
6
6
|
* The entry point for file processing. Sequentially calls `processEntrypoint`,
|
|
@@ -74,4 +74,3 @@ function* workflow() {
|
|
|
74
74
|
sourceMap: collectStageResult.map,
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
exports.workflow = workflow;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadWywOptions =
|
|
3
|
+
exports.loadWywOptions = loadWywOptions;
|
|
4
4
|
const cosmiconfig_1 = require("cosmiconfig");
|
|
5
5
|
const shaker_1 = require("../../shaker");
|
|
6
6
|
const searchPlaces = [
|
|
@@ -23,11 +23,15 @@ const explorerSync = (0, cosmiconfig_1.cosmiconfigSync)('wyw-in-js', { searchPla
|
|
|
23
23
|
const cache = new WeakMap();
|
|
24
24
|
const defaultOverrides = {};
|
|
25
25
|
const nodeModulesRegExp = /[\\/]node_modules[\\/]/;
|
|
26
|
+
const defaultImportLoaders = {
|
|
27
|
+
raw: 'raw',
|
|
28
|
+
url: 'url',
|
|
29
|
+
};
|
|
26
30
|
function loadWywOptions(overrides = defaultOverrides) {
|
|
27
31
|
if (cache.has(overrides)) {
|
|
28
32
|
return cache.get(overrides);
|
|
29
33
|
}
|
|
30
|
-
const { configFile, ignore, rules, babelOptions = {}, ...rest } = overrides;
|
|
34
|
+
const { configFile, ignore, rules, babelOptions = {}, importLoaders: overridesImportLoaders, ...rest } = overrides;
|
|
31
35
|
const result =
|
|
32
36
|
// eslint-disable-next-line no-nested-ternary
|
|
33
37
|
configFile === false
|
|
@@ -43,6 +47,9 @@ function loadWywOptions(overrides = defaultOverrides) {
|
|
|
43
47
|
useBabelConfigs: true,
|
|
44
48
|
useWeakRefInEval: true,
|
|
45
49
|
};
|
|
50
|
+
const config = (result?.config ?? {});
|
|
51
|
+
const configImportLoaders = config.importLoaders;
|
|
52
|
+
const configFeatures = config.features;
|
|
46
53
|
const options = {
|
|
47
54
|
displayName: false,
|
|
48
55
|
evaluate: true,
|
|
@@ -70,15 +77,19 @@ function loadWywOptions(overrides = defaultOverrides) {
|
|
|
70
77
|
],
|
|
71
78
|
babelOptions,
|
|
72
79
|
highPriorityPlugins: ['module-resolver'],
|
|
73
|
-
...
|
|
80
|
+
...config,
|
|
74
81
|
...rest,
|
|
82
|
+
importLoaders: {
|
|
83
|
+
...defaultImportLoaders,
|
|
84
|
+
...(configImportLoaders ?? {}),
|
|
85
|
+
...(overridesImportLoaders ?? {}),
|
|
86
|
+
},
|
|
75
87
|
features: {
|
|
76
88
|
...defaultFeatures,
|
|
77
|
-
...(
|
|
89
|
+
...(configFeatures ?? {}),
|
|
78
90
|
...rest.features,
|
|
79
91
|
},
|
|
80
92
|
};
|
|
81
93
|
cache.set(overrides, options);
|
|
82
94
|
return options;
|
|
83
95
|
}
|
|
84
|
-
exports.loadWywOptions = loadWywOptions;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Services } from '../types';
|
|
2
2
|
type RequiredServices = 'options';
|
|
3
3
|
export type PartialServices = Partial<Omit<Services, RequiredServices>> & Pick<Services, RequiredServices>;
|
|
4
|
-
export declare const withDefaultServices: ({ babel, cache, eventEmitter, loadAndParseFn, log, options, }: PartialServices) => Services;
|
|
4
|
+
export declare const withDefaultServices: ({ babel, cache, emitWarning, eventEmitter, loadAndParseFn, log, options, }: PartialServices) => Services;
|
|
5
5
|
export {};
|
|
@@ -15,13 +15,23 @@ 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
36
|
exports.withDefaultServices = void 0;
|
|
27
37
|
const babelCore = __importStar(require("@babel/core"));
|
|
@@ -29,9 +39,10 @@ const cache_1 = require("../../cache");
|
|
|
29
39
|
const EventEmitter_1 = require("../../utils/EventEmitter");
|
|
30
40
|
const Entrypoint_helpers_1 = require("../Entrypoint.helpers");
|
|
31
41
|
const rootLog_1 = require("../rootLog");
|
|
32
|
-
const withDefaultServices = ({ babel = babelCore, cache = new cache_1.TransformCacheCollection(), eventEmitter = EventEmitter_1.EventEmitter.dummy, loadAndParseFn = Entrypoint_helpers_1.loadAndParse, log = rootLog_1.rootLog, options, }) => ({
|
|
42
|
+
const withDefaultServices = ({ babel = babelCore, cache = new cache_1.TransformCacheCollection(), emitWarning, eventEmitter = EventEmitter_1.EventEmitter.dummy, loadAndParseFn = Entrypoint_helpers_1.loadAndParse, log = rootLog_1.rootLog, options, }) => ({
|
|
33
43
|
babel,
|
|
34
44
|
cache,
|
|
45
|
+
emitWarning,
|
|
35
46
|
eventEmitter,
|
|
36
47
|
loadAndParseFn,
|
|
37
48
|
log,
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isStaticallyEvaluatableModule = isStaticallyEvaluatableModule;
|
|
4
|
+
const types_1 = require("@babel/types");
|
|
5
|
+
function isTypeOnlyImport(statement) {
|
|
6
|
+
if (statement.importKind === 'type') {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
return statement.specifiers.every((specifier) => (0, types_1.isImportSpecifier)(specifier) && specifier.importKind === 'type');
|
|
10
|
+
}
|
|
11
|
+
function isTypeOnlyReExport(statement) {
|
|
12
|
+
if (!statement.source) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return statement.exportKind === 'type';
|
|
16
|
+
}
|
|
17
|
+
function unwrapExpression(expr) {
|
|
18
|
+
let current = expr;
|
|
19
|
+
for (;;) {
|
|
20
|
+
if ((0, types_1.isTSAsExpression)(current)) {
|
|
21
|
+
current = current.expression;
|
|
22
|
+
// eslint-disable-next-line no-continue
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if ((0, types_1.isTSSatisfiesExpression)(current)) {
|
|
26
|
+
current = current.expression;
|
|
27
|
+
// eslint-disable-next-line no-continue
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if ((0, types_1.isTSNonNullExpression)(current)) {
|
|
31
|
+
current = current.expression;
|
|
32
|
+
// eslint-disable-next-line no-continue
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if ((0, types_1.isTSInstantiationExpression)(current)) {
|
|
36
|
+
current = current.expression;
|
|
37
|
+
// eslint-disable-next-line no-continue
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if ((0, types_1.isParenthesizedExpression)(current)) {
|
|
41
|
+
current = current.expression;
|
|
42
|
+
// eslint-disable-next-line no-continue
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
return current;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function isSafeExpression(expr) {
|
|
49
|
+
const unwrapped = unwrapExpression(expr);
|
|
50
|
+
if ((0, types_1.isStringLiteral)(unwrapped) ||
|
|
51
|
+
(0, types_1.isNumericLiteral)(unwrapped) ||
|
|
52
|
+
(0, types_1.isBooleanLiteral)(unwrapped) ||
|
|
53
|
+
(0, types_1.isNullLiteral)(unwrapped) ||
|
|
54
|
+
(0, types_1.isBigIntLiteral)(unwrapped)) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
if ((0, types_1.isArrowFunctionExpression)(unwrapped) || (0, types_1.isFunctionExpression)(unwrapped)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if ((0, types_1.isIdentifier)(unwrapped)) {
|
|
61
|
+
return (unwrapped.name === 'undefined' ||
|
|
62
|
+
unwrapped.name === 'NaN' ||
|
|
63
|
+
unwrapped.name === 'Infinity');
|
|
64
|
+
}
|
|
65
|
+
if ((0, types_1.isTemplateLiteral)(unwrapped)) {
|
|
66
|
+
return unwrapped.expressions.every((item) => (0, types_1.isExpression)(item) && isSafeExpression(item));
|
|
67
|
+
}
|
|
68
|
+
if ((0, types_1.isUnaryExpression)(unwrapped)) {
|
|
69
|
+
return isSafeExpression(unwrapped.argument);
|
|
70
|
+
}
|
|
71
|
+
if ((0, types_1.isBinaryExpression)(unwrapped) || (0, types_1.isLogicalExpression)(unwrapped)) {
|
|
72
|
+
return (isSafeExpression(unwrapped.left) &&
|
|
73
|
+
isSafeExpression(unwrapped.right));
|
|
74
|
+
}
|
|
75
|
+
if ((0, types_1.isConditionalExpression)(unwrapped)) {
|
|
76
|
+
return (isSafeExpression(unwrapped.test) &&
|
|
77
|
+
isSafeExpression(unwrapped.consequent) &&
|
|
78
|
+
isSafeExpression(unwrapped.alternate));
|
|
79
|
+
}
|
|
80
|
+
if ((0, types_1.isArrayExpression)(unwrapped)) {
|
|
81
|
+
return unwrapped.elements.every((item) => {
|
|
82
|
+
if (item === null)
|
|
83
|
+
return true;
|
|
84
|
+
if ((0, types_1.isSpreadElement)(item))
|
|
85
|
+
return false;
|
|
86
|
+
return isSafeExpression(item);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if ((0, types_1.isObjectExpression)(unwrapped)) {
|
|
90
|
+
return unwrapped.properties.every((prop) => {
|
|
91
|
+
if ((0, types_1.isSpreadElement)(prop)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if ((0, types_1.isObjectMethod)(prop)) {
|
|
95
|
+
return !prop.computed;
|
|
96
|
+
}
|
|
97
|
+
if ((0, types_1.isObjectProperty)(prop)) {
|
|
98
|
+
if (prop.computed) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return (0, types_1.isExpression)(prop.value) && isSafeExpression(prop.value);
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if ((0, types_1.isCallExpression)(unwrapped) ||
|
|
107
|
+
(0, types_1.isNewExpression)(unwrapped) ||
|
|
108
|
+
(0, types_1.isTaggedTemplateExpression)(unwrapped) ||
|
|
109
|
+
(0, types_1.isAwaitExpression)(unwrapped) ||
|
|
110
|
+
(0, types_1.isYieldExpression)(unwrapped) ||
|
|
111
|
+
(0, types_1.isUpdateExpression)(unwrapped) ||
|
|
112
|
+
(0, types_1.isAssignmentExpression)(unwrapped) ||
|
|
113
|
+
(0, types_1.isSequenceExpression)(unwrapped)) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
function isSafeDeclarator(declarator) {
|
|
119
|
+
if (!declarator.init) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return isSafeExpression(declarator.init);
|
|
123
|
+
}
|
|
124
|
+
function isSafeVariableDeclaration(decl) {
|
|
125
|
+
return decl.declarations.every(isSafeDeclarator);
|
|
126
|
+
}
|
|
127
|
+
function isSafeStatement(statement) {
|
|
128
|
+
if ((0, types_1.isImportDeclaration)(statement)) {
|
|
129
|
+
return isTypeOnlyImport(statement);
|
|
130
|
+
}
|
|
131
|
+
if ((0, types_1.isExportAllDeclaration)(statement)) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if ((0, types_1.isExportNamedDeclaration)(statement)) {
|
|
135
|
+
if (!statement.declaration) {
|
|
136
|
+
return !statement.source || isTypeOnlyReExport(statement);
|
|
137
|
+
}
|
|
138
|
+
if ((0, types_1.isFunctionDeclaration)(statement.declaration)) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
if ((0, types_1.isClassDeclaration)(statement.declaration)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
if (statement.declaration.type === 'VariableDeclaration') {
|
|
145
|
+
return isSafeVariableDeclaration(statement.declaration);
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
if ((0, types_1.isExportDefaultDeclaration)(statement)) {
|
|
150
|
+
const decl = statement.declaration;
|
|
151
|
+
if ((0, types_1.isFunctionDeclaration)(decl) ||
|
|
152
|
+
(0, types_1.isFunctionExpression)(decl) ||
|
|
153
|
+
(0, types_1.isArrowFunctionExpression)(decl) ||
|
|
154
|
+
(0, types_1.isClassExpression)(decl) ||
|
|
155
|
+
(0, types_1.isClassDeclaration)(decl)) {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
return isSafeExpression(decl);
|
|
159
|
+
}
|
|
160
|
+
if (statement.type === 'VariableDeclaration') {
|
|
161
|
+
return isSafeVariableDeclaration(statement);
|
|
162
|
+
}
|
|
163
|
+
if ((0, types_1.isFunctionDeclaration)(statement)) {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
if ((0, types_1.isEmptyStatement)(statement)) {
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
if ((0, types_1.isExpressionStatement)(statement)) {
|
|
170
|
+
// Directives (like "use strict") are safe.
|
|
171
|
+
return (0, types_1.isStringLiteral)(statement.expression);
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
function isStaticallyEvaluatableModule(ast) {
|
|
176
|
+
return ast.program.body.every(isSafeStatement);
|
|
177
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="debug" />
|
|
2
1
|
import type { BabelFileResult } from '@babel/core';
|
|
3
2
|
import type { ValueCache } from '@wyw-in-js/processor-utils';
|
|
4
3
|
import type { Debugger, Artifact, StrictOptions } from '@wyw-in-js/shared';
|
|
@@ -14,6 +13,7 @@ import type { IExtracted, IWorkflowActionLinariaResult, IWorkflowActionNonLinari
|
|
|
14
13
|
export type Services = {
|
|
15
14
|
babel: Core;
|
|
16
15
|
cache: TransformCacheCollection;
|
|
16
|
+
emitWarning?: (message: string) => void;
|
|
17
17
|
eventEmitter: EventEmitter;
|
|
18
18
|
loadAndParseFn: LoadAndParseFn;
|
|
19
19
|
log: Debugger;
|
package/types/transform.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* - returns transformed code (without WYW template literals), generated CSS, source maps and babel metadata from transform step.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.transformSync = transformSync;
|
|
13
|
+
exports.transform = transform;
|
|
13
14
|
const shared_1 = require("@wyw-in-js/shared");
|
|
14
15
|
const loadWywOptions_1 = require("./transform/helpers/loadWywOptions");
|
|
15
16
|
const cache_1 = require("./cache");
|
|
@@ -18,6 +19,8 @@ const actionRunner_1 = require("./transform/actions/actionRunner");
|
|
|
18
19
|
const generators_1 = require("./transform/generators");
|
|
19
20
|
const resolveImports_1 = require("./transform/generators/resolveImports");
|
|
20
21
|
const withDefaultServices_1 = require("./transform/helpers/withDefaultServices");
|
|
22
|
+
const memoizedSyncResolve = new WeakMap();
|
|
23
|
+
const memoizedAsyncResolve = new WeakMap();
|
|
21
24
|
function transformSync(partialServices, originalCode, syncResolve, customHandlers = {}) {
|
|
22
25
|
const { options } = partialServices;
|
|
23
26
|
const pluginOptions = (0, loadWywOptions_1.loadWywOptions)(options.pluginOptions);
|
|
@@ -40,13 +43,16 @@ function transformSync(partialServices, originalCode, syncResolve, customHandler
|
|
|
40
43
|
};
|
|
41
44
|
}
|
|
42
45
|
const workflowAction = entrypoint.createAction('workflow', undefined);
|
|
46
|
+
if (!memoizedSyncResolve.has(syncResolve)) {
|
|
47
|
+
memoizedSyncResolve.set(syncResolve, function resolveImports() {
|
|
48
|
+
return resolveImports_1.syncResolveImports.call(this, syncResolve);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
43
51
|
try {
|
|
44
52
|
const result = (0, actionRunner_1.syncActionRunner)(workflowAction, {
|
|
45
53
|
...generators_1.baseHandlers,
|
|
46
54
|
...customHandlers,
|
|
47
|
-
resolveImports()
|
|
48
|
-
return resolveImports_1.syncResolveImports.call(this, syncResolve);
|
|
49
|
-
},
|
|
55
|
+
resolveImports: memoizedSyncResolve.get(syncResolve),
|
|
50
56
|
});
|
|
51
57
|
entrypoint.log('%s is ready', entrypoint.name);
|
|
52
58
|
return result;
|
|
@@ -64,7 +70,6 @@ function transformSync(partialServices, originalCode, syncResolve, customHandler
|
|
|
64
70
|
throw err;
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
|
-
exports.transformSync = transformSync;
|
|
68
73
|
async function transform(partialServices, originalCode, asyncResolve, customHandlers = {}) {
|
|
69
74
|
const { options } = partialServices;
|
|
70
75
|
const pluginOptions = (0, loadWywOptions_1.loadWywOptions)(options.pluginOptions);
|
|
@@ -95,13 +100,17 @@ async function transform(partialServices, originalCode, asyncResolve, customHand
|
|
|
95
100
|
};
|
|
96
101
|
}
|
|
97
102
|
const workflowAction = entrypoint.createAction('workflow', undefined);
|
|
103
|
+
if (!memoizedAsyncResolve.has(asyncResolve)) {
|
|
104
|
+
const resolveImports = function resolveImports() {
|
|
105
|
+
return resolveImports_1.asyncResolveImports.call(this, asyncResolve);
|
|
106
|
+
};
|
|
107
|
+
memoizedAsyncResolve.set(asyncResolve, resolveImports);
|
|
108
|
+
}
|
|
98
109
|
try {
|
|
99
110
|
const result = await (0, actionRunner_1.asyncActionRunner)(workflowAction, {
|
|
100
111
|
...generators_1.baseHandlers,
|
|
101
112
|
...customHandlers,
|
|
102
|
-
resolveImports()
|
|
103
|
-
return resolveImports_1.asyncResolveImports.call(this, asyncResolve);
|
|
104
|
-
},
|
|
113
|
+
resolveImports: memoizedAsyncResolve.get(asyncResolve),
|
|
105
114
|
});
|
|
106
115
|
entrypoint.log('%s is ready', entrypoint.name);
|
|
107
116
|
return result;
|
|
@@ -119,4 +128,3 @@ async function transform(partialServices, originalCode, asyncResolve, customHand
|
|
|
119
128
|
throw err;
|
|
120
129
|
}
|
|
121
130
|
}
|
|
122
|
-
exports.transform = transform;
|
package/types/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="debug" />
|
|
2
1
|
import type { BabelFile, PluginPass } from '@babel/core';
|
|
3
2
|
import type { NodePath } from '@babel/traverse';
|
|
4
3
|
import type { File, Program } from '@babel/types';
|
|
@@ -44,6 +43,7 @@ export type Result = {
|
|
|
44
43
|
export type Options = {
|
|
45
44
|
filename: string;
|
|
46
45
|
inputSourceMap?: RawSourceMap;
|
|
46
|
+
keepComments?: boolean | RegExp;
|
|
47
47
|
outputFilename?: string;
|
|
48
48
|
pluginOptions?: Partial<PluginOptions>;
|
|
49
49
|
prefixer?: boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getOrAddWywPreval = getOrAddWywPreval;
|
|
4
|
+
exports.addIdentifierToWywPreval = addIdentifierToWywPreval;
|
|
4
5
|
const createId_1 = require("./createId");
|
|
5
6
|
const scopeHelpers_1 = require("./scopeHelpers");
|
|
6
7
|
function getOrAddWywPreval(scope) {
|
|
@@ -58,7 +59,6 @@ function getOrAddWywPreval(scope) {
|
|
|
58
59
|
programPath.setData('__wywPreval', object);
|
|
59
60
|
return object;
|
|
60
61
|
}
|
|
61
|
-
exports.getOrAddWywPreval = getOrAddWywPreval;
|
|
62
62
|
function addIdentifierToWywPreval(scope, name) {
|
|
63
63
|
const rootScope = scope.getProgramParent();
|
|
64
64
|
const object = getOrAddWywPreval(rootScope);
|
|
@@ -72,4 +72,3 @@ function addIdentifierToWywPreval(scope, name) {
|
|
|
72
72
|
const [inserted] = object.pushContainer('properties', [newProperty]);
|
|
73
73
|
(0, scopeHelpers_1.reference)(inserted.get('value'));
|
|
74
74
|
}
|
|
75
|
-
exports.addIdentifierToWywPreval = addIdentifierToWywPreval;
|