@typespec/compiler 0.61.0-dev.2 → 0.61.0-dev.21
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/manifest.js +2 -2
- package/dist/src/config/config-interpolation.d.ts.map +1 -1
- package/dist/src/config/config-interpolation.js +39 -11
- package/dist/src/config/config-interpolation.js.map +1 -1
- package/dist/src/config/config-to-options.d.ts +1 -0
- package/dist/src/config/config-to-options.d.ts.map +1 -1
- package/dist/src/config/config-to-options.js +45 -2
- package/dist/src/config/config-to-options.js.map +1 -1
- package/dist/src/core/binder.d.ts.map +1 -1
- package/dist/src/core/binder.js +7 -1
- package/dist/src/core/binder.js.map +1 -1
- package/dist/src/core/checker.d.ts.map +1 -1
- package/dist/src/core/checker.js +4 -34
- package/dist/src/core/checker.js.map +1 -1
- package/dist/src/core/cli/actions/compile/args.d.ts +2 -0
- package/dist/src/core/cli/actions/compile/args.d.ts.map +1 -1
- package/dist/src/core/cli/actions/compile/args.js.map +1 -1
- package/dist/src/core/cli/actions/compile/compile.d.ts +1 -4
- package/dist/src/core/cli/actions/compile/compile.d.ts.map +1 -1
- package/dist/src/core/cli/actions/compile/compile.js +26 -13
- package/dist/src/core/cli/actions/compile/compile.js.map +1 -1
- package/dist/src/core/diagnostic-creator.d.ts.map +1 -1
- package/dist/src/core/diagnostic-creator.js +5 -1
- package/dist/src/core/diagnostic-creator.js.map +1 -1
- package/dist/src/core/index.d.ts +1 -1
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/index.js +1 -1
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/core/js-marshaller.d.ts.map +1 -1
- package/dist/src/core/js-marshaller.js +16 -1
- package/dist/src/core/js-marshaller.js.map +1 -1
- package/dist/src/core/logger/console-sink.js +1 -1
- package/dist/src/core/logger/console-sink.js.map +1 -1
- package/dist/src/core/messages.d.ts +27 -12
- package/dist/src/core/messages.d.ts.map +1 -1
- package/dist/src/core/messages.js +9 -2
- package/dist/src/core/messages.js.map +1 -1
- package/dist/src/core/numeric.js +1 -1
- package/dist/src/core/numeric.js.map +1 -1
- package/dist/src/core/program.d.ts.map +1 -1
- package/dist/src/core/program.js +19 -38
- package/dist/src/core/program.js.map +1 -1
- package/dist/src/core/projector.d.ts.map +1 -1
- package/dist/src/core/projector.js +3 -0
- package/dist/src/core/projector.js.map +1 -1
- package/dist/src/core/source-loader.d.ts +4 -2
- package/dist/src/core/source-loader.d.ts.map +1 -1
- package/dist/src/core/source-loader.js +26 -12
- package/dist/src/core/source-loader.js.map +1 -1
- package/dist/src/core/types.d.ts +30 -4
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/experimental/index.d.ts +5 -0
- package/dist/src/experimental/index.d.ts.map +1 -0
- package/dist/src/experimental/index.js +5 -0
- package/dist/src/experimental/index.js.map +1 -0
- package/dist/src/experimental/mutators.d.ts +57 -0
- package/dist/src/experimental/mutators.d.ts.map +1 -0
- package/dist/src/experimental/mutators.js +173 -0
- package/dist/src/experimental/mutators.js.map +1 -0
- package/dist/src/experimental/realm.d.ts +34 -0
- package/dist/src/experimental/realm.d.ts.map +1 -0
- package/dist/src/experimental/realm.js +128 -0
- package/dist/src/experimental/realm.js.map +1 -0
- package/dist/src/experimental/state-accessor.d.ts +13 -0
- package/dist/src/experimental/state-accessor.d.ts.map +1 -0
- package/dist/src/experimental/state-accessor.js +14 -0
- package/dist/src/experimental/state-accessor.js.map +1 -0
- package/dist/src/experimental/typekit/define-kit.d.ts +28 -0
- package/dist/src/experimental/typekit/define-kit.d.ts.map +1 -0
- package/dist/src/experimental/typekit/define-kit.js +45 -0
- package/dist/src/experimental/typekit/define-kit.js.map +1 -0
- package/dist/src/experimental/typekit/index.d.ts +3 -0
- package/dist/src/experimental/typekit/index.d.ts.map +1 -0
- package/dist/src/experimental/typekit/index.js +3 -0
- package/dist/src/experimental/typekit/index.js.map +1 -0
- package/dist/src/experimental/typekit/kits/index.d.ts +9 -0
- package/dist/src/experimental/typekit/kits/index.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/index.js +9 -0
- package/dist/src/experimental/typekit/kits/index.js.map +1 -0
- package/dist/src/experimental/typekit/kits/literal.d.ts +59 -0
- package/dist/src/experimental/typekit/kits/literal.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/literal.js +51 -0
- package/dist/src/experimental/typekit/kits/literal.js.map +1 -0
- package/dist/src/experimental/typekit/kits/model-property.d.ts +45 -0
- package/dist/src/experimental/typekit/kits/model-property.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/model-property.js +19 -0
- package/dist/src/experimental/typekit/kits/model-property.js.map +1 -0
- package/dist/src/experimental/typekit/kits/model.d.ts +48 -0
- package/dist/src/experimental/typekit/kits/model.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/model.js +26 -0
- package/dist/src/experimental/typekit/kits/model.js.map +1 -0
- package/dist/src/experimental/typekit/kits/realm.d.ts +24 -0
- package/dist/src/experimental/typekit/kits/realm.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/realm.js +17 -0
- package/dist/src/experimental/typekit/kits/realm.js.map +1 -0
- package/dist/src/experimental/typekit/kits/scalar.d.ts +354 -0
- package/dist/src/experimental/typekit/kits/scalar.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/scalar.js +91 -0
- package/dist/src/experimental/typekit/kits/scalar.js.map +1 -0
- package/dist/src/experimental/typekit/kits/type.d.ts +25 -0
- package/dist/src/experimental/typekit/kits/type.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/type.js +55 -0
- package/dist/src/experimental/typekit/kits/type.js.map +1 -0
- package/dist/src/experimental/typekit/kits/union-variant.d.ts +43 -0
- package/dist/src/experimental/typekit/kits/union-variant.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/union-variant.js +22 -0
- package/dist/src/experimental/typekit/kits/union-variant.js.map +1 -0
- package/dist/src/experimental/typekit/kits/union.d.ts +56 -0
- package/dist/src/experimental/typekit/kits/union.d.ts.map +1 -0
- package/dist/src/experimental/typekit/kits/union.js +69 -0
- package/dist/src/experimental/typekit/kits/union.js.map +1 -0
- package/dist/src/experimental/typekit/utils.d.ts +8 -0
- package/dist/src/experimental/typekit/utils.d.ts.map +1 -0
- package/dist/src/experimental/typekit/utils.js +28 -0
- package/dist/src/experimental/typekit/utils.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/init/scaffold.d.ts.map +1 -1
- package/dist/src/init/scaffold.js.map +1 -1
- package/dist/src/lib/decorators.d.ts +35 -19
- package/dist/src/lib/decorators.d.ts.map +1 -1
- package/dist/src/lib/decorators.js +70 -88
- package/dist/src/lib/decorators.js.map +1 -1
- package/dist/src/lib/encoded-names.js +6 -8
- package/dist/src/lib/encoded-names.js.map +1 -1
- package/dist/src/lib/examples.d.ts.map +1 -1
- package/dist/src/lib/examples.js +6 -4
- package/dist/src/lib/examples.js.map +1 -1
- package/dist/src/lib/service.d.ts +3 -1
- package/dist/src/lib/service.d.ts.map +1 -1
- package/dist/src/lib/service.js +5 -8
- package/dist/src/lib/service.js.map +1 -1
- package/dist/src/lib/utils.d.ts +4 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +11 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-exports.d.ts +9 -0
- package/dist/src/module-resolver/esm/resolve-package-exports.d.ts.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-exports.js +58 -0
- package/dist/src/module-resolver/esm/resolve-package-exports.js.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-imports-exports.d.ts +11 -0
- package/dist/src/module-resolver/esm/resolve-package-imports-exports.d.ts.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-imports-exports.js +72 -0
- package/dist/src/module-resolver/esm/resolve-package-imports-exports.js.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-target.d.ts +10 -0
- package/dist/src/module-resolver/esm/resolve-package-target.d.ts.map +1 -0
- package/dist/src/module-resolver/esm/resolve-package-target.js +133 -0
- package/dist/src/module-resolver/esm/resolve-package-target.js.map +1 -0
- package/dist/src/module-resolver/esm/utils.d.ts +35 -0
- package/dist/src/module-resolver/esm/utils.d.ts.map +1 -0
- package/dist/src/module-resolver/esm/utils.js +40 -0
- package/dist/src/module-resolver/esm/utils.js.map +1 -0
- package/dist/src/{core → module-resolver}/module-resolver.d.ts +16 -25
- package/dist/src/module-resolver/module-resolver.d.ts.map +1 -0
- package/dist/src/module-resolver/module-resolver.js +272 -0
- package/dist/src/module-resolver/module-resolver.js.map +1 -0
- package/dist/src/module-resolver/utils.d.ts +6 -0
- package/dist/src/module-resolver/utils.d.ts.map +1 -0
- package/dist/src/module-resolver/utils.js +16 -0
- package/dist/src/module-resolver/utils.js.map +1 -0
- package/dist/src/runner.js +1 -1
- package/dist/src/runner.js.map +1 -1
- package/dist/src/server/completion.d.ts.map +1 -1
- package/dist/src/server/completion.js.map +1 -1
- package/dist/src/server/file-system-cache.js +2 -2
- package/dist/src/server/file-system-cache.js.map +1 -1
- package/dist/src/testing/test-host.js +1 -1
- package/dist/src/testing/test-host.js.map +1 -1
- package/dist/src/types/package-json.d.ts +40 -0
- package/dist/src/types/package-json.d.ts.map +1 -0
- package/dist/src/types/package-json.js +2 -0
- package/dist/src/types/package-json.js.map +1 -0
- package/package.json +11 -7
- package/templates/__snapshots__/emitter-ts/.gitignore +9 -0
- package/templates/__snapshots__/emitter-ts/eslint.config.js +1 -1
- package/templates/__snapshots__/library-ts/.gitignore +9 -0
- package/templates/__snapshots__/library-ts/eslint.config.js +1 -1
- package/templates/emitter-ts/eslint.config.js +1 -1
- package/templates/library-ts/eslint.config.js +1 -1
- package/dist/src/core/module-resolver.d.ts.map +0 -1
- package/dist/src/core/module-resolver.js +0 -169
- package/dist/src/core/module-resolver.js.map +0 -1
package/dist/src/lib/examples.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Temporal } from "temporal-polyfill";
|
|
|
2
2
|
import { ignoreDiagnostics } from "../core/diagnostics.js";
|
|
3
3
|
import { getProperty } from "../core/semantic-walker.js";
|
|
4
4
|
import { isArrayModelType, isUnknownType } from "../core/type-utils.js";
|
|
5
|
-
import { getEncode } from "./decorators.js";
|
|
5
|
+
import { getEncode, resolveEncodedName } from "./decorators.js";
|
|
6
6
|
/**
|
|
7
7
|
* Serialize the given TypeSpec value as a JSON object using the given type and its encoding annotations.
|
|
8
8
|
* The Value MUST be assignable to the given type.
|
|
@@ -52,8 +52,7 @@ function resolveUnions(program, value, type) {
|
|
|
52
52
|
return type;
|
|
53
53
|
}
|
|
54
54
|
for (const variant of type.variants.values()) {
|
|
55
|
-
if (variant.type.
|
|
56
|
-
ignoreDiagnostics(program.checker.isTypeAssignableTo(value, { entityKind: "MixedParameterConstraint", valueType: variant.type }, value))) {
|
|
55
|
+
if (ignoreDiagnostics(program.checker.isTypeAssignableTo(value.type.projectionBase ?? value.type, variant.type.projectionBase ?? variant.type, value))) {
|
|
57
56
|
return variant.type;
|
|
58
57
|
}
|
|
59
58
|
}
|
|
@@ -65,7 +64,10 @@ function serializeObjectValueAsJson(program, value, type) {
|
|
|
65
64
|
for (const propValue of value.properties.values()) {
|
|
66
65
|
const definition = getPropertyOfType(type, propValue.name);
|
|
67
66
|
if (definition) {
|
|
68
|
-
|
|
67
|
+
const name = definition.kind === "ModelProperty"
|
|
68
|
+
? resolveEncodedName(program, definition, "application/json")
|
|
69
|
+
: propValue.name;
|
|
70
|
+
obj[name] = serializeValueAsJson(program, propValue.value, definition);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
return obj;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAQxE,OAAO,EAAE,SAAS,EAAmB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"examples.js","sourceRoot":"","sources":["../../../src/lib/examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,19 +9,21 @@ export interface ServiceDetails {
|
|
|
9
9
|
export interface Service extends ServiceDetails {
|
|
10
10
|
type: Namespace;
|
|
11
11
|
}
|
|
12
|
+
declare const getService: (program: Program, type: Namespace) => Service | undefined;
|
|
12
13
|
/**
|
|
13
14
|
* List all the services defined in the TypeSpec program
|
|
14
15
|
* @param program Program
|
|
15
16
|
* @returns List of service.
|
|
16
17
|
*/
|
|
17
18
|
export declare function listServices(program: Program): Service[];
|
|
19
|
+
export {
|
|
18
20
|
/**
|
|
19
21
|
* Get the service information for the given namespace.
|
|
20
22
|
* @param program Program
|
|
21
23
|
* @param namespace Service namespace
|
|
22
24
|
* @returns Service information or undefined if namespace is not a service namespace.
|
|
23
25
|
*/
|
|
24
|
-
|
|
26
|
+
getService, };
|
|
25
27
|
/**
|
|
26
28
|
* Check if the namespace is defined as a service.
|
|
27
29
|
* @param program Program
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/lib/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAoB,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/lib/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAoB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG/D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6NAA6N;IAC7N,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,OAAQ,SAAQ,cAAc;IAC7C,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,QAAA,MAAO,UAAU,4DAEhB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAExD;AAED,OAAO;AACL;;;;;GAKG;AACH,UAAU,GACX,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,cAAmB,GAC3B,IAAI,CAIN;AAED,eAAO,MAAM,QAAQ,EAAE,gBAiDtB,CAAC"}
|
package/dist/src/lib/service.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { validateDecoratorUniqueOnNode } from "../core/decorator-utils.js";
|
|
2
2
|
import { getTypeName, reportDeprecated } from "../core/index.js";
|
|
3
3
|
import { reportDiagnostic } from "../core/messages.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return program.stateMap(serviceDetailsKey);
|
|
7
|
-
}
|
|
4
|
+
import { useStateMap } from "./utils.js";
|
|
5
|
+
const [getService, setService, getServiceMap] = useStateMap(Symbol.for("@typespec/compiler.services"));
|
|
8
6
|
/**
|
|
9
7
|
* List all the services defined in the TypeSpec program
|
|
10
8
|
* @param program Program
|
|
@@ -13,15 +11,14 @@ function getServiceMap(program) {
|
|
|
13
11
|
export function listServices(program) {
|
|
14
12
|
return [...getServiceMap(program).values()];
|
|
15
13
|
}
|
|
14
|
+
export {
|
|
16
15
|
/**
|
|
17
16
|
* Get the service information for the given namespace.
|
|
18
17
|
* @param program Program
|
|
19
18
|
* @param namespace Service namespace
|
|
20
19
|
* @returns Service information or undefined if namespace is not a service namespace.
|
|
21
20
|
*/
|
|
22
|
-
|
|
23
|
-
return getServiceMap(program).get(namespace);
|
|
24
|
-
}
|
|
21
|
+
getService, };
|
|
25
22
|
/**
|
|
26
23
|
* Check if the namespace is defined as a service.
|
|
27
24
|
* @param program Program
|
|
@@ -40,7 +37,7 @@ export function isService(program, namespace) {
|
|
|
40
37
|
export function addService(program, namespace, details = {}) {
|
|
41
38
|
const serviceMap = getServiceMap(program);
|
|
42
39
|
const existing = serviceMap.get(namespace) ?? {};
|
|
43
|
-
|
|
40
|
+
setService(program, namespace, { ...existing, ...details, type: namespace });
|
|
44
41
|
}
|
|
45
42
|
export const $service = (context, target, options) => {
|
|
46
43
|
validateDecoratorUniqueOnNode(context, target, $service);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/lib/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAQ,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/lib/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Type } from "../core/types.js";
|
|
2
|
+
export declare function useStateMap<K extends Type, V>(key: string | symbol): [(program: import("../index.js").Program, type: K) => V | undefined, (program: import("../index.js").Program, type: K, value: V) => void, (program: import("../index.js").Program) => Map<K, V>];
|
|
3
|
+
export declare function useStateSet<K extends Type>(key: string | symbol): [(program: import("../index.js").Program, type: K) => boolean, (program: import("../index.js").Program, type: K) => void];
|
|
4
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAO7C,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,oMAElE;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,6HAE/D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { unsafe_useStateMap, unsafe_useStateSet } from "../experimental/state-accessor.js";
|
|
2
|
+
function createStateSymbol(name) {
|
|
3
|
+
return Symbol.for(`TypeSpec.${name}`);
|
|
4
|
+
}
|
|
5
|
+
export function useStateMap(key) {
|
|
6
|
+
return unsafe_useStateMap(typeof key === "string" ? createStateSymbol(key) : key);
|
|
7
|
+
}
|
|
8
|
+
export function useStateSet(key) {
|
|
9
|
+
return unsafe_useStateSet(typeof key === "string" ? createStateSymbol(key) : key);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,WAAW,CAAoB,GAAoB;IACjE,OAAO,kBAAkB,CAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,WAAW,CAAiB,GAAoB;IAC9D,OAAO,kBAAkB,CAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Exports } from "../../types/package-json.js";
|
|
2
|
+
import { EsmResolutionContext } from "./utils.js";
|
|
3
|
+
/** Implementation of PACKAGE_EXPORTS_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
4
|
+
export declare function resolvePackageExports(context: EsmResolutionContext, subpath: string, exports: Exports): Promise<string | null | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* Mappings is an export object where all keys start with '.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isMappings(exports: Exports): exports is Record<string, Exports>;
|
|
9
|
+
//# sourceMappingURL=resolve-package-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-exports.d.ts","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,OAAO,EACL,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAEpB,wGAAwG;AACxG,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CA2CpC;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE/E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { resolvePackageImportsExports } from "../esm/resolve-package-imports-exports.js";
|
|
2
|
+
import { resolvePackageTarget } from "../esm/resolve-package-target.js";
|
|
3
|
+
import { InvalidModuleSpecifierError, NoMatchingConditionsError, } from "./utils.js";
|
|
4
|
+
/** Implementation of PACKAGE_EXPORTS_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
5
|
+
export async function resolvePackageExports(context, subpath, exports) {
|
|
6
|
+
if (exports === null)
|
|
7
|
+
return undefined;
|
|
8
|
+
if (subpath === ".") {
|
|
9
|
+
let mainExport;
|
|
10
|
+
if (typeof exports === "string" || Array.isArray(exports) || isConditions(exports)) {
|
|
11
|
+
mainExport = exports;
|
|
12
|
+
}
|
|
13
|
+
else if (exports["."]) {
|
|
14
|
+
mainExport = exports["."];
|
|
15
|
+
}
|
|
16
|
+
if (mainExport) {
|
|
17
|
+
if (context.ignoreDefaultCondition && typeof mainExport === "string") {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const resolved = await resolvePackageTarget(context, {
|
|
21
|
+
target: mainExport,
|
|
22
|
+
isImports: false,
|
|
23
|
+
});
|
|
24
|
+
// If resolved is not null or undefined, return resolved.
|
|
25
|
+
if (resolved) {
|
|
26
|
+
return resolved;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new NoMatchingConditionsError(context);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (isMappings(exports)) {
|
|
34
|
+
// Let resolved be the result of PACKAGE_IMPORTS_EXPORTS_RESOLVE
|
|
35
|
+
const resolvedMatch = await resolvePackageImportsExports(context, {
|
|
36
|
+
matchKey: subpath,
|
|
37
|
+
matchObj: exports,
|
|
38
|
+
isImports: false,
|
|
39
|
+
});
|
|
40
|
+
// If resolved is not null or undefined, return resolved.
|
|
41
|
+
if (resolvedMatch) {
|
|
42
|
+
return resolvedMatch;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// 4. Throw a Package Path Not Exported error.
|
|
46
|
+
throw new InvalidModuleSpecifierError(context);
|
|
47
|
+
}
|
|
48
|
+
/** Conditions is an export object where all keys are conditions(not a path starting with .). E.g. import, default, types, etc. */
|
|
49
|
+
function isConditions(item) {
|
|
50
|
+
return typeof item === "object" && Object.keys(item).every((k) => !k.startsWith("."));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Mappings is an export object where all keys start with '.
|
|
54
|
+
*/
|
|
55
|
+
export function isMappings(exports) {
|
|
56
|
+
return typeof exports === "object" && !isConditions(exports);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=resolve-package-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-exports.js","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAEL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AAEpB,wGAAwG;AACxG,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAA6B,EAC7B,OAAe,EACf,OAAgB;IAEhB,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAEvC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;QACpB,IAAI,UAA+B,CAAC;QACpC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACnF,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,sBAAsB,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACrE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE;gBACnD,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,yDAAyD;YACzD,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,gEAAgE;QAChE,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE;YAChE,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,yDAAyD;QACzD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,kIAAkI;AAClI,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACxF,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Exports } from "../../types/package-json.js";
|
|
2
|
+
import { EsmResolutionContext } from "./utils.js";
|
|
3
|
+
interface ResolvePackageImportsExportsOptions {
|
|
4
|
+
readonly matchKey: string;
|
|
5
|
+
readonly matchObj: Record<string, Exports>;
|
|
6
|
+
readonly isImports?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Implementation of PACKAGE_IMPORTS_EXPORTS_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
9
|
+
export declare function resolvePackageImportsExports(context: EsmResolutionContext, { matchKey, matchObj, isImports }: ResolvePackageImportsExportsOptions): Promise<string | null | undefined>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=resolve-package-imports-exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-imports-exports.d.ts","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-imports-exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,OAAO,EAAE,oBAAoB,EAA+B,MAAM,YAAY,CAAC;AAE/E,UAAU,mCAAmC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,gHAAgH;AAChH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,oBAAoB,EAC7B,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,mCAAmC,sCAyDvE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { resolvePackageTarget } from "./resolve-package-target.js";
|
|
2
|
+
import { InvalidModuleSpecifierError } from "./utils.js";
|
|
3
|
+
/** Implementation of PACKAGE_IMPORTS_EXPORTS_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
4
|
+
export async function resolvePackageImportsExports(context, { matchKey, matchObj, isImports }) {
|
|
5
|
+
// If matchKey is a key of matchObj and does not contain "*", then
|
|
6
|
+
if (!matchKey.includes("*") && matchKey in matchObj) {
|
|
7
|
+
// Let target be the value of matchObj[matchKey].
|
|
8
|
+
const target = matchObj[matchKey];
|
|
9
|
+
// Return the result of PACKAGE_TARGET_RESOLVE(packageURL, target, null, isImports, conditions).
|
|
10
|
+
const resolved = await resolvePackageTarget(context, { target, patternMatch: "", isImports });
|
|
11
|
+
return resolved;
|
|
12
|
+
}
|
|
13
|
+
// Let expansionKeys be the list of keys of matchObj containing only a single "*"
|
|
14
|
+
const expansionKeys = Object.keys(matchObj)
|
|
15
|
+
// Assert: ends with "/" or contains only a single "*".
|
|
16
|
+
.filter((k) => k.endsWith("/") || k.includes("*"))
|
|
17
|
+
// sorted by the sorting function PATTERN_KEY_COMPARE which orders in descending order of specificity.
|
|
18
|
+
.sort(nodePatternKeyCompare);
|
|
19
|
+
// For each key expansionKey in expansionKeys, do
|
|
20
|
+
for (const expansionKey of expansionKeys) {
|
|
21
|
+
const indexOfAsterisk = expansionKey.indexOf("*");
|
|
22
|
+
// Let patternBase be the substring of expansionKey up to but excluding the first "*" character.
|
|
23
|
+
const patternBase = indexOfAsterisk === -1 ? expansionKey : expansionKey.substring(0, indexOfAsterisk);
|
|
24
|
+
// If matchKey starts with but is not equal to patternBase, then
|
|
25
|
+
if (matchKey.startsWith(patternBase) && matchKey !== patternBase) {
|
|
26
|
+
// Let patternTrailer be the substring of expansionKey from the index after the first "*" character.
|
|
27
|
+
const patternTrailer = indexOfAsterisk !== -1 ? expansionKey.substring(indexOfAsterisk + 1) : "";
|
|
28
|
+
// If patternTrailer has zero length,
|
|
29
|
+
if (patternTrailer.length === 0 ||
|
|
30
|
+
// or if matchKey ends with patternTrailer and the length of matchKey is greater than or equal to the length of expansionKey, then
|
|
31
|
+
(matchKey.endsWith(patternTrailer) && matchKey.length >= expansionKey.length)) {
|
|
32
|
+
// Let target be the value of matchObj[expansionKey].
|
|
33
|
+
const target = matchObj[expansionKey];
|
|
34
|
+
// Let patternMatch be the substring of matchKey starting at the index of the length of patternBase up to the length
|
|
35
|
+
// of matchKey minus the length of patternTrailer.
|
|
36
|
+
const patternMatch = matchKey.substring(patternBase.length, matchKey.length - patternTrailer.length);
|
|
37
|
+
// Return the result of PACKAGE_TARGET_RESOLVE
|
|
38
|
+
const resolved = await resolvePackageTarget(context, {
|
|
39
|
+
target,
|
|
40
|
+
patternMatch,
|
|
41
|
+
isImports,
|
|
42
|
+
});
|
|
43
|
+
return resolved;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
throw new InvalidModuleSpecifierError(context, isImports);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Implementation of Node's `PATTERN_KEY_COMPARE` function
|
|
51
|
+
*/
|
|
52
|
+
function nodePatternKeyCompare(keyA, keyB) {
|
|
53
|
+
// Let baseLengthA be the index of "*" in keyA plus one, if keyA contains "*", or the length of keyA otherwise.
|
|
54
|
+
const baseLengthA = keyA.includes("*") ? keyA.indexOf("*") + 1 : keyA.length;
|
|
55
|
+
// Let baseLengthB be the index of "*" in keyB plus one, if keyB contains "*", or the length of keyB otherwise.
|
|
56
|
+
const baseLengthB = keyB.includes("*") ? keyB.indexOf("*") + 1 : keyB.length;
|
|
57
|
+
// if baseLengthA is greater, return -1, if lower 1
|
|
58
|
+
const rval = baseLengthB - baseLengthA;
|
|
59
|
+
if (rval !== 0)
|
|
60
|
+
return rval;
|
|
61
|
+
// If keyA does not contain "*", return 1.
|
|
62
|
+
if (!keyA.includes("*"))
|
|
63
|
+
return 1;
|
|
64
|
+
// If keyB does not contain "*", return -1.
|
|
65
|
+
if (!keyB.includes("*"))
|
|
66
|
+
return -1;
|
|
67
|
+
// If the length of keyA is greater than the length of keyB, return -1.
|
|
68
|
+
// If the length of keyB is greater than the length of keyA, return 1.
|
|
69
|
+
// Else Return 0.
|
|
70
|
+
return keyB.length - keyA.length;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=resolve-package-imports-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-imports-exports.js","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-imports-exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Exports } from "../../types/package-json.js";
|
|
2
|
+
import { EsmResolutionContext } from "./utils.js";
|
|
3
|
+
export interface ResolvePackageTargetOptions {
|
|
4
|
+
readonly target: Exports;
|
|
5
|
+
readonly patternMatch?: string;
|
|
6
|
+
readonly isImports?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** Implementation of PACKAGE_TARGET_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
9
|
+
export declare function resolvePackageTarget(context: EsmResolutionContext, { target, patternMatch, isImports }: ResolvePackageTargetOptions): Promise<null | undefined | string>;
|
|
10
|
+
//# sourceMappingURL=resolve-package-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-target.d.ts","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-target.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EACL,oBAAoB,EAIrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,uGAAuG;AACvG,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,EAC7B,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,2BAA2B,GAC/D,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,CAgIpC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { resolvePath } from "../../core/path-utils.js";
|
|
2
|
+
import { InvalidModuleSpecifierError, InvalidPackageTargetError, isUrl, } from "./utils.js";
|
|
3
|
+
/** Implementation of PACKAGE_TARGET_RESOLVE https://github.com/nodejs/node/blob/main/doc/api/esm.md */
|
|
4
|
+
export async function resolvePackageTarget(context, { target, patternMatch, isImports }) {
|
|
5
|
+
const { packageUrl } = context;
|
|
6
|
+
const packageUrlWithTrailingSlash = packageUrl.endsWith("/") ? packageUrl : `${packageUrl}/`;
|
|
7
|
+
// 1. If target is a String, then
|
|
8
|
+
if (typeof target === "string") {
|
|
9
|
+
// 1.i If target does not start with "./", then
|
|
10
|
+
if (!target.startsWith("./")) {
|
|
11
|
+
// 1.i.a If isImports is false, or if target starts with "../" or "/", or if target is a valid URL, then
|
|
12
|
+
if (!isImports || target.startsWith("../") || target.startsWith("/") || isUrl(target)) {
|
|
13
|
+
// 1.i.a.a Throw an Invalid Package Target error.
|
|
14
|
+
throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`);
|
|
15
|
+
}
|
|
16
|
+
// 1.i.b If patternMatch is a String, then
|
|
17
|
+
if (typeof patternMatch === "string") {
|
|
18
|
+
// 1.i.b.a Return PACKAGE_RESOLVE(target with every instance of "*" replaced by patternMatch, packageURL + "/")
|
|
19
|
+
return await context.resolveId(target.replace(/\*/g, patternMatch), packageUrlWithTrailingSlash);
|
|
20
|
+
}
|
|
21
|
+
// 1.i.c Return PACKAGE_RESOLVE(target, packageURL + "/").
|
|
22
|
+
return await context.resolveId(target, packageUrlWithTrailingSlash);
|
|
23
|
+
}
|
|
24
|
+
// 1.ii If target split on "/" or "\"
|
|
25
|
+
checkInvalidSegment(context, target);
|
|
26
|
+
// 1.iii Let resolvedTarget be the URL resolution of the concatenation of packageURL and target.
|
|
27
|
+
const resolvedTarget = resolvePath(packageUrlWithTrailingSlash, target);
|
|
28
|
+
// 1.iv Assert: resolvedTarget is contained in packageURL.
|
|
29
|
+
if (!resolvedTarget.startsWith(packageUrl)) {
|
|
30
|
+
throw new InvalidPackageTargetError(context, `Resolved to ${resolvedTarget} which is outside package ${packageUrl}`);
|
|
31
|
+
}
|
|
32
|
+
// 1.v If patternMatch is null, then
|
|
33
|
+
if (!patternMatch) {
|
|
34
|
+
// Return resolvedTarget.
|
|
35
|
+
return resolvedTarget;
|
|
36
|
+
}
|
|
37
|
+
// 1.vi If patternMatch split on "/" or "\" contains invalid segments
|
|
38
|
+
if (includesInvalidSegments(patternMatch.split(/\/|\\/), context.moduleDirs)) {
|
|
39
|
+
// throw an Invalid Module Specifier error.
|
|
40
|
+
throw new InvalidModuleSpecifierError(context);
|
|
41
|
+
}
|
|
42
|
+
// 1.vii Return the URL resolution of resolvedTarget with every instance of "*" replaced with patternMatch.
|
|
43
|
+
return resolvedTarget.replace(/\*/g, patternMatch);
|
|
44
|
+
}
|
|
45
|
+
// 3. Otherwise, if target is an Array, then
|
|
46
|
+
if (Array.isArray(target)) {
|
|
47
|
+
// 3.i If _target.length is zero, return null.
|
|
48
|
+
if (target.length === 0) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
let lastError = null;
|
|
52
|
+
// 3.ii For each item in target, do
|
|
53
|
+
for (const item of target) {
|
|
54
|
+
// Let resolved be the result of PACKAGE_TARGET_RESOLVE of the item
|
|
55
|
+
// continuing the loop on any Invalid Package Target error.
|
|
56
|
+
try {
|
|
57
|
+
const resolved = await resolvePackageTarget(context, {
|
|
58
|
+
target: item,
|
|
59
|
+
patternMatch,
|
|
60
|
+
isImports,
|
|
61
|
+
});
|
|
62
|
+
// If resolved is undefined, continue the loop.
|
|
63
|
+
// Else Return resolved.
|
|
64
|
+
if (resolved !== undefined) {
|
|
65
|
+
return resolved;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (!(error instanceof InvalidPackageTargetError)) {
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
lastError = error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Return or throw the last fallback resolution null return or error
|
|
78
|
+
if (lastError) {
|
|
79
|
+
throw lastError;
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
// 2. Otherwise, if target is a non-null Object, then
|
|
84
|
+
if (target && typeof target === "object") {
|
|
85
|
+
// 2.ii For each property of target
|
|
86
|
+
for (const [key, value] of Object.entries(target)) {
|
|
87
|
+
// 2.ii.a If key equals "default" or conditions contains an entry for the key, then
|
|
88
|
+
if ((key === "default" && !context.ignoreDefaultCondition) ||
|
|
89
|
+
context.conditions.includes(key)) {
|
|
90
|
+
// Let targetValue be the value of the property in target.
|
|
91
|
+
// Let resolved be the result of PACKAGE_TARGET_RESOLVE of the targetValue
|
|
92
|
+
const resolved = await resolvePackageTarget(context, {
|
|
93
|
+
target: value,
|
|
94
|
+
patternMatch,
|
|
95
|
+
isImports,
|
|
96
|
+
});
|
|
97
|
+
// If resolved is equal to undefined, continue the loop.
|
|
98
|
+
// Return resolved.
|
|
99
|
+
if (resolved !== undefined) {
|
|
100
|
+
return resolved;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Return undefined.
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
// Otherwise, if target is null, return null.
|
|
108
|
+
if (target === null) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
// Otherwise throw an Invalid Package Target error.
|
|
112
|
+
throw new InvalidPackageTargetError(context, `Invalid exports field.`);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check for invalid path segments
|
|
116
|
+
*/
|
|
117
|
+
function includesInvalidSegments(pathSegments, moduleDirs) {
|
|
118
|
+
const invalidSegments = ["", ".", "..", ...moduleDirs];
|
|
119
|
+
// contains any "", ".", "..", or "node_modules" segments, including percent encoded variants
|
|
120
|
+
return pathSegments.some((v) => invalidSegments.includes(v) || invalidSegments.includes(decodeURI(v)));
|
|
121
|
+
}
|
|
122
|
+
function checkInvalidSegment(context, target) {
|
|
123
|
+
const pathSegments = target.split(/\/|\\/);
|
|
124
|
+
// after the first "." segment
|
|
125
|
+
const firstDot = pathSegments.indexOf(".");
|
|
126
|
+
firstDot !== -1 && pathSegments.slice(firstDot);
|
|
127
|
+
if (firstDot !== -1 &&
|
|
128
|
+
firstDot < pathSegments.length - 1 &&
|
|
129
|
+
includesInvalidSegments(pathSegments.slice(firstDot + 1), context.moduleDirs)) {
|
|
130
|
+
throw new InvalidPackageTargetError(context, `Invalid mapping: "${target}".`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=resolve-package-target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-package-target.js","sourceRoot":"","sources":["../../../../src/module-resolver/esm/resolve-package-target.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface EsmResolutionContext {
|
|
2
|
+
/** Original import specifier */
|
|
3
|
+
readonly specifier: string;
|
|
4
|
+
/** URL of the current package */
|
|
5
|
+
readonly packageUrl: string;
|
|
6
|
+
/**
|
|
7
|
+
* List of condition to match
|
|
8
|
+
* @example `["import", "require"]`
|
|
9
|
+
*/
|
|
10
|
+
readonly conditions: readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* Folders where modules exist that are banned from being used in exports.
|
|
13
|
+
* @example `["node_modules"]`
|
|
14
|
+
*/
|
|
15
|
+
readonly moduleDirs: readonly string[];
|
|
16
|
+
resolveId(id: string, baseDir: string | URL): any;
|
|
17
|
+
/** Non standard option. Do not respect the default condition. */
|
|
18
|
+
readonly ignoreDefaultCondition?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class EsmResolveError extends Error {
|
|
21
|
+
}
|
|
22
|
+
export declare class InvalidConfigurationError extends EsmResolveError {
|
|
23
|
+
constructor(context: EsmResolutionContext, reason?: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class InvalidModuleSpecifierError extends EsmResolveError {
|
|
26
|
+
constructor(context: EsmResolutionContext, isImports?: boolean, reason?: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class InvalidPackageTargetError extends EsmResolveError {
|
|
29
|
+
constructor(context: EsmResolutionContext, reason?: string);
|
|
30
|
+
}
|
|
31
|
+
export declare class NoMatchingConditionsError extends InvalidPackageTargetError {
|
|
32
|
+
constructor(context: EsmResolutionContext);
|
|
33
|
+
}
|
|
34
|
+
export declare function isUrl(str: string): boolean;
|
|
35
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/module-resolver/esm/utils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,iCAAiC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;IAElD,iEAAiE;IACjE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAaD,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C,qBAAa,yBAA0B,SAAQ,eAAe;gBAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,MAAM;CAG3D;AAED,qBAAa,2BAA4B,SAAQ,eAAe;gBAClD,OAAO,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;CAGhF;AAED,qBAAa,yBAA0B,SAAQ,eAAe;gBAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAAE,MAAM;CAG3D;AAED,qBAAa,yBAA0B,SAAQ,yBAAyB;gBAC1D,OAAO,EAAE,oBAAoB;CAG1C;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,WAMhC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
function createBaseErrorMsg(importSpecifier) {
|
|
2
|
+
return `Could not resolve import "${importSpecifier}" `;
|
|
3
|
+
}
|
|
4
|
+
function createErrorMsg(context, reason, isImports) {
|
|
5
|
+
const { specifier, packageUrl } = context;
|
|
6
|
+
const base = createBaseErrorMsg(specifier);
|
|
7
|
+
const field = isImports ? "imports" : "exports";
|
|
8
|
+
return `${base} using ${field} defined in ${packageUrl}.${reason ? ` ${reason}` : ""}`;
|
|
9
|
+
}
|
|
10
|
+
export class EsmResolveError extends Error {
|
|
11
|
+
}
|
|
12
|
+
export class InvalidConfigurationError extends EsmResolveError {
|
|
13
|
+
constructor(context, reason) {
|
|
14
|
+
super(createErrorMsg(context, `Invalid "exports" field. ${reason}`));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class InvalidModuleSpecifierError extends EsmResolveError {
|
|
18
|
+
constructor(context, isImports, reason) {
|
|
19
|
+
super(createErrorMsg(context, reason, isImports));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class InvalidPackageTargetError extends EsmResolveError {
|
|
23
|
+
constructor(context, reason) {
|
|
24
|
+
super(createErrorMsg(context, reason));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class NoMatchingConditionsError extends InvalidPackageTargetError {
|
|
28
|
+
constructor(context) {
|
|
29
|
+
super(context, `No conditions matched`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function isUrl(str) {
|
|
33
|
+
try {
|
|
34
|
+
return !!new URL(str);
|
|
35
|
+
}
|
|
36
|
+
catch (_) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/module-resolver/esm/utils.ts"],"names":[],"mappings":"AAyBA,SAAS,kBAAkB,CAAC,eAAuB;IACjD,OAAO,6BAA6B,eAAe,IAAI,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAC,OAA6B,EAAE,MAAe,EAAE,SAAmB;IACzF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,OAAO,GAAG,IAAI,UAAU,KAAK,eAAe,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzF,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAG;AAE7C,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAA6B,EAAE,MAAe;QACxD,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,OAA6B,EAAE,SAAmB,EAAE,MAAe;QAC7E,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAA6B,EAAE,MAAe;QACxD,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,yBAAyB;IACtE,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|