@flex-development/mlly 1.0.0-alpha.11 → 1.0.0-alpha.13
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/CHANGELOG.md +101 -0
- package/README.md +1 -1
- package/dist/interfaces/options-get-format.d.mts +3 -13
- package/dist/interfaces/options-get-source.d.mts +3 -13
- package/dist/interfaces/options-parse-subpath.d.mts +18 -0
- package/dist/interfaces/parsed-subpath.d.mts +5 -1
- package/dist/internal/regex-invalid-segment.d.mts +14 -0
- package/dist/internal/regex-invalid-segment.mjs +11 -0
- package/dist/internal/regex-invalid-segment.mjs.map +6 -0
- package/dist/internal/resolver.mjs +6 -9
- package/dist/internal/resolver.mjs.map +1 -1
- package/dist/internal/validate-array-set.d.mts +22 -0
- package/dist/internal/validate-array-set.mjs +11 -0
- package/dist/internal/validate-array-set.mjs.map +6 -0
- package/dist/internal/validate-map.d.mts +23 -0
- package/dist/internal/validate-map.mjs +11 -0
- package/dist/internal/validate-map.mjs.map +6 -0
- package/dist/internal/validate-set.d.mts +4 -5
- package/dist/internal/validate-set.mjs.map +1 -1
- package/dist/utils/fill-modules.d.mts +1 -0
- package/dist/utils/fill-modules.mjs +7 -1
- package/dist/utils/fill-modules.mjs.map +1 -1
- package/dist/utils/find-requires.mjs +1 -1
- package/dist/utils/find-subpath.d.mts +2 -1
- package/dist/utils/find-subpath.mjs +2 -0
- package/dist/utils/find-subpath.mjs.map +1 -1
- package/dist/utils/get-format.d.mts +8 -1
- package/dist/utils/get-format.mjs +22 -11
- package/dist/utils/get-format.mjs.map +1 -1
- package/dist/utils/get-source.d.mts +7 -0
- package/dist/utils/get-source.mjs +13 -6
- package/dist/utils/get-source.mjs.map +1 -1
- package/dist/utils/is-absolute-specifier.d.mts +1 -0
- package/dist/utils/is-absolute-specifier.mjs +2 -0
- package/dist/utils/is-absolute-specifier.mjs.map +1 -1
- package/dist/utils/is-bare-specifier.d.mts +1 -0
- package/dist/utils/is-bare-specifier.mjs +2 -0
- package/dist/utils/is-bare-specifier.mjs.map +1 -1
- package/dist/utils/is-exports-sugar.mjs +1 -1
- package/dist/utils/is-exports-sugar.mjs.map +1 -1
- package/dist/utils/is-relative-specifier.mjs.map +1 -1
- package/dist/utils/parse-module-id.d.mts +1 -3
- package/dist/utils/parse-module-id.mjs +3 -0
- package/dist/utils/parse-module-id.mjs.map +1 -1
- package/dist/utils/parse-subpath.d.mts +1 -2
- package/dist/utils/parse-subpath.mjs +115 -5
- package/dist/utils/parse-subpath.mjs.map +1 -1
- package/dist/utils/read-package-json.mjs +7 -5
- package/dist/utils/read-package-json.mjs.map +1 -1
- package/dist/utils/resolve-alias.mjs +3 -2
- package/dist/utils/resolve-alias.mjs.map +1 -1
- package/dist/utils/resolve-module.mjs +16 -1
- package/dist/utils/resolve-module.mjs.map +1 -1
- package/dist/utils/to-bare-specifier.mjs +8 -10
- package/dist/utils/to-bare-specifier.mjs.map +1 -1
- package/dist/utils/to-relative-specifier.d.mts +2 -0
- package/dist/utils/to-relative-specifier.mjs +3 -0
- package/dist/utils/to-relative-specifier.mjs.map +1 -1
- package/dist/utils/to-url.d.mts +2 -3
- package/dist/utils/to-url.mjs.map +1 -1
- package/dist/utils/validate-assertions.mjs +2 -0
- package/dist/utils/validate-assertions.mjs.map +1 -1
- package/dist/utils/validate-exports.d.mts +2 -2
- package/dist/utils/validate-exports.mjs +2 -2
- package/dist/utils/validate-exports.mjs.map +1 -1
- package/package.json +34 -41
- package/src/interfaces/options-get-format.ts +2 -14
- package/src/interfaces/options-get-source.ts +2 -14
- package/src/interfaces/options-parse-subpath.ts +20 -0
- package/src/interfaces/parsed-subpath.ts +10 -1
- package/src/internal/regex-invalid-segment.ts +23 -0
- package/src/internal/resolver.ts +7 -22
- package/src/internal/validate-array-set.ts +32 -0
- package/src/internal/validate-map.ts +33 -0
- package/src/internal/validate-set.ts +4 -5
- package/src/utils/fill-modules.ts +10 -1
- package/src/utils/find-requires.ts +1 -1
- package/src/utils/find-subpath.ts +11 -2
- package/src/utils/get-format.ts +33 -12
- package/src/utils/get-source.ts +21 -6
- package/src/utils/is-absolute-specifier.ts +5 -0
- package/src/utils/is-bare-specifier.ts +5 -0
- package/src/utils/is-exports-sugar.ts +1 -1
- package/src/utils/is-relative-specifier.ts +1 -0
- package/src/utils/parse-module-id.ts +6 -3
- package/src/utils/parse-subpath.ts +154 -9
- package/src/utils/read-package-json.ts +8 -3
- package/src/utils/resolve-alias.ts +3 -2
- package/src/utils/resolve-module.ts +40 -11
- package/src/utils/to-bare-specifier.ts +10 -12
- package/src/utils/to-relative-specifier.ts +7 -0
- package/src/utils/to-url.ts +2 -3
- package/src/utils/validate-assertions.ts +2 -0
- package/src/utils/validate-exports.ts +5 -5
- package/changelog.config.ts +0 -404
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
import { Format } from "../enums/index.mjs";
|
|
2
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
3
|
+
import validateMap from "../internal/validate-map.mjs";
|
|
4
|
+
import validateObject from "../internal/validate-object.mjs";
|
|
2
5
|
import {
|
|
3
6
|
ERR_UNKNOWN_FILE_EXTENSION
|
|
4
7
|
} from "@flex-development/errnode";
|
|
5
8
|
import { isBuiltin } from "@flex-development/is-builtin";
|
|
6
9
|
import pathe from "@flex-development/pathe";
|
|
10
|
+
import {
|
|
11
|
+
isUndefined
|
|
12
|
+
} from "@flex-development/tutils";
|
|
7
13
|
import EXTENSION_FORMAT_MAP from "./extension-format-map.mjs";
|
|
8
14
|
import lookupPackageScope from "./lookup-package-scope.mjs";
|
|
9
15
|
import parseDataURL from "./parse-data-url.mjs";
|
|
10
16
|
import toURL from "./to-url.mjs";
|
|
11
17
|
const getFormat = async (id, options = {}) => {
|
|
12
18
|
const {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
experimental_wasm_modules = false,
|
|
19
|
+
experimental_json_modules: json_modules = true,
|
|
20
|
+
experimental_network_imports: network_imports = false,
|
|
21
|
+
experimental_wasm_modules: wasm_modules = false,
|
|
17
22
|
extension_format_map = EXTENSION_FORMAT_MAP,
|
|
18
23
|
ignore_errors = false,
|
|
19
|
-
req
|
|
24
|
+
req = {}
|
|
20
25
|
} = options;
|
|
21
|
-
|
|
26
|
+
validateBoolean(json_modules, "options.experimental_json_modules");
|
|
27
|
+
validateBoolean(network_imports, "options.experimental_network_imports");
|
|
28
|
+
validateBoolean(wasm_modules, "options.experimental_wasm_modules");
|
|
29
|
+
validateBoolean(ignore_errors, "options.ignore_errors");
|
|
30
|
+
validateMap(extension_format_map, "options.extension_format_map");
|
|
31
|
+
!isUndefined(req) && validateObject(req, "options.req");
|
|
32
|
+
const url = toURL(id);
|
|
22
33
|
const mimeToFormat = (value, content_type = false) => {
|
|
23
34
|
let format2 = null;
|
|
24
35
|
if (!value)
|
|
@@ -35,10 +46,10 @@ const getFormat = async (id, options = {}) => {
|
|
|
35
46
|
format2 = Format.MODULE;
|
|
36
47
|
break;
|
|
37
48
|
case "application/json":
|
|
38
|
-
format2 =
|
|
49
|
+
format2 = json_modules ? Format.JSON : null;
|
|
39
50
|
break;
|
|
40
51
|
case "application/wasm":
|
|
41
|
-
format2 =
|
|
52
|
+
format2 = wasm_modules ? Format.WASM : null;
|
|
42
53
|
break;
|
|
43
54
|
default:
|
|
44
55
|
break;
|
|
@@ -63,8 +74,8 @@ const getFormat = async (id, options = {}) => {
|
|
|
63
74
|
case extension_format_map.has(ext):
|
|
64
75
|
format = extension_format_map.get(ext);
|
|
65
76
|
switch (true) {
|
|
66
|
-
case (format === Format.JSON && !
|
|
67
|
-
case (format === Format.WASM && !
|
|
77
|
+
case (format === Format.JSON && !json_modules):
|
|
78
|
+
case (format === Format.WASM && !wasm_modules):
|
|
68
79
|
format = ignore_errors ? void 0 : null;
|
|
69
80
|
break;
|
|
70
81
|
default:
|
|
@@ -87,7 +98,7 @@ const getFormat = async (id, options = {}) => {
|
|
|
87
98
|
break;
|
|
88
99
|
case "http:":
|
|
89
100
|
case "https:":
|
|
90
|
-
if (
|
|
101
|
+
if (network_imports) {
|
|
91
102
|
const { default: fetch } = await import("node-fetch");
|
|
92
103
|
const { headers } = await fetch(url.href, req);
|
|
93
104
|
format = mimeToFormat(headers.get("content-type"), true);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/get-format.ts"],
|
|
4
|
-
"mappings": "AAKA,SAAS,cAAc;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["format"]
|
|
6
6
|
}
|
|
@@ -7,6 +7,13 @@ import type { ModuleId } from '../types/index.mjs';
|
|
|
7
7
|
/**
|
|
8
8
|
* Retrieves source code for the given module `id`.
|
|
9
9
|
*
|
|
10
|
+
* ::: tip
|
|
11
|
+
* The given module `id` should be absolute (i.e. a [`file:` URL][1] or absolute
|
|
12
|
+
* specifier).
|
|
13
|
+
* :::
|
|
14
|
+
*
|
|
15
|
+
* [1]: https://nodejs.org/api/esm.html#file-urls
|
|
16
|
+
*
|
|
10
17
|
* @see {@linkcode GetSourceOptions}
|
|
11
18
|
* @see {@linkcode ModuleId}
|
|
12
19
|
* @see https://nodejs.org/docs/latest-v19.x/api/esm.html#loadurl-context-nextload
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Format } from "../enums/index.mjs";
|
|
2
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
3
|
+
import validateObject from "../internal/validate-object.mjs";
|
|
4
|
+
import validateString from "../internal/validate-string.mjs";
|
|
2
5
|
import {
|
|
3
6
|
ERR_UNSUPPORTED_ESM_URL_SCHEME
|
|
4
7
|
} from "@flex-development/errnode";
|
|
8
|
+
import { isUndefined } from "@flex-development/tutils";
|
|
5
9
|
import fs from "node:fs/promises";
|
|
6
10
|
import os from "node:os";
|
|
7
11
|
import util from "node:util";
|
|
@@ -9,15 +13,18 @@ import parseDataURL from "./parse-data-url.mjs";
|
|
|
9
13
|
import toURL from "./to-url.mjs";
|
|
10
14
|
const getSource = async (id, options = {}) => {
|
|
11
15
|
const {
|
|
12
|
-
|
|
13
|
-
experimental_network_imports = false,
|
|
16
|
+
experimental_network_imports: network_imports = false,
|
|
14
17
|
format,
|
|
15
18
|
ignore_errors = false,
|
|
16
|
-
req
|
|
19
|
+
req = {}
|
|
17
20
|
} = options;
|
|
21
|
+
validateBoolean(network_imports, "options.experimental_network_imports");
|
|
22
|
+
!isUndefined(format) && validateString(format, "options.format");
|
|
23
|
+
validateBoolean(ignore_errors, "options.ignore_errors");
|
|
24
|
+
!isUndefined(req) && validateObject(req, "options.req");
|
|
18
25
|
if (format === Format.BUILTIN)
|
|
19
26
|
return void 0;
|
|
20
|
-
const url = toURL(id
|
|
27
|
+
const url = toURL(id);
|
|
21
28
|
let err = false;
|
|
22
29
|
let source = "";
|
|
23
30
|
switch (url.protocol) {
|
|
@@ -31,7 +38,7 @@ const getSource = async (id, options = {}) => {
|
|
|
31
38
|
break;
|
|
32
39
|
case "http:":
|
|
33
40
|
case "https:":
|
|
34
|
-
if (
|
|
41
|
+
if (network_imports) {
|
|
35
42
|
const { default: fetch } = await import("node-fetch");
|
|
36
43
|
source = await (await fetch(url.href, req)).text();
|
|
37
44
|
} else {
|
|
@@ -46,7 +53,7 @@ const getSource = async (id, options = {}) => {
|
|
|
46
53
|
}
|
|
47
54
|
if (!ignore_errors && err) {
|
|
48
55
|
const schemes = ["data", "file"];
|
|
49
|
-
if (
|
|
56
|
+
if (network_imports)
|
|
50
57
|
schemes.push("http", "https");
|
|
51
58
|
throw new ERR_UNSUPPORTED_ESM_URL_SCHEME(
|
|
52
59
|
url,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/get-source.ts"],
|
|
4
|
-
"mappings": "AAKA,SAAS,cAAc;
|
|
4
|
+
"mappings": "AAKA,SAAS,cAAc;AAEvB,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,oBAAoB;AAE3B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,mBAAmB;AAC5B,OAAO,QAAQ;AACf,OAAO,QAAQ;AAEf,OAAO,UAAU;AACjB,OAAO,kBAAkB;AACzB,OAAO,WAAW;AAuBlB,MAAM,YAAY,OAChB,IACA,UAA4B,CAAC,MACgB;AAC7C,QAAM;AAAA,IACJ,8BAA8B,kBAAkB;AAAA,IAChD;AAAA,IACA,gBAAgB;AAAA,IAChB,MAAM,CAAC;AAAA,EACT,IAAI;AAEJ,kBAAgB,iBAAiB,sCAAsC;AACvE,GAAC,YAAY,MAAM,KAAK,eAAe,QAAQ,gBAAgB;AAC/D,kBAAgB,eAAe,uBAAuB;AACtD,GAAC,YAAY,GAAG,KAAK,eAAe,KAAK,aAAa;AAGtD,MAAI,WAAW,OAAO;AAAS,WAAO;AAOtC,QAAM,MAAW,MAAM,EAAE;AASzB,MAAI,MAAe;AAOnB,MAAI,SAA0C;AAG9C,UAAQ,IAAI,UAAU;AAAA,IACpB,KAAK;AACH,YAAM,EAAE,QAAQ,KAAK,IAAI,aAAa,GAAG;AAQzC,YAAM,WAA2B,SAAS,WAAW;AAErD,eAAS,OAAO,KAAK,mBAAmB,IAAI,GAAG,QAAQ,EAAE,SAAS;AAClE;AAAA,IACF,KAAK;AACH,eAAS,MAAM,GAAG,SAAS,KAAK,MAAM;AACtC;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,UAAI,iBAAiB;AACnB,cAAM,EAAE,SAAS,MAAM,IAAI,MAAM,OAAO,YAAY;AACpD,iBAAS,OAAO,MAAM,MAAM,IAAI,MAAM,GAAG,GAAG,KAAK;AAAA,MACnD,OAAO;AACL,cAAM;AAAA,MACR;AAEA;AAAA,IACF,KAAK;AACH,eAAS;AACT;AAAA,IACF;AACE,YAAM;AAAA,EACV;AAGA,MAAI,CAAC,iBAAiB,KAAK;AAMzB,UAAM,UAAoB,CAAC,QAAQ,MAAM;AAGzC,QAAI;AAAiB,cAAQ,KAAK,QAAQ,OAAO;AAEjD,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,MACA,GAAG,SAAS,MAAM;AAAA,IACpB;AAAA,EACF;AAEA,SAAO,WAAW,OAAO,OAAO,IAAI,KAAK,YAAY,EAAE,OAAO,MAAM,IAAI;AAC1E;AAEA,IAAO,qBAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @param {string} specifier - Specifier to evaluate
|
|
16
16
|
* @return {boolean} `true` if `specifier` is absolute specifier
|
|
17
|
+
* @throws {NodeError<TypeError>} If `specifier` is not a string
|
|
17
18
|
*/
|
|
18
19
|
declare const isAbsoluteSpecifier: (specifier: string) => boolean;
|
|
19
20
|
export default isAbsoluteSpecifier;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import validateString from "../internal/validate-string.mjs";
|
|
1
2
|
import pathe from "@flex-development/pathe";
|
|
2
3
|
import { URL } from "node:url";
|
|
3
4
|
const isAbsoluteSpecifier = (specifier) => {
|
|
5
|
+
validateString(specifier, "specifier");
|
|
4
6
|
let absolute = false;
|
|
5
7
|
switch (true) {
|
|
6
8
|
case pathe.isAbsolute(specifier):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/is-absolute-specifier.ts"],
|
|
4
|
-
"mappings": "AAKA,OAAO,WAAW;AAClB,SAAS,WAAW;
|
|
4
|
+
"mappings": "AAKA,OAAO,oBAAoB;AAE3B,OAAO,WAAW;AAClB,SAAS,WAAW;AAgBpB,MAAM,sBAAsB,CAAC,cAA+B;AAC1D,iBAAe,WAAW,WAAW;AAOrC,MAAI,WAAoB;AAGxB,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM,WAAW,SAAS;AAC7B,iBAAW;AACX;AAAA,IACF,KAAK,UAAU,WAAW,OAAO;AAC/B,UAAI;AACF,YAAI,IAAI,SAAS;AACjB,mBAAW;AAAA,MACb,QAAuB;AAAA,MAAO;AAC9B;AAAA,IACF;AACE,iBAAW;AAAA,EACf;AAEA,SAAO;AACT;AAEA,IAAO,gCAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @param {string} specifier - Specifier to evaluate
|
|
16
16
|
* @return {boolean} `true` if `specifier` is bare specifier
|
|
17
|
+
* @throws {NodeError<TypeError>} If `specifier` is not a string
|
|
17
18
|
*/
|
|
18
19
|
declare const isBareSpecifier: (specifier: string) => boolean;
|
|
19
20
|
export default isBareSpecifier;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import validateString from "../internal/validate-string.mjs";
|
|
1
2
|
import isAbsoluteSpecifier from "./is-absolute-specifier.mjs";
|
|
2
3
|
import isRelativeSpecifier from "./is-relative-specifier.mjs";
|
|
3
4
|
const isBareSpecifier = (specifier) => {
|
|
5
|
+
validateString(specifier, "specifier");
|
|
4
6
|
return specifier.trim().length > 0 && !isAbsoluteSpecifier(specifier) && !isRelativeSpecifier(specifier);
|
|
5
7
|
};
|
|
6
8
|
var is_bare_specifier_default = isBareSpecifier;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/is-bare-specifier.ts"],
|
|
4
|
-
"mappings": "AAKA,OAAO,yBAAyB;AAChC,OAAO,yBAAyB;
|
|
4
|
+
"mappings": "AAKA,OAAO,oBAAoB;AAE3B,OAAO,yBAAyB;AAChC,OAAO,yBAAyB;AAgBhC,MAAM,kBAAkB,CAAC,cAA+B;AACtD,iBAAe,WAAW,WAAW;AAErC,SACE,UAAU,KAAK,EAAE,SAAS,KAC1B,CAAC,oBAAoB,SAAS,KAC9B,CAAC,oBAAoB,SAAS;AAElC;AAEA,IAAO,4BAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -15,7 +15,7 @@ const isExportsSugar = (exports, pkg, parent) => {
|
|
|
15
15
|
default:
|
|
16
16
|
exports = exports;
|
|
17
17
|
validateExports(exports, pkg, parent);
|
|
18
|
-
sugar = !((_a = Object.getOwnPropertyNames(exports)[0]) == null ? void 0 : _a.startsWith("."));
|
|
18
|
+
sugar = !(((_a = Object.getOwnPropertyNames(exports)[0]) == null ? void 0 : _a.startsWith(".")) ?? true);
|
|
19
19
|
}
|
|
20
20
|
return sugar;
|
|
21
21
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/is-exports-sugar.ts"],
|
|
4
|
-
"mappings": "AAQA,SAAS,aAAa;AACtB,OAAO,qBAAqB;AAmB5B,MAAM,iBAAiB,CACrB,SACA,KACA,WACY;AAhCd;AAwCE,MAAI,QAAiB;AAGrB,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM,QAAQ,OAAO;AAAA,IAC1B,KAAK,OAAO,YAAY;AACtB,cAAQ;AACR;AAAA,IACF,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,OAAO,YAAY;AACtB,cAAQ;AACR;AAAA,IACF;AACE,gBAAU;AAWV,sBAAgB,SAAS,KAAK,MAAM;AAGpC,cAAQ,
|
|
4
|
+
"mappings": "AAQA,SAAS,aAAa;AACtB,OAAO,qBAAqB;AAmB5B,MAAM,iBAAiB,CACrB,SACA,KACA,WACY;AAhCd;AAwCE,MAAI,QAAiB;AAGrB,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM,QAAQ,OAAO;AAAA,IAC1B,KAAK,OAAO,YAAY;AACtB,cAAQ;AACR;AAAA,IACF,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,OAAO,YAAY;AACtB,cAAQ;AACR;AAAA,IACF;AACE,gBAAU;AAWV,sBAAgB,SAAS,KAAK,MAAM;AAGpC,cAAQ,IAAE,YAAO,oBAAoB,OAAO,EAAE,CAAC,MAArC,mBAAwC,WAAW,SAAQ;AAAA,EACzE;AAEA,SAAO;AACT;AAEA,IAAO,2BAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/is-relative-specifier.ts"],
|
|
4
|
-
"mappings": "AAKA,OAAO,oBAAoB;AAE3B,OAAO,WAAW;AAgBlB,MAAM,sBAAsB,CAAC,cAA+B;AAC1D,iBAAe,WAAW,WAAW;
|
|
4
|
+
"mappings": "AAKA,OAAO,oBAAoB;AAE3B,OAAO,WAAW;AAgBlB,MAAM,sBAAsB,CAAC,cAA+B;AAC1D,iBAAe,WAAW,WAAW;AAErC,SAAO,UAAU,WAAW,GAAG,IAC3B,UAAU,WAAW,KAAK,UAAU,CAAC,MAAM,MAAM,MAC/C,OACA,UAAU,CAAC,MAAM,QAChB,UAAU,WAAW,KAAK,UAAU,CAAC,MAAM,MAAM,OACpD;AACN;AAEA,IAAO,gCAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -14,9 +14,7 @@ import type { ModuleId } from '../types/index.mjs';
|
|
|
14
14
|
* @param {ModuleId} id - Module id to parse
|
|
15
15
|
* @param {ParseModuleIdOptions?} [options={}] - Parsing options
|
|
16
16
|
* @return {ParsedModuleId} Object representing `id`
|
|
17
|
-
* @throws {NodeError<TypeError>}
|
|
18
|
-
* or a string, if `id` includes encoded path separators, or if `id` is invalid
|
|
19
|
-
* according to `options.internal` or `options.pkgname`
|
|
17
|
+
* @throws {NodeError<TypeError>}
|
|
20
18
|
*/
|
|
21
19
|
declare const parseModuleId: (id: ModuleId, options?: ParseModuleIdOptions) => ParsedModuleId;
|
|
22
20
|
export default parseModuleId;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ENCODED_SEP_REGEX from "../internal/regex-encoded-sep.mjs";
|
|
2
2
|
import INTERNAL_SPECIFIER_REGEX from "../internal/regex-internal-specifier.mjs";
|
|
3
3
|
import PACKAGE_PATH_REGEX from "../internal/regex-package-path.mjs";
|
|
4
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
4
5
|
import validateURLString from "../internal/validate-url-string.mjs";
|
|
5
6
|
import {
|
|
6
7
|
ERR_INVALID_MODULE_SPECIFIER
|
|
@@ -17,6 +18,8 @@ const parseModuleId = (id, options = {}) => {
|
|
|
17
18
|
pkgname = false
|
|
18
19
|
} = options;
|
|
19
20
|
validateURLString(id, "id");
|
|
21
|
+
validateBoolean(internal, "options.internal");
|
|
22
|
+
validateBoolean(pkgname, "options.pkgname");
|
|
20
23
|
id = id instanceof URL ? id.href : id.trim();
|
|
21
24
|
let error;
|
|
22
25
|
let parsed = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/parse-module-id.ts"],
|
|
4
|
-
"mappings": "AAMA,OAAO,uBAAuB;AAC9B,OAAO,8BAA8B;AACrC,OAAO,wBAAwB;AAC/B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAClB,SAAS,KAAK,qBAAqB;AACnC,OAAO,qBAAqB;AAC5B,OAAO,yBAAyB;AAChC,OAAO,eAAe;
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["protocol", "pathname"]
|
|
6
6
|
}
|
|
@@ -28,8 +28,7 @@ import type { Exports, Imports } from '@flex-development/pkg-types';
|
|
|
28
28
|
* @param {Exports | Imports | undefined} context - Package context
|
|
29
29
|
* @param {ParseSubpathOptions} options - Parsing options
|
|
30
30
|
* @return {ParsedSubpath} Object representing package subpath
|
|
31
|
-
* @throws {NodeError<Error | TypeError>}
|
|
32
|
-
* subpath defined in `specifier` is not defined in `context`
|
|
31
|
+
* @throws {NodeError<Error | TypeError>}
|
|
33
32
|
*/
|
|
34
33
|
declare const parseSubpath: (specifier: string, context: Exports | Imports | undefined, options: ParseSubpathOptions) => ParsedSubpath;
|
|
35
34
|
export default parseSubpath;
|
|
@@ -1,20 +1,40 @@
|
|
|
1
1
|
import getSubpaths from "../internal/get-subpaths.mjs";
|
|
2
|
+
import isArrayIndex from "../internal/is-array-index.mjs";
|
|
3
|
+
import invalidSegmentRegex from "../internal/regex-invalid-segment.mjs";
|
|
4
|
+
import PACKAGE_NAME_REGEX from "../internal/regex-package-name.mjs";
|
|
5
|
+
import validateArraySet from "../internal/validate-array-set.mjs";
|
|
6
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
2
7
|
import validateString from "../internal/validate-string.mjs";
|
|
3
8
|
import validateURLString from "../internal/validate-url-string.mjs";
|
|
4
9
|
import {
|
|
10
|
+
ERR_INVALID_PACKAGE_CONFIG,
|
|
11
|
+
ERR_INVALID_PACKAGE_TARGET,
|
|
5
12
|
ERR_PACKAGE_IMPORT_NOT_DEFINED,
|
|
6
|
-
ERR_PACKAGE_PATH_NOT_EXPORTED
|
|
13
|
+
ERR_PACKAGE_PATH_NOT_EXPORTED,
|
|
14
|
+
ErrorCode
|
|
7
15
|
} from "@flex-development/errnode";
|
|
8
16
|
import pathe from "@flex-development/pathe";
|
|
9
|
-
import { CompareResult } from "@flex-development/tutils";
|
|
17
|
+
import { CompareResult, isNIL } from "@flex-development/tutils";
|
|
10
18
|
import { URL, fileURLToPath, pathToFileURL } from "node:url";
|
|
11
19
|
import compareSubpaths from "./compare-subpaths.mjs";
|
|
20
|
+
import CONDITIONS from "./conditions.mjs";
|
|
21
|
+
import isExportsSugar from "./is-exports-sugar.mjs";
|
|
12
22
|
import parseModuleId from "./parse-module-id.mjs";
|
|
13
23
|
import PATTERN_CHARACTER from "./pattern-character.mjs";
|
|
14
24
|
const parseSubpath = (specifier, context, options) => {
|
|
15
|
-
const {
|
|
25
|
+
const {
|
|
26
|
+
condition = "default",
|
|
27
|
+
conditions = CONDITIONS,
|
|
28
|
+
dir,
|
|
29
|
+
internal = specifier.startsWith("#"),
|
|
30
|
+
parent
|
|
31
|
+
} = options;
|
|
16
32
|
validateString(specifier, "specifier");
|
|
33
|
+
validateString(condition, "options.condition");
|
|
34
|
+
validateArraySet(conditions, "options.conditions");
|
|
17
35
|
validateURLString(dir, "options.dir");
|
|
36
|
+
validateBoolean(internal, "options.internal");
|
|
37
|
+
validateURLString(parent, "options.parent");
|
|
18
38
|
const id = parseModuleId(specifier, {
|
|
19
39
|
internal,
|
|
20
40
|
parent,
|
|
@@ -41,11 +61,101 @@ const parseSubpath = (specifier, context, options) => {
|
|
|
41
61
|
}
|
|
42
62
|
if (key === null) {
|
|
43
63
|
let { parent: parent2 } = options;
|
|
44
|
-
validateURLString(parent2, "options.parent");
|
|
45
64
|
parent2 = fileURLToPath(parent2);
|
|
46
65
|
throw internal ? new ERR_PACKAGE_IMPORT_NOT_DEFINED(id.path, parent2, pkgdir) : new ERR_PACKAGE_PATH_NOT_EXPORTED(pkgdir, id.path, parent2);
|
|
47
66
|
}
|
|
48
|
-
|
|
67
|
+
const findPackageTarget = (data) => {
|
|
68
|
+
let target = null;
|
|
69
|
+
switch (true) {
|
|
70
|
+
case isNIL(data):
|
|
71
|
+
target = null;
|
|
72
|
+
break;
|
|
73
|
+
case Array.isArray(data):
|
|
74
|
+
let error;
|
|
75
|
+
for (const item of data) {
|
|
76
|
+
try {
|
|
77
|
+
target = findPackageTarget(item);
|
|
78
|
+
} catch (e) {
|
|
79
|
+
error = e;
|
|
80
|
+
if (error.code !== ErrorCode.ERR_INVALID_PACKAGE_TARGET)
|
|
81
|
+
throw error;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (target) {
|
|
85
|
+
error = void 0;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (error)
|
|
90
|
+
throw error;
|
|
91
|
+
break;
|
|
92
|
+
case typeof data === "object":
|
|
93
|
+
data = data;
|
|
94
|
+
for (const property of Object.getOwnPropertyNames(data)) {
|
|
95
|
+
if (isArrayIndex(property)) {
|
|
96
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(
|
|
97
|
+
fileURLToPath(pkg),
|
|
98
|
+
fileURLToPath(parent),
|
|
99
|
+
'"exports" cannot contain numeric property keys'
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
if (property === condition || new Set(conditions).has(property)) {
|
|
103
|
+
target = findPackageTarget(data[property]);
|
|
104
|
+
if (target)
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
case typeof data === "string":
|
|
110
|
+
target = data;
|
|
111
|
+
switch (true) {
|
|
112
|
+
case (internal && PACKAGE_NAME_REGEX.test(target)):
|
|
113
|
+
break;
|
|
114
|
+
case target.startsWith("." + pathe.sep):
|
|
115
|
+
if (invalidSegmentRegex().test(target.slice(2))) {
|
|
116
|
+
if (invalidSegmentRegex("deprecated").test(target.slice(2))) {
|
|
117
|
+
throw new ERR_INVALID_PACKAGE_TARGET(
|
|
118
|
+
fileURLToPath(dir),
|
|
119
|
+
key,
|
|
120
|
+
target,
|
|
121
|
+
internal,
|
|
122
|
+
fileURLToPath(parent)
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
default:
|
|
128
|
+
throw new ERR_INVALID_PACKAGE_TARGET(
|
|
129
|
+
fileURLToPath(dir),
|
|
130
|
+
key,
|
|
131
|
+
target,
|
|
132
|
+
internal,
|
|
133
|
+
fileURLToPath(parent)
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
throw new ERR_INVALID_PACKAGE_TARGET(
|
|
139
|
+
fileURLToPath(dir),
|
|
140
|
+
key,
|
|
141
|
+
data,
|
|
142
|
+
internal,
|
|
143
|
+
fileURLToPath(parent)
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
return target;
|
|
147
|
+
};
|
|
148
|
+
if (!internal && isExportsSugar(context, pkg, parent)) {
|
|
149
|
+
context = { ".": context };
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
base,
|
|
153
|
+
internal,
|
|
154
|
+
key,
|
|
155
|
+
raw: id.path,
|
|
156
|
+
specifier: id.raw,
|
|
157
|
+
target: findPackageTarget(context[key])
|
|
158
|
+
};
|
|
49
159
|
};
|
|
50
160
|
var parse_subpath_default = parseSubpath;
|
|
51
161
|
export {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/parse-subpath.ts"],
|
|
4
|
-
"mappings": "AAUA,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,OAAO,WAAW;AAElB,SAAS,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["parent"]
|
|
6
6
|
}
|
|
@@ -5,16 +5,18 @@ import {
|
|
|
5
5
|
ERR_INVALID_PACKAGE_CONFIG
|
|
6
6
|
} from "@flex-development/errnode";
|
|
7
7
|
import pathe from "@flex-development/pathe";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
isEmptyString,
|
|
10
|
+
isNIL,
|
|
11
|
+
isUndefined
|
|
12
|
+
} from "@flex-development/tutils";
|
|
9
13
|
import fs from "node:fs";
|
|
10
14
|
import { fileURLToPath } from "node:url";
|
|
11
15
|
import toURL from "./to-url.mjs";
|
|
12
16
|
const readPackageJson = (dir = ".", specifier, parent) => {
|
|
13
17
|
validateURLString(dir, "dir");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (parent !== void 0)
|
|
17
|
-
validateURLString(parent, "parent");
|
|
18
|
+
!isUndefined(specifier) && validateString(specifier, "specifier");
|
|
19
|
+
!isUndefined(parent) && validateURLString(parent, "parent");
|
|
18
20
|
dir = fileURLToPath(toURL(dir));
|
|
19
21
|
const path = pathe.toNamespacedPath(pathe.join(dir, "package.json"));
|
|
20
22
|
if (!isFile(path))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/read-package-json.ts"],
|
|
4
|
-
"mappings": "AAKA,OAAO,YAAY;AACnB,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AACP,OAAO,WAAW;AAElB,
|
|
4
|
+
"mappings": "AAKA,OAAO,YAAY;AACnB,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AACP,OAAO,WAAW;AAElB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAmBlB,MAAM,kBAAkB,CACtB,MAAgB,KAChB,WACA,WAC0B;AAE1B,oBAAkB,KAAK,KAAK;AAG5B,GAAC,YAAY,SAAS,KAAK,eAAe,WAAW,WAAW;AAGhE,GAAC,YAAY,MAAM,KAAK,kBAAkB,QAAQ,QAAQ;AAG1D,QAAM,cAAc,MAAM,GAAG,CAAC;AAO9B,QAAM,OAAe,MAAM,iBAAiB,MAAM,KAAK,KAAK,cAAc,CAAC;AAG3E,MAAI,CAAC,OAAO,IAAI;AAAG,WAAO;AAO1B,MAAI;AAGJ,MAAI;AACF,UAAM,KAAK,MAAM,GAAG,aAAa,MAAM,MAAM,CAAC;AAAA,EAChD,SAAS,GAAP;AAQA,QAAI;AAGJ,YAAQ,MAAM;AAAA,MACZ,MAAK,aAAa,CAAC,MAAM,MAAM,KAAK,CAAC,cAAc,MAAM;AACvD,eAAO,IAAI,mBAAmB,cAAc,MAAM,MAAO,CAAC;AAC1D;AAAA,MACF,MAAK,uCAAW,WAAW;AACzB,eAAO,cAAc,SAAU;AAC/B;AAAA,IACJ;AAEA,UAAM,IAAI,2BAA2B,MAAM,MAAO,EAAkB,OAAO;AAAA,EAC7E;AAEA,SAAO;AACT;AAEA,IAAO,4BAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import regexp from "../internal/escape-reg-exp.mjs";
|
|
2
|
+
import validateArraySet from "../internal/validate-array-set.mjs";
|
|
2
3
|
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
3
4
|
import validateObject from "../internal/validate-object.mjs";
|
|
4
|
-
import validateSet from "../internal/validate-set.mjs";
|
|
5
5
|
import validateString from "../internal/validate-string.mjs";
|
|
6
6
|
import validateURLString from "../internal/validate-url-string.mjs";
|
|
7
7
|
import pathe from "@flex-development/pathe";
|
|
@@ -32,8 +32,9 @@ const resolveAlias = async (specifier, options = {}) => {
|
|
|
32
32
|
validateBoolean(absolute, "options.absolute");
|
|
33
33
|
validateObject(aliases, "options.aliases");
|
|
34
34
|
validateString(condition, "options.condition");
|
|
35
|
+
validateArraySet(conditions, "options.conditions");
|
|
35
36
|
validateURLString(cwd, "options.cwd");
|
|
36
|
-
|
|
37
|
+
validateArraySet(extensions, "options.extensions");
|
|
37
38
|
validateURLString(parent, "options.parent");
|
|
38
39
|
validateBoolean(preserveSymlinks, "options.preserveSymlinks");
|
|
39
40
|
const id = parseModuleId(specifier, {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/resolve-alias.ts"],
|
|
4
|
-
"mappings": "AAMA,OAAO,YAAY;AACnB,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["ext", "segment"]
|
|
6
6
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import isFunction from "../internal/is-function.mjs";
|
|
2
2
|
import Resolver from "../internal/resolver.mjs";
|
|
3
|
+
import validateArraySet from "../internal/validate-array-set.mjs";
|
|
4
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
5
|
+
import validateString from "../internal/validate-string.mjs";
|
|
6
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
3
7
|
import { ErrorCode } from "@flex-development/errnode";
|
|
4
8
|
import { isBuiltin } from "@flex-development/is-builtin";
|
|
5
9
|
import pathe from "@flex-development/pathe";
|
|
@@ -14,14 +18,25 @@ const resolveModule = async (specifier, options = {}) => {
|
|
|
14
18
|
parent = import.meta.url,
|
|
15
19
|
preserveSymlinks = false
|
|
16
20
|
} = options;
|
|
21
|
+
validateString(specifier, "specifier");
|
|
22
|
+
validateString(condition, "options.condition");
|
|
23
|
+
validateArraySet(conditions, "options.conditions");
|
|
24
|
+
validateArraySet(extensions, "options.extensions");
|
|
25
|
+
validateURLString(parent, "options.parent");
|
|
26
|
+
validateBoolean(preserveSymlinks, "options.preserveSymlinks");
|
|
17
27
|
const resolver = new Resolver();
|
|
18
|
-
const
|
|
28
|
+
const onetry = isBuiltin(specifier) || /^\S+:/.test(specifier) && !specifier.startsWith("file:");
|
|
29
|
+
const tries = onetry ? [] : [...extensions].flatMap((ext) => [
|
|
19
30
|
specifier + (ext = pathe.formatExt(ext)),
|
|
20
31
|
specifier.startsWith("#") ? specifier + "/index" : "",
|
|
21
32
|
specifier + "/index" + ext
|
|
22
33
|
]).filter((id) => id.length > 0);
|
|
34
|
+
if (!onetry) {
|
|
35
|
+
specifier.startsWith("@types") ? tries.unshift(specifier + "/index.d.ts") : tries.unshift("@types/" + specifier + "/index.d.ts");
|
|
36
|
+
}
|
|
23
37
|
tries.unshift(specifier);
|
|
24
38
|
const ignore = /* @__PURE__ */ new Set([
|
|
39
|
+
ErrorCode.ERR_INVALID_MODULE_SPECIFIER,
|
|
25
40
|
ErrorCode.ERR_MODULE_NOT_FOUND,
|
|
26
41
|
ErrorCode.ERR_PACKAGE_PATH_NOT_EXPORTED,
|
|
27
42
|
ErrorCode.ERR_UNSUPPORTED_DIR_IMPORT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/resolve-module.ts"],
|
|
4
|
-
"mappings": "AAMA,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,SAAS,iBAAiC;AAC1C,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAElB,SAAc,qBAAqB;AACnC,OAAO,gBAAgB;AACvB,OAAO,wBAAwB;AAiC/B,MAAM,gBAAgB,OACpB,WACA,UAAgC,CAAC,MAChB;AACjB,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,YAAY;AAAA,IACrB,mBAAmB;AAAA,EACrB,IAAI;
|
|
4
|
+
"mappings": "AAMA,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,OAAO,sBAAsB;AAC7B,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAC9B,SAAS,iBAAiC;AAC1C,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAElB,SAAc,qBAAqB;AACnC,OAAO,gBAAgB;AACvB,OAAO,wBAAwB;AAiC/B,MAAM,gBAAgB,OACpB,WACA,UAAgC,CAAC,MAChB;AACjB,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,YAAY;AAAA,IACrB,mBAAmB;AAAA,EACrB,IAAI;AAGJ,iBAAe,WAAW,WAAW;AAGrC,iBAAe,WAAW,mBAAmB;AAC7C,mBAAiB,YAAY,oBAAoB;AACjD,mBAAiB,YAAY,oBAAoB;AACjD,oBAAkB,QAAQ,gBAAgB;AAC1C,kBAAgB,kBAAkB,0BAA0B;AAO5D,QAAM,WAAqB,IAAI,SAAS;AAOxC,QAAM,SACJ,UAAU,SAAS,KAClB,QAAQ,KAAK,SAAS,KAAK,CAAC,UAAU,WAAW,OAAO;AAO3D,QAAM,QAAkB,SACpB,CAAC,IACD,CAAC,GAAG,UAAU,EACX,QAAQ,SAAO;AAAA,IACd,aAAa,MAAM,MAAM,UAAU,GAAG;AAAA,IACtC,UAAU,WAAW,GAAG,IAAI,YAAY,WAAW;AAAA,IACnD,YAAY,WAAW;AAAA,EACzB,CAAC,EACA,OAAO,QAAM,GAAG,SAAS,CAAC;AAGjC,MAAI,CAAC,QAAQ;AACX,cAAU,WAAW,QAAQ,IACzB,MAAM,QAAQ,YAAY,aAAa,IACvC,MAAM,QAAQ,YAAY,YAAY,aAAa;AAAA,EACzD;AAGA,QAAM,QAAQ,SAAS;AAUvB,QAAM,SAAyB,oBAAI,IAAe;AAAA,IAChD,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,CAAC;AAOD,MAAI;AAOJ,MAAI,MAAqB;AAGzB,aAAW,MAAM,OAAO;AACtB,QAAI;AACF,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI,IAAI,UAAU;AAAA,QAClB;AAAA,MACF;AAAA,IACF,SAAS,GAAP;AACA,YAAM;AACN,UAAI,OAAO;AAAW,gBAAQ;AAC9B,UAAI,CAAC,OAAO,IAAK,EAAgB,IAAI;AAAG,cAAM;AAAA,IAChD;AAGA,QAAI;AAAK;AAAA,EACX;AAGA,MAAI,CAAC;AAAK,UAAM;AAGhB,MAAI,IAAI,aAAa,SAAS;AAC5B,QAAI,EAAE,IAAI,IAAI;AAGd,UAAM,WAAW,GAAG,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI;AAGpD,QAAI,OAAO,MAAM,UAAU,IAAI,MAAM,GAAG,EAAE,QAAQ,YAAY,EAAE;AAChE,QAAI,WAAW,cAAc,IAAI,IAAI;AAAA,EACvC;AAEA,SAAO;AACT;AAEA,IAAO,yBAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|