@flex-development/mlly 1.0.0-alpha.1 → 1.0.0-alpha.10
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 +412 -3
- package/README.md +6 -4
- 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 +10 -0
- package/dist/enums/index.mjs +15 -0
- 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 +17 -0
- package/dist/enums/kind-specifier.mjs +11 -0
- package/dist/enums/kind-specifier.mjs.map +6 -0
- package/dist/enums/kind-statement-syntax.d.mts +22 -0
- package/dist/enums/kind-statement-syntax.mjs +18 -0
- package/dist/enums/kind-statement-syntax.mjs.map +6 -0
- package/dist/enums/kind-statement.d.mts +15 -0
- package/dist/enums/kind-statement.mjs +11 -0
- package/dist/enums/kind-statement.mjs.map +6 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +6 -0
- package/dist/interfaces/import-assertions.d.mts +20 -0
- package/dist/interfaces/import-dynamic.d.mts +26 -6
- package/dist/interfaces/import-static.d.mts +22 -4
- 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 -52
- 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-export.d.mts +22 -9
- package/dist/interfaces/statement-import.d.mts +15 -4
- package/dist/interfaces/statement-require.d.mts +15 -4
- package/dist/interfaces/statement.d.mts +24 -8
- 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 +500 -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/declaration.d.mts +1 -1
- package/dist/types/fn-change-ext.d.mts +28 -0
- package/dist/types/index.d.mts +8 -4
- 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/module-specifier-type.d.mts +11 -0
- package/dist/types/protocol.d.mts +14 -0
- package/dist/types/syntax-kind-export.d.mts +12 -0
- package/dist/types/syntax-kind-import.d.mts +12 -0
- package/dist/types/syntax-kind-require.d.mts +12 -0
- 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 +4 -4
- 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/utils/extract-statements.d.mts +21 -0
- package/dist/{lib → utils}/extract-statements.mjs +4 -1
- package/dist/utils/extract-statements.mjs.map +6 -0
- package/dist/utils/fill-modules.d.mts +23 -0
- package/dist/utils/fill-modules.mjs +63 -0
- package/dist/utils/fill-modules.mjs.map +6 -0
- package/dist/utils/find-dynamic-imports.d.mts +18 -0
- package/dist/utils/find-dynamic-imports.mjs +39 -0
- package/dist/utils/find-dynamic-imports.mjs.map +6 -0
- package/dist/utils/find-exports.d.mts +21 -0
- package/dist/utils/find-exports.mjs +95 -0
- package/dist/utils/find-exports.mjs.map +6 -0
- package/dist/utils/find-requires.d.mts +18 -0
- package/dist/utils/find-requires.mjs +32 -0
- package/dist/utils/find-requires.mjs.map +6 -0
- package/dist/utils/find-static-imports.d.mts +18 -0
- 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 +5 -2
- package/dist/utils/has-cjs-syntax.mjs +11 -0
- package/dist/utils/has-cjs-syntax.mjs.map +6 -0
- package/dist/{lib → utils}/has-esm-syntax.d.mts +5 -2
- package/dist/utils/has-esm-syntax.mjs +11 -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 +26 -0
- package/dist/utils/lookup-package-scope.mjs +38 -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/utils/resolve-aliases.d.mts +19 -0
- 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/{lib → utils}/resolve-modules.mjs +7 -10
- 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 +7 -3
- 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 +106 -83
- package/src/enums/assert-type.ts +23 -0
- package/src/enums/format.ts +19 -0
- package/src/enums/index.ts +11 -0
- package/src/enums/kind-specifier-syntax.ts +16 -0
- package/src/enums/kind-specifier.ts +19 -0
- package/src/enums/kind-statement-syntax.ts +24 -0
- package/src/enums/kind-statement.ts +17 -0
- package/src/index.ts +9 -0
- package/src/interfaces/import-assertions.ts +24 -0
- package/src/interfaces/import-dynamic.ts +48 -0
- package/src/interfaces/import-static.ts +50 -0
- package/src/interfaces/index.ts +25 -0
- package/src/interfaces/options-fill-module.ts +26 -0
- package/src/interfaces/options-find-subpath.ts +56 -0
- package/src/interfaces/options-get-format.ts +92 -0
- package/src/interfaces/options-get-source.ts +70 -0
- package/src/interfaces/options-parse-module-id.ts +38 -0
- package/src/interfaces/options-parse-subpath.ts +36 -0
- package/src/interfaces/options-resolve-alias.ts +59 -0
- package/src/interfaces/options-resolve-module.ts +72 -0
- package/src/interfaces/options-resolve.ts +17 -0
- package/src/interfaces/package-scope.ts +30 -0
- package/src/interfaces/parsed-data-url.ts +63 -0
- package/src/interfaces/parsed-module-id.ts +90 -0
- package/src/interfaces/parsed-subpath.ts +47 -0
- package/src/interfaces/statement-export.ts +52 -0
- package/src/interfaces/statement-import.ts +45 -0
- package/src/interfaces/statement-require.ts +45 -0
- package/src/interfaces/statement.ts +64 -0
- package/src/internal/escape-reg-exp.ts +24 -0
- package/src/internal/format-type-map.ts +26 -0
- package/src/internal/get-specifier-kind.ts +38 -0
- package/src/internal/get-subpaths.ts +41 -0
- package/src/internal/is-array-index.ts +28 -0
- package/src/internal/is-directory.ts +25 -0
- package/src/internal/is-file.ts +25 -0
- package/src/internal/is-function.ts +16 -0
- package/src/internal/regex-encoded-sep.ts +15 -0
- package/src/internal/regex-internal-specifier.ts +17 -0
- package/src/internal/regex-package-name.ts +16 -0
- package/src/internal/regex-package-path.ts +18 -0
- package/src/internal/resolver.ts +783 -0
- package/src/internal/validate-boolean.ts +27 -0
- package/src/internal/validate-object.ts +30 -0
- package/src/internal/validate-set.ts +33 -0
- package/src/internal/validate-string.ts +27 -0
- package/src/internal/validate-url-string.ts +31 -0
- package/src/types/declaration.ts +22 -0
- package/src/types/fn-change-ext.ts +33 -0
- package/src/types/index.ts +14 -0
- package/src/types/mime-type.ts +19 -0
- package/src/types/module-id.ts +15 -0
- package/src/types/module-specifier-type.ts +13 -0
- package/src/types/protocol.ts +40 -0
- package/src/types/syntax-kind-export.ts +20 -0
- package/src/types/syntax-kind-import.ts +22 -0
- package/src/types/syntax-kind-require.ts +15 -0
- package/src/utils/compare-subpaths.ts +100 -0
- package/src/utils/conditions.ts +15 -0
- package/src/utils/detect-syntax.ts +40 -0
- package/src/utils/extension-format-map.ts +34 -0
- package/src/utils/extract-statements.ts +42 -0
- package/src/utils/fill-modules.ts +121 -0
- package/src/utils/find-dynamic-imports.ts +75 -0
- package/src/utils/find-exports.ts +164 -0
- package/src/utils/find-requires.ts +75 -0
- package/src/utils/find-static-imports.ts +89 -0
- package/src/utils/find-subpath.ts +241 -0
- package/src/utils/get-format.ts +222 -0
- package/src/utils/get-source.ts +129 -0
- package/src/utils/has-cjs-syntax.ts +44 -0
- package/src/utils/has-esm-syntax.ts +40 -0
- package/src/utils/index.ts +43 -0
- package/src/utils/is-absolute-specifier.ts +48 -0
- package/src/utils/is-bare-specifier.ts +30 -0
- package/src/utils/is-exports-sugar.ts +74 -0
- package/src/utils/is-relative-specifier.ts +34 -0
- package/src/utils/lookup-package-scope.ts +97 -0
- package/src/utils/parse-data-url.ts +71 -0
- package/src/utils/parse-module-id.ts +186 -0
- package/src/utils/parse-subpath.ts +173 -0
- package/src/utils/pattern-character.ts +13 -0
- package/src/utils/read-package-json.ts +101 -0
- package/src/utils/resolve-alias.ts +219 -0
- package/src/utils/resolve-aliases.ts +58 -0
- package/src/utils/resolve-extensions.ts +33 -0
- package/src/utils/resolve-module.ts +153 -0
- package/src/utils/resolve-modules.ts +62 -0
- package/src/utils/to-absolute-specifier.ts +30 -0
- package/src/utils/to-bare-specifier.ts +201 -0
- package/src/utils/to-data-url.ts +42 -0
- package/src/utils/to-node-url.ts +27 -0
- package/src/utils/to-relative-specifier.ts +47 -0
- package/src/utils/to-url.ts +31 -0
- package/src/utils/validate-assertions.ts +119 -0
- package/src/utils/validate-exports.ts +124 -0
- package/changelog.config.cts +0 -204
- package/dist/constants.d.mts +0 -19
- package/dist/constants.mjs +0 -24
- 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/compiler-options-json.d.mts +0 -111
- package/dist/internal/compiler-options-json.mjs +0 -0
- package/dist/internal/constants.d.mts +0 -70
- package/dist/internal/constants.mjs +0 -18
- package/dist/internal/get-compiler-options.d.mts +0 -21
- package/dist/internal/get-compiler-options.mjs +0 -14
- package/dist/internal/index.d.mts +0 -7
- package/dist/internal/index.mjs +0 -5
- package/dist/lib/extract-statements.d.mts +0 -21
- package/dist/lib/find-dynamic-imports.d.mts +0 -15
- package/dist/lib/find-dynamic-imports.mjs +0 -20
- package/dist/lib/find-exports.d.mts +0 -15
- package/dist/lib/find-exports.mjs +0 -53
- package/dist/lib/find-requires.d.mts +0 -17
- package/dist/lib/find-requires.mjs +0 -19
- package/dist/lib/find-static-imports.d.mts +0 -15
- package/dist/lib/find-static-imports.mjs +0 -20
- package/dist/lib/has-cjs-syntax.mjs +0 -6
- package/dist/lib/has-esm-syntax.mjs +0 -6
- 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.d.mts +0 -17
- 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/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/ext.d.mts +0 -9
- package/dist/types/ext.mjs +0 -0
- package/dist/types/mime-type.mjs +0 -0
- package/dist/types/specifier-type.d.mts +0 -11
- package/dist/types/specifier-type.mjs +0 -0
- package/dist/types/statement-type.d.mts +0 -9
- package/dist/types/statement-type.mjs +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file toAbsoluteSpecifier
|
|
3
|
-
* @module mlly/
|
|
3
|
+
* @module mlly/utils/toAbsoluteSpecifier
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
6
|
/**
|
|
7
7
|
* Converts `specifier` into an absolute specifier.
|
|
8
8
|
*
|
|
@@ -11,12 +11,12 @@ import { URL } from 'node:url';
|
|
|
11
11
|
* includes a file extension.
|
|
12
12
|
* :::
|
|
13
13
|
*
|
|
14
|
-
* @see {@
|
|
14
|
+
* @see {@linkcode ModuleId}
|
|
15
15
|
* @see https://nodejs.org/api/esm.html#terminology
|
|
16
16
|
*
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
17
|
+
* @param {ModuleId} specifier - Module specifier to convert
|
|
18
|
+
* @param {ModuleId} [cwd=pathToFileURL('./')] - Current working directory
|
|
19
19
|
* @return {string} `specifier` as absolute specifier (file url)
|
|
20
20
|
*/
|
|
21
|
-
declare const toAbsoluteSpecifier: (specifier:
|
|
21
|
+
declare const toAbsoluteSpecifier: (specifier: ModuleId, cwd?: ModuleId) => string;
|
|
22
22
|
export default toAbsoluteSpecifier;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { pathToFileURL } from "node:url";
|
|
2
|
+
import toURL from "./to-url.mjs";
|
|
3
|
+
const toAbsoluteSpecifier = (specifier, cwd = pathToFileURL("./")) => toURL(specifier, cwd).href;
|
|
4
|
+
var to_absolute_specifier_default = toAbsoluteSpecifier;
|
|
5
|
+
export {
|
|
6
|
+
to_absolute_specifier_default as default
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=to-absolute-specifier.mjs.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file toBareSpecifier
|
|
3
|
+
* @module mlly/utils/toBareSpecifier
|
|
4
|
+
*/
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
|
+
/**
|
|
7
|
+
* Converts the given module `specifier` into a bare specifier.
|
|
8
|
+
*
|
|
9
|
+
* The new specifier is **not** guaranteed to resolve to an existing module, nor
|
|
10
|
+
* is it guaranteed to have a file extension, but it *is* guaranteed to be a
|
|
11
|
+
* package path containing a valid [subpath export][1] if the specifier's parent
|
|
12
|
+
* package uses package [`exports`][2]. If the parent package does not use
|
|
13
|
+
* `exports`, the new specifier is only guaranteed to begin with a valid NPM
|
|
14
|
+
* package name or Node.js [builtin module][3] name.
|
|
15
|
+
*
|
|
16
|
+
* The given module `specifier` should be absolute, syntactically bare (i.e. not
|
|
17
|
+
* begin with `'/'` or `'.'`), or relative to the current working directory
|
|
18
|
+
* (e.g. `'./dist/index.mjs'`).
|
|
19
|
+
*
|
|
20
|
+
* ::: warning
|
|
21
|
+
* Internal specifier (i.e. [subpath import][4]; `'#src'`, `'#src/utils'`)
|
|
22
|
+
* conversion is not supported. Converting *_to_* an internal specifier will be
|
|
23
|
+
* supported in the future.
|
|
24
|
+
* :::
|
|
25
|
+
*
|
|
26
|
+
* [1]: https://nodejs.org/api/packages.html#subpath-exports
|
|
27
|
+
* [2]: https://nodejs.org/api/packages.html#exports
|
|
28
|
+
* [3]: https://nodejs.org/api/module.html#modulebuiltinmodules
|
|
29
|
+
* [4]: https://nodejs.org/api/packages.html#subpath-imports
|
|
30
|
+
*
|
|
31
|
+
* @see {@linkcode CONDITIONS}
|
|
32
|
+
* @see {@linkcode ModuleId}
|
|
33
|
+
* @see https://nodejs.org/api/esm.html#terminology
|
|
34
|
+
*
|
|
35
|
+
* @param {ModuleId} specifier - Module specifier to convert
|
|
36
|
+
* @param {ModuleId} parent - URL of module to resolve from
|
|
37
|
+
* @param {Set<string>?} [conditions=CONDITIONS] - Export conditions
|
|
38
|
+
* @return {string} `specifier` as bare specifier
|
|
39
|
+
* @throws {NodeError}
|
|
40
|
+
*/
|
|
41
|
+
declare const toBareSpecifier: (specifier: ModuleId, parent: ModuleId, conditions?: Set<string>) => string;
|
|
42
|
+
export default toBareSpecifier;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import regexp from "../internal/escape-reg-exp.mjs";
|
|
2
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
3
|
+
import {
|
|
4
|
+
ERR_OPERATION_FAILED,
|
|
5
|
+
ERR_PACKAGE_PATH_NOT_EXPORTED,
|
|
6
|
+
ErrorCode
|
|
7
|
+
} from "@flex-development/errnode";
|
|
8
|
+
import { isBuiltin } from "@flex-development/is-builtin";
|
|
9
|
+
import pathe from "@flex-development/pathe";
|
|
10
|
+
import { isNIL } from "@flex-development/tutils";
|
|
11
|
+
import { URL, fileURLToPath, pathToFileURL } from "node:url";
|
|
12
|
+
import CONDITIONS from "./conditions.mjs";
|
|
13
|
+
import findSubpath from "./find-subpath.mjs";
|
|
14
|
+
import isAbsoluteSpecifier from "./is-absolute-specifier.mjs";
|
|
15
|
+
import isRelativeSpecifier from "./is-relative-specifier.mjs";
|
|
16
|
+
import lookupPackageScope from "./lookup-package-scope.mjs";
|
|
17
|
+
import parseModuleId from "./parse-module-id.mjs";
|
|
18
|
+
import parseSubpath from "./parse-subpath.mjs";
|
|
19
|
+
import PATTERN_CHARACTER from "./pattern-character.mjs";
|
|
20
|
+
import toAbsoluteSpecifier from "./to-absolute-specifier.mjs";
|
|
21
|
+
import toNodeURL from "./to-node-url.mjs";
|
|
22
|
+
import toURL from "./to-url.mjs";
|
|
23
|
+
const toBareSpecifier = (specifier, parent, conditions = CONDITIONS) => {
|
|
24
|
+
validateURLString(specifier, "specifier");
|
|
25
|
+
validateURLString(parent, "parent");
|
|
26
|
+
if (specifier instanceof URL)
|
|
27
|
+
specifier = specifier.href;
|
|
28
|
+
if (isBuiltin(specifier))
|
|
29
|
+
return toNodeURL(specifier);
|
|
30
|
+
if (specifier.startsWith("file:"))
|
|
31
|
+
specifier = fileURLToPath(specifier);
|
|
32
|
+
if (isRelativeSpecifier(specifier)) {
|
|
33
|
+
specifier = fileURLToPath(toAbsoluteSpecifier(specifier));
|
|
34
|
+
}
|
|
35
|
+
const url = toURL(
|
|
36
|
+
isAbsoluteSpecifier(specifier) || specifier.startsWith("node_modules") ? specifier : `node_modules/${specifier}`
|
|
37
|
+
);
|
|
38
|
+
const scope = lookupPackageScope(
|
|
39
|
+
url,
|
|
40
|
+
pathToFileURL(".")
|
|
41
|
+
);
|
|
42
|
+
if (!scope) {
|
|
43
|
+
throw new ERR_OPERATION_FAILED(`Package scope for '${specifier}' not found`);
|
|
44
|
+
}
|
|
45
|
+
const { dir: pkgdir, pkgjson } = scope;
|
|
46
|
+
const { exports, main, name = "", types } = pkgjson;
|
|
47
|
+
specifier = url.pathname.includes(name) ? name + url.pathname.replace(new RegExp(`.*?${regexp(name)}`), "") : name + specifier.replace(fileURLToPath(pkgdir.replace(/\/$/, "")), "");
|
|
48
|
+
const id = parseModuleId(specifier, {
|
|
49
|
+
internal: false,
|
|
50
|
+
parent,
|
|
51
|
+
pkgname: true
|
|
52
|
+
});
|
|
53
|
+
if (isNIL(exports)) {
|
|
54
|
+
return [main, types].some((ep) => ep === id.path || ep === id.path.slice(2)) ? id.pkg : specifier;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
parseSubpath(specifier, exports, { dir: pkgdir, parent });
|
|
58
|
+
} catch (e) {
|
|
59
|
+
if (e.code === ErrorCode.ERR_PACKAGE_PATH_NOT_EXPORTED) {
|
|
60
|
+
const target = specifier.replace(name, ".");
|
|
61
|
+
let subpath = findSubpath(target, exports, {
|
|
62
|
+
conditions,
|
|
63
|
+
dir: pkgdir,
|
|
64
|
+
parent
|
|
65
|
+
});
|
|
66
|
+
if (subpath === null) {
|
|
67
|
+
throw new ERR_PACKAGE_PATH_NOT_EXPORTED(
|
|
68
|
+
fileURLToPath(pkgdir),
|
|
69
|
+
id.path,
|
|
70
|
+
fileURLToPath(parent)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
if (subpath.includes(PATTERN_CHARACTER)) {
|
|
74
|
+
subpath = subpath.slice(0, subpath.indexOf(PATTERN_CHARACTER)).slice(1);
|
|
75
|
+
subpath = "." + target.slice(target.indexOf(subpath));
|
|
76
|
+
}
|
|
77
|
+
if (pathe.extname(target) === pathe.extname(subpath)) {
|
|
78
|
+
subpath = pathe.changeExt(subpath, "");
|
|
79
|
+
}
|
|
80
|
+
return name + subpath.slice(1);
|
|
81
|
+
}
|
|
82
|
+
throw e;
|
|
83
|
+
}
|
|
84
|
+
return specifier;
|
|
85
|
+
};
|
|
86
|
+
var to_bare_specifier_default = toBareSpecifier;
|
|
87
|
+
export {
|
|
88
|
+
to_bare_specifier_default as default
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=to-bare-specifier.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/to-bare-specifier.ts"],
|
|
4
|
+
"mappings": "AAMA,OAAO,YAAY;AACnB,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAClB,SAAS,aAA4B;AACrC,SAAS,KAAK,eAAe,qBAAqB;AAClD,OAAO,gBAAgB;AACvB,OAAO,iBAAiB;AACxB,OAAO,yBAAyB;AAChC,OAAO,yBAAyB;AAChC,OAAO,wBAAwB;AAC/B,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAC9B,OAAO,yBAAyB;AAChC,OAAO,eAAe;AACtB,OAAO,WAAW;AAqClB,MAAM,kBAAkB,CACtB,WACA,QACA,aAA0B,eACf;AACX,oBAAkB,WAAW,WAAW;AACxC,oBAAkB,QAAQ,QAAQ;AAGlC,MAAI,qBAAqB;AAAK,gBAAY,UAAU;AAGpD,MAAI,UAAU,SAAS;AAAG,WAAO,UAAU,SAAS;AAGpD,MAAI,UAAU,WAAW,OAAO;AAAG,gBAAY,cAAc,SAAS;AAGtE,MAAI,oBAAoB,SAAS,GAAG;AAClC,gBAAY,cAAc,oBAAoB,SAAS,CAAC;AAAA,EAC1D;AAOA,QAAM,MAAW;AAAA,IACf,oBAAoB,SAAS,KAAK,UAAU,WAAW,cAAc,IACjE,YACA,gBAAgB;AAAA,EACtB;AAOA,QAAM,QAAgC;AAAA,IACpC;AAAA,IACA,cAAc,GAAG;AAAA,EACnB;AAGA,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,qBAAqB,sBAAsB,sBAAsB;AAAA,EAC7E;AAGA,QAAM,EAAE,KAAK,QAAQ,QAAQ,IAAI;AAGjC,QAAM,EAAE,SAAS,MAAM,OAAO,IAAI,MAAM,IAAI;AAG5C,cAAY,IAAI,SAAS,SAAS,IAAI,IAClC,OAAO,IAAI,SAAS,QAAQ,IAAI,OAAO,MAAM,OAAO,IAAI,GAAG,GAAG,EAAE,IAChE,OAAO,UAAU,QAAQ,cAAc,OAAO,QAAQ,OAAO,EAAE,CAAC,GAAG,EAAE;AASzE,QAAM,KAAqB,cAAc,WAAW;AAAA,IAClD,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAGD,MAAI,MAAM,OAAO,GAAG;AAClB,WAAO,CAAC,MAAM,KAAK,EAAE,KAAK,QAAM,OAAO,GAAG,QAAQ,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,IACrE,GAAG,MACH;AAAA,EACN;AAGA,MAAI;AACF,iBAAa,WAAW,SAAS,EAAE,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1D,SAAS,GAAP;AAEA,QAAK,EAAgB,SAAS,UAAU,+BAA+B;AAMrE,YAAM,SAAiB,UAAU,QAAQ,MAAM,GAAG;AAQlD,UAAI,UAA4B,YAAY,QAAQ,SAAS;AAAA,QAC3D;AAAA,QACA,KAAK;AAAA,QACL;AAAA,MACF,CAAC;AAGD,UAAI,YAAY,MAAM;AACpB,cAAM,IAAI;AAAA,UACR,cAAc,MAAM;AAAA,UACpB,GAAG;AAAA,UACH,cAAc,MAAM;AAAA,QACtB;AAAA,MACF;AAGA,UAAI,QAAQ,SAAS,iBAAiB,GAAG;AACvC,kBAAU,QAAQ,MAAM,GAAG,QAAQ,QAAQ,iBAAiB,CAAC,EAAE,MAAM,CAAC;AACtE,kBAAU,MAAM,OAAO,MAAM,OAAO,QAAQ,OAAO,CAAC;AAAA,MACtD;AAIA,UAAI,MAAM,QAAQ,MAAM,MAAM,MAAM,QAAQ,OAAO,GAAG;AACpD,kBAAU,MAAM,UAAU,SAAS,EAAE;AAAA,MACvC;AAEA,aAAO,OAAO,QAAQ,MAAM,CAAC;AAAA,IAC/B;AAEA,UAAM;AAAA,EACR;AAEA,SAAO;AACT;AAEA,IAAO,4BAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file toDataURL
|
|
3
|
-
* @module mlly/
|
|
3
|
+
* @module mlly/utils/toDataURL
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { MimeType } from '../types/index.mjs';
|
|
6
6
|
/**
|
|
7
7
|
* Converts `code` into a [`data:` URL][1] using `base64` encoding.
|
|
8
8
|
*
|
|
@@ -18,12 +18,13 @@ import type { MIMEType } from '../types/index.mjs';
|
|
|
18
18
|
* [2]: https://nodejs.org/api/esm.html#terminology
|
|
19
19
|
* [3]: {@link ./resolve-modules.ts}
|
|
20
20
|
*
|
|
21
|
-
* @see {@
|
|
21
|
+
* @see {@linkcode MimeType}
|
|
22
22
|
* @see https://nodejs.org/api/esm.html#esm_data_imports
|
|
23
23
|
*
|
|
24
24
|
* @param {string} code - Code to convert
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {MimeType} [mime='text/javascript'] - MIME type
|
|
26
26
|
* @return {string} `code` as `data:` URL
|
|
27
|
+
* @throws {NodeError<TypeError>} If `code` or `mime` is not a string
|
|
27
28
|
*/
|
|
28
|
-
declare const toDataURL: (code: string, mime?:
|
|
29
|
+
declare const toDataURL: (code: string, mime?: MimeType) => string;
|
|
29
30
|
export default toDataURL;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import validateString from "../internal/validate-string.mjs";
|
|
1
2
|
const toDataURL = (code, mime = "text/javascript") => {
|
|
3
|
+
validateString(code, "code");
|
|
4
|
+
validateString(mime, "mime");
|
|
2
5
|
return `data:${mime};base64,${Buffer.from(code).toString("base64")}`;
|
|
3
6
|
};
|
|
4
7
|
var to_data_url_default = toDataURL;
|
|
5
8
|
export {
|
|
6
9
|
to_data_url_default as default
|
|
7
10
|
};
|
|
11
|
+
//# sourceMappingURL=to-data-url.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/to-data-url.ts"],
|
|
4
|
+
"mappings": "AAKA,OAAO,oBAAoB;AA2B3B,MAAM,YAAY,CAChB,MACA,OAAiB,sBACN;AACX,iBAAe,MAAM,MAAM;AAC3B,iBAAe,MAAM,MAAM;AAC3B,SAAO,QAAQ,eAAe,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AACnE;AAEA,IAAO,sBAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file toNodeURL
|
|
3
|
+
* @module mlly/utils/toNodeURL
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Converts the given module `specifier` to a `node:` URL.
|
|
7
|
+
*
|
|
8
|
+
* ::: warning
|
|
9
|
+
* Does not guarantee the new specifier is an existing Node.js builtin module.
|
|
10
|
+
* :::
|
|
11
|
+
*
|
|
12
|
+
* @see https://nodejs.org/api/esm.html#node-imports
|
|
13
|
+
*
|
|
14
|
+
* @param {string} specifier - Module specifier to convert
|
|
15
|
+
* @return {string} `specifier` as `node:` URL
|
|
16
|
+
* @throws {NodeError<TypeError>} If `specifier` is not a string
|
|
17
|
+
*/
|
|
18
|
+
declare const toNodeURL: (specifier: string) => string;
|
|
19
|
+
export default toNodeURL;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import validateString from "../internal/validate-string.mjs";
|
|
2
|
+
const toNodeURL = (specifier) => {
|
|
3
|
+
validateString(specifier, "specifier");
|
|
4
|
+
return specifier.startsWith("node:") ? specifier : `node:${specifier}`;
|
|
5
|
+
};
|
|
6
|
+
var to_node_url_default = toNodeURL;
|
|
7
|
+
export {
|
|
8
|
+
to_node_url_default as default
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=to-node-url.mjs.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file toRelativeSpecifier
|
|
3
|
-
* @module mlly/
|
|
3
|
+
* @module mlly/utils/toRelativeSpecifier
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
6
|
/**
|
|
7
7
|
* Converts `specifier` into a relative specifier.
|
|
8
8
|
*
|
|
@@ -11,12 +11,12 @@ import { URL } from 'node:url';
|
|
|
11
11
|
* includes a file extension.
|
|
12
12
|
* :::
|
|
13
13
|
*
|
|
14
|
-
* @see {@
|
|
14
|
+
* @see {@linkcode ModuleId}
|
|
15
15
|
* @see https://nodejs.org/api/esm.html#terminology
|
|
16
16
|
*
|
|
17
|
-
* @param {
|
|
18
|
-
* @param {
|
|
17
|
+
* @param {ModuleId} specifier - Module specifier to convert
|
|
18
|
+
* @param {ModuleId} parent - Parent module URL or path to resolve from
|
|
19
19
|
* @return {string} `specifier` as relative specifier
|
|
20
20
|
*/
|
|
21
|
-
declare const toRelativeSpecifier: (specifier:
|
|
21
|
+
declare const toRelativeSpecifier: (specifier: ModuleId, parent: ModuleId) => string;
|
|
22
22
|
export default toRelativeSpecifier;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import pathe from "@flex-development/pathe";
|
|
2
|
+
import { URL, fileURLToPath } from "node:url";
|
|
3
3
|
const toRelativeSpecifier = (specifier, parent) => {
|
|
4
4
|
if (parent instanceof URL)
|
|
5
5
|
parent = parent.href;
|
|
@@ -9,9 +9,13 @@ const toRelativeSpecifier = (specifier, parent) => {
|
|
|
9
9
|
parent = fileURLToPath(parent);
|
|
10
10
|
if (specifier.startsWith("file:"))
|
|
11
11
|
specifier = fileURLToPath(specifier);
|
|
12
|
-
|
|
12
|
+
specifier = pathe.relative(pathe.resolve(parent), pathe.resolve(specifier)).replace(/^\.\.\/?/, "").replace(/^(\w)/, "./$1");
|
|
13
|
+
if (!specifier)
|
|
14
|
+
specifier = ".";
|
|
15
|
+
return specifier;
|
|
13
16
|
};
|
|
14
17
|
var to_relative_specifier_default = toRelativeSpecifier;
|
|
15
18
|
export {
|
|
16
19
|
to_relative_specifier_default as default
|
|
17
20
|
};
|
|
21
|
+
//# sourceMappingURL=to-relative-specifier.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/to-relative-specifier.ts"],
|
|
4
|
+
"mappings": "AAMA,OAAO,WAAW;AAClB,SAAS,KAAK,qBAAqB;AAiBnC,MAAM,sBAAsB,CAAC,WAAqB,WAA6B;AAE7E,MAAI,kBAAkB;AAAK,aAAS,OAAO;AAC3C,MAAI,qBAAqB;AAAK,gBAAY,UAAU;AAGpD,MAAI,OAAO,WAAW,OAAO;AAAG,aAAS,cAAc,MAAM;AAC7D,MAAI,UAAU,WAAW,OAAO;AAAG,gBAAY,cAAc,SAAS;AAGtE,cAAY,MACT,SAAS,MAAM,QAAQ,MAAM,GAAG,MAAM,QAAQ,SAAS,CAAC,EACxD,QAAQ,YAAY,EAAE,EACtB,QAAQ,SAAS,MAAM;AAI1B,MAAI,CAAC;AAAW,gBAAY;AAE5B,SAAO;AACT;AAEA,IAAO,gCAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file toURL
|
|
3
|
+
* @module mlly/utils/toURL
|
|
4
|
+
*/
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
|
+
import { URL } from 'node:url';
|
|
7
|
+
/**
|
|
8
|
+
* Converts the given module `id` to an instance of [`URL`][1].
|
|
9
|
+
*
|
|
10
|
+
* [1]: https://nodejs.org/api/url.html#class-url
|
|
11
|
+
*
|
|
12
|
+
* @see {@linkcode ModuleId}
|
|
13
|
+
*
|
|
14
|
+
* @param {ModuleId} id - Module id to evaluate
|
|
15
|
+
* @param {ModuleId?} [base=pathToFileURL('./')] - Base URL to resolve against
|
|
16
|
+
* if `id` is not absolute
|
|
17
|
+
* @return {URL} `id` as instance of `URL`
|
|
18
|
+
* @throws {NodeError<TypeError>} If either `id` or `base` is not a string or an
|
|
19
|
+
* instance of `URL`
|
|
20
|
+
*/
|
|
21
|
+
declare const toURL: (id: ModuleId, base?: ModuleId) => URL;
|
|
22
|
+
export default toURL;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
2
|
+
import { URL, pathToFileURL } from "node:url";
|
|
3
|
+
const toURL = (id, base = pathToFileURL("./")) => {
|
|
4
|
+
validateURLString(id, "id");
|
|
5
|
+
validateURLString(base, "base");
|
|
6
|
+
return id instanceof URL ? id : new URL(id, base);
|
|
7
|
+
};
|
|
8
|
+
var to_url_default = toURL;
|
|
9
|
+
export {
|
|
10
|
+
to_url_default as default
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=to-url.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/to-url.ts"],
|
|
4
|
+
"mappings": "AAKA,OAAO,uBAAuB;AAG9B,SAAS,KAAK,qBAAqB;AAgBnC,MAAM,QAAQ,CAAC,IAAc,OAAiB,cAAc,IAAI,MAAW;AACzE,oBAAkB,IAAI,IAAI;AAC1B,oBAAkB,MAAM,MAAM;AAC9B,SAAO,cAAc,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI;AAClD;AAEA,IAAO,iBAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file validateAssertions
|
|
3
|
+
* @module mlly/utils/validateAssertions
|
|
4
|
+
*/
|
|
5
|
+
import type { Format } from '../enums/index.mjs';
|
|
6
|
+
import type { ImportAssertions } from '../interfaces/index.mjs';
|
|
7
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
8
|
+
import type { LiteralUnion } from '@flex-development/tutils';
|
|
9
|
+
/**
|
|
10
|
+
* Test a module's `import` assertions.
|
|
11
|
+
*
|
|
12
|
+
* @see {@linkcode Format}
|
|
13
|
+
* @see {@linkcode ImportAssertions}
|
|
14
|
+
* @see {@linkcode ModuleId}
|
|
15
|
+
*
|
|
16
|
+
* @param {ModuleId} url - Module URL of imported module (for error reporting)
|
|
17
|
+
* @param {LiteralUnion<Format, string>} format - Module format
|
|
18
|
+
* @param {ImportAssertions} [assertions={}] - `import` assertions
|
|
19
|
+
* @return {true} `true` if `assertions` are valid
|
|
20
|
+
* @throws {NodeError<TypeError>}
|
|
21
|
+
*/
|
|
22
|
+
declare const validateAssertions: (url: ModuleId, format: LiteralUnion<Format, string>, assertions?: ImportAssertions) => true;
|
|
23
|
+
export default validateAssertions;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AssertType } from "../enums/index.mjs";
|
|
2
|
+
import FORMAT_TYPE_MAP from "../internal/format-type-map.mjs";
|
|
3
|
+
import validateString from "../internal/validate-string.mjs";
|
|
4
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
5
|
+
import {
|
|
6
|
+
ERR_IMPORT_ASSERTION_TYPE_FAILED,
|
|
7
|
+
ERR_IMPORT_ASSERTION_TYPE_MISSING,
|
|
8
|
+
ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED
|
|
9
|
+
} from "@flex-development/errnode";
|
|
10
|
+
import { URL } from "node:url";
|
|
11
|
+
const validateAssertions = (url, format, assertions = {}) => {
|
|
12
|
+
validateURLString(url, "url");
|
|
13
|
+
validateString(format, "format");
|
|
14
|
+
if (url instanceof URL)
|
|
15
|
+
url = url.href;
|
|
16
|
+
const has_type = Object.hasOwnProperty.call(assertions, "type");
|
|
17
|
+
const type = FORMAT_TYPE_MAP.get(format);
|
|
18
|
+
let err = false;
|
|
19
|
+
switch (type) {
|
|
20
|
+
case void 0:
|
|
21
|
+
break;
|
|
22
|
+
case AssertType.IMPLICIT:
|
|
23
|
+
if (has_type)
|
|
24
|
+
err = true;
|
|
25
|
+
break;
|
|
26
|
+
case assertions.type:
|
|
27
|
+
break;
|
|
28
|
+
default:
|
|
29
|
+
err = true;
|
|
30
|
+
}
|
|
31
|
+
if (err) {
|
|
32
|
+
if (!has_type)
|
|
33
|
+
throw new ERR_IMPORT_ASSERTION_TYPE_MISSING(url, type);
|
|
34
|
+
validateString(assertions.type, "assertions.type");
|
|
35
|
+
const supported = [];
|
|
36
|
+
for (const [, type2] of FORMAT_TYPE_MAP) {
|
|
37
|
+
if (type2 === AssertType.IMPLICIT)
|
|
38
|
+
continue;
|
|
39
|
+
supported.push(type2);
|
|
40
|
+
}
|
|
41
|
+
if (!supported.includes(assertions.type)) {
|
|
42
|
+
throw new ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED(assertions.type);
|
|
43
|
+
}
|
|
44
|
+
throw new ERR_IMPORT_ASSERTION_TYPE_FAILED(url, assertions.type);
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
};
|
|
48
|
+
var validate_assertions_default = validateAssertions;
|
|
49
|
+
export {
|
|
50
|
+
validate_assertions_default as default
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=validate-assertions.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/validate-assertions.ts"],
|
|
4
|
+
"mappings": "AAMA,SAAS,kBAAkB;AAE3B,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,WAAW;AAepB,MAAM,qBAAqB,CACzB,KACA,QACA,aAA+B,CAAC,MACvB;AACT,oBAAkB,KAAK,KAAK;AAC5B,iBAAe,QAAQ,QAAQ;AAG/B,MAAI,eAAe;AAAK,UAAM,IAAI;AAOlC,QAAM,WAAoB,OAAO,eAAe,KAAK,YAAY,MAAM;AAOvE,QAAM,OAA+B,gBAAgB,IAAI,MAAgB;AAOzE,MAAI,MAAe;AAGnB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAGH;AAAA,IACF,KAAK,WAAW;AAGd,UAAI;AAAU,cAAM;AACpB;AAAA,IACF,KAAK,WAAW;AAEd;AAAA,IACF;AAEE,YAAM;AAAA,EACV;AAGA,MAAI,KAAK;AAEP,QAAI,CAAC;AAAU,YAAM,IAAI,kCAAkC,KAAK,IAAK;AAGrE,mBAAe,WAAW,MAAM,iBAAiB;AAOjD,UAAM,YAA0B,CAAC;AAGjC,eAAW,CAAC,EAAEA,KAAI,KAAK,iBAAiB;AACtC,UAAIA,UAAS,WAAW;AAAU;AAClC,gBAAU,KAAKA,KAAI;AAAA,IACrB;AAGA,QAAI,CAAC,UAAU,SAAS,WAAW,IAAkB,GAAG;AACtD,YAAM,IAAI,sCAAsC,WAAW,IAAK;AAAA,IAClE;AAGA,UAAM,IAAI,iCAAiC,KAAK,WAAW,IAAK;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,IAAO,8BAAQ;",
|
|
5
|
+
"names": ["type"]
|
|
6
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file validateExports
|
|
3
|
+
* @module mlly/utils/validateExports
|
|
4
|
+
*/
|
|
5
|
+
import type { ModuleId } from '../types/index.mjs';
|
|
6
|
+
import type { Exports } from '@flex-development/pkg-types';
|
|
7
|
+
/**
|
|
8
|
+
* Validates the given package [`exports`][1] configuration and schema.
|
|
9
|
+
*
|
|
10
|
+
* [1]: https://nodejs.org/api/packages.html#exports
|
|
11
|
+
*
|
|
12
|
+
* @see {@linkcode Exports}
|
|
13
|
+
* @see {@linkcode ModuleId}
|
|
14
|
+
*
|
|
15
|
+
* @param {Exports | undefined} exports - Package `exports`
|
|
16
|
+
* @param {ModuleId} pkg - URL of relevant `package.json` file
|
|
17
|
+
* @param {ModuleId} parent - URL of module to resolve from
|
|
18
|
+
* @return {true} `true` if `exports` configuration and schema are valid
|
|
19
|
+
* @throws {NodeError<Error | TypeError>} If either `pkg` or `parent` is not an
|
|
20
|
+
* instance of {@linkcode URL} or a string, or if `exports` configuration or
|
|
21
|
+
* schema is invalid
|
|
22
|
+
*/
|
|
23
|
+
declare const validateExports: (exports: Exports | undefined, pkg: ModuleId, parent: ModuleId) => true;
|
|
24
|
+
export default validateExports;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import isArrayIndex from "../internal/is-array-index.mjs";
|
|
2
|
+
import validateURLString from "../internal/validate-url-string.mjs";
|
|
3
|
+
import {
|
|
4
|
+
ERR_INVALID_PACKAGE_CONFIG
|
|
5
|
+
} from "@flex-development/errnode";
|
|
6
|
+
import { isNIL } from "@flex-development/tutils";
|
|
7
|
+
import { URL, fileURLToPath } from "node:url";
|
|
8
|
+
const validateExports = (exports, pkg, parent) => {
|
|
9
|
+
switch (true) {
|
|
10
|
+
case Array.isArray(exports):
|
|
11
|
+
for (const item of exports) {
|
|
12
|
+
switch (true) {
|
|
13
|
+
case Array.isArray(item):
|
|
14
|
+
case isNIL(item):
|
|
15
|
+
case (typeof item !== "object" && typeof item !== "string"):
|
|
16
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(
|
|
17
|
+
fileURLToPath(pkg),
|
|
18
|
+
fileURLToPath(parent),
|
|
19
|
+
'The "exports" array must contain either objects of package subpath keys, objects of condition name keys, or strings'
|
|
20
|
+
);
|
|
21
|
+
default:
|
|
22
|
+
validateExports(
|
|
23
|
+
item,
|
|
24
|
+
pkg,
|
|
25
|
+
parent
|
|
26
|
+
);
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
case isNIL(exports):
|
|
32
|
+
case typeof exports === "string":
|
|
33
|
+
break;
|
|
34
|
+
case typeof exports !== "object":
|
|
35
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(
|
|
36
|
+
fileURLToPath(pkg),
|
|
37
|
+
fileURLToPath(parent),
|
|
38
|
+
'"exports" must be null, undefined, a string, an object of package subpath keys or condition name keys, or an array containing objects of package subpath keys, objects of condition name keys, or strings'
|
|
39
|
+
);
|
|
40
|
+
default:
|
|
41
|
+
exports = exports;
|
|
42
|
+
validateURLString(pkg, "pkg");
|
|
43
|
+
validateURLString(parent, "parent");
|
|
44
|
+
const keys = Object.getOwnPropertyNames(exports);
|
|
45
|
+
for (const [index, key] of keys.entries()) {
|
|
46
|
+
if (isArrayIndex(key)) {
|
|
47
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(
|
|
48
|
+
fileURLToPath(new URL(".", pkg)),
|
|
49
|
+
fileURLToPath(parent),
|
|
50
|
+
'"exports" cannot contain numeric property keys'
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
if (index > 0) {
|
|
54
|
+
const prev = keys[index - 1];
|
|
55
|
+
if (!key.startsWith(".") && prev.startsWith(".") || key.startsWith(".") && !prev.startsWith(".")) {
|
|
56
|
+
throw new ERR_INVALID_PACKAGE_CONFIG(
|
|
57
|
+
fileURLToPath(pkg),
|
|
58
|
+
fileURLToPath(parent),
|
|
59
|
+
`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
};
|
|
68
|
+
var validate_exports_default = validateExports;
|
|
69
|
+
export {
|
|
70
|
+
validate_exports_default as default
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=validate-exports.mjs.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/validate-exports.ts"],
|
|
4
|
+
"mappings": "AAKA,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,aAAa;AACtB,SAAS,KAAK,qBAAqB;AAkBnC,MAAM,kBAAkB,CACtB,SACA,KACA,WACS;AACT,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM,QAAQ,OAAO;AACxB,iBAAW,QAAQ,SAAsB;AACvC,gBAAQ,MAAM;AAAA,UACZ,KAAK,MAAM,QAAQ,IAAI;AAAA,UACvB,KAAK,MAAM,IAAI;AAAA,UACf,MAAK,OAAO,SAAS,YAAY,OAAO,SAAS;AAC/C,kBAAM,IAAI;AAAA,cACR,cAAc,GAAG;AAAA,cACjB,cAAc,MAAM;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AACE;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AACA;AAAA,QACJ;AAAA,MACF;AAEA;AAAA,IACF,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,OAAO,YAAY;AACtB;AAAA,IACF,KAAK,OAAO,YAAY;AACtB,YAAM,IAAI;AAAA,QACR,cAAc,GAAG;AAAA,QACjB,cAAc,MAAM;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACE,gBAAU;AAEV,wBAAkB,KAAK,KAAK;AAC5B,wBAAkB,QAAQ,QAAQ;AAOlC,YAAM,OAAiB,OAAO,oBAAoB,OAAO;AAGzD,iBAAW,CAAC,OAAO,GAAG,KAAK,KAAK,QAAQ,GAAG;AAEzC,YAAI,aAAa,GAAG,GAAG;AACrB,gBAAM,IAAI;AAAA,YACR,cAAc,IAAI,IAAI,KAAK,GAAG,CAAC;AAAA,YAC/B,cAAc,MAAM;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAIA,YAAI,QAAQ,GAAG;AAMb,gBAAM,OAAe,KAAK,QAAQ,CAAC;AAGnC,cACG,CAAC,IAAI,WAAW,GAAG,KAAK,KAAK,WAAW,GAAG,KAC3C,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,GAAG,GAC5C;AACA,kBAAM,IAAI;AAAA,cACR,cAAc,GAAG;AAAA,cACjB,cAAc,MAAM;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA;AAAA,EACJ;AAEA,SAAO;AACT;AAEA,IAAO,2BAAQ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|