@flex-development/mlly 1.0.0-alpha.5 → 1.0.0-alpha.7
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 +200 -0
- package/README.md +1 -1
- package/changelog.config.ts +404 -0
- package/dist/enums/assert-type.d.mts +21 -0
- package/dist/enums/assert-type.mjs +10 -0
- package/dist/enums/assert-type.mjs.map +6 -0
- package/dist/enums/format.d.mts +17 -0
- package/dist/enums/format.mjs +13 -0
- package/dist/enums/format.mjs.map +6 -0
- package/dist/enums/index.d.mts +4 -1
- package/dist/enums/index.mjs +13 -6
- package/dist/enums/index.mjs.map +6 -0
- package/dist/enums/kind-specifier-syntax.d.mts +14 -0
- package/dist/enums/kind-specifier-syntax.mjs +10 -0
- package/dist/enums/kind-specifier-syntax.mjs.map +6 -0
- package/dist/enums/kind-specifier.d.mts +6 -3
- package/dist/enums/kind-specifier.mjs +4 -2
- package/dist/enums/kind-specifier.mjs.map +6 -0
- package/dist/enums/{kind-syntax.d.mts → kind-statement-syntax.d.mts} +4 -4
- package/dist/enums/kind-statement-syntax.mjs +18 -0
- package/dist/enums/kind-statement-syntax.mjs.map +6 -0
- package/dist/enums/kind-statement.mjs +1 -0
- package/dist/enums/kind-statement.mjs.map +6 -0
- package/dist/index.d.mts +1 -2
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +6 -0
- package/dist/interfaces/import-assertions.d.mts +20 -0
- package/dist/interfaces/import-dynamic.d.mts +4 -2
- package/dist/interfaces/import-static.d.mts +4 -2
- package/dist/interfaces/index.d.mts +12 -0
- package/dist/interfaces/index.mjs +1 -0
- package/dist/interfaces/index.mjs.map +6 -0
- package/dist/interfaces/options-fill-module.d.mts +23 -0
- package/dist/interfaces/options-find-subpath.d.mts +49 -0
- package/dist/interfaces/options-get-format.d.mts +83 -0
- package/dist/interfaces/options-get-source.d.mts +63 -0
- package/dist/interfaces/options-parse-module-id.d.mts +33 -0
- package/dist/interfaces/options-parse-subpath.d.mts +31 -0
- package/dist/interfaces/options-resolve-alias.d.mts +26 -42
- package/dist/interfaces/options-resolve-module.d.mts +64 -0
- package/dist/interfaces/options-resolve.d.mts +7 -53
- package/dist/interfaces/package-scope.d.mts +25 -0
- package/dist/interfaces/parsed-data-url.d.mts +56 -0
- package/dist/interfaces/parsed-module-id.d.mts +80 -0
- package/dist/interfaces/parsed-subpath.d.mts +40 -0
- package/dist/interfaces/statement-import.d.mts +2 -2
- package/dist/interfaces/statement-require.d.mts +2 -2
- package/dist/interfaces/statement.d.mts +10 -5
- package/dist/internal/escape-reg-exp.d.mts +16 -0
- package/dist/internal/escape-reg-exp.mjs +10 -0
- package/dist/internal/escape-reg-exp.mjs.map +6 -0
- package/dist/internal/format-type-map.d.mts +17 -0
- package/dist/internal/format-type-map.mjs +13 -0
- package/dist/internal/format-type-map.mjs.map +6 -0
- package/dist/internal/get-specifier-kind.d.mts +17 -0
- package/dist/internal/get-specifier-kind.mjs +14 -0
- package/dist/internal/get-specifier-kind.mjs.map +6 -0
- package/dist/internal/get-subpaths.d.mts +25 -0
- package/dist/internal/get-subpaths.mjs +10 -0
- package/dist/internal/get-subpaths.mjs.map +6 -0
- package/dist/internal/is-array-index.d.mts +15 -0
- package/dist/internal/is-array-index.mjs +9 -0
- package/dist/internal/is-array-index.mjs.map +6 -0
- package/dist/internal/is-directory.d.mts +13 -0
- package/dist/internal/is-directory.mjs +16 -0
- package/dist/internal/is-directory.mjs.map +6 -0
- package/dist/internal/is-file.d.mts +13 -0
- package/dist/internal/is-file.mjs +16 -0
- package/dist/internal/is-file.mjs.map +6 -0
- package/dist/internal/is-function.d.mts +12 -0
- package/dist/internal/is-function.mjs +8 -0
- package/dist/internal/is-function.mjs.map +6 -0
- package/dist/internal/regex-encoded-sep.d.mts +13 -0
- package/dist/internal/regex-encoded-sep.mjs +6 -0
- package/dist/internal/regex-encoded-sep.mjs.map +6 -0
- package/dist/internal/regex-internal-specifier.d.mts +14 -0
- package/dist/internal/regex-internal-specifier.mjs +6 -0
- package/dist/internal/regex-internal-specifier.mjs.map +6 -0
- package/dist/internal/regex-package-name.d.mts +13 -0
- package/dist/internal/regex-package-name.mjs +6 -0
- package/dist/internal/regex-package-name.mjs.map +6 -0
- package/dist/internal/regex-package-path.d.mts +15 -0
- package/dist/internal/regex-package-path.mjs +6 -0
- package/dist/internal/regex-package-path.mjs.map +6 -0
- package/dist/internal/resolver.d.mts +130 -0
- package/dist/internal/resolver.mjs +486 -0
- package/dist/internal/resolver.mjs.map +6 -0
- package/dist/internal/validate-boolean.d.mts +20 -0
- package/dist/internal/validate-boolean.mjs +11 -0
- package/dist/internal/validate-boolean.mjs.map +6 -0
- package/dist/internal/validate-object.d.mts +23 -0
- package/dist/internal/validate-object.mjs +11 -0
- package/dist/internal/validate-object.mjs.map +6 -0
- package/dist/internal/validate-set.d.mts +23 -0
- package/dist/internal/validate-set.mjs +11 -0
- package/dist/internal/validate-set.mjs.map +6 -0
- package/dist/internal/validate-string.d.mts +20 -0
- package/dist/internal/validate-string.mjs +11 -0
- package/dist/internal/validate-string.mjs.map +6 -0
- package/dist/internal/validate-url-string.d.mts +22 -0
- package/dist/internal/validate-url-string.mjs +12 -0
- package/dist/internal/validate-url-string.mjs.map +6 -0
- package/dist/types/fn-change-ext.d.mts +28 -0
- package/dist/types/index.d.mts +4 -1
- package/dist/types/index.mjs +1 -0
- package/dist/types/index.mjs.map +6 -0
- package/dist/types/mime-type.d.mts +7 -5
- package/dist/types/module-id.d.mts +13 -0
- package/dist/types/protocol.d.mts +14 -0
- package/dist/types/syntax-kind-export.d.mts +3 -3
- package/dist/types/syntax-kind-import.d.mts +3 -3
- package/dist/types/syntax-kind-require.d.mts +3 -3
- package/dist/utils/compare-subpaths.d.mts +25 -0
- package/dist/utils/compare-subpaths.mjs +24 -0
- package/dist/utils/compare-subpaths.mjs.map +6 -0
- package/dist/utils/conditions.d.mts +13 -0
- package/dist/utils/conditions.mjs +6 -0
- package/dist/utils/conditions.mjs.map +6 -0
- package/dist/{lib → utils}/detect-syntax.d.mts +1 -1
- package/dist/{lib → utils}/detect-syntax.mjs +1 -0
- package/dist/utils/detect-syntax.mjs.map +6 -0
- package/dist/utils/extension-format-map.d.mts +16 -0
- package/dist/utils/extension-format-map.mjs +22 -0
- package/dist/utils/extension-format-map.mjs.map +6 -0
- package/dist/{lib → utils}/extract-statements.d.mts +2 -1
- package/dist/{lib → utils}/extract-statements.mjs +3 -0
- package/dist/utils/extract-statements.mjs.map +6 -0
- package/dist/utils/fill-modules.d.mts +23 -0
- package/dist/utils/fill-modules.mjs +62 -0
- package/dist/utils/fill-modules.mjs.map +6 -0
- package/dist/{lib → utils}/find-dynamic-imports.d.mts +4 -3
- package/dist/{lib → utils}/find-dynamic-imports.mjs +14 -4
- package/dist/utils/find-dynamic-imports.mjs.map +6 -0
- package/dist/{lib → utils}/find-exports.d.mts +4 -3
- package/dist/{lib → utils}/find-exports.mjs +29 -12
- package/dist/utils/find-exports.mjs.map +6 -0
- package/dist/{lib → utils}/find-requires.d.mts +4 -3
- package/dist/{lib → utils}/find-requires.mjs +14 -4
- package/dist/utils/find-requires.mjs.map +6 -0
- package/dist/{lib → utils}/find-static-imports.d.mts +4 -3
- package/dist/utils/find-static-imports.mjs +34 -0
- package/dist/utils/find-static-imports.mjs.map +6 -0
- package/dist/utils/find-subpath.d.mts +30 -0
- package/dist/utils/find-subpath.mjs +106 -0
- package/dist/utils/find-subpath.mjs.map +6 -0
- package/dist/utils/get-format.d.mts +24 -0
- package/dist/utils/get-format.mjs +111 -0
- package/dist/utils/get-format.mjs.map +6 -0
- package/dist/utils/get-source.d.mts +22 -0
- package/dist/utils/get-source.mjs +63 -0
- package/dist/utils/get-source.mjs.map +6 -0
- package/dist/{lib → utils}/has-cjs-syntax.d.mts +2 -1
- package/dist/{lib → utils}/has-cjs-syntax.mjs +3 -0
- package/dist/utils/has-cjs-syntax.mjs.map +6 -0
- package/dist/{lib → utils}/has-esm-syntax.d.mts +2 -1
- package/dist/{lib → utils}/has-esm-syntax.mjs +3 -0
- package/dist/utils/has-esm-syntax.mjs.map +6 -0
- package/dist/utils/index.d.mts +42 -0
- package/dist/utils/index.mjs +79 -0
- package/dist/utils/index.mjs.map +6 -0
- package/dist/utils/is-absolute-specifier.d.mts +19 -0
- package/dist/utils/is-absolute-specifier.mjs +25 -0
- package/dist/utils/is-absolute-specifier.mjs.map +6 -0
- package/dist/utils/is-bare-specifier.d.mts +19 -0
- package/dist/utils/is-bare-specifier.mjs +10 -0
- package/dist/utils/is-bare-specifier.mjs.map +6 -0
- package/dist/utils/is-exports-sugar.d.mts +25 -0
- package/dist/utils/is-exports-sugar.mjs +26 -0
- package/dist/utils/is-exports-sugar.mjs.map +6 -0
- package/dist/utils/is-relative-specifier.d.mts +20 -0
- package/dist/utils/is-relative-specifier.mjs +11 -0
- package/dist/utils/is-relative-specifier.mjs.map +6 -0
- package/dist/utils/lookup-package-scope.d.mts +24 -0
- package/dist/utils/lookup-package-scope.mjs +34 -0
- package/dist/utils/lookup-package-scope.mjs.map +6 -0
- package/dist/utils/parse-data-url.d.mts +25 -0
- package/dist/utils/parse-data-url.mjs +25 -0
- package/dist/utils/parse-data-url.mjs.map +6 -0
- package/dist/utils/parse-module-id.d.mts +22 -0
- package/dist/utils/parse-module-id.mjs +122 -0
- package/dist/utils/parse-module-id.mjs.map +6 -0
- package/dist/utils/parse-subpath.d.mts +35 -0
- package/dist/utils/parse-subpath.mjs +54 -0
- package/dist/utils/parse-subpath.mjs.map +6 -0
- package/dist/utils/pattern-character.d.mts +11 -0
- package/dist/utils/pattern-character.mjs +6 -0
- package/dist/utils/pattern-character.mjs.map +6 -0
- package/dist/utils/read-package-json.d.mts +26 -0
- package/dist/utils/read-package-json.mjs +43 -0
- package/dist/utils/read-package-json.mjs.map +6 -0
- package/dist/utils/resolve-alias.d.mts +20 -0
- package/dist/utils/resolve-alias.mjs +106 -0
- package/dist/utils/resolve-alias.mjs.map +6 -0
- package/dist/{lib → utils}/resolve-aliases.d.mts +7 -5
- package/dist/utils/resolve-aliases.mjs +28 -0
- package/dist/utils/resolve-aliases.mjs.map +6 -0
- package/dist/utils/resolve-extensions.d.mts +14 -0
- package/dist/utils/resolve-extensions.mjs +22 -0
- package/dist/utils/resolve-extensions.mjs.map +6 -0
- package/dist/utils/resolve-module.d.mts +39 -0
- package/dist/utils/resolve-module.mjs +64 -0
- package/dist/utils/resolve-module.mjs.map +6 -0
- package/dist/utils/resolve-modules.d.mts +25 -0
- package/dist/utils/resolve-modules.mjs +26 -0
- package/dist/utils/resolve-modules.mjs.map +6 -0
- package/dist/{lib → utils}/to-absolute-specifier.d.mts +6 -6
- package/dist/utils/to-absolute-specifier.mjs +8 -0
- package/dist/utils/to-absolute-specifier.mjs.map +6 -0
- package/dist/utils/to-bare-specifier.d.mts +42 -0
- package/dist/utils/to-bare-specifier.mjs +90 -0
- package/dist/utils/to-bare-specifier.mjs.map +6 -0
- package/dist/{lib → utils}/to-data-url.d.mts +6 -5
- package/dist/{lib → utils}/to-data-url.mjs +4 -0
- package/dist/utils/to-data-url.mjs.map +6 -0
- package/dist/utils/to-node-url.d.mts +19 -0
- package/dist/utils/to-node-url.mjs +10 -0
- package/dist/utils/to-node-url.mjs.map +6 -0
- package/dist/{lib → utils}/to-relative-specifier.d.mts +6 -6
- package/dist/{lib → utils}/to-relative-specifier.mjs +6 -2
- package/dist/utils/to-relative-specifier.mjs.map +6 -0
- package/dist/utils/to-url.d.mts +22 -0
- package/dist/utils/to-url.mjs +12 -0
- package/dist/utils/to-url.mjs.map +6 -0
- package/dist/utils/validate-assertions.d.mts +23 -0
- package/dist/utils/validate-assertions.mjs +52 -0
- package/dist/utils/validate-assertions.mjs.map +6 -0
- package/dist/utils/validate-exports.d.mts +24 -0
- package/dist/utils/validate-exports.mjs +72 -0
- package/dist/utils/validate-exports.mjs.map +6 -0
- package/package.json +67 -63
- package/changelog.config.cts +0 -204
- package/dist/constants.d.mts +0 -21
- package/dist/constants.mjs +0 -24
- package/dist/enums/kind-syntax.mjs +0 -17
- package/dist/interfaces/import-dynamic.mjs +0 -0
- package/dist/interfaces/import-static.mjs +0 -0
- package/dist/interfaces/options-resolve-alias.mjs +0 -0
- package/dist/interfaces/options-resolve.mjs +0 -0
- package/dist/interfaces/statement-export.mjs +0 -0
- package/dist/interfaces/statement-import.mjs +0 -0
- package/dist/interfaces/statement-require.mjs +0 -0
- package/dist/interfaces/statement.mjs +0 -0
- package/dist/internal/get-compiler-options.d.mts +0 -21
- package/dist/internal/get-compiler-options.mjs +0 -14
- package/dist/lib/find-static-imports.mjs +0 -25
- package/dist/lib/index.d.mts +0 -20
- package/dist/lib/index.mjs +0 -34
- package/dist/lib/resolve-alias.d.mts +0 -20
- package/dist/lib/resolve-alias.mjs +0 -41
- package/dist/lib/resolve-aliases.mjs +0 -34
- package/dist/lib/resolve-module.d.mts +0 -31
- package/dist/lib/resolve-module.mjs +0 -74
- package/dist/lib/resolve-modules.d.mts +0 -19
- package/dist/lib/resolve-modules.mjs +0 -30
- package/dist/lib/to-absolute-specifier.mjs +0 -20
- package/dist/lib/to-bare-specifier.d.mts +0 -28
- package/dist/lib/to-bare-specifier.mjs +0 -78
- package/dist/types/declaration.mjs +0 -0
- package/dist/types/mime-type.mjs +0 -0
- package/dist/types/module-specifier-type.mjs +0 -0
- package/dist/types/syntax-kind-export.mjs +0 -0
- package/dist/types/syntax-kind-import.mjs +0 -0
- package/dist/types/syntax-kind-require.mjs +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/parse-module-id.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["protocol", "pathname"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file parseSubpath
|
|
3
|
+
* @module mlly/utils/parseSubpath
|
|
4
|
+
*/
|
|
5
|
+
import type { ParseSubpathOptions, ParsedSubpath } from '../interfaces/index.mjs';
|
|
6
|
+
import type { Exports, Imports } from '@flex-development/pkg-types';
|
|
7
|
+
/**
|
|
8
|
+
* Creates an object representation of a subpath export or import from the given
|
|
9
|
+
* module `specifier` after ensuring the subpath defined in `specifier` is also
|
|
10
|
+
* defined in the given package `context`, a `package.json` [`exports`][1] or
|
|
11
|
+
* [`imports`][2] field.
|
|
12
|
+
*
|
|
13
|
+
* ::: warning
|
|
14
|
+
* Does **not** guarantee `specifier` resolves to an existing module.
|
|
15
|
+
* :::
|
|
16
|
+
*
|
|
17
|
+
* [1]: https://nodejs.org/api/packages.html#exports
|
|
18
|
+
* [2]: https://nodejs.org/api/packages.html#imports
|
|
19
|
+
*
|
|
20
|
+
* @see {@linkcode Exports}
|
|
21
|
+
* @see {@linkcode Imports}
|
|
22
|
+
* @see {@linkcode ParseSubpathOptions}
|
|
23
|
+
* @see {@linkcode ParsedSubpath}
|
|
24
|
+
* @see https://nodejs.org/api/packages.html#subpath-exports
|
|
25
|
+
* @see https://nodejs.org/api/packages.html#subpath-imports
|
|
26
|
+
*
|
|
27
|
+
* @param {string} specifier - Module specifier to evaluate
|
|
28
|
+
* @param {Exports | Imports | undefined} context - Package context
|
|
29
|
+
* @param {ParseSubpathOptions} options - Parsing options
|
|
30
|
+
* @return {ParsedSubpath} Object representing package subpath
|
|
31
|
+
* @throws {NodeError<Error | TypeError>} If `specifier` is not a string or the
|
|
32
|
+
* subpath defined in `specifier` is not defined in `context`
|
|
33
|
+
*/
|
|
34
|
+
declare const parseSubpath: (specifier: string, context: Exports | Imports | undefined, options: ParseSubpathOptions) => ParsedSubpath;
|
|
35
|
+
export default parseSubpath;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import getSubpaths from "../internal/get-subpaths.mjs";
|
|
2
|
+
import validateString from "../internal/validate-string.mjs";
|
|
3
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ERR_PACKAGE_IMPORT_NOT_DEFINED,
|
|
6
|
+
ERR_PACKAGE_PATH_NOT_EXPORTED
|
|
7
|
+
} from "@flex-development/errnode";
|
|
8
|
+
import pathe from "@flex-development/pathe";
|
|
9
|
+
import { CompareResult } from "@flex-development/tutils";
|
|
10
|
+
import { URL, fileURLToPath, pathToFileURL } from "node:url";
|
|
11
|
+
import compareSubpaths from "./compare-subpaths.mjs";
|
|
12
|
+
import parseModuleId from "./parse-module-id.mjs";
|
|
13
|
+
import PATTERN_CHARACTER from "./pattern-character.mjs";
|
|
14
|
+
const parseSubpath = (specifier, context, options) => {
|
|
15
|
+
const { dir, internal = specifier.startsWith("#"), parent } = options;
|
|
16
|
+
validateString(specifier, "specifier");
|
|
17
|
+
validateURLString(dir, "options.dir");
|
|
18
|
+
const id = parseModuleId(specifier, {
|
|
19
|
+
internal,
|
|
20
|
+
parent,
|
|
21
|
+
pkgname: !internal
|
|
22
|
+
});
|
|
23
|
+
const pkgdir = fileURLToPath(dir).replace(/\/$/, "") + pathe.sep;
|
|
24
|
+
const pkg = new URL("package.json", pathToFileURL(pkgdir));
|
|
25
|
+
const keys = getSubpaths(context, id.internal, pkg, parent);
|
|
26
|
+
let key = null;
|
|
27
|
+
let base = "";
|
|
28
|
+
for (const pkgsubpath of keys) {
|
|
29
|
+
const pattern = pkgsubpath.indexOf(PATTERN_CHARACTER);
|
|
30
|
+
if (pattern === -1 && pkgsubpath === id.path) {
|
|
31
|
+
key = pkgsubpath;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
if (pattern !== -1 && id.path.startsWith(pkgsubpath.slice(0, pattern))) {
|
|
35
|
+
const trailer = pkgsubpath.slice(pattern + 1);
|
|
36
|
+
if (id.path.length >= pkgsubpath.length && id.path.endsWith(trailer) && compareSubpaths(key ?? "", pkgsubpath) === CompareResult.GREATER_THAN && pkgsubpath.lastIndexOf(PATTERN_CHARACTER) === pattern) {
|
|
37
|
+
key = pkgsubpath;
|
|
38
|
+
base = id.path.slice(pattern, id.path.length - trailer.length);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (key === null) {
|
|
43
|
+
let { parent: parent2 } = options;
|
|
44
|
+
validateURLString(parent2, "options.parent");
|
|
45
|
+
parent2 = fileURLToPath(parent2);
|
|
46
|
+
throw internal ? new ERR_PACKAGE_IMPORT_NOT_DEFINED(id.path, parent2, pkgdir) : new ERR_PACKAGE_PATH_NOT_EXPORTED(pkgdir, id.path, parent2);
|
|
47
|
+
}
|
|
48
|
+
return { base, internal, key, raw: id.path, specifier: id.raw };
|
|
49
|
+
};
|
|
50
|
+
var parse_subpath_default = parseSubpath;
|
|
51
|
+
export {
|
|
52
|
+
parse_subpath_default as default
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=parse-subpath.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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,qBAAoC;AAC7C,SAAS,KAAK,eAAe,qBAAqB;AAClD,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AA6B9B,MAAM,eAAe,CACnB,WACA,SACA,YACkB;AAClB,QAAM,EAAE,KAAK,WAAW,UAAU,WAAW,GAAG,GAAG,OAAO,IAAI;AAG9D,iBAAe,WAAW,WAAW;AAGrC,oBAAkB,KAAK,aAAa;AAYpC,QAAM,KAAqB,cAAc,WAAW;AAAA,IAClD;AAAA,IACA;AAAA,IACA,SAAS,CAAC;AAAA,EACZ,CAAC;AAOD,QAAM,SAAiB,cAAc,GAAG,EAAE,QAAQ,OAAO,EAAE,IAAI,MAAM;AAOrE,QAAM,MAAW,IAAI,IAAI,gBAAgB,cAAc,MAAM,CAAC;AAO9D,QAAM,OAAiB,YAAY,SAAS,GAAG,UAAU,KAAK,MAAM;AAOpE,MAAI,MAAwB;AAO5B,MAAI,OAAe;AAGnB,aAAW,cAAc,MAAM;AAM7B,UAAM,UAAkB,WAAW,QAAQ,iBAAiB;AAG5D,QAAI,YAAY,MAAM,eAAe,GAAG,MAAM;AAC5C,YAAM;AACN;AAAA,IACF;AAGA,QAAI,YAAY,MAAM,GAAG,KAAK,WAAW,WAAW,MAAM,GAAG,OAAO,CAAC,GAAG;AAMtE,YAAM,UAAkB,WAAW,MAAM,UAAU,CAAC;AAGpD,UACE,GAAG,KAAK,UAAU,WAAW,UAC7B,GAAG,KAAK,SAAS,OAAO,KACxB,gBAAgB,OAAO,IAAI,UAAU,MAAM,cAAc,gBACzD,WAAW,YAAY,iBAAiB,MAAM,SAC9C;AACA,cAAM;AACN,eAAO,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,SAAS,QAAQ,MAAM;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM;AAChB,QAAI,EAAE,QAAAA,QAAO,IAAI;AAGjB,sBAAkBA,SAAQ,gBAAgB;AAG1C,IAAAA,UAAS,cAAcA,OAAM;AAE7B,UAAM,WACF,IAAI,+BAA+B,GAAG,MAAMA,SAAQ,MAAM,IAC1D,IAAI,8BAA8B,QAAQ,GAAG,MAAMA,OAAM;AAAA,EAC/D;AAEA,SAAO,EAAE,MAAM,UAAU,KAAK,KAAK,GAAG,MAAM,WAAW,GAAG,IAAI;AAChE;AAEA,IAAO,wBAAQ;",
|
|
5
|
+
"names": ["parent"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file readPackageJson
|
|
3
|
+
* @module mlly/utils/readPackageJson
|
|
4
|
+
*/
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
|
+
import type { PackageJson } from '@flex-development/pkg-types';
|
|
7
|
+
import { type Nullable } from '@flex-development/tutils';
|
|
8
|
+
/**
|
|
9
|
+
* Reads a `package.json` file from the given directory.
|
|
10
|
+
*
|
|
11
|
+
* Returns `null` if a file is not found.
|
|
12
|
+
*
|
|
13
|
+
* @see {@linkcode ModuleId}
|
|
14
|
+
* @see {@linkcode PackageJson}
|
|
15
|
+
*
|
|
16
|
+
* @param {ModuleId} [dir='.'] - Id of directory containing `package.json` file
|
|
17
|
+
* @param {string?} [specifier] - Module specifier passed by user to initiate
|
|
18
|
+
* reading of `package.json` file
|
|
19
|
+
* @param {ModuleId?} [parent] - Id of module to resolve from
|
|
20
|
+
* @return {?PackageJson} `package.json` object or `null` if file is not found
|
|
21
|
+
* @throws {NodeError<Error | TypeError>} If `dir` is not a string or instance
|
|
22
|
+
* of {@linkcode URL}, if `specifier` is not a string, if `parent` is not a
|
|
23
|
+
* string, or if a `package.json` is file found and does not contain valid JSON
|
|
24
|
+
*/
|
|
25
|
+
declare const readPackageJson: (dir?: ModuleId, specifier?: string, parent?: ModuleId) => Nullable<PackageJson>;
|
|
26
|
+
export default readPackageJson;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import isFile from "../internal/is-file.mjs";
|
|
2
|
+
import validateString from "../internal/validate-string.mjs";
|
|
3
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ERR_INVALID_PACKAGE_CONFIG
|
|
6
|
+
} from "@flex-development/errnode";
|
|
7
|
+
import pathe from "@flex-development/pathe";
|
|
8
|
+
import { isEmptyString, isNIL } from "@flex-development/tutils";
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import { fileURLToPath } from "node:url";
|
|
11
|
+
import toURL from "./to-url.mjs";
|
|
12
|
+
const readPackageJson = (dir = ".", specifier, parent) => {
|
|
13
|
+
validateURLString(dir, "dir");
|
|
14
|
+
if (specifier !== void 0)
|
|
15
|
+
validateString(specifier, "specifier");
|
|
16
|
+
if (parent !== void 0)
|
|
17
|
+
validateURLString(parent, "parent");
|
|
18
|
+
dir = fileURLToPath(toURL(dir));
|
|
19
|
+
const path = pathe.toNamespacedPath(pathe.join(dir, "package.json"));
|
|
20
|
+
if (!isFile(path))
|
|
21
|
+
return null;
|
|
22
|
+
let pkg;
|
|
23
|
+
try {
|
|
24
|
+
pkg = JSON.parse(fs.readFileSync(path, "utf8"));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
let base;
|
|
27
|
+
switch (true) {
|
|
28
|
+
case (specifier && !isNIL(parent) && !isEmptyString(parent)):
|
|
29
|
+
base = `'${specifier}' from ${fileURLToPath(toURL(parent))}`;
|
|
30
|
+
break;
|
|
31
|
+
case (specifier == null ? void 0 : specifier.startsWith("file:")):
|
|
32
|
+
base = fileURLToPath(specifier);
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(path, base, e.message);
|
|
36
|
+
}
|
|
37
|
+
return pkg;
|
|
38
|
+
};
|
|
39
|
+
var read_package_json_default = readPackageJson;
|
|
40
|
+
export {
|
|
41
|
+
read_package_json_default as default
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=read-package-json.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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,SAAS,eAAe,aAA4B;AACpD,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAmBlB,MAAM,kBAAkB,CACtB,MAAgB,KAChB,WACA,WAC0B;AAE1B,oBAAkB,KAAK,KAAK;AAG5B,MAAI,cAAc;AAAW,mBAAe,WAAW,WAAW;AAGlE,MAAI,WAAW;AAAW,sBAAkB,QAAQ,QAAQ;AAG5D,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
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file resolveAlias
|
|
3
|
+
* @module mlly/utils/resolveAlias
|
|
4
|
+
*/
|
|
5
|
+
import type { ResolveAliasOptions } from '../interfaces/index.mjs';
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a path alias in the given module `specifier`; does nothing if a path
|
|
8
|
+
* match isn't found.
|
|
9
|
+
*
|
|
10
|
+
* @see {@linkcode ResolveAliasOptions}
|
|
11
|
+
*
|
|
12
|
+
* @async
|
|
13
|
+
*
|
|
14
|
+
* @param {string} specifier - Module specifier to evaluate
|
|
15
|
+
* @param {ResolveAliasOptions} [options={}] - Resolution options
|
|
16
|
+
* @return {Promise<string>} Resolved specifier or original module specifier
|
|
17
|
+
* @throws {NodeError}
|
|
18
|
+
*/
|
|
19
|
+
declare const resolveAlias: (specifier: string, options?: ResolveAliasOptions) => Promise<string>;
|
|
20
|
+
export default resolveAlias;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import regexp from "../internal/escape-reg-exp.mjs";
|
|
2
|
+
import validateBoolean from "../internal/validate-boolean.mjs";
|
|
3
|
+
import validateObject from "../internal/validate-object.mjs";
|
|
4
|
+
import validateSet from "../internal/validate-set.mjs";
|
|
5
|
+
import validateString from "../internal/validate-string.mjs";
|
|
6
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
7
|
+
import pathe from "@flex-development/pathe";
|
|
8
|
+
import { CompareResult, isNIL } from "@flex-development/tutils";
|
|
9
|
+
import { URL, pathToFileURL } from "node:url";
|
|
10
|
+
import compareSubpaths from "./compare-subpaths.mjs";
|
|
11
|
+
import CONDITIONS from "./conditions.mjs";
|
|
12
|
+
import parseModuleId from "./parse-module-id.mjs";
|
|
13
|
+
import PATTERN_CHARACTER from "./pattern-character.mjs";
|
|
14
|
+
import RESOLVE_EXTENSIONS from "./resolve-extensions.mjs";
|
|
15
|
+
import resolveModule from "./resolve-module.mjs";
|
|
16
|
+
import toBareSpecifier from "./to-bare-specifier.mjs";
|
|
17
|
+
import toRelativeSpecifier from "./to-relative-specifier.mjs";
|
|
18
|
+
import toURL from "./to-url.mjs";
|
|
19
|
+
const resolveAlias = async (specifier, options = {}) => {
|
|
20
|
+
const {
|
|
21
|
+
absolute = true,
|
|
22
|
+
aliases = {},
|
|
23
|
+
condition = "default",
|
|
24
|
+
conditions = CONDITIONS,
|
|
25
|
+
cwd = pathToFileURL("."),
|
|
26
|
+
ext,
|
|
27
|
+
extensions = RESOLVE_EXTENSIONS,
|
|
28
|
+
parent = import.meta.url,
|
|
29
|
+
preserveSymlinks = false
|
|
30
|
+
} = options;
|
|
31
|
+
validateString(specifier, "specifier");
|
|
32
|
+
validateBoolean(absolute, "options.absolute");
|
|
33
|
+
validateObject(aliases, "options.aliases");
|
|
34
|
+
validateString(condition, "options.condition");
|
|
35
|
+
validateURLString(cwd, "options.cwd");
|
|
36
|
+
validateSet(extensions, "options.extensions");
|
|
37
|
+
validateURLString(parent, "options.parent");
|
|
38
|
+
validateBoolean(preserveSymlinks, "options.preserveSymlinks");
|
|
39
|
+
const id = parseModuleId(specifier, {
|
|
40
|
+
parent: toURL(parent),
|
|
41
|
+
pkgname: false
|
|
42
|
+
});
|
|
43
|
+
const keys = Object.keys(aliases).sort(compareSubpaths);
|
|
44
|
+
let alias = null;
|
|
45
|
+
let trail = "";
|
|
46
|
+
for (const key of keys) {
|
|
47
|
+
const pattern = key.indexOf(PATTERN_CHARACTER);
|
|
48
|
+
if (pattern === -1 && key === id.raw) {
|
|
49
|
+
alias = key;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
if (pattern !== -1 && id.raw.startsWith(key.slice(0, pattern))) {
|
|
53
|
+
const trailer = key.slice(pattern + 1);
|
|
54
|
+
if (id.raw.length >= key.length && id.raw.endsWith(trailer) && compareSubpaths(alias ?? "", key) === CompareResult.GREATER_THAN && key.lastIndexOf(PATTERN_CHARACTER) === pattern) {
|
|
55
|
+
alias = key;
|
|
56
|
+
trail = id.raw.slice(pattern, id.raw.length - trailer.length);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (alias === null || isNIL(aliases[alias]))
|
|
61
|
+
return specifier;
|
|
62
|
+
const base = toURL(cwd).href.replace(/\/$/, "") + pathe.sep;
|
|
63
|
+
let url = null;
|
|
64
|
+
for (let segment of [aliases[alias]].flat()) {
|
|
65
|
+
if (segment.includes(PATTERN_CHARACTER)) {
|
|
66
|
+
segment = segment.replace(
|
|
67
|
+
new RegExp(`${regexp(PATTERN_CHARACTER)}$`),
|
|
68
|
+
trail
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
let tries = new Set(
|
|
72
|
+
[
|
|
73
|
+
"",
|
|
74
|
+
...[...extensions].map((ext2) => pathe.formatExt(ext2)),
|
|
75
|
+
...[...extensions].map((ext2) => "/index" + pathe.formatExt(ext2))
|
|
76
|
+
].map((suffix) => segment + suffix).filter((segment2) => segment2.length > 0).map((segment2) => new URL(segment2, base).pathname)
|
|
77
|
+
);
|
|
78
|
+
if (segment.startsWith("node_modules")) {
|
|
79
|
+
const [trypath = ""] = [...tries];
|
|
80
|
+
tries = /* @__PURE__ */ new Set([trypath.replace(/.*\/node_modules\//, ""), ...tries]);
|
|
81
|
+
}
|
|
82
|
+
for (const trypath of tries) {
|
|
83
|
+
try {
|
|
84
|
+
url = await resolveModule(trypath, {
|
|
85
|
+
condition,
|
|
86
|
+
conditions,
|
|
87
|
+
ext,
|
|
88
|
+
extensions,
|
|
89
|
+
parent: toURL(parent),
|
|
90
|
+
preserveSymlinks
|
|
91
|
+
});
|
|
92
|
+
break;
|
|
93
|
+
} catch {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (url)
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
return url ? absolute ? url.href : /\/node_modules\//.test(url.href) ? toBareSpecifier(url, toURL(parent), new Set(conditions)) : toRelativeSpecifier(url, toURL(parent)) : specifier;
|
|
101
|
+
};
|
|
102
|
+
var resolve_alias_default = resolveAlias;
|
|
103
|
+
export {
|
|
104
|
+
resolve_alias_default as default
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=resolve-alias.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/resolve-alias.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["ext", "segment"]
|
|
6
|
+
}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file resolveAliases
|
|
3
|
-
* @module mlly/
|
|
3
|
+
* @module mlly/utils/resolveAliases
|
|
4
4
|
*/
|
|
5
5
|
import type { ResolveAliasOptions } from '../interfaces/index.mjs';
|
|
6
6
|
/**
|
|
7
|
-
* Resolves path aliases in `code`.
|
|
7
|
+
* Resolves path aliases in the given piece of source `code`.
|
|
8
8
|
*
|
|
9
9
|
* @see {@linkcode ResolveAliasOptions}
|
|
10
10
|
* @see {@linkcode resolveAlias}
|
|
11
11
|
*
|
|
12
|
-
* @
|
|
12
|
+
* @async
|
|
13
|
+
*
|
|
14
|
+
* @param {string} code - Code to evaluate
|
|
13
15
|
* @param {ResolveAliasOptions} [options={}] - Resolve alias options
|
|
14
|
-
* @return {string} `code` unmodified or with path aliases resolved
|
|
16
|
+
* @return {Promise<string>} `code` unmodified or with path aliases resolved
|
|
15
17
|
*/
|
|
16
|
-
declare const resolveAliases: (code: string, options?: ResolveAliasOptions) => string
|
|
18
|
+
declare const resolveAliases: (code: string, options?: ResolveAliasOptions) => Promise<string>;
|
|
17
19
|
export default resolveAliases;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SpecifierSyntaxKind } from "../enums/index.mjs";
|
|
2
|
+
import regexp from "../internal/escape-reg-exp.mjs";
|
|
3
|
+
import extractStatements from "./extract-statements.mjs";
|
|
4
|
+
import resolveAlias from "./resolve-alias.mjs";
|
|
5
|
+
const resolveAliases = async (code, options = {}) => {
|
|
6
|
+
for (const statement of extractStatements(code)) {
|
|
7
|
+
if (!statement.specifier)
|
|
8
|
+
continue;
|
|
9
|
+
if (statement.specifier_syntax === SpecifierSyntaxKind.DYNAMIC)
|
|
10
|
+
continue;
|
|
11
|
+
const specifier = await resolveAlias(statement.specifier, options);
|
|
12
|
+
if (specifier === statement.specifier)
|
|
13
|
+
continue;
|
|
14
|
+
code = code.replace(
|
|
15
|
+
statement.code,
|
|
16
|
+
statement.code.replace(
|
|
17
|
+
new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
|
|
18
|
+
specifier
|
|
19
|
+
)
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
return code;
|
|
23
|
+
};
|
|
24
|
+
var resolve_aliases_default = resolveAliases;
|
|
25
|
+
export {
|
|
26
|
+
resolve_aliases_default as default
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=resolve-aliases.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/resolve-aliases.ts"],
|
|
4
|
+
"mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AACnB,OAAO,uBAAuB;AAC9B,OAAO,kBAAkB;AAczB,MAAM,iBAAiB,OACrB,MACA,UAA+B,CAAC,MACZ;AACpB,aAAW,aAAa,kBAAkB,IAAI,GAAG;AAE/C,QAAI,CAAC,UAAU;AAAW;AAG1B,QAAI,UAAU,qBAAqB,oBAAoB;AAAS;AAOhE,UAAM,YAAoB,MAAM,aAAa,UAAU,WAAW,OAAO;AAGzE,QAAI,cAAc,UAAU;AAAW;AAGvC,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,UAAU,KAAK;AAAA,QACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,WAAW;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,0BAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file RESOLVE_EXTENSIONS
|
|
3
|
+
* @module mlly/utils/RESOLVE_EXTENSIONS
|
|
4
|
+
*/
|
|
5
|
+
import type { Ext } from '@flex-development/pathe';
|
|
6
|
+
/**
|
|
7
|
+
* Default resolvable file extensions.
|
|
8
|
+
*
|
|
9
|
+
* @see {@linkcode Ext}
|
|
10
|
+
*
|
|
11
|
+
* @const {Set<Ext>} RESOLVE_EXTENSIONS
|
|
12
|
+
*/
|
|
13
|
+
declare const RESOLVE_EXTENSIONS: Set<Ext>;
|
|
14
|
+
export default RESOLVE_EXTENSIONS;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const RESOLVE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
2
|
+
".mjs",
|
|
3
|
+
".mts",
|
|
4
|
+
".cjs",
|
|
5
|
+
".cts",
|
|
6
|
+
".js",
|
|
7
|
+
".ts",
|
|
8
|
+
".jsx",
|
|
9
|
+
".tsx",
|
|
10
|
+
".css",
|
|
11
|
+
".json",
|
|
12
|
+
".node",
|
|
13
|
+
".wasm",
|
|
14
|
+
".d.mts",
|
|
15
|
+
".d.cts",
|
|
16
|
+
".d.ts"
|
|
17
|
+
]);
|
|
18
|
+
var resolve_extensions_default = RESOLVE_EXTENSIONS;
|
|
19
|
+
export {
|
|
20
|
+
resolve_extensions_default as default
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=resolve-extensions.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/resolve-extensions.ts"],
|
|
4
|
+
"mappings": "AAcA,MAAM,qBAA+B,oBAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAO,6BAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file resolveModule
|
|
3
|
+
* @module mlly/utils/resolveModule
|
|
4
|
+
*/
|
|
5
|
+
import type { ResolveModuleOptions } from '../interfaces/index.mjs';
|
|
6
|
+
import { URL } from 'node:url';
|
|
7
|
+
/**
|
|
8
|
+
* Resolves `specifier` according to the [ESM Resolver algorithm][1], mostly 😉.
|
|
9
|
+
*
|
|
10
|
+
* Adds support for:
|
|
11
|
+
*
|
|
12
|
+
* - Extensionless file and directory index resolution
|
|
13
|
+
* - Replacing file extensions
|
|
14
|
+
*
|
|
15
|
+
* Other differences between Node.js:
|
|
16
|
+
*
|
|
17
|
+
* - [Subpath import][2] targets (that are strings) must be relative to the
|
|
18
|
+
* current working directory (e.g. `'./src/index.ts'`, `'./src/*.ts'`) or
|
|
19
|
+
* start with a [NPM valid package name][3]. See [`nodejs/node#40579`][4] for
|
|
20
|
+
* details.
|
|
21
|
+
*
|
|
22
|
+
* [1]: https://nodejs.org/api/esm.html#esm_resolver_algorithm
|
|
23
|
+
* [2]: https://nodejs.org/api/packages.html#subpath-imports
|
|
24
|
+
* [3]: https://regex101.com/r/BHcJfc
|
|
25
|
+
* [4]: https://github.com/nodejs/node/issues/40579
|
|
26
|
+
*
|
|
27
|
+
* @see {@linkcode NodeError}
|
|
28
|
+
* @see {@linkcode ResolveModuleOptions}
|
|
29
|
+
* @see {@linkcode URL}
|
|
30
|
+
*
|
|
31
|
+
* @async
|
|
32
|
+
*
|
|
33
|
+
* @param {string} specifier - Module specifier to resolve
|
|
34
|
+
* @param {ResolveModuleOptions} [options={}] - Module resolution options
|
|
35
|
+
* @return {Promise<URL>} Resolved module URL
|
|
36
|
+
* @throws {NodeError}
|
|
37
|
+
*/
|
|
38
|
+
declare const resolveModule: (specifier: string, options?: ResolveModuleOptions) => Promise<URL>;
|
|
39
|
+
export default resolveModule;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import isFunction from "../internal/is-function.mjs";
|
|
2
|
+
import Resolver from "../internal/resolver.mjs";
|
|
3
|
+
import { ErrorCode } from "@flex-development/errnode";
|
|
4
|
+
import isBuiltin from "@flex-development/is-builtin";
|
|
5
|
+
import pathe from "@flex-development/pathe";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import CONDITIONS from "./conditions.mjs";
|
|
8
|
+
import RESOLVE_EXTENSIONS from "./resolve-extensions.mjs";
|
|
9
|
+
const resolveModule = async (specifier, options = {}) => {
|
|
10
|
+
const {
|
|
11
|
+
condition = "default",
|
|
12
|
+
conditions = CONDITIONS,
|
|
13
|
+
extensions = RESOLVE_EXTENSIONS,
|
|
14
|
+
parent = import.meta.url,
|
|
15
|
+
preserveSymlinks = false
|
|
16
|
+
} = options;
|
|
17
|
+
const resolver = new Resolver();
|
|
18
|
+
const tries = isBuiltin(specifier) || /^\S+:/.test(specifier) && !specifier.startsWith("file:") ? [] : [...extensions].flatMap((ext) => [
|
|
19
|
+
specifier + (ext = pathe.formatExt(ext)),
|
|
20
|
+
specifier.startsWith("#") ? specifier + "/index" : "",
|
|
21
|
+
specifier + "/index" + ext
|
|
22
|
+
]).filter((id) => id.length > 0);
|
|
23
|
+
tries.unshift(specifier);
|
|
24
|
+
const ignore = /* @__PURE__ */ new Set([
|
|
25
|
+
ErrorCode.ERR_MODULE_NOT_FOUND,
|
|
26
|
+
ErrorCode.ERR_PACKAGE_PATH_NOT_EXPORTED,
|
|
27
|
+
ErrorCode.ERR_UNSUPPORTED_DIR_IMPORT
|
|
28
|
+
]);
|
|
29
|
+
let error;
|
|
30
|
+
let url = null;
|
|
31
|
+
for (const id of tries) {
|
|
32
|
+
try {
|
|
33
|
+
url = resolver.resolveModule(
|
|
34
|
+
id,
|
|
35
|
+
parent,
|
|
36
|
+
condition,
|
|
37
|
+
new Set(conditions),
|
|
38
|
+
preserveSymlinks
|
|
39
|
+
);
|
|
40
|
+
} catch (e) {
|
|
41
|
+
url = null;
|
|
42
|
+
if (id === specifier)
|
|
43
|
+
error = e;
|
|
44
|
+
if (!ignore.has(e.code))
|
|
45
|
+
throw e;
|
|
46
|
+
}
|
|
47
|
+
if (url)
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
if (!url)
|
|
51
|
+
throw error;
|
|
52
|
+
if (url.protocol === "file:") {
|
|
53
|
+
let { ext } = options;
|
|
54
|
+
ext = isFunction(ext) ? await ext(specifier, url) : ext;
|
|
55
|
+
url.href = pathe.changeExt(url.href, ext).replace(/\/index$/, "");
|
|
56
|
+
url.pathname = fileURLToPath(url.href);
|
|
57
|
+
}
|
|
58
|
+
return url;
|
|
59
|
+
};
|
|
60
|
+
var resolve_module_default = resolveModule;
|
|
61
|
+
export {
|
|
62
|
+
resolve_module_default as default
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=resolve-module.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/resolve-module.ts"],
|
|
4
|
+
"mappings": "AAMA,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,SAAS,iBAAiC;AAC1C,OAAO,eAAe;AACtB,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;AAOJ,QAAM,WAAqB,IAAI,SAAS;AAOxC,QAAM,QACJ,UAAU,SAAS,KAClB,QAAQ,KAAK,SAAS,KAAK,CAAC,UAAU,WAAW,OAAO,IACrD,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;AAGnC,QAAM,QAAQ,SAAS;AAUvB,QAAM,SAAyB,oBAAI,IAAe;AAAA,IAChD,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
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file resolveModules
|
|
3
|
+
* @module mlly/utils/resolveModules
|
|
4
|
+
*/
|
|
5
|
+
import type { ResolveModuleOptions } from '../interfaces/index.mjs';
|
|
6
|
+
/**
|
|
7
|
+
* Converts all module specifiers in `code` to absolute specifiers.
|
|
8
|
+
*
|
|
9
|
+
* ::: info
|
|
10
|
+
* Useful for converting code to [`data:` URLs][1].
|
|
11
|
+
* :::
|
|
12
|
+
*
|
|
13
|
+
* [1]: https://nodejs.org/api/esm.html#data-imports
|
|
14
|
+
*
|
|
15
|
+
* @see {@linkcode ResolveModuleOptions}
|
|
16
|
+
* @see https://nodejs.org/api/esm.html#terminology
|
|
17
|
+
*
|
|
18
|
+
* @async
|
|
19
|
+
*
|
|
20
|
+
* @param {string} code - Code to evaluate
|
|
21
|
+
* @param {ResolveModuleOptions} [options={}] - Module resolution options
|
|
22
|
+
* @return {Promise<string>} `code` with module specifiers fully resolved
|
|
23
|
+
*/
|
|
24
|
+
declare const resolveModules: (code: string, options?: ResolveModuleOptions) => Promise<string>;
|
|
25
|
+
export default resolveModules;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SpecifierSyntaxKind } from "../enums/index.mjs";
|
|
2
|
+
import regexp from "../internal/escape-reg-exp.mjs";
|
|
3
|
+
import extractStatements from "./extract-statements.mjs";
|
|
4
|
+
import resolveModule from "./resolve-module.mjs";
|
|
5
|
+
const resolveModules = async (code, options = {}) => {
|
|
6
|
+
for (const statement of extractStatements(code)) {
|
|
7
|
+
if (!statement.specifier)
|
|
8
|
+
continue;
|
|
9
|
+
if (statement.specifier_syntax === SpecifierSyntaxKind.DYNAMIC)
|
|
10
|
+
continue;
|
|
11
|
+
const url = await resolveModule(statement.specifier, options);
|
|
12
|
+
code = code.replace(
|
|
13
|
+
statement.code,
|
|
14
|
+
statement.code.replace(
|
|
15
|
+
new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
|
|
16
|
+
url.href
|
|
17
|
+
)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
return code;
|
|
21
|
+
};
|
|
22
|
+
var resolve_modules_default = resolveModules;
|
|
23
|
+
export {
|
|
24
|
+
resolve_modules_default as default
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=resolve-modules.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/resolve-modules.ts"],
|
|
4
|
+
"mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AAEnB,OAAO,uBAAuB;AAC9B,OAAO,mBAAmB;AAoB1B,MAAM,iBAAiB,OACrB,MACA,UAAgC,CAAC,MACb;AACpB,aAAW,aAAa,kBAAkB,IAAI,GAAG;AAE/C,QAAI,CAAC,UAAU;AAAW;AAG1B,QAAI,UAAU,qBAAqB,oBAAoB;AAAS;AAOhE,UAAM,MAAW,MAAM,cAAc,UAAU,WAAW,OAAO;AAGjE,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,UAAU,KAAK;AAAA,QACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,WAAW;AAAA,QAC5D,IAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,0BAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|