@jsenv/core 40.3.2 → 40.4.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/dist/build/browserslist_index/browserslist_index.js +4951 -0
- package/dist/build/build.js +228 -83
- package/dist/build/jsenv_core_node_modules.js +709 -0
- package/dist/build/jsenv_core_packages.js +10915 -0
- package/dist/start_build_server/jsenv_core_node_modules.js +685 -0
- package/dist/start_build_server/jsenv_core_packages.js +1550 -0
- package/dist/start_build_server/start_build_server.js +2 -9
- package/dist/start_dev_server/jsenv_core_node_modules.js +685 -0
- package/dist/start_dev_server/jsenv_core_packages.js +6185 -0
- package/dist/start_dev_server/start_dev_server.js +109 -75
- package/package.json +20 -20
- package/src/build/build.js +79 -0
- package/src/build/build_specifier_manager.js +2 -2
- package/src/build/build_urls_generator.js +42 -5
- package/src/kitchen/errors.js +6 -1
- package/src/kitchen/kitchen.js +95 -7
- package/src/plugins/package_side_effects/jsenv_plugin_package_side_effects.js +5 -65
- package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +0 -112
- package/dist/babel_helpers/AwaitValue/AwaitValue.js +0 -3
- package/dist/babel_helpers/OverloadYield/OverloadYield.js +0 -11
- package/dist/babel_helpers/applyDecoratedDescriptor/applyDecoratedDescriptor.js +0 -32
- package/dist/babel_helpers/applyDecs/applyDecs.js +0 -813
- package/dist/babel_helpers/applyDecs2203/applyDecs2203.js +0 -635
- package/dist/babel_helpers/applyDecs2203R/applyDecs2203R.js +0 -654
- package/dist/babel_helpers/applyDecs2301/applyDecs2301.js +0 -721
- package/dist/babel_helpers/applyDecs2305/applyDecs2305.js +0 -531
- package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +0 -7
- package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +0 -4
- package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
- package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +0 -9
- package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -55
- package/dist/babel_helpers/asyncIterator/asyncIterator.js +0 -68
- package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +0 -34
- package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
- package/dist/babel_helpers/callSuper/callSuper.js +0 -25
- package/dist/babel_helpers/checkInRHS/checkInRHS.js +0 -11
- package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -23
- package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
- package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
- package/dist/babel_helpers/classCallCheck/classCallCheck.js +0 -5
- package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -8
- package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -11
- package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -13
- package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +0 -6
- package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
- package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
- package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
- package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
- package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
- package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
- package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
- package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -13
- package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
- package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -10
- package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
- package/dist/babel_helpers/construct/construct.js +0 -20
- package/dist/babel_helpers/createClass/createClass.js +0 -17
- package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -61
- package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -24
- package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +0 -50
- package/dist/babel_helpers/createSuper/createSuper.js +0 -22
- package/dist/babel_helpers/decorate/decorate.js +0 -488
- package/dist/babel_helpers/defaults/defaults.js +0 -11
- package/dist/babel_helpers/defineAccessor/defineAccessor.js +0 -6
- package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
- package/dist/babel_helpers/defineProperty/defineProperty.js +0 -21
- package/dist/babel_helpers/dispose/dispose.js +0 -45
- package/dist/babel_helpers/extends/extends.js +0 -14
- package/dist/babel_helpers/get/get.js +0 -19
- package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +0 -4
- package/dist/babel_helpers/identity/identity.js +0 -3
- package/dist/babel_helpers/importDeferProxy/importDeferProxy.js +0 -31
- package/dist/babel_helpers/inherits/inherits.js +0 -19
- package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +0 -7
- package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +0 -12
- package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +0 -6
- package/dist/babel_helpers/instanceof/instanceof.js +0 -10
- package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +0 -3
- package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +0 -47
- package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +0 -9
- package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -19
- package/dist/babel_helpers/iterableToArray/iterableToArray.js +0 -7
- package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +0 -54
- package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -16
- package/dist/babel_helpers/jsx/jsx.js +0 -50
- package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +0 -10
- package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +0 -5
- package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +0 -5
- package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +0 -5
- package/dist/babel_helpers/nullishReceiverError/nullishReceiverError.js +0 -3
- package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
- package/dist/babel_helpers/objectSpread/objectSpread.js +0 -23
- package/dist/babel_helpers/objectSpread2/objectSpread2.js +0 -43
- package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +0 -19
- package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
- package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +0 -12
- package/dist/babel_helpers/readOnlyError/readOnlyError.js +0 -4
- package/dist/babel_helpers/regeneratorRuntime/regeneratorRuntime.js +0 -698
- package/dist/babel_helpers/set/set.js +0 -47
- package/dist/babel_helpers/setFunctionName/setFunctionName.js +0 -19
- package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +0 -7
- package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
- package/dist/babel_helpers/slicedToArray/slicedToArray.js +0 -10
- package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
- package/dist/babel_helpers/superPropBase/superPropBase.js +0 -10
- package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
- package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
- package/dist/babel_helpers/tdz/tdz.js +0 -4
- package/dist/babel_helpers/temporalRef/temporalRef.js +0 -6
- package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +0 -3
- package/dist/babel_helpers/toArray/toArray.js +0 -10
- package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +0 -10
- package/dist/babel_helpers/toPrimitive/toPrimitive.js +0 -14
- package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +0 -10
- package/dist/babel_helpers/typeof/typeof.js +0 -15
- package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
- package/dist/babel_helpers/using/using.js +0 -23
- package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
- package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +0 -30
- package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +0 -79
- package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +0 -3
- package/dist/jsenv_core_node_modules.js +0 -2045
- package/dist/jsenv_core_packages.js +0 -23833
package/src/kitchen/kitchen.js
CHANGED
|
@@ -20,10 +20,9 @@ import { createUrlGraph } from "./url_graph/url_graph.js";
|
|
|
20
20
|
import { createUrlInfoTransformer } from "./url_graph/url_info_transformations.js";
|
|
21
21
|
import { urlSpecifierEncoding } from "./url_graph/url_specifier_encoding.js";
|
|
22
22
|
|
|
23
|
-
const inlineContentClientFileUrl =
|
|
23
|
+
const inlineContentClientFileUrl = import.meta.resolve(
|
|
24
24
|
"./client/inline_content.js",
|
|
25
|
-
|
|
26
|
-
).href;
|
|
25
|
+
);
|
|
27
26
|
|
|
28
27
|
export const createKitchen = ({
|
|
29
28
|
name,
|
|
@@ -32,12 +31,14 @@ export const createKitchen = ({
|
|
|
32
31
|
|
|
33
32
|
rootDirectoryUrl,
|
|
34
33
|
mainFilePath,
|
|
35
|
-
ignore,
|
|
36
|
-
ignoreProtocol = "remove",
|
|
37
|
-
supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
|
|
38
34
|
dev = false,
|
|
39
35
|
build = false,
|
|
40
36
|
runtimeCompat,
|
|
37
|
+
|
|
38
|
+
ignore,
|
|
39
|
+
ignoreProtocol = "remove",
|
|
40
|
+
supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
|
|
41
|
+
|
|
41
42
|
// during dev/test clientRuntimeCompat is a single runtime
|
|
42
43
|
// during build clientRuntimeCompat is runtimeCompat
|
|
43
44
|
clientRuntimeCompat = runtimeCompat,
|
|
@@ -50,12 +51,17 @@ export const createKitchen = ({
|
|
|
50
51
|
outDirectoryUrl,
|
|
51
52
|
initialContext = {},
|
|
52
53
|
packageDirectory,
|
|
54
|
+
packageDependencies,
|
|
53
55
|
}) => {
|
|
54
56
|
const logger = createLogger({ logLevel });
|
|
55
57
|
|
|
56
58
|
const nodeRuntimeEnabled = Object.keys(runtimeCompat).includes("node");
|
|
57
59
|
const packageConditions = [nodeRuntimeEnabled ? "node" : "browser", "import"];
|
|
58
60
|
|
|
61
|
+
if (packageDependencies === "auto") {
|
|
62
|
+
packageDependencies = build && nodeRuntimeEnabled ? "ignore" : "include";
|
|
63
|
+
}
|
|
64
|
+
|
|
59
65
|
const kitchen = {
|
|
60
66
|
context: {
|
|
61
67
|
...initialContext,
|
|
@@ -125,6 +131,82 @@ export const createKitchen = ({
|
|
|
125
131
|
const protocolIsSupported = supportedProtocols.includes(protocol);
|
|
126
132
|
return !protocolIsSupported;
|
|
127
133
|
};
|
|
134
|
+
const isIgnoredBecauseInPackageDependencies = (() => {
|
|
135
|
+
if (packageDependencies === undefined) {
|
|
136
|
+
return FUNCTION_RETURNING_FALSE;
|
|
137
|
+
}
|
|
138
|
+
if (packageDependencies === "include") {
|
|
139
|
+
return FUNCTION_RETURNING_FALSE;
|
|
140
|
+
}
|
|
141
|
+
if (!packageDirectory.url) {
|
|
142
|
+
return FUNCTION_RETURNING_FALSE;
|
|
143
|
+
}
|
|
144
|
+
const rootPackageJSON = packageDirectory.read(packageDirectory.url);
|
|
145
|
+
if (!rootPackageJSON) {
|
|
146
|
+
return FUNCTION_RETURNING_FALSE;
|
|
147
|
+
}
|
|
148
|
+
const { dependencies = {}, optionalDependencies = {} } = rootPackageJSON;
|
|
149
|
+
const dependencyKeys = Object.keys(dependencies);
|
|
150
|
+
const optionalDependencyKeys = Object.keys(optionalDependencies);
|
|
151
|
+
const dependencySet = new Set([
|
|
152
|
+
...dependencyKeys,
|
|
153
|
+
...optionalDependencyKeys,
|
|
154
|
+
]);
|
|
155
|
+
if (dependencySet.size === 0) {
|
|
156
|
+
return FUNCTION_RETURNING_FALSE;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
let getEffect;
|
|
160
|
+
if (packageDependencies === "ignore") {
|
|
161
|
+
getEffect = (dependencyName) => {
|
|
162
|
+
if (!dependencySet.has(dependencyName)) {
|
|
163
|
+
return "include";
|
|
164
|
+
}
|
|
165
|
+
return "ignore";
|
|
166
|
+
};
|
|
167
|
+
} else if (typeof packageDependencies === "object") {
|
|
168
|
+
let defaultEffect = "ignore";
|
|
169
|
+
const dependencyEffectMap = new Map();
|
|
170
|
+
for (const dependencyKey of Object.keys(packageDependencies)) {
|
|
171
|
+
const dependencyEffect = packageDependencies[dependencyKey];
|
|
172
|
+
if (dependencyKey === "*") {
|
|
173
|
+
defaultEffect = dependencyEffect;
|
|
174
|
+
} else {
|
|
175
|
+
dependencyEffectMap.set(dependencyKey, dependencyEffect);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
getEffect = (dependencyName) => {
|
|
179
|
+
if (!dependencySet.has(dependencyName)) {
|
|
180
|
+
return "include";
|
|
181
|
+
}
|
|
182
|
+
const dependencyEffect = packageDependencies[dependencyName];
|
|
183
|
+
if (dependencyEffect) {
|
|
184
|
+
return dependencyEffect;
|
|
185
|
+
}
|
|
186
|
+
return defaultEffect;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
return (url) => {
|
|
190
|
+
if (!url.startsWith("file:")) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const packageDirectoryUrl = packageDirectory.find(url);
|
|
194
|
+
if (!packageDirectoryUrl) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
const packageJSON = packageDirectory.read(packageDirectoryUrl);
|
|
198
|
+
const name = packageJSON?.name;
|
|
199
|
+
if (!name) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
const effect = getEffect(name);
|
|
203
|
+
if (effect !== "ignore") {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
};
|
|
208
|
+
})();
|
|
209
|
+
|
|
128
210
|
let isIgnoredByParam = () => false;
|
|
129
211
|
if (ignore) {
|
|
130
212
|
const associations = URL_META.resolveAssociations(
|
|
@@ -144,7 +226,11 @@ export const createKitchen = ({
|
|
|
144
226
|
};
|
|
145
227
|
}
|
|
146
228
|
const isIgnored = (url) => {
|
|
147
|
-
return
|
|
229
|
+
return (
|
|
230
|
+
isIgnoredByProtocol(url) ||
|
|
231
|
+
isIgnoredByParam(url) ||
|
|
232
|
+
isIgnoredBecauseInPackageDependencies(url)
|
|
233
|
+
);
|
|
148
234
|
};
|
|
149
235
|
const resolveReference = (reference) => {
|
|
150
236
|
const setReferenceUrl = (referenceUrl) => {
|
|
@@ -635,6 +721,8 @@ ${urlInfo.firstReference.trace.message}`;
|
|
|
635
721
|
return kitchen;
|
|
636
722
|
};
|
|
637
723
|
|
|
724
|
+
const FUNCTION_RETURNING_FALSE = () => false;
|
|
725
|
+
|
|
638
726
|
const debounceCook = (cook) => {
|
|
639
727
|
const pendingDishes = new Map();
|
|
640
728
|
return async (urlInfo, context) => {
|
|
@@ -11,10 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import { updateJsonFileSync } from "@jsenv/filesystem";
|
|
15
14
|
import { isSpecifierForNodeBuiltin } from "@jsenv/node-esm-resolution/src/node_builtin_specifiers.js";
|
|
16
15
|
import { URL_META } from "@jsenv/url-meta";
|
|
17
|
-
import { urlIsInsideOf, urlToRelativeUrl } from "@jsenv/urls";
|
|
18
16
|
|
|
19
17
|
export const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
20
18
|
if (!packageDirectory.url) {
|
|
@@ -29,29 +27,6 @@ export const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
29
27
|
return [];
|
|
30
28
|
}
|
|
31
29
|
|
|
32
|
-
const normalizeSideEffectFileUrl = (url) => {
|
|
33
|
-
const urlRelativeToPackage = urlToRelativeUrl(url, packageDirectory.url);
|
|
34
|
-
return urlRelativeToPackage[0] === "."
|
|
35
|
-
? urlRelativeToPackage
|
|
36
|
-
: `./${urlRelativeToPackage}`;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const updatePackageSideEffects = (sideEffectBuildFileUrls) => {
|
|
40
|
-
const packageJsonFileUrl = new URL("./package.json", packageDirectory.url)
|
|
41
|
-
.href;
|
|
42
|
-
const sideEffectRelativeUrlArray = [];
|
|
43
|
-
for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
|
|
44
|
-
sideEffectRelativeUrlArray.push(
|
|
45
|
-
normalizeSideEffectFileUrl(sideEffectBuildUrl),
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
updateJsonFileSync(packageJsonFileUrl, {
|
|
49
|
-
sideEffects: sideEffectRelativeUrlArray,
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const sideEffectBuildFileUrls = [];
|
|
54
|
-
|
|
55
30
|
const packageSideEffectsCacheMap = new Map();
|
|
56
31
|
const readSideEffectInfoFromClosestPackage = (urlInfo) => {
|
|
57
32
|
const closestPackageDirectoryUrl = urlInfo.packageDirectoryUrl;
|
|
@@ -177,51 +152,16 @@ export const jsenvPluginPackageSideEffects = ({ packageDirectory }) => {
|
|
|
177
152
|
return;
|
|
178
153
|
}
|
|
179
154
|
},
|
|
180
|
-
refineBuildUrlContent: (
|
|
155
|
+
refineBuildUrlContent: (
|
|
156
|
+
buildUrlInfo,
|
|
157
|
+
{ buildUrl, registerBuildSideEffectFile },
|
|
158
|
+
) => {
|
|
181
159
|
for (const sideEffect of buildUrlInfo.contentSideEffects) {
|
|
182
160
|
if (sideEffect.has) {
|
|
183
|
-
|
|
161
|
+
registerBuildSideEffectFile(buildUrl);
|
|
184
162
|
return;
|
|
185
163
|
}
|
|
186
164
|
}
|
|
187
165
|
},
|
|
188
|
-
refineBuild: (kitchen) => {
|
|
189
|
-
if (sideEffectBuildFileUrls.length === 0) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
if (sideEffects === false) {
|
|
193
|
-
updatePackageSideEffects(sideEffectBuildFileUrls);
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
const { buildDirectoryUrl } = kitchen.context;
|
|
197
|
-
const sideEffectFileUrlSet = new Set();
|
|
198
|
-
if (Array.isArray(sideEffects)) {
|
|
199
|
-
let packageNeedsUpdate = false;
|
|
200
|
-
for (const sideEffectFileRelativeUrl of sideEffects) {
|
|
201
|
-
const sideEffectFileUrl = new URL(
|
|
202
|
-
sideEffectFileRelativeUrl,
|
|
203
|
-
packageDirectory.url,
|
|
204
|
-
).href;
|
|
205
|
-
if (
|
|
206
|
-
urlIsInsideOf(sideEffectFileUrl, buildDirectoryUrl) &&
|
|
207
|
-
!sideEffectBuildFileUrls.includes(sideEffectFileUrl)
|
|
208
|
-
) {
|
|
209
|
-
packageNeedsUpdate = true;
|
|
210
|
-
} else {
|
|
211
|
-
sideEffectFileUrlSet.add(sideEffectFileUrl);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
for (const sideEffectBuildUrl of sideEffectBuildFileUrls) {
|
|
215
|
-
if (sideEffectFileUrlSet.has(sideEffectBuildUrl)) {
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
packageNeedsUpdate = true;
|
|
219
|
-
sideEffectFileUrlSet.add(sideEffectBuildUrl);
|
|
220
|
-
}
|
|
221
|
-
if (packageNeedsUpdate) {
|
|
222
|
-
updatePackageSideEffects(sideEffectFileUrlSet);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
166
|
};
|
|
227
167
|
};
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/* @minVersion 7.0.0-beta.0 */
|
|
2
|
-
|
|
3
|
-
import OverloadYield from "../OverloadYield/OverloadYield.js";
|
|
4
|
-
|
|
5
|
-
export default function AsyncGenerator(gen) {
|
|
6
|
-
var front, back;
|
|
7
|
-
|
|
8
|
-
function send(key, arg) {
|
|
9
|
-
return new Promise(function (resolve, reject) {
|
|
10
|
-
var request = {
|
|
11
|
-
key: key,
|
|
12
|
-
arg: arg,
|
|
13
|
-
resolve: resolve,
|
|
14
|
-
reject: reject,
|
|
15
|
-
next: null,
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
if (back) {
|
|
19
|
-
back = back.next = request;
|
|
20
|
-
} else {
|
|
21
|
-
front = back = request;
|
|
22
|
-
resume(key, arg);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function resume(key, arg) {
|
|
28
|
-
try {
|
|
29
|
-
var result = gen[key](arg);
|
|
30
|
-
var value = result.value;
|
|
31
|
-
var overloaded = value instanceof OverloadYield;
|
|
32
|
-
|
|
33
|
-
Promise.resolve(overloaded ? value.v : value).then(
|
|
34
|
-
function (arg) {
|
|
35
|
-
if (overloaded) {
|
|
36
|
-
// Overloaded yield requires calling into the generator twice:
|
|
37
|
-
// - first we get the iterator result wrapped in a promise
|
|
38
|
-
// (the gen[key](arg) call above)
|
|
39
|
-
// - then we await it (the Promise.resolve call above)
|
|
40
|
-
// - then we give the result back to the iterator, so that it can:
|
|
41
|
-
// * if it was an await, use its result
|
|
42
|
-
// * if it was a yield*, possibly return the `done: true` signal
|
|
43
|
-
// so that yield* knows that the iterator is finished.
|
|
44
|
-
// This needs to happen in the second call, because in the
|
|
45
|
-
// first one `done: true` was hidden in the promise and thus
|
|
46
|
-
// not visible to the (sync) yield*.
|
|
47
|
-
// The other part of this implementation is in asyncGeneratorDelegate.
|
|
48
|
-
var nextKey = key === "return" ? "return" : "next";
|
|
49
|
-
if (!value.k || arg.done) {
|
|
50
|
-
// await or end of yield*
|
|
51
|
-
return resume(nextKey, arg);
|
|
52
|
-
} else {
|
|
53
|
-
// yield*, not done
|
|
54
|
-
arg = gen[nextKey](arg).value;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
settle(result.done ? "return" : "normal", arg);
|
|
59
|
-
},
|
|
60
|
-
function (err) {
|
|
61
|
-
resume("throw", err);
|
|
62
|
-
},
|
|
63
|
-
);
|
|
64
|
-
} catch (err) {
|
|
65
|
-
settle("throw", err);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function settle(type, value) {
|
|
70
|
-
switch (type) {
|
|
71
|
-
case "return":
|
|
72
|
-
front.resolve({ value: value, done: true });
|
|
73
|
-
break;
|
|
74
|
-
case "throw":
|
|
75
|
-
front.reject(value);
|
|
76
|
-
break;
|
|
77
|
-
default:
|
|
78
|
-
front.resolve({ value: value, done: false });
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
front = front.next;
|
|
83
|
-
if (front) {
|
|
84
|
-
resume(front.key, front.arg);
|
|
85
|
-
} else {
|
|
86
|
-
back = null;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
this._invoke = send;
|
|
91
|
-
|
|
92
|
-
// Hide "return" method if generator return is not supported
|
|
93
|
-
if (typeof gen.return !== "function") {
|
|
94
|
-
this.return = undefined;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
AsyncGenerator.prototype[
|
|
99
|
-
(typeof Symbol === "function" && Symbol.asyncIterator) || "@@asyncIterator"
|
|
100
|
-
] = function () {
|
|
101
|
-
return this;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
AsyncGenerator.prototype.next = function (arg) {
|
|
105
|
-
return this._invoke("next", arg);
|
|
106
|
-
};
|
|
107
|
-
AsyncGenerator.prototype.throw = function (arg) {
|
|
108
|
-
return this._invoke("throw", arg);
|
|
109
|
-
};
|
|
110
|
-
AsyncGenerator.prototype.return = function (arg) {
|
|
111
|
-
return this._invoke("return", arg);
|
|
112
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
export default function _applyDecoratedDescriptor(
|
|
2
|
-
target,
|
|
3
|
-
property,
|
|
4
|
-
decorators,
|
|
5
|
-
descriptor,
|
|
6
|
-
context,
|
|
7
|
-
) {
|
|
8
|
-
var desc = {};
|
|
9
|
-
Object.keys(descriptor).forEach(function (key) {
|
|
10
|
-
desc[key] = descriptor[key];
|
|
11
|
-
});
|
|
12
|
-
desc.enumerable = !!desc.enumerable;
|
|
13
|
-
desc.configurable = !!desc.configurable;
|
|
14
|
-
if ("value" in desc || desc.initializer) {
|
|
15
|
-
desc.writable = true;
|
|
16
|
-
}
|
|
17
|
-
desc = decorators
|
|
18
|
-
.slice()
|
|
19
|
-
.reverse()
|
|
20
|
-
.reduce(function (desc, decorator) {
|
|
21
|
-
return decorator(target, property, desc) || desc;
|
|
22
|
-
}, desc);
|
|
23
|
-
if (context && desc.initializer !== void 0) {
|
|
24
|
-
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
|
|
25
|
-
desc.initializer = undefined;
|
|
26
|
-
}
|
|
27
|
-
if (desc.initializer === void 0) {
|
|
28
|
-
Object.defineProperty(target, property, desc);
|
|
29
|
-
desc = null;
|
|
30
|
-
}
|
|
31
|
-
return desc;
|
|
32
|
-
}
|