@flex-development/mlly 1.0.0-alpha.1 → 1.0.0-alpha.11
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 +431 -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 +64 -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 +116 -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
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Interfaces - ExportStatement
|
|
3
|
+
* @module mlly/interfaces/ExportStatement
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { StatementKind } from '#src/enums'
|
|
7
|
+
import type { Declaration, SyntaxKindExport } from '#src/types'
|
|
8
|
+
import type { Nullable } from '@flex-development/tutils'
|
|
9
|
+
import type Statement from './statement'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Export statement object.
|
|
13
|
+
*
|
|
14
|
+
* @see {@linkcode Declaration}
|
|
15
|
+
* @see {@linkcode Statement}
|
|
16
|
+
* @see {@linkcode SyntaxKindExport}
|
|
17
|
+
*
|
|
18
|
+
* @extends {Statement}
|
|
19
|
+
*/
|
|
20
|
+
interface ExportStatement extends Statement {
|
|
21
|
+
/**
|
|
22
|
+
* Export declaration, if any.
|
|
23
|
+
*/
|
|
24
|
+
declaration: Nullable<Declaration>
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Export names.
|
|
28
|
+
*/
|
|
29
|
+
exports: string[]
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Statement kind.
|
|
33
|
+
*/
|
|
34
|
+
kind: StatementKind.EXPORT
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Modifier keywords.
|
|
38
|
+
*/
|
|
39
|
+
modifiers: string[]
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Statement syntax kind.
|
|
43
|
+
*/
|
|
44
|
+
syntax: SyntaxKindExport
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Type-only export statement check.
|
|
48
|
+
*/
|
|
49
|
+
type: boolean
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export type { ExportStatement as default }
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Interfaces - ImportStatement
|
|
3
|
+
* @module mlly/interfaces/ImportStatement
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { StatementKind } from '#src/enums'
|
|
7
|
+
import type { SyntaxKindImport } from '#src/types'
|
|
8
|
+
import type Statement from './statement'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Import statement object.
|
|
12
|
+
*
|
|
13
|
+
* @see {@linkcode Statement}
|
|
14
|
+
* @see {@linkcode SyntaxKindImport}
|
|
15
|
+
*
|
|
16
|
+
* @extends {Statement}
|
|
17
|
+
*/
|
|
18
|
+
interface ImportStatement extends Statement {
|
|
19
|
+
/**
|
|
20
|
+
* Import names.
|
|
21
|
+
*/
|
|
22
|
+
imports: string[]
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Statement kind.
|
|
26
|
+
*/
|
|
27
|
+
kind: StatementKind.IMPORT
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Module specifier.
|
|
31
|
+
*/
|
|
32
|
+
specifier: NonNullable<Statement['specifier']>
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Module specifier syntax type.
|
|
36
|
+
*/
|
|
37
|
+
specifier_syntax: NonNullable<Statement['specifier_syntax']>
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Statement syntax kind.
|
|
41
|
+
*/
|
|
42
|
+
syntax: SyntaxKindImport
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type { ImportStatement as default }
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Interfaces - RequireStatement
|
|
3
|
+
* @module mlly/interfaces/RequireStatement
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { StatementKind } from '#src/enums'
|
|
7
|
+
import type { SyntaxKindRequire } from '#src/types'
|
|
8
|
+
import type Statement from './statement'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Require statement object.
|
|
12
|
+
*
|
|
13
|
+
* @see {@linkcode Statement}
|
|
14
|
+
* @see {@linkcode SyntaxKindRequire}
|
|
15
|
+
*
|
|
16
|
+
* @extends {Statement}
|
|
17
|
+
*/
|
|
18
|
+
interface RequireStatement extends Statement {
|
|
19
|
+
/**
|
|
20
|
+
* Import names.
|
|
21
|
+
*/
|
|
22
|
+
imports: string[]
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Statement kind.
|
|
26
|
+
*/
|
|
27
|
+
kind: StatementKind.REQUIRE
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Module specifier.
|
|
31
|
+
*/
|
|
32
|
+
specifier: NonNullable<Statement['specifier']>
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Module specifier syntax type.
|
|
36
|
+
*/
|
|
37
|
+
specifier_syntax: NonNullable<Statement['specifier_syntax']>
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Statement syntax kind.
|
|
41
|
+
*/
|
|
42
|
+
syntax: SyntaxKindRequire
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type { RequireStatement as default }
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Interfaces - Statement
|
|
3
|
+
* @module mlly/interfaces/Statement
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
SpecifierKind,
|
|
8
|
+
SpecifierSyntaxKind,
|
|
9
|
+
StatementKind,
|
|
10
|
+
StatementSyntaxKind
|
|
11
|
+
} from '#src/enums'
|
|
12
|
+
import type { Nullable } from '@flex-development/tutils'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* CommonJS or ESM statement object.
|
|
16
|
+
*
|
|
17
|
+
* @see {@linkcode SpecifierKind}
|
|
18
|
+
* @see {@linkcode SpecifierSyntaxKind}
|
|
19
|
+
* @see {@linkcode StatementKind}
|
|
20
|
+
* @see {@linkcode StatementSyntaxKind}
|
|
21
|
+
*/
|
|
22
|
+
interface Statement {
|
|
23
|
+
/**
|
|
24
|
+
* Statement snippet.
|
|
25
|
+
*/
|
|
26
|
+
code: string
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* End index of {@linkcode code} in source content.
|
|
30
|
+
*/
|
|
31
|
+
end: number
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Statement kind.
|
|
35
|
+
*/
|
|
36
|
+
kind: StatementKind
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Module specifier.
|
|
40
|
+
*/
|
|
41
|
+
specifier: Nullable<string>
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Module specifier type.
|
|
45
|
+
*/
|
|
46
|
+
specifier_kind: Nullable<SpecifierKind>
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Module specifier syntax type.
|
|
50
|
+
*/
|
|
51
|
+
specifier_syntax: Nullable<SpecifierSyntaxKind>
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Start index of {@linkcode code} in source content.
|
|
55
|
+
*/
|
|
56
|
+
start: number
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Statement syntax kind.
|
|
60
|
+
*/
|
|
61
|
+
syntax: StatementSyntaxKind
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export type { Statement as default }
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - escapeRegExp
|
|
3
|
+
* @module mlly/internal/escapeRegExp
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { NodeError } from '@flex-development/errnode'
|
|
7
|
+
import validateString from './validate-string'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Escapes special characters in the given regex `pattern`.
|
|
11
|
+
*
|
|
12
|
+
* A backslash escape (`\\`) is used when valid. A `\x2d` escape is used when
|
|
13
|
+
* the former would be disallowed by stricter Unicode pattern grammar.
|
|
14
|
+
*
|
|
15
|
+
* @param {string} pattern - Regex pattern to escape
|
|
16
|
+
* @return {string} `pattern` with special characters escaped
|
|
17
|
+
* @throws {NodeError<TypeError>} If `pattern` is not a string
|
|
18
|
+
*/
|
|
19
|
+
const escapeRegExp = (pattern: string): string => {
|
|
20
|
+
validateString(pattern, 'pattern')
|
|
21
|
+
return pattern.replace(/[$()*+.?[\\\]^{|}]/g, '\\$&').replace(/-/g, '\\x2d')
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export default escapeRegExp
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - FORMAT_TYPE_MAP
|
|
3
|
+
* @module mlly/internal/FORMAT_TYPE_MAP
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { AssertType, Format } from '#src/enums'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Module format to `import` assertion type map.
|
|
10
|
+
*
|
|
11
|
+
* **Note**: It's unclear whether or not the HTML spec will require assertion
|
|
12
|
+
* types for WebAssembly modules.
|
|
13
|
+
*
|
|
14
|
+
* @see https://github.com/WebAssembly/esm-integration/issues/42
|
|
15
|
+
*
|
|
16
|
+
* @const {Map<Format, AssertType>} FORMAT_TYPE_MAP
|
|
17
|
+
*/
|
|
18
|
+
const FORMAT_TYPE_MAP: Map<Format, AssertType> = new Map<Format, AssertType>([
|
|
19
|
+
[Format.BUILTIN, AssertType.IMPLICIT],
|
|
20
|
+
[Format.COMMONJS, AssertType.IMPLICIT],
|
|
21
|
+
[Format.JSON, AssertType.JSON],
|
|
22
|
+
[Format.MODULE, AssertType.IMPLICIT],
|
|
23
|
+
[Format.WASM, AssertType.IMPLICIT]
|
|
24
|
+
])
|
|
25
|
+
|
|
26
|
+
export default FORMAT_TYPE_MAP
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - getSpecifierKind
|
|
3
|
+
* @module mlly/internal/getSpecifierKind
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { SpecifierKind } from '#src/enums'
|
|
7
|
+
import validateString from '#src/internal/validate-string'
|
|
8
|
+
import isAbsoluteSpecifier from '#src/utils/is-absolute-specifier'
|
|
9
|
+
import isRelativeSpecifier from '#src/utils/is-relative-specifier'
|
|
10
|
+
import type { NodeError } from '@flex-development/errnode'
|
|
11
|
+
import type { Nullable } from '@flex-development/tutils'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Determines a specifier type for the given module `specifier`.
|
|
15
|
+
*
|
|
16
|
+
* @see {@linkcode SpecifierKind}
|
|
17
|
+
*
|
|
18
|
+
* @param {string} specifier - Module specifier to evaluate
|
|
19
|
+
* @return {Nullable<SpecifierKind>} Module `specifier` type or `null`
|
|
20
|
+
* @throws {NodeError<TypeError>} If `specifier` is not a string
|
|
21
|
+
*/
|
|
22
|
+
const getSpecifierKind = (specifier: string): Nullable<SpecifierKind> => {
|
|
23
|
+
validateString(specifier, 'specifier')
|
|
24
|
+
|
|
25
|
+
// trim specifier and remove quotes (quotes could lead to a specifier being
|
|
26
|
+
// classified as 'bare' when it is actually absolute or relative)
|
|
27
|
+
specifier = specifier.trim().replace(/^["']|["']$/g, '')
|
|
28
|
+
|
|
29
|
+
return specifier
|
|
30
|
+
? isAbsoluteSpecifier(specifier)
|
|
31
|
+
? SpecifierKind.ABSOLUTE
|
|
32
|
+
: isRelativeSpecifier(specifier)
|
|
33
|
+
? SpecifierKind.RELATIVE
|
|
34
|
+
: SpecifierKind.BARE
|
|
35
|
+
: null
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default getSpecifierKind
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - getSubpaths
|
|
3
|
+
* @module mlly/internal/getSubpaths
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ModuleId } from '#src/types'
|
|
7
|
+
import isExportsSugar from '#src/utils/is-exports-sugar'
|
|
8
|
+
import type { Exports, Imports } from '@flex-development/pkg-types'
|
|
9
|
+
import { isNIL } from '@flex-development/tutils'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns an array containing subpaths defined in the given package `context`,
|
|
13
|
+
* a `package.json` [`exports`][1] or [`imports`][2] field.
|
|
14
|
+
*
|
|
15
|
+
* If `context` is using [exports sugar][3], the array will contain a single
|
|
16
|
+
* subpath, `'.'`.
|
|
17
|
+
*
|
|
18
|
+
* [1]: https://nodejs.org/api/packages.html#exports
|
|
19
|
+
* [2]: https://nodejs.org/api/packages.html#imports
|
|
20
|
+
* [3]: https://nodejs.org/api/packages.html#exports-sugar
|
|
21
|
+
*
|
|
22
|
+
* @param {Exports | Imports | undefined} context - Package context
|
|
23
|
+
* @param {boolean} internal - Package `imports` hint
|
|
24
|
+
* @param {ModuleId} pkg - URL of relevant `package.json` file
|
|
25
|
+
* @param {ModuleId} parent - URL of module to resolve from
|
|
26
|
+
* @return {string[]} Subpaths defined in `context`
|
|
27
|
+
*/
|
|
28
|
+
const getSubpaths = (
|
|
29
|
+
context: Exports | Imports | undefined,
|
|
30
|
+
internal: boolean,
|
|
31
|
+
pkg: ModuleId,
|
|
32
|
+
parent: ModuleId
|
|
33
|
+
): string[] => {
|
|
34
|
+
return isNIL(context)
|
|
35
|
+
? []
|
|
36
|
+
: !internal && isExportsSugar(context, pkg, parent)
|
|
37
|
+
? ['.']
|
|
38
|
+
: Object.keys(context as Imports | Record<string, Exports>)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default getSubpaths
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internals - isArrayIndex
|
|
3
|
+
* @module mlly/internal/isArrayIndex
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Numeric } from '@flex-development/tutils'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Checks if if the given `key` is a numeric property key as defined in ECMA-262
|
|
10
|
+
* [6.1.7 Array Index][1].
|
|
11
|
+
*
|
|
12
|
+
* [1]: https://tc39.es/ecma262/#integer-index
|
|
13
|
+
*
|
|
14
|
+
* @param {string} key - Property key to evaluate
|
|
15
|
+
* @return {key is Numeric} `true` if `key` is numeric property key
|
|
16
|
+
*/
|
|
17
|
+
const isArrayIndex = (key: string): key is Numeric => {
|
|
18
|
+
/**
|
|
19
|
+
* {@linkcode key} as number.
|
|
20
|
+
*
|
|
21
|
+
* @const {number} num
|
|
22
|
+
*/
|
|
23
|
+
const num: number = +key
|
|
24
|
+
|
|
25
|
+
return `${num}` !== key ? false : num >= 0 && num < 0xffff_ffff
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default isArrayIndex
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - isDirectory
|
|
3
|
+
* @module mlly/internal/isDirectory
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ModuleId } from '#src/types'
|
|
7
|
+
import fs from 'node:fs'
|
|
8
|
+
import validateURLString from './validate-url-string'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a directory exists at the given module `id`.
|
|
12
|
+
*
|
|
13
|
+
* @param {ModuleId} id - Module id to evaluate
|
|
14
|
+
* @return {boolean} `true` if directory exists at `id`
|
|
15
|
+
*/
|
|
16
|
+
const isDirectory = (id: ModuleId): boolean => {
|
|
17
|
+
try {
|
|
18
|
+
validateURLString(id, 'id')
|
|
19
|
+
return fs.statSync(id, { throwIfNoEntry: false })?.isDirectory() ?? false
|
|
20
|
+
} catch {
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default isDirectory
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - isFile
|
|
3
|
+
* @module mlly/internal/isFile
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ModuleId } from '#src/types'
|
|
7
|
+
import fs from 'node:fs'
|
|
8
|
+
import validateURLString from './validate-url-string'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a file exists at the given module `id`.
|
|
12
|
+
*
|
|
13
|
+
* @param {ModuleId} id - Module id to evaluate
|
|
14
|
+
* @return {boolean} `true` if file exists at `id`
|
|
15
|
+
*/
|
|
16
|
+
const isFile = (id: ModuleId): boolean => {
|
|
17
|
+
try {
|
|
18
|
+
validateURLString(id, 'id')
|
|
19
|
+
return fs.statSync(id, { throwIfNoEntry: false })?.isFile() ?? false
|
|
20
|
+
} catch {
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default isFile
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - isFunction
|
|
3
|
+
* @module mlly/internal/isFunction
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Checks if the given `value` is a function.
|
|
8
|
+
*
|
|
9
|
+
* @param {unknown} value - Value to check
|
|
10
|
+
* @return {value is (...args: any[]) => any} `true` if `value` is a unction
|
|
11
|
+
*/
|
|
12
|
+
const isFunction = (value: unknown): value is (...args: any[]) => any => {
|
|
13
|
+
return typeof value === 'function'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default isFunction
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - ENCODED_SEP_REGEX
|
|
3
|
+
* @module mlly/internal/ENCODED_SEP_REGEX
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regex pattern matching encoded path separators (e.g `/`, `\\`).
|
|
8
|
+
*
|
|
9
|
+
* @see https://regex101.com/r/XV7HzM
|
|
10
|
+
*
|
|
11
|
+
* @const {RegExp} ENCODED_SEP_REGEX
|
|
12
|
+
*/
|
|
13
|
+
const ENCODED_SEP_REGEX: RegExp = /%2f|%5c/i
|
|
14
|
+
|
|
15
|
+
export default ENCODED_SEP_REGEX
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - INTERNAL_SPECIFIER_REGEX
|
|
3
|
+
* @module mlly/internal/INTERNAL_SPECIFIER_REGEX
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regex pattern matching subpath imports.
|
|
8
|
+
*
|
|
9
|
+
* @see https://regex101.com/r/ppVRw7
|
|
10
|
+
* @see https://nodejs.org/api/packages.html#subpath-imports
|
|
11
|
+
*
|
|
12
|
+
* @const {RegExp} INTERNAL_SPECIFIER_REGEX
|
|
13
|
+
*/
|
|
14
|
+
const INTERNAL_SPECIFIER_REGEX: RegExp =
|
|
15
|
+
/^(?!.*(?:%2[Ff]|%5[Cc]))(?<root>#[^\s/]+?(?=\s|$|\/))(?<path>\/.+[^/](?=\s|$))?(?!\/)/
|
|
16
|
+
|
|
17
|
+
export default INTERNAL_SPECIFIER_REGEX
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - PACKAGE_NAME_REGEX
|
|
3
|
+
* @module mlly/internal/PACKAGE_NAME_REGEX
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regex pattern matching package names.
|
|
8
|
+
*
|
|
9
|
+
* @see https://regex101.com/r/BHcJfc
|
|
10
|
+
*
|
|
11
|
+
* @const {RegExp} PACKAGE_NAME_REGEX
|
|
12
|
+
*/
|
|
13
|
+
const PACKAGE_NAME_REGEX: RegExp =
|
|
14
|
+
/^(?:(?<scope>@[\d*a-z~-][\w*.~-]*)\/)?[\da-z~-][\w.~-]*$/
|
|
15
|
+
|
|
16
|
+
export default PACKAGE_NAME_REGEX
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Internal - PACKAGE_PATH_REGEX
|
|
3
|
+
* @module mlly/internal/PACKAGE_PATH_REGEX
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Regex pattern matching bare specifiers beginning with valid package names.
|
|
8
|
+
*
|
|
9
|
+
* **Note**: Does **not** match specifiers beginning with `'node_modules'`.
|
|
10
|
+
*
|
|
11
|
+
* @see https://regex101.com/r/z0MPgj
|
|
12
|
+
*
|
|
13
|
+
* @const {RegExp} PACKAGE_PATH_REGEX
|
|
14
|
+
*/
|
|
15
|
+
const PACKAGE_PATH_REGEX: RegExp =
|
|
16
|
+
/^(?!\S+:|node_modules)(?<pkg>(?:(?:(?<scope>@[\d*a-z~-][\w*.~-]*)\/)?[\da-z~-][\w.~-]*))@?(?<version_prefix>v)?(?<version>(?:(?:0|[1-9]\d*)\.){2}(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|\d*[a-z-][\da-z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-z-][\da-z-]*))*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?)?(?<subpath>\/.*)?(?<!.*(?:%2[Ff]|%5[Cc]))/
|
|
17
|
+
|
|
18
|
+
export default PACKAGE_PATH_REGEX
|