@flex-development/mlly 1.0.0-alpha.18 → 1.0.0-alpha.19
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 +810 -709
- package/README.md +173 -12
- package/dist/index.d.mts +3 -4
- package/dist/index.mjs +1 -3
- package/dist/interfaces/aliases.d.mts +11 -0
- package/dist/interfaces/context-get-source.d.mts +52 -0
- package/dist/interfaces/file-system.d.mts +57 -0
- package/dist/interfaces/index.d.mts +11 -21
- package/dist/interfaces/main-field-map.d.mts +13 -0
- package/dist/interfaces/module-format-map.d.mts +17 -0
- package/dist/interfaces/options-get-source.d.mts +22 -29
- package/dist/interfaces/options-resolve-alias.d.mts +14 -26
- package/dist/interfaces/options-resolve-module.d.mts +38 -27
- package/dist/interfaces/protocol-map.d.mts +35 -0
- package/dist/interfaces/stats.d.mts +28 -0
- package/dist/internal/chars.mjs +11 -0
- package/dist/internal/check-invalid-segments.mjs +19 -0
- package/dist/internal/fs.browser.mjs +36 -0
- package/dist/internal/fs.d.mts +7 -0
- package/dist/internal/invalid-package-target.mjs +18 -0
- package/dist/internal/invalid-subpath.mjs +16 -0
- package/dist/internal/process.browser.mjs +7 -0
- package/dist/internal/process.d.mts +4 -0
- package/dist/lib/can-parse-url.d.mts +21 -0
- package/dist/lib/can-parse-url.mjs +12 -0
- package/dist/lib/cwd.d.mts +12 -0
- package/dist/lib/cwd.mjs +8 -0
- package/dist/lib/default-conditions.d.mts +15 -0
- package/dist/lib/default-conditions.mjs +5 -0
- package/dist/lib/default-extensions.d.mts +14 -0
- package/dist/lib/default-extensions.mjs +21 -0
- package/dist/lib/default-main-fields.d.mts +14 -0
- package/dist/lib/default-main-fields.mjs +5 -0
- package/dist/lib/extension-format-map.d.mts +16 -0
- package/dist/lib/extension-format-map.mjs +21 -0
- package/dist/lib/formats.d.mts +21 -0
- package/dist/lib/formats.mjs +14 -0
- package/dist/lib/get-source.d.mts +26 -0
- package/dist/lib/get-source.mjs +70 -0
- package/dist/lib/index.d.mts +40 -0
- package/dist/lib/index.mjs +53 -0
- package/dist/lib/is-absolute-specifier.d.mts +23 -0
- package/dist/lib/is-absolute-specifier.mjs +9 -0
- package/dist/lib/is-array-index.d.mts +17 -0
- package/dist/lib/is-array-index.mjs +11 -0
- package/dist/lib/is-bare-specifier.d.mts +23 -0
- package/dist/lib/is-bare-specifier.mjs +11 -0
- package/dist/lib/is-directory.d.mts +22 -0
- package/dist/lib/is-directory.mjs +13 -0
- package/dist/lib/is-file.d.mts +22 -0
- package/dist/lib/is-file.mjs +13 -0
- package/dist/lib/is-imports-subpath.d.mts +19 -0
- package/dist/lib/is-imports-subpath.mjs +8 -0
- package/dist/lib/is-relative-specifier.d.mts +21 -0
- package/dist/lib/is-relative-specifier.mjs +16 -0
- package/dist/lib/lookup-package-scope.d.mts +26 -0
- package/dist/lib/lookup-package-scope.mjs +16 -0
- package/dist/lib/pattern-key-compare.d.mts +31 -0
- package/dist/lib/pattern-key-compare.mjs +18 -0
- package/dist/lib/pattern-match.d.mts +19 -0
- package/dist/lib/pattern-match.mjs +36 -0
- package/dist/lib/read-package-json.d.mts +35 -0
- package/dist/lib/read-package-json.mjs +29 -0
- package/dist/lib/resolve-alias.d.mts +19 -0
- package/dist/lib/resolve-alias.mjs +50 -0
- package/dist/lib/resolve-module.d.mts +37 -0
- package/dist/lib/resolve-module.mjs +75 -0
- package/dist/lib/resolver.d.mts +280 -0
- package/dist/lib/resolver.mjs +462 -0
- package/dist/lib/root.d.mts +11 -0
- package/dist/lib/root.mjs +6 -0
- package/dist/lib/to-relative-specifier.d.mts +25 -0
- package/dist/lib/to-relative-specifier.mjs +26 -0
- package/dist/lib/to-url.d.mts +24 -0
- package/dist/lib/to-url.mjs +10 -0
- package/dist/types/awaitable.d.mts +14 -0
- package/dist/types/change-ext-fn.d.mts +29 -0
- package/dist/types/get-source-handler.d.mts +21 -0
- package/dist/types/get-source-handlers.d.mts +14 -0
- package/dist/types/index.d.mts +12 -10
- package/dist/types/main-field.d.mts +13 -0
- package/dist/types/module-format.d.mts +13 -0
- package/dist/types/module-id.d.mts +2 -4
- package/dist/types/numeric.d.mts +9 -0
- package/dist/types/pattern-key-compare-result.d.mts +9 -0
- package/dist/types/pattern-match.d.mts +10 -0
- package/dist/types/protocol.d.mts +6 -7
- package/package.json +227 -155
- package/dist/enums/assert-type.d.mts +0 -21
- package/dist/enums/assert-type.mjs +0 -4
- package/dist/enums/format.d.mts +0 -17
- package/dist/enums/format.mjs +0 -4
- package/dist/enums/index.d.mts +0 -10
- package/dist/enums/index.mjs +0 -14
- package/dist/enums/kind-specifier-syntax.d.mts +0 -14
- package/dist/enums/kind-specifier-syntax.mjs +0 -4
- package/dist/enums/kind-specifier.d.mts +0 -17
- package/dist/enums/kind-specifier.mjs +0 -4
- package/dist/enums/kind-statement-syntax.d.mts +0 -22
- package/dist/enums/kind-statement-syntax.mjs +0 -4
- package/dist/enums/kind-statement.d.mts +0 -15
- package/dist/enums/kind-statement.mjs +0 -4
- package/dist/index.mjs.map +0 -8
- package/dist/interfaces/import-assertions.d.mts +0 -20
- package/dist/interfaces/import-dynamic.d.mts +0 -41
- package/dist/interfaces/import-static.d.mts +0 -35
- package/dist/interfaces/options-fill-module.d.mts +0 -23
- package/dist/interfaces/options-find-subpath.d.mts +0 -50
- package/dist/interfaces/options-get-format.d.mts +0 -73
- package/dist/interfaces/options-parse-module-id.d.mts +0 -34
- package/dist/interfaces/options-parse-subpath.d.mts +0 -50
- package/dist/interfaces/options-resolve.d.mts +0 -15
- package/dist/interfaces/package-scope.d.mts +0 -25
- package/dist/interfaces/parsed-data-url.d.mts +0 -56
- package/dist/interfaces/parsed-module-id.d.mts +0 -80
- package/dist/interfaces/parsed-subpath.d.mts +0 -44
- package/dist/interfaces/statement-export.d.mts +0 -44
- package/dist/interfaces/statement-import.d.mts +0 -38
- package/dist/interfaces/statement-require.d.mts +0 -38
- package/dist/interfaces/statement.d.mts +0 -49
- package/dist/internal/dequote.d.mts +0 -14
- package/dist/internal/dequote.mjs +0 -7
- package/dist/internal/dequote.mjs.map +0 -8
- package/dist/internal/format-type-map.d.mts +0 -19
- package/dist/internal/format-type-map.mjs +0 -13
- package/dist/internal/format-type-map.mjs.map +0 -8
- package/dist/internal/get-specifier-kind.d.mts +0 -19
- package/dist/internal/get-specifier-kind.mjs +0 -11
- package/dist/internal/get-specifier-kind.mjs.map +0 -8
- package/dist/internal/get-subpaths.d.mts +0 -28
- package/dist/internal/get-subpaths.mjs +0 -8
- package/dist/internal/get-subpaths.mjs.map +0 -8
- package/dist/internal/regex-encoded-sep.d.mts +0 -15
- package/dist/internal/regex-encoded-sep.mjs +0 -6
- package/dist/internal/regex-encoded-sep.mjs.map +0 -8
- package/dist/internal/regex-internal-specifier.d.mts +0 -16
- package/dist/internal/regex-internal-specifier.mjs +0 -6
- package/dist/internal/regex-internal-specifier.mjs.map +0 -8
- package/dist/internal/regex-invalid-segment.d.mts +0 -16
- package/dist/internal/regex-invalid-segment.mjs +0 -9
- package/dist/internal/regex-invalid-segment.mjs.map +0 -8
- package/dist/internal/regex-package-name.d.mts +0 -15
- package/dist/internal/regex-package-name.mjs +0 -6
- package/dist/internal/regex-package-name.mjs.map +0 -8
- package/dist/internal/regex-package-path.d.mts +0 -17
- package/dist/internal/regex-package-path.mjs +0 -6
- package/dist/internal/regex-package-path.mjs.map +0 -8
- package/dist/internal/resolver.d.mts +0 -132
- package/dist/internal/resolver.mjs +0 -483
- package/dist/internal/resolver.mjs.map +0 -8
- package/dist/internal/validate-array-set.d.mts +0 -24
- package/dist/internal/validate-array-set.mjs +0 -12
- package/dist/internal/validate-array-set.mjs.map +0 -8
- package/dist/internal/validate-boolean.d.mts +0 -22
- package/dist/internal/validate-boolean.mjs +0 -12
- package/dist/internal/validate-boolean.mjs.map +0 -8
- package/dist/internal/validate-map.d.mts +0 -26
- package/dist/internal/validate-map.mjs +0 -12
- package/dist/internal/validate-map.mjs.map +0 -8
- package/dist/internal/validate-object.d.mts +0 -23
- package/dist/internal/validate-object.mjs +0 -12
- package/dist/internal/validate-object.mjs.map +0 -8
- package/dist/internal/validate-set.d.mts +0 -24
- package/dist/internal/validate-set.mjs +0 -12
- package/dist/internal/validate-set.mjs.map +0 -8
- package/dist/internal/validate-string.d.mts +0 -23
- package/dist/internal/validate-string.mjs +0 -12
- package/dist/internal/validate-string.mjs.map +0 -8
- package/dist/internal/validate-url-string.d.mts +0 -24
- package/dist/internal/validate-url-string.mjs +0 -13
- package/dist/internal/validate-url-string.mjs.map +0 -8
- package/dist/types/declaration.d.mts +0 -9
- package/dist/types/fn-change-ext.d.mts +0 -31
- package/dist/types/mime-type.d.mts +0 -13
- package/dist/types/module-specifier-type.d.mts +0 -11
- package/dist/types/syntax-kind-export.d.mts +0 -12
- package/dist/types/syntax-kind-import.d.mts +0 -12
- package/dist/types/syntax-kind-require.d.mts +0 -12
- package/dist/utils/compare-subpaths.d.mts +0 -25
- package/dist/utils/compare-subpaths.mjs +0 -19
- package/dist/utils/compare-subpaths.mjs.map +0 -8
- package/dist/utils/conditions.d.mts +0 -13
- package/dist/utils/conditions.mjs +0 -6
- package/dist/utils/conditions.mjs.map +0 -8
- package/dist/utils/detect-syntax.d.mts +0 -21
- package/dist/utils/detect-syntax.mjs +0 -11
- package/dist/utils/detect-syntax.mjs.map +0 -8
- package/dist/utils/extension-format-map.d.mts +0 -16
- package/dist/utils/extension-format-map.mjs +0 -22
- package/dist/utils/extension-format-map.mjs.map +0 -8
- package/dist/utils/extract-statements.d.mts +0 -21
- package/dist/utils/extract-statements.mjs +0 -20
- package/dist/utils/extract-statements.mjs.map +0 -8
- package/dist/utils/fill-modules.d.mts +0 -24
- package/dist/utils/fill-modules.mjs +0 -67
- package/dist/utils/fill-modules.mjs.map +0 -8
- package/dist/utils/find-dynamic-imports.d.mts +0 -18
- package/dist/utils/find-dynamic-imports.mjs +0 -36
- package/dist/utils/find-dynamic-imports.mjs.map +0 -8
- package/dist/utils/find-exports.d.mts +0 -21
- package/dist/utils/find-exports.mjs +0 -92
- package/dist/utils/find-exports.mjs.map +0 -8
- package/dist/utils/find-requires.d.mts +0 -18
- package/dist/utils/find-requires.mjs +0 -32
- package/dist/utils/find-requires.mjs.map +0 -8
- package/dist/utils/find-static-imports.d.mts +0 -18
- package/dist/utils/find-static-imports.mjs +0 -30
- package/dist/utils/find-static-imports.mjs.map +0 -8
- package/dist/utils/find-subpath.d.mts +0 -31
- package/dist/utils/find-subpath.mjs +0 -86
- package/dist/utils/find-subpath.mjs.map +0 -8
- package/dist/utils/get-format.d.mts +0 -31
- package/dist/utils/get-format.mjs +0 -107
- package/dist/utils/get-format.mjs.map +0 -8
- package/dist/utils/get-source.d.mts +0 -30
- package/dist/utils/get-source.mjs +0 -61
- package/dist/utils/get-source.mjs.map +0 -8
- package/dist/utils/has-cjs-syntax.d.mts +0 -25
- package/dist/utils/has-cjs-syntax.mjs +0 -11
- package/dist/utils/has-cjs-syntax.mjs.map +0 -8
- package/dist/utils/has-esm-syntax.d.mts +0 -21
- package/dist/utils/has-esm-syntax.mjs +0 -11
- package/dist/utils/has-esm-syntax.mjs.map +0 -8
- package/dist/utils/index.d.mts +0 -44
- package/dist/utils/index.mjs +0 -83
- package/dist/utils/index.mjs.map +0 -8
- package/dist/utils/is-absolute-specifier.d.mts +0 -20
- package/dist/utils/is-absolute-specifier.mjs +0 -26
- package/dist/utils/is-absolute-specifier.mjs.map +0 -8
- package/dist/utils/is-bare-specifier.d.mts +0 -20
- package/dist/utils/is-bare-specifier.mjs +0 -10
- package/dist/utils/is-bare-specifier.mjs.map +0 -8
- package/dist/utils/is-directory.d.mts +0 -13
- package/dist/utils/is-directory.mjs +0 -14
- package/dist/utils/is-directory.mjs.map +0 -8
- package/dist/utils/is-exports-sugar.d.mts +0 -26
- package/dist/utils/is-exports-sugar.mjs +0 -29
- package/dist/utils/is-exports-sugar.mjs.map +0 -8
- package/dist/utils/is-file.d.mts +0 -13
- package/dist/utils/is-file.mjs +0 -14
- package/dist/utils/is-file.mjs.map +0 -8
- package/dist/utils/is-relative-specifier.d.mts +0 -19
- package/dist/utils/is-relative-specifier.mjs +0 -9
- package/dist/utils/is-relative-specifier.mjs.map +0 -8
- package/dist/utils/lookup-package-scope.d.mts +0 -26
- package/dist/utils/lookup-package-scope.mjs +0 -34
- package/dist/utils/lookup-package-scope.mjs.map +0 -8
- package/dist/utils/parse-data-url.d.mts +0 -25
- package/dist/utils/parse-data-url.mjs +0 -25
- package/dist/utils/parse-data-url.mjs.map +0 -8
- package/dist/utils/parse-module-id.d.mts +0 -20
- package/dist/utils/parse-module-id.mjs +0 -123
- package/dist/utils/parse-module-id.mjs.map +0 -8
- package/dist/utils/parse-subpath.d.mts +0 -35
- package/dist/utils/parse-subpath.mjs +0 -149
- package/dist/utils/parse-subpath.mjs.map +0 -8
- package/dist/utils/pattern-character.d.mts +0 -11
- package/dist/utils/pattern-character.mjs +0 -6
- package/dist/utils/pattern-character.mjs.map +0 -8
- package/dist/utils/read-package-json.d.mts +0 -26
- package/dist/utils/read-package-json.mjs +0 -48
- package/dist/utils/read-package-json.mjs.map +0 -8
- package/dist/utils/resolve-alias.d.mts +0 -20
- package/dist/utils/resolve-alias.mjs +0 -101
- package/dist/utils/resolve-alias.mjs.map +0 -8
- package/dist/utils/resolve-aliases.d.mts +0 -19
- package/dist/utils/resolve-aliases.mjs +0 -26
- package/dist/utils/resolve-aliases.mjs.map +0 -8
- package/dist/utils/resolve-extensions.d.mts +0 -14
- package/dist/utils/resolve-extensions.mjs +0 -22
- package/dist/utils/resolve-extensions.mjs.map +0 -8
- package/dist/utils/resolve-module.d.mts +0 -39
- package/dist/utils/resolve-module.mjs +0 -63
- package/dist/utils/resolve-module.mjs.map +0 -8
- package/dist/utils/resolve-modules.d.mts +0 -25
- package/dist/utils/resolve-modules.mjs +0 -23
- package/dist/utils/resolve-modules.mjs.map +0 -8
- package/dist/utils/to-absolute-specifier.d.mts +0 -22
- package/dist/utils/to-absolute-specifier.mjs +0 -8
- package/dist/utils/to-absolute-specifier.mjs.map +0 -8
- package/dist/utils/to-bare-specifier.d.mts +0 -42
- package/dist/utils/to-bare-specifier.mjs +0 -79
- package/dist/utils/to-bare-specifier.mjs.map +0 -8
- package/dist/utils/to-data-url.d.mts +0 -30
- package/dist/utils/to-data-url.mjs +0 -7
- package/dist/utils/to-data-url.mjs.map +0 -8
- package/dist/utils/to-node-url.d.mts +0 -19
- package/dist/utils/to-node-url.mjs +0 -7
- package/dist/utils/to-node-url.mjs.map +0 -8
- package/dist/utils/to-relative-specifier.d.mts +0 -24
- package/dist/utils/to-relative-specifier.mjs +0 -10
- package/dist/utils/to-relative-specifier.mjs.map +0 -8
- package/dist/utils/to-url.d.mts +0 -21
- package/dist/utils/to-url.mjs +0 -8
- package/dist/utils/to-url.mjs.map +0 -8
- package/dist/utils/validate-assertions.d.mts +0 -23
- package/dist/utils/validate-assertions.mjs +0 -47
- package/dist/utils/validate-assertions.mjs.map +0 -8
- package/dist/utils/validate-exports.d.mts +0 -25
- package/dist/utils/validate-exports.mjs +0 -73
- package/dist/utils/validate-exports.mjs.map +0 -8
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import getSubpaths from "../internal/get-subpaths.mjs";
|
|
2
|
-
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
3
|
-
import validateSet from "../internal/validate-set.mjs";
|
|
4
|
-
import validateString from "../internal/validate-string.mjs";
|
|
5
|
-
import validateURLString from "../internal/validate-url-string.mjs";
|
|
6
|
-
import pathe from "@flex-development/pathe";
|
|
7
|
-
import {
|
|
8
|
-
DOT,
|
|
9
|
-
cast,
|
|
10
|
-
isArray,
|
|
11
|
-
isNIL,
|
|
12
|
-
isObjectCurly,
|
|
13
|
-
isString,
|
|
14
|
-
sort
|
|
15
|
-
} from "@flex-development/tutils";
|
|
16
|
-
import { URL } from "node:url";
|
|
17
|
-
import compareSubpaths from "./compare-subpaths.mjs";
|
|
18
|
-
import CONDITIONS from "./conditions.mjs";
|
|
19
|
-
import isExportsSugar from "./is-exports-sugar.mjs";
|
|
20
|
-
import PATTERN_CHARACTER from "./pattern-character.mjs";
|
|
21
|
-
import toURL from "./to-url.mjs";
|
|
22
|
-
const findSubpath = (target, context, options) => {
|
|
23
|
-
const {
|
|
24
|
-
condition = "default",
|
|
25
|
-
conditions = CONDITIONS,
|
|
26
|
-
dir,
|
|
27
|
-
internal = !1,
|
|
28
|
-
parent
|
|
29
|
-
} = options;
|
|
30
|
-
if (isNIL(context))
|
|
31
|
-
return null;
|
|
32
|
-
if (validateString(target, "target"), isString(context) && (target === context || target === pathe.changeExt(context, "")))
|
|
33
|
-
return DOT;
|
|
34
|
-
validateString(condition, "options.condition"), validateSet(conditions, "options.conditions"), validateURLString(dir, "options.dir"), validateBoolean(internal, "options.internal"), validateURLString(parent, "options.parent");
|
|
35
|
-
const find = (target2, context2, key = DOT) => {
|
|
36
|
-
let subpath = null;
|
|
37
|
-
if (isArray(context2) || isObjectCurly(context2) || isString(context2)) {
|
|
38
|
-
const pkgdir = toURL(dir).href.replace(/\/$/, "") + pathe.sep, pkg = new URL("package.json", pkgdir);
|
|
39
|
-
!internal && isExportsSugar(context2, pkg, parent) && (context2 = cast({ [key]: context2 })), context2 = cast(context2);
|
|
40
|
-
const subpaths = sort(
|
|
41
|
-
getSubpaths(context2, internal, pkg, parent),
|
|
42
|
-
(s1, s2) => compareSubpaths(s1, s2) * -1
|
|
43
|
-
);
|
|
44
|
-
for (const pkgsubpath of subpaths) {
|
|
45
|
-
let tar = context2[pkgsubpath];
|
|
46
|
-
switch (!0) {
|
|
47
|
-
case isArray(tar):
|
|
48
|
-
for (const item of cast(tar))
|
|
49
|
-
if (subpath = find(target2, item, pkgsubpath), subpath)
|
|
50
|
-
break;
|
|
51
|
-
break;
|
|
52
|
-
case isObjectCurly(tar):
|
|
53
|
-
tar = cast(tar);
|
|
54
|
-
for (const property of Object.getOwnPropertyNames(tar))
|
|
55
|
-
if ((property === condition || conditions.has(property)) && (subpath = find(target2, tar[property], pkgsubpath), subpath))
|
|
56
|
-
break;
|
|
57
|
-
break;
|
|
58
|
-
case isString(tar):
|
|
59
|
-
tar = cast(tar);
|
|
60
|
-
const tar_ne = pathe.changeExt(tar, ""), tar_ni = tar_ne.replace(/\/index$/, ""), pattern = tar.indexOf(PATTERN_CHARACTER);
|
|
61
|
-
switch (!0) {
|
|
62
|
-
case target2 === tar:
|
|
63
|
-
case target2 === tar_ne:
|
|
64
|
-
case (target2 === tar_ni && tar_ne.endsWith("/index")):
|
|
65
|
-
case (pattern === -1 && (target2 === tar || target2 === tar_ne)):
|
|
66
|
-
subpath = pkgsubpath;
|
|
67
|
-
break;
|
|
68
|
-
case (pattern !== -1 && target2.startsWith(tar.slice(0, pattern))):
|
|
69
|
-
target2.length >= tar.length && tar.lastIndexOf(PATTERN_CHARACTER) === pattern && (target2.endsWith(tar.slice(pattern + 1)) || target2.endsWith(tar_ne.slice(pattern + 1))) && (subpath = pkgsubpath);
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
if (subpath)
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return subpath;
|
|
79
|
-
};
|
|
80
|
-
return find(target, context);
|
|
81
|
-
};
|
|
82
|
-
var find_subpath_default = findSubpath;
|
|
83
|
-
export {
|
|
84
|
-
find_subpath_default as default
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=find-subpath.mjs.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/find-subpath.ts"],
|
|
4
|
-
"sourceRoot": "file://",
|
|
5
|
-
"sourcesContent": ["/**\n * @file findSubpath\n * @module mlly/utils/findSubpath\n */\n\nimport type { FindSubpathOptions } from '#src/interfaces'\nimport getSubpaths from '#src/internal/get-subpaths'\nimport validateBoolean from '#src/internal/validate-boolean'\nimport validateSet from '#src/internal/validate-set'\nimport validateString from '#src/internal/validate-string'\nimport validateURLString from '#src/internal/validate-url-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport pathe from '@flex-development/pathe'\nimport type { Exports, Imports } from '@flex-development/pkg-types'\nimport {\n DOT,\n cast,\n isArray,\n isNIL,\n isObjectCurly,\n isString,\n sort,\n type Nilable,\n type Nullable,\n type Optional\n} from '@flex-development/tutils'\nimport { URL } from 'node:url'\nimport compareSubpaths from './compare-subpaths'\nimport CONDITIONS from './conditions'\nimport isExportsSugar from './is-exports-sugar'\nimport PATTERN_CHARACTER from './pattern-character'\nimport toURL from './to-url'\n\n/**\n * Finds the subpath defined in `context`, a `package.json` [`exports`][1] or\n * [`imports`][2] field, that maps to the given package `target`.\n *\n * Supports extensionless targets and targets without explicit `'/index'` usage.\n * Returns `null` if a subpath is not found.\n *\n * [1]: https://nodejs.org/api/packages.html#exports\n * [2]: https://nodejs.org/api/packages.html#imports\n *\n * @see {@linkcode Exports}\n * @see {@linkcode FindSubpathOptions}\n * @see {@linkcode Imports}\n * @see https://nodejs.org/api/packages.html#subpath-exports\n * @see https://nodejs.org/api/packages.html#subpath-imports\n *\n * @param {string} target - Package target to find in `context`\n * @param {Nilable<Exports | Imports>} context - Package context\n * @param {FindSubpathOptions} options - Search options\n * @return {Nullable<string>} Subpath defined in `context` or `null`\n * @throws {NodeError<Error | TypeError>}\n */\nconst findSubpath = (\n target: string,\n context: Nilable<Exports | Imports>,\n options: FindSubpathOptions\n): Nullable<string> => {\n const {\n condition = 'default',\n conditions = CONDITIONS,\n dir,\n internal = false,\n parent\n } = options\n\n // exit early if context is nil\n if (isNIL(context)) return null\n\n // ensure target is a string\n validateString(target, 'target')\n\n // exit early if target is an exactish match\n if (isString(context)) {\n if (target === context || target === pathe.changeExt(context, '')) {\n return DOT\n }\n }\n\n // ensure option schemas\n validateString(condition, 'options.condition')\n validateSet(conditions, 'options.conditions')\n validateURLString(dir, 'options.dir')\n validateBoolean(internal, 'options.internal')\n validateURLString(parent, 'options.parent')\n\n /**\n * Finds the subpath defined in `context`, a `package.json` [`exports`][1] or\n * [`imports`][2] field, that maps to the given package `target`.\n *\n * Returns `null` if a subpath is not found.\n *\n * [1]: https://nodejs.org/api/packages.html#exports\n * [2]: https://nodejs.org/api/packages.html#imports\n *\n * @param {string} target - Package target to find in `context`\n * @param {Nilable<Exports | Imports>} context - Package context\n * @param {string} [key=DOT] - Subpath in `context` being checked\n * @return {Nullable<string>} Subpath defined in `context` or `null`\n */\n const find = (\n target: string,\n context: Nilable<Exports | Imports>,\n key: string = DOT\n ): Nullable<string> => {\n /**\n * Subpath defined in {@linkcode context} that maps to {@linkcode target}.\n *\n * @var {Nullable<string>} subpath\n */\n let subpath: Nullable<string> = null\n\n // match target to subpath\n if (isArray(context) || isObjectCurly(context) || isString(context)) {\n /**\n * URL of directory containing relevant `package.json` file.\n *\n * @const {string} pkgdir\n */\n const pkgdir: string = toURL(dir).href.replace(/\\/$/, '') + pathe.sep\n\n /**\n * URL of relevant `package.json` file.\n *\n * @const {URL} pkg\n */\n const pkg: URL = new URL('package.json', pkgdir)\n\n // convert package context to object if using exports sugar\n if (!internal && isExportsSugar(context, pkg, parent)) {\n context = cast<Record<string, Exports>>({ [key]: context })\n }\n\n // context is now an object\n context = cast<Record<string, Exports>>(context)\n\n /**\n * Subpaths defined in {@linkcode context}.\n *\n * **Note**: Sorted from least to greatest.\n *\n * @see {@linkcode compareSubpaths}\n *\n * @const {string[]} keys\n */\n const subpaths: string[] = sort(\n getSubpaths(context, internal, pkg, parent),\n (s1, s2) => compareSubpaths(s1, s2) * -1\n )\n\n // match target to subpath defined in context\n for (const pkgsubpath of subpaths) {\n /**\n * Current package target being checked.\n *\n * @var {Optional<Exports>} tar\n */\n let tar: Optional<Exports> = context[pkgsubpath]\n\n // find subpath\n switch (true) {\n case isArray(tar):\n // try matching target based first match in target array\n for (const item of cast<string[]>(tar)) {\n subpath = find(target, item, pkgsubpath)\n if (subpath) break\n }\n\n break\n case isObjectCurly(tar):\n tar = cast<Record<string, Exports>>(tar)\n\n // try matching target based on export conditions\n for (const property of Object.getOwnPropertyNames(tar)) {\n if (property === condition || conditions.has(property)) {\n subpath = find(target, tar[property], pkgsubpath)\n if (subpath) break\n }\n }\n\n break\n case isString(tar):\n tar = cast<string>(tar)\n\n /**\n * {@linkcode tar} without file extension.\n *\n * @const {string} tar_ne\n */\n const tar_ne: string = pathe.changeExt(tar, '')\n\n /**\n * {@linkcode tar_ne} without `'/index'`.\n *\n * @const {string} tar_ni\n */\n const tar_ni: string = tar_ne.replace(/\\/index$/, '')\n\n /**\n * Index of {@linkcode PATTERN_CHARACTER} in {@linkcode tar}.\n *\n * @const {number} pattern\n */\n const pattern: number = tar.indexOf(PATTERN_CHARACTER)\n\n switch (true) {\n // target is an exactish match\n case target === tar:\n case target === tar_ne:\n case target === tar_ni && tar_ne.endsWith('/index'):\n case pattern === -1 && (target === tar || target === tar_ne):\n subpath = pkgsubpath\n break\n // pattern character => try finding best match for target\n case pattern !== -1 && target.startsWith(tar.slice(0, pattern)):\n /**\n * Boolean indicating if {@linkcode target} ends with the\n * characters after the pattern character (`*`) in\n * {@linkcode tar}.\n *\n * @const {boolean} match\n */\n const match: boolean =\n target.length >= tar.length &&\n tar.lastIndexOf(PATTERN_CHARACTER) === pattern &&\n (target.endsWith(tar.slice(pattern + 1)) ||\n target.endsWith(tar_ne.slice(pattern + 1)))\n\n // set subpath if match was found\n if (match) subpath = pkgsubpath\n\n break\n }\n\n break\n }\n\n // stop searching for subpath if subpath has been found\n if (subpath) break\n }\n }\n\n return subpath\n }\n\n return find(target, context)\n}\n\nexport default findSubpath\n"],
|
|
6
|
-
"mappings": "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",
|
|
7
|
-
"names": ["target", "context"]
|
|
8
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file getFormat
|
|
3
|
-
* @module mlly/utils/getFormat
|
|
4
|
-
*/
|
|
5
|
-
import { Format } from '../enums/index.mjs';
|
|
6
|
-
import type { GetFormatOptions } from '../interfaces/index.mjs';
|
|
7
|
-
import type { ModuleId } from '../types/index.mjs';
|
|
8
|
-
import { type Nilable } from '@flex-development/tutils';
|
|
9
|
-
/**
|
|
10
|
-
* Retrieves a module format for the given module `id`.
|
|
11
|
-
*
|
|
12
|
-
* ::: tip
|
|
13
|
-
* The given module `id` should be absolute (i.e. a [`file:` URL][1] or absolute
|
|
14
|
-
* specifier).
|
|
15
|
-
* :::
|
|
16
|
-
*
|
|
17
|
-
* [1]: https://nodejs.org/api/esm.html#file-urls
|
|
18
|
-
*
|
|
19
|
-
* @see {@linkcode Format}
|
|
20
|
-
* @see {@linkcode GetFormatOptions}
|
|
21
|
-
* @see {@linkcode ModuleId}
|
|
22
|
-
*
|
|
23
|
-
* @async
|
|
24
|
-
*
|
|
25
|
-
* @param {ModuleId} id - Module id to evaluate
|
|
26
|
-
* @param {GetFormatOptions?} [options={}] - Format retrieval options
|
|
27
|
-
* @return {Promise<Nilable<Format>>} Module format, `null`, or `undefined`
|
|
28
|
-
* @throws {NodeError<TypeError>}
|
|
29
|
-
*/
|
|
30
|
-
declare const getFormat: (id: ModuleId, options?: GetFormatOptions) => Promise<Nilable<Format>>;
|
|
31
|
-
export default getFormat;
|
|
@@ -1,107 +0,0 @@
|
|
|
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";
|
|
5
|
-
import {
|
|
6
|
-
ERR_UNKNOWN_FILE_EXTENSION
|
|
7
|
-
} from "@flex-development/errnode";
|
|
8
|
-
import { isBuiltin } from "@flex-development/is-builtin";
|
|
9
|
-
import pathe, {} from "@flex-development/pathe";
|
|
10
|
-
import {
|
|
11
|
-
isEmptyString,
|
|
12
|
-
isUndefined
|
|
13
|
-
} from "@flex-development/tutils";
|
|
14
|
-
import EXTENSION_FORMAT_MAP from "./extension-format-map.mjs";
|
|
15
|
-
import lookupPackageScope from "./lookup-package-scope.mjs";
|
|
16
|
-
import parseDataURL from "./parse-data-url.mjs";
|
|
17
|
-
import toURL from "./to-url.mjs";
|
|
18
|
-
const getFormat = async (id, options = {}) => {
|
|
19
|
-
const {
|
|
20
|
-
experimental_json_modules: json_modules = !0,
|
|
21
|
-
experimental_network_imports: network_imports = !1,
|
|
22
|
-
experimental_wasm_modules: wasm_modules = !1,
|
|
23
|
-
extension_format_map = EXTENSION_FORMAT_MAP,
|
|
24
|
-
ignore_errors = !1,
|
|
25
|
-
req = {}
|
|
26
|
-
} = options;
|
|
27
|
-
validateBoolean(json_modules, "options.experimental_json_modules"), validateBoolean(network_imports, "options.experimental_network_imports"), validateBoolean(wasm_modules, "options.experimental_wasm_modules"), validateBoolean(ignore_errors, "options.ignore_errors"), validateMap(extension_format_map, "options.extension_format_map"), !isUndefined(req) && validateObject(req, "options.req");
|
|
28
|
-
const url = toURL(id), mimeToFormat = (value, content_type = !1) => {
|
|
29
|
-
let format2 = null;
|
|
30
|
-
if (!value)
|
|
31
|
-
return format2;
|
|
32
|
-
content_type && (value = value.replace(/;.*/, ",")), value.startsWith("data:") || (value = `data:${value}`);
|
|
33
|
-
try {
|
|
34
|
-
switch (parseDataURL(value).mime) {
|
|
35
|
-
case "application/javascript":
|
|
36
|
-
case "application/typescript":
|
|
37
|
-
case "text/javascript":
|
|
38
|
-
format2 = Format.MODULE;
|
|
39
|
-
break;
|
|
40
|
-
case "application/json":
|
|
41
|
-
format2 = json_modules ? Format.JSON : null;
|
|
42
|
-
break;
|
|
43
|
-
case "application/wasm":
|
|
44
|
-
format2 = wasm_modules ? Format.WASM : null;
|
|
45
|
-
break;
|
|
46
|
-
default:
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
} catch {
|
|
50
|
-
format2 = ignore_errors ? void 0 : null;
|
|
51
|
-
}
|
|
52
|
-
return format2;
|
|
53
|
-
};
|
|
54
|
-
let format = null;
|
|
55
|
-
switch (url.protocol) {
|
|
56
|
-
case "data:":
|
|
57
|
-
format = mimeToFormat(url.href);
|
|
58
|
-
break;
|
|
59
|
-
case "file:":
|
|
60
|
-
const ext = pathe.extname(url.pathname), scope = lookupPackageScope(url);
|
|
61
|
-
switch (!0) {
|
|
62
|
-
case (scope && ext === ".js"):
|
|
63
|
-
format = scope.pkgjson.type === Format.MODULE ? Format.MODULE : Format.COMMONJS;
|
|
64
|
-
break;
|
|
65
|
-
case extension_format_map.has(ext):
|
|
66
|
-
switch (format = extension_format_map.get(ext), !0) {
|
|
67
|
-
case (format === Format.JSON && !json_modules):
|
|
68
|
-
case (format === Format.WASM && !wasm_modules):
|
|
69
|
-
format = ignore_errors ? void 0 : null;
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case ignore_errors:
|
|
76
|
-
format = void 0;
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
let suggestion;
|
|
80
|
-
if (scope && scope.pkgjson.type === Format.MODULE && isEmptyString(ext)) {
|
|
81
|
-
const { pkg } = scope, basename = pathe.basename(url.pathname), relative = pathe.relative(pkg, url.pathname).slice(1);
|
|
82
|
-
suggestion = `Loading extensionless files is not supported inside of "type":"module" package.json contexts. The package.json file ${pkg} caused this "type":"module" context. Try changing ${url.pathname} to have a file extension. Note the "bin" field of package.json can point to a file with an extension, for example {"type":"module","bin":{"${basename}":"${relative}.js"}}`;
|
|
83
|
-
}
|
|
84
|
-
throw new ERR_UNKNOWN_FILE_EXTENSION(ext, url.pathname, suggestion);
|
|
85
|
-
}
|
|
86
|
-
break;
|
|
87
|
-
case "http:":
|
|
88
|
-
case "https:":
|
|
89
|
-
if (network_imports) {
|
|
90
|
-
const { default: fetch } = await import("node-fetch"), { headers } = await fetch(url.href, req);
|
|
91
|
-
format = mimeToFormat(headers.get("content-type"), !0);
|
|
92
|
-
} else
|
|
93
|
-
format = ignore_errors ? void 0 : null;
|
|
94
|
-
break;
|
|
95
|
-
case "node:":
|
|
96
|
-
isBuiltin(url) && (format = Format.BUILTIN);
|
|
97
|
-
break;
|
|
98
|
-
default:
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
return format;
|
|
102
|
-
};
|
|
103
|
-
var get_format_default = getFormat;
|
|
104
|
-
export {
|
|
105
|
-
get_format_default as default
|
|
106
|
-
};
|
|
107
|
-
//# sourceMappingURL=get-format.mjs.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/get-format.ts"],
|
|
4
|
-
"sourceRoot": "file://",
|
|
5
|
-
"sourcesContent": ["/**\n * @file getFormat\n * @module mlly/utils/getFormat\n */\n\nimport { Format } from '#src/enums'\nimport type { GetFormatOptions, PackageScope } from '#src/interfaces'\nimport validateBoolean from '#src/internal/validate-boolean'\nimport validateMap from '#src/internal/validate-map'\nimport validateObject from '#src/internal/validate-object'\nimport type { ModuleId } from '#src/types'\nimport {\n ERR_UNKNOWN_FILE_EXTENSION,\n type NodeError\n} from '@flex-development/errnode'\nimport { isBuiltin } from '@flex-development/is-builtin'\nimport pathe, { type Ext } from '@flex-development/pathe'\nimport {\n isEmptyString,\n isUndefined,\n type EmptyString,\n type Nilable,\n type Nullable,\n type Optional\n} from '@flex-development/tutils'\nimport type { URL } from 'node:url'\nimport EXTENSION_FORMAT_MAP from './extension-format-map'\nimport lookupPackageScope from './lookup-package-scope'\nimport parseDataURL from './parse-data-url'\nimport toURL from './to-url'\n\n/**\n * Retrieves a module format for the given module `id`.\n *\n * ::: tip\n * The given module `id` should be absolute (i.e. a [`file:` URL][1] or absolute\n * specifier).\n * :::\n *\n * [1]: https://nodejs.org/api/esm.html#file-urls\n *\n * @see {@linkcode Format}\n * @see {@linkcode GetFormatOptions}\n * @see {@linkcode ModuleId}\n *\n * @async\n *\n * @param {ModuleId} id - Module id to evaluate\n * @param {GetFormatOptions?} [options={}] - Format retrieval options\n * @return {Promise<Nilable<Format>>} Module format, `null`, or `undefined`\n * @throws {NodeError<TypeError>}\n */\nconst getFormat = async (\n id: ModuleId,\n options: GetFormatOptions = {}\n): Promise<Nilable<Format>> => {\n const {\n experimental_json_modules: json_modules = true,\n experimental_network_imports: network_imports = false,\n experimental_wasm_modules: wasm_modules = false,\n extension_format_map = EXTENSION_FORMAT_MAP,\n ignore_errors = false,\n req = {}\n } = options\n\n validateBoolean(json_modules, 'options.experimental_json_modules')\n validateBoolean(network_imports, 'options.experimental_network_imports')\n validateBoolean(wasm_modules, 'options.experimental_wasm_modules')\n validateBoolean(ignore_errors, 'options.ignore_errors')\n validateMap(extension_format_map, 'options.extension_format_map')\n !isUndefined(req) && validateObject(req, 'options.req')\n\n /**\n * Module {@linkcode id} as {@linkcode URL}.\n *\n * @const {URL} url\n */\n const url: URL = toURL(id)\n\n /**\n * Extracts a [MIME type][1] from a {@linkcode URL} href, {@linkcode URL}\n * pathname, or [`Content-Type`][2] header and converts it to a module format.\n *\n * [1]: https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types\n * [2]: https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Type\n *\n * @param {Nullable<string>} value - `URL` component or `content-type` header\n * @param {boolean} [content_type=false] - `value` is `content-type` header?\n * @return {Nilable<Format>} Module format, `null`, or `undefined`\n */\n const mimeToFormat = (\n value: Nullable<string>,\n content_type: boolean = false\n ): Nilable<Format> => {\n /**\n * Module format for {@linkcode value}.\n *\n * @var {Nilable<Format>} format\n */\n let format: Nilable<Format> = null\n\n // do nothing if value is empty\n /* c8 ignore next */ if (!value) return format\n\n // sanitize content-type header\n if (content_type) value = value.replace(/;.*/, ',')\n\n // add data: protocol to value\n if (!value.startsWith('data:')) value = `data:${value}`\n\n // get format based on mime type\n try {\n switch (parseDataURL(value).mime) {\n case 'application/javascript':\n case 'application/typescript':\n case 'text/javascript':\n format = Format.MODULE\n break\n case 'application/json':\n format = json_modules ? Format.JSON : null\n break\n case 'application/wasm':\n format = wasm_modules ? Format.WASM : null\n break\n default:\n break\n }\n } catch {\n format = ignore_errors ? undefined : null\n }\n\n return format\n }\n\n /**\n * Module format for {@linkcode id}.\n *\n * @var {Nilable<Format>} format\n */\n let format: Nilable<Format> = null\n\n // get format based on url protocol\n switch (url.protocol) {\n case 'data:':\n format = mimeToFormat(url.href)\n break\n case 'file:':\n /**\n * File extension of {@linkcode url.pathname}.\n *\n * @const {EmptyString | Ext}\n */\n const ext: EmptyString | Ext = pathe.extname(url.pathname)\n\n /**\n * Package scope result for {@linkcode url}.\n *\n * @const {Nullable<PackageScope>} scope\n */\n const scope: Nullable<PackageScope> = lookupPackageScope(url)\n\n switch (true) {\n // get format based on package type\n case scope && ext === '.js':\n format =\n scope!.pkgjson.type === Format.MODULE\n ? Format.MODULE\n : Format.COMMONJS\n break\n // get format based on file extension\n case extension_format_map.has(ext):\n format = extension_format_map.get(ext)!\n\n switch (true) {\n case format === Format.JSON && !json_modules:\n case format === Format.WASM && !wasm_modules:\n format = ignore_errors ? undefined : null\n break\n default:\n break\n }\n\n break\n // ignore file extension errors\n case ignore_errors:\n format = undefined\n break\n default:\n /**\n * Recommended fix for [`ERR_UNKNOWN_FILE_EXTENSION`][1].\n *\n * [1]: https://nodejs.org/api/errors.html#err_unknown_file_extension\n *\n * @var {Optional<string>} suggestion\n */\n let suggestion: Optional<string>\n\n // add recommended fix for ERR_UNKNOWN_FILE_EXTENSION if package is\n // esm-only and module id does not include file extension\n if (scope && scope.pkgjson.type === Format.MODULE) {\n if (isEmptyString(ext)) {\n const { pkg } = scope\n\n /**\n * Basename of {@linkcode url.pathname}\n *\n * @const {string} basename\n */\n const basename: string = pathe.basename(url.pathname)\n\n /**\n * Relative path from {@linkcode pkg} to {@linkcode url.pathname}.\n *\n * @const {string} relative\n */\n const relative: string = pathe\n .relative(pkg, url.pathname)\n .slice(1)\n\n suggestion = `Loading extensionless files is not supported inside of \"type\":\"module\" package.json contexts. The package.json file ${pkg} caused this \"type\":\"module\" context. Try changing ${url.pathname} to have a file extension. Note the \"bin\" field of package.json can point to a file with an extension, for example {\"type\":\"module\",\"bin\":{\"${basename}\":\"${relative}.js\"}}`\n }\n }\n\n throw new ERR_UNKNOWN_FILE_EXTENSION(ext, url.pathname, suggestion)\n }\n\n break\n case 'http:':\n case 'https:':\n if (network_imports) {\n const { default: fetch } = await import('node-fetch')\n const { headers } = await fetch(url.href, req)\n format = mimeToFormat(headers.get('content-type'), true)\n } else {\n format = ignore_errors ? undefined : null\n }\n\n break\n case 'node:':\n if (isBuiltin(url)) format = Format.BUILTIN\n break\n default:\n break\n }\n\n return format\n}\n\nexport default getFormat\n"],
|
|
6
|
-
"mappings": "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",
|
|
7
|
-
"names": ["format"]
|
|
8
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file getSource
|
|
3
|
-
* @module mlly/utils/getSource
|
|
4
|
-
*/
|
|
5
|
-
import type { GetSourceOptions } from '../interfaces/index.mjs';
|
|
6
|
-
import type { ModuleId } from '../types/index.mjs';
|
|
7
|
-
import { type Optional } from '@flex-development/tutils';
|
|
8
|
-
/**
|
|
9
|
-
* Retrieves source code for the given module `id`.
|
|
10
|
-
*
|
|
11
|
-
* ::: tip
|
|
12
|
-
* The given module `id` should be absolute (i.e. a [`file:` URL][1] or absolute
|
|
13
|
-
* specifier).
|
|
14
|
-
* :::
|
|
15
|
-
*
|
|
16
|
-
* [1]: https://nodejs.org/api/esm.html#file-urls
|
|
17
|
-
*
|
|
18
|
-
* @see {@linkcode GetSourceOptions}
|
|
19
|
-
* @see {@linkcode ModuleId}
|
|
20
|
-
* @see https://nodejs.org/docs/latest-v19.x/api/esm.html#loadurl-context-nextload
|
|
21
|
-
*
|
|
22
|
-
* @async
|
|
23
|
-
*
|
|
24
|
-
* @param {ModuleId} id - Module id to evaluate
|
|
25
|
-
* @param {GetSourceOptions?} [options={}] - Source code retrieval options
|
|
26
|
-
* @return {Promise<Optional<Uint8Array | string>>} Source code for `id`
|
|
27
|
-
* @throws {NodeError} If unsupported URL scheme is encountered
|
|
28
|
-
*/
|
|
29
|
-
declare const getSource: (id: ModuleId, options?: GetSourceOptions) => Promise<Optional<Uint8Array | string>>;
|
|
30
|
-
export default getSource;
|
|
@@ -1,61 +0,0 @@
|
|
|
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";
|
|
5
|
-
import {
|
|
6
|
-
ERR_UNSUPPORTED_ESM_URL_SCHEME
|
|
7
|
-
} from "@flex-development/errnode";
|
|
8
|
-
import { isUndefined } from "@flex-development/tutils";
|
|
9
|
-
import fs from "node:fs/promises";
|
|
10
|
-
import os from "node:os";
|
|
11
|
-
import util from "node:util";
|
|
12
|
-
import parseDataURL from "./parse-data-url.mjs";
|
|
13
|
-
import toURL from "./to-url.mjs";
|
|
14
|
-
const getSource = async (id, options = {}) => {
|
|
15
|
-
const {
|
|
16
|
-
experimental_network_imports: network_imports = !1,
|
|
17
|
-
format,
|
|
18
|
-
ignore_errors = !1,
|
|
19
|
-
req = {}
|
|
20
|
-
} = options;
|
|
21
|
-
if (validateBoolean(network_imports, "options.experimental_network_imports"), !isUndefined(format) && validateString(format, "options.format"), validateBoolean(ignore_errors, "options.ignore_errors"), !isUndefined(req) && validateObject(req, "options.req"), format === Format.BUILTIN)
|
|
22
|
-
return;
|
|
23
|
-
const url = toURL(id);
|
|
24
|
-
let err = !1, source = "";
|
|
25
|
-
switch (url.protocol) {
|
|
26
|
-
case "data:":
|
|
27
|
-
const { base64, data } = parseDataURL(url), encoding = base64 ? "base64" : "utf8";
|
|
28
|
-
source = Buffer.from(decodeURIComponent(data), encoding).toString();
|
|
29
|
-
break;
|
|
30
|
-
case "file:":
|
|
31
|
-
source = await fs.readFile(url, "utf8");
|
|
32
|
-
break;
|
|
33
|
-
case "http:":
|
|
34
|
-
case "https:":
|
|
35
|
-
if (network_imports) {
|
|
36
|
-
const { default: fetch } = await import("node-fetch");
|
|
37
|
-
source = await (await fetch(url.href, req)).text();
|
|
38
|
-
} else
|
|
39
|
-
err = !0;
|
|
40
|
-
break;
|
|
41
|
-
case "node:":
|
|
42
|
-
source = void 0;
|
|
43
|
-
break;
|
|
44
|
-
default:
|
|
45
|
-
err = !0;
|
|
46
|
-
}
|
|
47
|
-
if (!ignore_errors && err) {
|
|
48
|
-
const schemes = ["data", "file"];
|
|
49
|
-
throw network_imports && schemes.push("http", "https"), new ERR_UNSUPPORTED_ESM_URL_SCHEME(
|
|
50
|
-
url,
|
|
51
|
-
schemes,
|
|
52
|
-
os.platform() === "win32"
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
return format === Format.WASM ? new util.TextEncoder().encode(source) : source;
|
|
56
|
-
};
|
|
57
|
-
var get_source_default = getSource;
|
|
58
|
-
export {
|
|
59
|
-
get_source_default as default
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=get-source.mjs.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/get-source.ts"],
|
|
4
|
-
"sourceRoot": "file://",
|
|
5
|
-
"sourcesContent": ["/**\n * @file getSource\n * @module mlly/utils/getSource\n */\n\nimport { Format } from '#src/enums'\nimport type { GetSourceOptions } from '#src/interfaces'\nimport validateBoolean from '#src/internal/validate-boolean'\nimport validateObject from '#src/internal/validate-object'\nimport validateString from '#src/internal/validate-string'\nimport type { ModuleId } from '#src/types'\nimport {\n ERR_UNSUPPORTED_ESM_URL_SCHEME,\n type NodeError\n} from '@flex-development/errnode'\nimport { isUndefined, type Optional } from '@flex-development/tutils'\nimport fs from 'node:fs/promises'\nimport os from 'node:os'\nimport type { URL } from 'node:url'\nimport util from 'node:util'\nimport parseDataURL from './parse-data-url'\nimport toURL from './to-url'\n\n/**\n * Retrieves source code for the given module `id`.\n *\n * ::: tip\n * The given module `id` should be absolute (i.e. a [`file:` URL][1] or absolute\n * specifier).\n * :::\n *\n * [1]: https://nodejs.org/api/esm.html#file-urls\n *\n * @see {@linkcode GetSourceOptions}\n * @see {@linkcode ModuleId}\n * @see https://nodejs.org/docs/latest-v19.x/api/esm.html#loadurl-context-nextload\n *\n * @async\n *\n * @param {ModuleId} id - Module id to evaluate\n * @param {GetSourceOptions?} [options={}] - Source code retrieval options\n * @return {Promise<Optional<Uint8Array | string>>} Source code for `id`\n * @throws {NodeError} If unsupported URL scheme is encountered\n */\nconst getSource = async (\n id: ModuleId,\n options: GetSourceOptions = {}\n): Promise<Optional<Uint8Array | string>> => {\n const {\n experimental_network_imports: network_imports = false,\n format,\n ignore_errors = false,\n req = {}\n } = options\n\n validateBoolean(network_imports, 'options.experimental_network_imports')\n !isUndefined(format) && validateString(format, 'options.format')\n validateBoolean(ignore_errors, 'options.ignore_errors')\n !isUndefined(req) && validateObject(req, 'options.req')\n\n // exit early if format is Format.BUILTIN\n if (format === Format.BUILTIN) return undefined\n\n /**\n * Module {@linkcode id} as {@linkcode URL}.\n *\n * @const {URL} url\n */\n const url: URL = toURL(id)\n\n /**\n * [`ERR_UNSUPPORTED_ESM_URL_SCHEME`][1] check.\n *\n * [1]: https://nodejs.org/api/errors.html#err_unsupported_esm_url_scheme\n *\n * @var {boolean} err\n */\n let err: boolean = false\n\n /**\n * Source code for {@linkcode id}.\n *\n * @var {Optional<Uint8Array | string>} source\n */\n let source: Optional<Uint8Array | string> = ''\n\n // get source code based on url protocol\n switch (url.protocol) {\n case 'data:':\n const { base64, data } = parseDataURL(url)\n\n /**\n * Buffer encoding used to create a {@linkcode Buffer} instance from\n * {@linkcode data}.\n *\n * @const {BufferEncoding} encoding\n */\n const encoding: BufferEncoding = base64 ? 'base64' : 'utf8'\n\n source = Buffer.from(decodeURIComponent(data), encoding).toString()\n break\n case 'file:':\n source = await fs.readFile(url, 'utf8')\n break\n case 'http:':\n case 'https:':\n if (network_imports) {\n const { default: fetch } = await import('node-fetch')\n source = await (await fetch(url.href, req)).text()\n } else {\n err = true\n }\n\n break\n case 'node:':\n source = undefined\n break\n default:\n err = true\n }\n\n // throw if unsupported url scheme was encountered\n if (!ignore_errors && err) {\n /**\n * Supported URL schemes.\n *\n * @const {string[]} schemes\n */\n const schemes: string[] = ['data', 'file']\n\n // update supported schemes if support for network based modules is enabled\n if (network_imports) schemes.push('http', 'https')\n\n throw new ERR_UNSUPPORTED_ESM_URL_SCHEME(\n url,\n schemes,\n os.platform() === 'win32'\n )\n }\n\n return format === Format.WASM ? new util.TextEncoder().encode(source) : source\n}\n\nexport default getSource\n"],
|
|
6
|
-
"mappings": "AAKA,SAAS,cAAc;AAEvB,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,oBAAoB;AAE3B;AAAA,EACE;AAAA,OAEK;AACP,SAAS,mBAAkC;AAC3C,OAAO,QAAQ;AACf,OAAO,QAAQ;AAEf,OAAO,UAAU;AACjB,OAAO,kBAAkB;AACzB,OAAO,WAAW;AAuBlB,MAAM,YAAY,OAChB,IACA,UAA4B,CAAC,MACc;AAC3C,QAAM;AAAA,IACJ,8BAA8B,kBAAkB;AAAA,IAChD;AAAA,IACA,gBAAgB;AAAA,IAChB,MAAM,CAAC;AAAA,EACT,IAAI;AAQJ,MANA,gBAAgB,iBAAiB,sCAAsC,GACvE,CAAC,YAAY,MAAM,KAAK,eAAe,QAAQ,gBAAgB,GAC/D,gBAAgB,eAAe,uBAAuB,GACtD,CAAC,YAAY,GAAG,KAAK,eAAe,KAAK,aAAa,GAGlD,WAAW,OAAO;AAAS;AAO/B,QAAM,MAAW,MAAM,EAAE;AASzB,MAAI,MAAe,IAOf,SAAwC;AAG5C,UAAQ,IAAI,UAAU;AAAA,IACpB,KAAK;AACH,YAAM,EAAE,QAAQ,KAAK,IAAI,aAAa,GAAG,GAQnC,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;AACE,cAAM;AAGR;AAAA,IACF,KAAK;AACH,eAAS;AACT;AAAA,IACF;AACE,YAAM;AAAA,EACV;AAGA,MAAI,CAAC,iBAAiB,KAAK;AAMzB,UAAM,UAAoB,CAAC,QAAQ,MAAM;AAGzC,UAAI,mBAAiB,QAAQ,KAAK,QAAQ,OAAO,GAE3C,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;",
|
|
7
|
-
"names": []
|
|
8
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file hasCJSSyntax
|
|
3
|
-
* @module mlly/utils/hasCJSSyntax
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Detects if `code` contains CommonJS syntax. Ignores matches in comments.
|
|
7
|
-
*
|
|
8
|
-
* Syntax patterns:
|
|
9
|
-
*
|
|
10
|
-
* - `__dirname`
|
|
11
|
-
* - `__filename`
|
|
12
|
-
* - `await import`
|
|
13
|
-
* - `exports`
|
|
14
|
-
* - `module.exports`
|
|
15
|
-
* - `require`
|
|
16
|
-
* - `require.*`
|
|
17
|
-
*
|
|
18
|
-
* @see https://regex101.com/r/Co77SJ
|
|
19
|
-
*
|
|
20
|
-
* @param {string} code - Code to evaluate
|
|
21
|
-
* @return {boolean} `true` if `code` contains cjs syntax, `false` otherwise
|
|
22
|
-
* @throws {NodeError<TypeError>} If `code` is not a string
|
|
23
|
-
*/
|
|
24
|
-
declare const hasCJSSyntax: (code: string) => boolean;
|
|
25
|
-
export default hasCJSSyntax;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import validateString from "../internal/validate-string.mjs";
|
|
2
|
-
const hasCJSSyntax = (code) => {
|
|
3
|
-
validateString(code, "code");
|
|
4
|
-
const CJS_SYNTAX_REGEX = /(?<!(?:\/\/|\*).*)((?:module\.)?exports(?:\.\w+|(?<!\s+=))|require(?=\(.)|require\.\w+|__dirname|__filename|await import)/gm;
|
|
5
|
-
return !!code.match(CJS_SYNTAX_REGEX);
|
|
6
|
-
};
|
|
7
|
-
var has_cjs_syntax_default = hasCJSSyntax;
|
|
8
|
-
export {
|
|
9
|
-
has_cjs_syntax_default as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=has-cjs-syntax.mjs.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/has-cjs-syntax.ts"],
|
|
4
|
-
"sourceRoot": "file://",
|
|
5
|
-
"sourcesContent": ["/**\n * @file hasCJSSyntax\n * @module mlly/utils/hasCJSSyntax\n */\n\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\n\n/**\n * Detects if `code` contains CommonJS syntax. Ignores matches in comments.\n *\n * Syntax patterns:\n *\n * - `__dirname`\n * - `__filename`\n * - `await import`\n * - `exports`\n * - `module.exports`\n * - `require`\n * - `require.*`\n *\n * @see https://regex101.com/r/Co77SJ\n *\n * @param {string} code - Code to evaluate\n * @return {boolean} `true` if `code` contains cjs syntax, `false` otherwise\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst hasCJSSyntax = (code: string): boolean => {\n validateString(code, 'code')\n\n /**\n * CommonJS syntax regex.\n *\n * @see https://regex101.com/r/Co77SJ\n *\n * @const {RegExp} CJS_SYNTAX_REGEX\n */\n const CJS_SYNTAX_REGEX: RegExp =\n /(?<!(?:\\/\\/|\\*).*)((?:module\\.)?exports(?:\\.\\w+|(?<!\\s+=))|require(?=\\(.)|require\\.\\w+|__dirname|__filename|await import)/gm\n\n return !!code.match(CJS_SYNTAX_REGEX)\n}\n\nexport default hasCJSSyntax\n"],
|
|
6
|
-
"mappings": "AAKA,OAAO,oBAAoB;AAsB3B,MAAM,eAAe,CAAC,SAA0B;AAC9C,iBAAe,MAAM,MAAM;AAS3B,QAAM,mBACJ;AAEF,SAAO,CAAC,CAAC,KAAK,MAAM,gBAAgB;AACtC;AAEA,IAAO,yBAAQ;",
|
|
7
|
-
"names": []
|
|
8
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file hasESMSyntax
|
|
3
|
-
* @module mlly/utils/hasESMSyntax
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Detects if `code` contains ESM syntax. Ignores matches in comments.
|
|
7
|
-
*
|
|
8
|
-
* Syntax patterns:
|
|
9
|
-
*
|
|
10
|
-
* - `export` (declaration, default, named, star)
|
|
11
|
-
* - `import` (default, dynamic, named, star)
|
|
12
|
-
* - `import.meta.(env|resolve|url)`
|
|
13
|
-
*
|
|
14
|
-
* @see https://regex101.com/r/xfreyy
|
|
15
|
-
*
|
|
16
|
-
* @param {string} code - Code to evaluate
|
|
17
|
-
* @return {boolean} `true` if `code` contains esm syntax, `false` otherwise
|
|
18
|
-
* @throws {NodeError<TypeError>} If `code` is not a string
|
|
19
|
-
*/
|
|
20
|
-
declare const hasESMSyntax: (code: string) => boolean;
|
|
21
|
-
export default hasESMSyntax;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import validateString from "../internal/validate-string.mjs";
|
|
2
|
-
const hasESMSyntax = (code) => {
|
|
3
|
-
validateString(code, "code");
|
|
4
|
-
const ESM_SYNTAX_REGEX = /(?<!(?:\/\/|\*).*)((?:export|import)[\s\w*,{}]*(?=\sfrom)|export\b\s*(?:[*{]|async function|(?:abstract\s)?class|const|default|enum|function|interface|let|type|var)|await import|import\.meta\.(?:env(?:\.\w+)?|resolve|url))/gm;
|
|
5
|
-
return !!code.match(ESM_SYNTAX_REGEX);
|
|
6
|
-
};
|
|
7
|
-
var has_esm_syntax_default = hasESMSyntax;
|
|
8
|
-
export {
|
|
9
|
-
has_esm_syntax_default as default
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=has-esm-syntax.mjs.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/utils/has-esm-syntax.ts"],
|
|
4
|
-
"sourceRoot": "file://",
|
|
5
|
-
"sourcesContent": ["/**\n * @file hasESMSyntax\n * @module mlly/utils/hasESMSyntax\n */\n\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\n\n/**\n * Detects if `code` contains ESM syntax. Ignores matches in comments.\n *\n * Syntax patterns:\n *\n * - `export` (declaration, default, named, star)\n * - `import` (default, dynamic, named, star)\n * - `import.meta.(env|resolve|url)`\n *\n * @see https://regex101.com/r/xfreyy\n *\n * @param {string} code - Code to evaluate\n * @return {boolean} `true` if `code` contains esm syntax, `false` otherwise\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst hasESMSyntax = (code: string): boolean => {\n validateString(code, 'code')\n\n /**\n * ESM syntax regex.\n *\n * @see https://regex101.com/r/xfreyy\n *\n * @const {RegExp} ESM_SYNTAX_REGEX\n */\n const ESM_SYNTAX_REGEX: RegExp =\n /(?<!(?:\\/\\/|\\*).*)((?:export|import)[\\s\\w*,{}]*(?=\\sfrom)|export\\b\\s*(?:[*{]|async function|(?:abstract\\s)?class|const|default|enum|function|interface|let|type|var)|await import|import\\.meta\\.(?:env(?:\\.\\w+)?|resolve|url))/gm\n\n return !!code.match(ESM_SYNTAX_REGEX)\n}\n\nexport default hasESMSyntax\n"],
|
|
6
|
-
"mappings": "AAKA,OAAO,oBAAoB;AAkB3B,MAAM,eAAe,CAAC,SAA0B;AAC9C,iBAAe,MAAM,MAAM;AAS3B,QAAM,mBACJ;AAEF,SAAO,CAAC,CAAC,KAAK,MAAM,gBAAgB;AACtC;AAEA,IAAO,yBAAQ;",
|
|
7
|
-
"names": []
|
|
8
|
-
}
|
package/dist/utils/index.d.mts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Utilities
|
|
3
|
-
* @module mlly/utils
|
|
4
|
-
*/
|
|
5
|
-
export { default as compareSubpaths } from './compare-subpaths.mjs';
|
|
6
|
-
export { default as CONDITIONS } from './conditions.mjs';
|
|
7
|
-
export { default as detectSyntax } from './detect-syntax.mjs';
|
|
8
|
-
export { default as EXTENSION_FORMAT_MAP } from './extension-format-map.mjs';
|
|
9
|
-
export { default as extractStatements } from './extract-statements.mjs';
|
|
10
|
-
export { default as fillModules } from './fill-modules.mjs';
|
|
11
|
-
export { default as findDynamicImports } from './find-dynamic-imports.mjs';
|
|
12
|
-
export { default as findExports } from './find-exports.mjs';
|
|
13
|
-
export { default as findRequires } from './find-requires.mjs';
|
|
14
|
-
export { default as findStaticImports } from './find-static-imports.mjs';
|
|
15
|
-
export { default as findSubpath } from './find-subpath.mjs';
|
|
16
|
-
export { default as getFormat } from './get-format.mjs';
|
|
17
|
-
export { default as getSource } from './get-source.mjs';
|
|
18
|
-
export { default as hasCJSSyntax } from './has-cjs-syntax.mjs';
|
|
19
|
-
export { default as hasESMSyntax } from './has-esm-syntax.mjs';
|
|
20
|
-
export { default as isAbsoluteSpecifier } from './is-absolute-specifier.mjs';
|
|
21
|
-
export { default as isBareSpecifier } from './is-bare-specifier.mjs';
|
|
22
|
-
export { default as isDirectory } from './is-directory.mjs';
|
|
23
|
-
export { default as isExportsSugar } from './is-exports-sugar.mjs';
|
|
24
|
-
export { default as isFile } from './is-file.mjs';
|
|
25
|
-
export { default as isRelativeSpecifier } from './is-relative-specifier.mjs';
|
|
26
|
-
export { default as lookupPackageScope } from './lookup-package-scope.mjs';
|
|
27
|
-
export { default as parseDataURL } from './parse-data-url.mjs';
|
|
28
|
-
export { default as parseModuleId } from './parse-module-id.mjs';
|
|
29
|
-
export { default as parseSubpath } from './parse-subpath.mjs';
|
|
30
|
-
export { default as PATTERN_CHARACTER } from './pattern-character.mjs';
|
|
31
|
-
export { default as readPackageJson } from './read-package-json.mjs';
|
|
32
|
-
export { default as resolveAlias } from './resolve-alias.mjs';
|
|
33
|
-
export { default as resolveAliases } from './resolve-aliases.mjs';
|
|
34
|
-
export { default as RESOLVE_EXTENSIONS } from './resolve-extensions.mjs';
|
|
35
|
-
export { default as resolveModule } from './resolve-module.mjs';
|
|
36
|
-
export { default as resolveModules } from './resolve-modules.mjs';
|
|
37
|
-
export { default as toAbsoluteSpecifier } from './to-absolute-specifier.mjs';
|
|
38
|
-
export { default as toBareSpecifier } from './to-bare-specifier.mjs';
|
|
39
|
-
export { default as toDataURL } from './to-data-url.mjs';
|
|
40
|
-
export { default as toNodeURL } from './to-node-url.mjs';
|
|
41
|
-
export { default as toRelativeSpecifier } from './to-relative-specifier.mjs';
|
|
42
|
-
export { default as toURL } from './to-url.mjs';
|
|
43
|
-
export { default as validateAssertions } from './validate-assertions.mjs';
|
|
44
|
-
export { default as validateExports } from './validate-exports.mjs';
|
package/dist/utils/index.mjs
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { default as default2 } from "./compare-subpaths.mjs";
|
|
2
|
-
import { default as default3 } from "./conditions.mjs";
|
|
3
|
-
import { default as default4 } from "./detect-syntax.mjs";
|
|
4
|
-
import { default as default5 } from "./extension-format-map.mjs";
|
|
5
|
-
import { default as default6 } from "./extract-statements.mjs";
|
|
6
|
-
import { default as default7 } from "./fill-modules.mjs";
|
|
7
|
-
import { default as default8 } from "./find-dynamic-imports.mjs";
|
|
8
|
-
import { default as default9 } from "./find-exports.mjs";
|
|
9
|
-
import { default as default10 } from "./find-requires.mjs";
|
|
10
|
-
import { default as default11 } from "./find-static-imports.mjs";
|
|
11
|
-
import { default as default12 } from "./find-subpath.mjs";
|
|
12
|
-
import { default as default13 } from "./get-format.mjs";
|
|
13
|
-
import { default as default14 } from "./get-source.mjs";
|
|
14
|
-
import { default as default15 } from "./has-cjs-syntax.mjs";
|
|
15
|
-
import { default as default16 } from "./has-esm-syntax.mjs";
|
|
16
|
-
import { default as default17 } from "./is-absolute-specifier.mjs";
|
|
17
|
-
import { default as default18 } from "./is-bare-specifier.mjs";
|
|
18
|
-
import { default as default19 } from "./is-directory.mjs";
|
|
19
|
-
import { default as default20 } from "./is-exports-sugar.mjs";
|
|
20
|
-
import { default as default21 } from "./is-file.mjs";
|
|
21
|
-
import { default as default22 } from "./is-relative-specifier.mjs";
|
|
22
|
-
import { default as default23 } from "./lookup-package-scope.mjs";
|
|
23
|
-
import { default as default24 } from "./parse-data-url.mjs";
|
|
24
|
-
import { default as default25 } from "./parse-module-id.mjs";
|
|
25
|
-
import { default as default26 } from "./parse-subpath.mjs";
|
|
26
|
-
import { default as default27 } from "./pattern-character.mjs";
|
|
27
|
-
import { default as default28 } from "./read-package-json.mjs";
|
|
28
|
-
import { default as default29 } from "./resolve-alias.mjs";
|
|
29
|
-
import { default as default30 } from "./resolve-aliases.mjs";
|
|
30
|
-
import { default as default31 } from "./resolve-extensions.mjs";
|
|
31
|
-
import { default as default32 } from "./resolve-module.mjs";
|
|
32
|
-
import { default as default33 } from "./resolve-modules.mjs";
|
|
33
|
-
import { default as default34 } from "./to-absolute-specifier.mjs";
|
|
34
|
-
import { default as default35 } from "./to-bare-specifier.mjs";
|
|
35
|
-
import { default as default36 } from "./to-data-url.mjs";
|
|
36
|
-
import { default as default37 } from "./to-node-url.mjs";
|
|
37
|
-
import { default as default38 } from "./to-relative-specifier.mjs";
|
|
38
|
-
import { default as default39 } from "./to-url.mjs";
|
|
39
|
-
import { default as default40 } from "./validate-assertions.mjs";
|
|
40
|
-
import { default as default41 } from "./validate-exports.mjs";
|
|
41
|
-
export {
|
|
42
|
-
default3 as CONDITIONS,
|
|
43
|
-
default5 as EXTENSION_FORMAT_MAP,
|
|
44
|
-
default27 as PATTERN_CHARACTER,
|
|
45
|
-
default31 as RESOLVE_EXTENSIONS,
|
|
46
|
-
default2 as compareSubpaths,
|
|
47
|
-
default4 as detectSyntax,
|
|
48
|
-
default6 as extractStatements,
|
|
49
|
-
default7 as fillModules,
|
|
50
|
-
default8 as findDynamicImports,
|
|
51
|
-
default9 as findExports,
|
|
52
|
-
default10 as findRequires,
|
|
53
|
-
default11 as findStaticImports,
|
|
54
|
-
default12 as findSubpath,
|
|
55
|
-
default13 as getFormat,
|
|
56
|
-
default14 as getSource,
|
|
57
|
-
default15 as hasCJSSyntax,
|
|
58
|
-
default16 as hasESMSyntax,
|
|
59
|
-
default17 as isAbsoluteSpecifier,
|
|
60
|
-
default18 as isBareSpecifier,
|
|
61
|
-
default19 as isDirectory,
|
|
62
|
-
default20 as isExportsSugar,
|
|
63
|
-
default21 as isFile,
|
|
64
|
-
default22 as isRelativeSpecifier,
|
|
65
|
-
default23 as lookupPackageScope,
|
|
66
|
-
default24 as parseDataURL,
|
|
67
|
-
default25 as parseModuleId,
|
|
68
|
-
default26 as parseSubpath,
|
|
69
|
-
default28 as readPackageJson,
|
|
70
|
-
default29 as resolveAlias,
|
|
71
|
-
default30 as resolveAliases,
|
|
72
|
-
default32 as resolveModule,
|
|
73
|
-
default33 as resolveModules,
|
|
74
|
-
default34 as toAbsoluteSpecifier,
|
|
75
|
-
default35 as toBareSpecifier,
|
|
76
|
-
default36 as toDataURL,
|
|
77
|
-
default37 as toNodeURL,
|
|
78
|
-
default38 as toRelativeSpecifier,
|
|
79
|
-
default39 as toURL,
|
|
80
|
-
default40 as validateAssertions,
|
|
81
|
-
default41 as validateExports
|
|
82
|
-
};
|
|
83
|
-
//# sourceMappingURL=index.mjs.map
|