@flex-development/mlly 1.0.0-alpha.9 → 1.0.0-beta.2

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.
Files changed (332) hide show
  1. package/CHANGELOG.md +1120 -376
  2. package/README.md +1555 -12
  3. package/dist/index.d.mts +3 -4
  4. package/dist/index.mjs +5 -5
  5. package/dist/interfaces/aliases.d.mts +21 -0
  6. package/dist/interfaces/condition-map.d.mts +24 -0
  7. package/dist/interfaces/file-system.d.mts +29 -0
  8. package/dist/interfaces/get-source-context.d.mts +44 -0
  9. package/dist/interfaces/get-source-options.d.mts +48 -0
  10. package/dist/interfaces/index.d.mts +18 -21
  11. package/dist/interfaces/is-directory.d.mts +17 -0
  12. package/dist/interfaces/is-file.d.mts +17 -0
  13. package/dist/interfaces/main-field-map.d.mts +22 -0
  14. package/dist/interfaces/module-format-map.d.mts +26 -0
  15. package/dist/interfaces/pattern-key-comparison-map.d.mts +31 -0
  16. package/dist/interfaces/protocol-map.d.mts +44 -0
  17. package/dist/interfaces/read-file.d.mts +28 -0
  18. package/dist/interfaces/realpath.d.mts +30 -0
  19. package/dist/interfaces/resolve-alias-options.d.mts +43 -0
  20. package/dist/interfaces/resolve-module-options.d.mts +79 -0
  21. package/dist/interfaces/stat.d.mts +28 -0
  22. package/dist/interfaces/stats.d.mts +23 -0
  23. package/dist/internal/chain-or-call.mjs +34 -0
  24. package/dist/internal/chars.mjs +17 -0
  25. package/dist/internal/check-invalid-segments.mjs +49 -0
  26. package/dist/internal/constant.mjs +23 -0
  27. package/dist/internal/fs.browser.mjs +42 -0
  28. package/dist/internal/fs.node.mjs +16 -0
  29. package/dist/internal/identity.mjs +23 -0
  30. package/dist/internal/invalid-package-target.mjs +36 -0
  31. package/dist/internal/invalid-subpath.mjs +37 -0
  32. package/dist/internal/is-promise.mjs +26 -0
  33. package/dist/internal/process.browser.mjs +8 -0
  34. package/dist/lib/can-parse-url.d.mts +23 -0
  35. package/dist/lib/can-parse-url.mjs +31 -0
  36. package/dist/lib/cwd.d.mts +14 -0
  37. package/dist/lib/cwd.mjs +17 -0
  38. package/dist/lib/default-conditions.d.mts +15 -0
  39. package/dist/lib/default-conditions.mjs +14 -0
  40. package/dist/lib/default-extensions.d.mts +14 -0
  41. package/dist/lib/default-extensions.mjs +29 -0
  42. package/dist/lib/default-main-fields.d.mts +14 -0
  43. package/dist/lib/default-main-fields.mjs +13 -0
  44. package/dist/lib/extension-format-map.d.mts +16 -0
  45. package/dist/lib/extension-format-map.mjs +31 -0
  46. package/dist/lib/formats.d.mts +21 -0
  47. package/dist/lib/formats.mjs +22 -0
  48. package/dist/lib/get-source.d.mts +46 -0
  49. package/dist/lib/get-source.mjs +156 -0
  50. package/dist/lib/index.d.mts +41 -0
  51. package/dist/lib/index.mjs +41 -0
  52. package/dist/lib/is-absolute-specifier.d.mts +23 -0
  53. package/dist/lib/is-absolute-specifier.mjs +34 -0
  54. package/dist/lib/is-array-index.d.mts +19 -0
  55. package/dist/lib/is-array-index.mjs +28 -0
  56. package/dist/lib/is-bare-specifier.d.mts +23 -0
  57. package/dist/lib/is-bare-specifier.mjs +33 -0
  58. package/dist/lib/is-directory.d.mts +27 -0
  59. package/dist/lib/is-directory.mjs +54 -0
  60. package/dist/lib/is-file.d.mts +27 -0
  61. package/dist/lib/is-file.mjs +54 -0
  62. package/dist/lib/is-imports-subpath.d.mts +26 -0
  63. package/dist/lib/is-imports-subpath.mjs +28 -0
  64. package/dist/lib/is-module-id.d.mts +23 -0
  65. package/dist/lib/is-module-id.mjs +24 -0
  66. package/dist/lib/is-relative-specifier.d.mts +23 -0
  67. package/dist/lib/is-relative-specifier.mjs +36 -0
  68. package/dist/lib/lookup-package-scope.d.mts +49 -0
  69. package/dist/lib/lookup-package-scope.mjs +102 -0
  70. package/dist/lib/pattern-key-compare.d.mts +28 -0
  71. package/dist/lib/pattern-key-compare.mjs +71 -0
  72. package/dist/lib/pattern-match.d.mts +22 -0
  73. package/dist/lib/pattern-match.mjs +85 -0
  74. package/dist/lib/read-package-json.d.mts +63 -0
  75. package/dist/lib/read-package-json.mjs +115 -0
  76. package/dist/lib/resolve-alias.d.mts +21 -0
  77. package/dist/lib/resolve-alias.mjs +102 -0
  78. package/dist/lib/resolve-module.d.mts +43 -0
  79. package/dist/lib/resolve-module.mjs +186 -0
  80. package/dist/lib/resolver.d.mts +346 -0
  81. package/dist/lib/resolver.mjs +1015 -0
  82. package/dist/lib/root.d.mts +11 -0
  83. package/dist/lib/root.mjs +12 -0
  84. package/dist/lib/to-relative-specifier.d.mts +27 -0
  85. package/dist/lib/to-relative-specifier.mjs +63 -0
  86. package/dist/lib/to-url.d.mts +26 -0
  87. package/dist/lib/to-url.mjs +34 -0
  88. package/dist/types/awaitable.d.mts +12 -0
  89. package/dist/types/change-ext-fn.d.mts +29 -0
  90. package/dist/types/condition.d.mts +13 -0
  91. package/dist/types/dot.d.mts +9 -0
  92. package/dist/types/empty-array.d.mts +9 -0
  93. package/dist/types/empty-object.d.mts +19 -0
  94. package/dist/types/empty-string.d.mts +9 -0
  95. package/dist/types/ext.d.mts +12 -0
  96. package/dist/types/get-source-handler.d.mts +22 -0
  97. package/dist/types/get-source-handlers.d.mts +15 -0
  98. package/dist/types/index.d.mts +19 -10
  99. package/dist/types/list.d.mts +12 -0
  100. package/dist/types/main-field.d.mts +13 -0
  101. package/dist/types/module-format.d.mts +13 -0
  102. package/dist/types/module-id.d.mts +3 -4
  103. package/dist/types/numeric.d.mts +9 -0
  104. package/dist/types/pattern-key-comparison.d.mts +14 -0
  105. package/dist/types/pattern-match.d.mts +10 -0
  106. package/dist/types/protocol.d.mts +6 -7
  107. package/package.json +151 -158
  108. package/changelog.config.ts +0 -404
  109. package/dist/enums/assert-type.d.mts +0 -21
  110. package/dist/enums/assert-type.mjs +0 -10
  111. package/dist/enums/assert-type.mjs.map +0 -6
  112. package/dist/enums/format.d.mts +0 -17
  113. package/dist/enums/format.mjs +0 -13
  114. package/dist/enums/format.mjs.map +0 -6
  115. package/dist/enums/index.d.mts +0 -10
  116. package/dist/enums/index.mjs +0 -15
  117. package/dist/enums/index.mjs.map +0 -6
  118. package/dist/enums/kind-specifier-syntax.d.mts +0 -14
  119. package/dist/enums/kind-specifier-syntax.mjs +0 -10
  120. package/dist/enums/kind-specifier-syntax.mjs.map +0 -6
  121. package/dist/enums/kind-specifier.d.mts +0 -17
  122. package/dist/enums/kind-specifier.mjs +0 -11
  123. package/dist/enums/kind-specifier.mjs.map +0 -6
  124. package/dist/enums/kind-statement-syntax.d.mts +0 -22
  125. package/dist/enums/kind-statement-syntax.mjs +0 -18
  126. package/dist/enums/kind-statement-syntax.mjs.map +0 -6
  127. package/dist/enums/kind-statement.d.mts +0 -15
  128. package/dist/enums/kind-statement.mjs +0 -11
  129. package/dist/enums/kind-statement.mjs.map +0 -6
  130. package/dist/index.mjs.map +0 -6
  131. package/dist/interfaces/import-assertions.d.mts +0 -20
  132. package/dist/interfaces/import-dynamic.d.mts +0 -43
  133. package/dist/interfaces/import-static.d.mts +0 -37
  134. package/dist/interfaces/index.mjs +0 -1
  135. package/dist/interfaces/index.mjs.map +0 -6
  136. package/dist/interfaces/options-fill-module.d.mts +0 -23
  137. package/dist/interfaces/options-find-subpath.d.mts +0 -49
  138. package/dist/interfaces/options-get-format.d.mts +0 -83
  139. package/dist/interfaces/options-get-source.d.mts +0 -63
  140. package/dist/interfaces/options-parse-module-id.d.mts +0 -33
  141. package/dist/interfaces/options-parse-subpath.d.mts +0 -31
  142. package/dist/interfaces/options-resolve-alias.d.mts +0 -53
  143. package/dist/interfaces/options-resolve-module.d.mts +0 -64
  144. package/dist/interfaces/options-resolve.d.mts +0 -15
  145. package/dist/interfaces/package-scope.d.mts +0 -25
  146. package/dist/interfaces/parsed-data-url.d.mts +0 -56
  147. package/dist/interfaces/parsed-module-id.d.mts +0 -80
  148. package/dist/interfaces/parsed-subpath.d.mts +0 -40
  149. package/dist/interfaces/statement-export.d.mts +0 -44
  150. package/dist/interfaces/statement-import.d.mts +0 -38
  151. package/dist/interfaces/statement-require.d.mts +0 -38
  152. package/dist/interfaces/statement.d.mts +0 -49
  153. package/dist/internal/escape-reg-exp.d.mts +0 -16
  154. package/dist/internal/escape-reg-exp.mjs +0 -10
  155. package/dist/internal/escape-reg-exp.mjs.map +0 -6
  156. package/dist/internal/format-type-map.d.mts +0 -17
  157. package/dist/internal/format-type-map.mjs +0 -13
  158. package/dist/internal/format-type-map.mjs.map +0 -6
  159. package/dist/internal/get-specifier-kind.d.mts +0 -17
  160. package/dist/internal/get-specifier-kind.mjs +0 -14
  161. package/dist/internal/get-specifier-kind.mjs.map +0 -6
  162. package/dist/internal/get-subpaths.d.mts +0 -25
  163. package/dist/internal/get-subpaths.mjs +0 -10
  164. package/dist/internal/get-subpaths.mjs.map +0 -6
  165. package/dist/internal/is-array-index.d.mts +0 -15
  166. package/dist/internal/is-array-index.mjs +0 -9
  167. package/dist/internal/is-array-index.mjs.map +0 -6
  168. package/dist/internal/is-directory.d.mts +0 -13
  169. package/dist/internal/is-directory.mjs +0 -16
  170. package/dist/internal/is-directory.mjs.map +0 -6
  171. package/dist/internal/is-file.d.mts +0 -13
  172. package/dist/internal/is-file.mjs +0 -16
  173. package/dist/internal/is-file.mjs.map +0 -6
  174. package/dist/internal/is-function.d.mts +0 -12
  175. package/dist/internal/is-function.mjs +0 -8
  176. package/dist/internal/is-function.mjs.map +0 -6
  177. package/dist/internal/regex-encoded-sep.d.mts +0 -13
  178. package/dist/internal/regex-encoded-sep.mjs +0 -6
  179. package/dist/internal/regex-encoded-sep.mjs.map +0 -6
  180. package/dist/internal/regex-internal-specifier.d.mts +0 -14
  181. package/dist/internal/regex-internal-specifier.mjs +0 -6
  182. package/dist/internal/regex-internal-specifier.mjs.map +0 -6
  183. package/dist/internal/regex-package-name.d.mts +0 -13
  184. package/dist/internal/regex-package-name.mjs +0 -6
  185. package/dist/internal/regex-package-name.mjs.map +0 -6
  186. package/dist/internal/regex-package-path.d.mts +0 -15
  187. package/dist/internal/regex-package-path.mjs +0 -6
  188. package/dist/internal/regex-package-path.mjs.map +0 -6
  189. package/dist/internal/resolver.d.mts +0 -130
  190. package/dist/internal/resolver.mjs +0 -500
  191. package/dist/internal/resolver.mjs.map +0 -6
  192. package/dist/internal/validate-boolean.d.mts +0 -20
  193. package/dist/internal/validate-boolean.mjs +0 -11
  194. package/dist/internal/validate-boolean.mjs.map +0 -6
  195. package/dist/internal/validate-object.d.mts +0 -23
  196. package/dist/internal/validate-object.mjs +0 -11
  197. package/dist/internal/validate-object.mjs.map +0 -6
  198. package/dist/internal/validate-set.d.mts +0 -23
  199. package/dist/internal/validate-set.mjs +0 -11
  200. package/dist/internal/validate-set.mjs.map +0 -6
  201. package/dist/internal/validate-string.d.mts +0 -20
  202. package/dist/internal/validate-string.mjs +0 -11
  203. package/dist/internal/validate-string.mjs.map +0 -6
  204. package/dist/internal/validate-url-string.d.mts +0 -22
  205. package/dist/internal/validate-url-string.mjs +0 -12
  206. package/dist/internal/validate-url-string.mjs.map +0 -6
  207. package/dist/types/declaration.d.mts +0 -9
  208. package/dist/types/fn-change-ext.d.mts +0 -28
  209. package/dist/types/index.mjs +0 -1
  210. package/dist/types/index.mjs.map +0 -6
  211. package/dist/types/mime-type.d.mts +0 -13
  212. package/dist/types/module-specifier-type.d.mts +0 -11
  213. package/dist/types/syntax-kind-export.d.mts +0 -12
  214. package/dist/types/syntax-kind-import.d.mts +0 -12
  215. package/dist/types/syntax-kind-require.d.mts +0 -12
  216. package/dist/utils/compare-subpaths.d.mts +0 -25
  217. package/dist/utils/compare-subpaths.mjs +0 -24
  218. package/dist/utils/compare-subpaths.mjs.map +0 -6
  219. package/dist/utils/conditions.d.mts +0 -13
  220. package/dist/utils/conditions.mjs +0 -6
  221. package/dist/utils/conditions.mjs.map +0 -6
  222. package/dist/utils/detect-syntax.d.mts +0 -21
  223. package/dist/utils/detect-syntax.mjs +0 -12
  224. package/dist/utils/detect-syntax.mjs.map +0 -6
  225. package/dist/utils/extension-format-map.d.mts +0 -16
  226. package/dist/utils/extension-format-map.mjs +0 -22
  227. package/dist/utils/extension-format-map.mjs.map +0 -6
  228. package/dist/utils/extract-statements.d.mts +0 -21
  229. package/dist/utils/extract-statements.mjs +0 -21
  230. package/dist/utils/extract-statements.mjs.map +0 -6
  231. package/dist/utils/fill-modules.d.mts +0 -23
  232. package/dist/utils/fill-modules.mjs +0 -62
  233. package/dist/utils/fill-modules.mjs.map +0 -6
  234. package/dist/utils/find-dynamic-imports.d.mts +0 -18
  235. package/dist/utils/find-dynamic-imports.mjs +0 -39
  236. package/dist/utils/find-dynamic-imports.mjs.map +0 -6
  237. package/dist/utils/find-exports.d.mts +0 -21
  238. package/dist/utils/find-exports.mjs +0 -95
  239. package/dist/utils/find-exports.mjs.map +0 -6
  240. package/dist/utils/find-requires.d.mts +0 -18
  241. package/dist/utils/find-requires.mjs +0 -32
  242. package/dist/utils/find-requires.mjs.map +0 -6
  243. package/dist/utils/find-static-imports.d.mts +0 -18
  244. package/dist/utils/find-static-imports.mjs +0 -34
  245. package/dist/utils/find-static-imports.mjs.map +0 -6
  246. package/dist/utils/find-subpath.d.mts +0 -30
  247. package/dist/utils/find-subpath.mjs +0 -106
  248. package/dist/utils/find-subpath.mjs.map +0 -6
  249. package/dist/utils/get-format.d.mts +0 -24
  250. package/dist/utils/get-format.mjs +0 -111
  251. package/dist/utils/get-format.mjs.map +0 -6
  252. package/dist/utils/get-source.d.mts +0 -22
  253. package/dist/utils/get-source.mjs +0 -63
  254. package/dist/utils/get-source.mjs.map +0 -6
  255. package/dist/utils/has-cjs-syntax.d.mts +0 -25
  256. package/dist/utils/has-cjs-syntax.mjs +0 -11
  257. package/dist/utils/has-cjs-syntax.mjs.map +0 -6
  258. package/dist/utils/has-esm-syntax.d.mts +0 -21
  259. package/dist/utils/has-esm-syntax.mjs +0 -11
  260. package/dist/utils/has-esm-syntax.mjs.map +0 -6
  261. package/dist/utils/index.d.mts +0 -42
  262. package/dist/utils/index.mjs +0 -79
  263. package/dist/utils/index.mjs.map +0 -6
  264. package/dist/utils/is-absolute-specifier.d.mts +0 -19
  265. package/dist/utils/is-absolute-specifier.mjs +0 -25
  266. package/dist/utils/is-absolute-specifier.mjs.map +0 -6
  267. package/dist/utils/is-bare-specifier.d.mts +0 -19
  268. package/dist/utils/is-bare-specifier.mjs +0 -10
  269. package/dist/utils/is-bare-specifier.mjs.map +0 -6
  270. package/dist/utils/is-exports-sugar.d.mts +0 -25
  271. package/dist/utils/is-exports-sugar.mjs +0 -26
  272. package/dist/utils/is-exports-sugar.mjs.map +0 -6
  273. package/dist/utils/is-relative-specifier.d.mts +0 -20
  274. package/dist/utils/is-relative-specifier.mjs +0 -11
  275. package/dist/utils/is-relative-specifier.mjs.map +0 -6
  276. package/dist/utils/lookup-package-scope.d.mts +0 -26
  277. package/dist/utils/lookup-package-scope.mjs +0 -38
  278. package/dist/utils/lookup-package-scope.mjs.map +0 -6
  279. package/dist/utils/parse-data-url.d.mts +0 -25
  280. package/dist/utils/parse-data-url.mjs +0 -25
  281. package/dist/utils/parse-data-url.mjs.map +0 -6
  282. package/dist/utils/parse-module-id.d.mts +0 -22
  283. package/dist/utils/parse-module-id.mjs +0 -122
  284. package/dist/utils/parse-module-id.mjs.map +0 -6
  285. package/dist/utils/parse-subpath.d.mts +0 -35
  286. package/dist/utils/parse-subpath.mjs +0 -54
  287. package/dist/utils/parse-subpath.mjs.map +0 -6
  288. package/dist/utils/pattern-character.d.mts +0 -11
  289. package/dist/utils/pattern-character.mjs +0 -6
  290. package/dist/utils/pattern-character.mjs.map +0 -6
  291. package/dist/utils/read-package-json.d.mts +0 -26
  292. package/dist/utils/read-package-json.mjs +0 -43
  293. package/dist/utils/read-package-json.mjs.map +0 -6
  294. package/dist/utils/resolve-alias.d.mts +0 -20
  295. package/dist/utils/resolve-alias.mjs +0 -106
  296. package/dist/utils/resolve-alias.mjs.map +0 -6
  297. package/dist/utils/resolve-aliases.d.mts +0 -19
  298. package/dist/utils/resolve-aliases.mjs +0 -28
  299. package/dist/utils/resolve-aliases.mjs.map +0 -6
  300. package/dist/utils/resolve-extensions.d.mts +0 -14
  301. package/dist/utils/resolve-extensions.mjs +0 -22
  302. package/dist/utils/resolve-extensions.mjs.map +0 -6
  303. package/dist/utils/resolve-module.d.mts +0 -39
  304. package/dist/utils/resolve-module.mjs +0 -64
  305. package/dist/utils/resolve-module.mjs.map +0 -6
  306. package/dist/utils/resolve-modules.d.mts +0 -25
  307. package/dist/utils/resolve-modules.mjs +0 -26
  308. package/dist/utils/resolve-modules.mjs.map +0 -6
  309. package/dist/utils/to-absolute-specifier.d.mts +0 -22
  310. package/dist/utils/to-absolute-specifier.mjs +0 -8
  311. package/dist/utils/to-absolute-specifier.mjs.map +0 -6
  312. package/dist/utils/to-bare-specifier.d.mts +0 -42
  313. package/dist/utils/to-bare-specifier.mjs +0 -90
  314. package/dist/utils/to-bare-specifier.mjs.map +0 -6
  315. package/dist/utils/to-data-url.d.mts +0 -30
  316. package/dist/utils/to-data-url.mjs +0 -11
  317. package/dist/utils/to-data-url.mjs.map +0 -6
  318. package/dist/utils/to-node-url.d.mts +0 -19
  319. package/dist/utils/to-node-url.mjs +0 -10
  320. package/dist/utils/to-node-url.mjs.map +0 -6
  321. package/dist/utils/to-relative-specifier.d.mts +0 -22
  322. package/dist/utils/to-relative-specifier.mjs +0 -21
  323. package/dist/utils/to-relative-specifier.mjs.map +0 -6
  324. package/dist/utils/to-url.d.mts +0 -22
  325. package/dist/utils/to-url.mjs +0 -12
  326. package/dist/utils/to-url.mjs.map +0 -6
  327. package/dist/utils/validate-assertions.d.mts +0 -23
  328. package/dist/utils/validate-assertions.mjs +0 -52
  329. package/dist/utils/validate-assertions.mjs.map +0 -6
  330. package/dist/utils/validate-exports.d.mts +0 -24
  331. package/dist/utils/validate-exports.mjs +0 -72
  332. package/dist/utils/validate-exports.mjs.map +0 -6
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file Internal - chars
3
+ * @module mlly/internal/chars
4
+ */
5
+ /**
6
+ * Characters that may have special meaning.
7
+ *
8
+ * @enum {string}
9
+ */
10
+ var chars;
11
+ (function (chars) {
12
+ chars["asterisk"] = "*";
13
+ chars["at"] = "@";
14
+ chars["empty"] = "";
15
+ chars["hash"] = "#";
16
+ })(chars || (chars = {}));
17
+ export default chars;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @file Internal - checkInvalidSegments
3
+ * @module mlly/internal/checkInvalidSegments
4
+ */
5
+ import chars from '#internal/chars';
6
+ /**
7
+ * Check `str` for invalid path segments.
8
+ *
9
+ * @internal
10
+ *
11
+ * @this {void}
12
+ *
13
+ * @param {string} str
14
+ * The package target or subpath pattern match to check
15
+ * @return {boolean}
16
+ * `true` if `str` contains invalid path segments, `false` otherwise
17
+ */
18
+ function checkInvalidSegments(str) {
19
+ /**
20
+ * The regular expression matching path separators.
21
+ *
22
+ * @const {RegExp} separator
23
+ */
24
+ const separator = /\/|\\/;
25
+ /**
26
+ * The list of path segments.
27
+ *
28
+ * @const {string[]} segments
29
+ */
30
+ const segments = str.startsWith('./')
31
+ ? str.slice(2).split(separator)
32
+ : str.split(separator);
33
+ /**
34
+ * The list of regular expressions matching invalid segments.
35
+ *
36
+ * @const {RegExp[]} checks
37
+ */
38
+ const checks = [
39
+ /^(\.|%2e)(\.|%2e)?/i,
40
+ /^(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53)/i
41
+ ];
42
+ for (const segment of segments) {
43
+ if (segment === chars.empty || checks.some(check => check.test(segment))) {
44
+ return true;
45
+ }
46
+ }
47
+ return false;
48
+ }
49
+ export default checkInvalidSegments;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file Internal - constant
3
+ * @module mlly/internal/constant
4
+ */
5
+ /**
6
+ * Create a function that returns a constant value.
7
+ *
8
+ * @internal
9
+ *
10
+ * @template {unknown} T
11
+ * The value
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {T} value
16
+ * The value
17
+ * @return {(this: void) => T}
18
+ * `value`
19
+ */
20
+ function constant(value) {
21
+ return () => value;
22
+ }
23
+ export default constant;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @file Internal - fs/browser
3
+ * @module mlly/internal/fs/browser
4
+ */
5
+ /**
6
+ * The file system API.
7
+ *
8
+ * @const {FileSystem} fs
9
+ */
10
+ const fs = {
11
+ /**
12
+ * Get the contents of a file.
13
+ *
14
+ * @return {never}
15
+ * Never; not implemented
16
+ * @throws {Error}
17
+ */
18
+ readFile() {
19
+ throw new Error('[readFile] not implemented');
20
+ },
21
+ /**
22
+ * Get the resolved pathname of a file.
23
+ *
24
+ * @return {never}
25
+ * Never; not implemented
26
+ * @throws {Error}
27
+ */
28
+ realpath() {
29
+ throw new Error('[realpathSync] not implemented');
30
+ },
31
+ /**
32
+ * Get information about a file.
33
+ *
34
+ * @return {never}
35
+ * Never; not implemented
36
+ * @throws {Error}
37
+ */
38
+ stat() {
39
+ throw new Error('[stat] not implemented');
40
+ }
41
+ };
42
+ export default fs;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file Internal - fs/node
3
+ * @module mlly/internal/fs/node
4
+ */
5
+ import nfs from 'node:fs';
6
+ /**
7
+ * The file system API.
8
+ *
9
+ * @const {FileSystem} fs
10
+ */
11
+ const fs = {
12
+ readFile: nfs.readFileSync,
13
+ realpath: nfs.realpathSync,
14
+ stat: nfs.statSync
15
+ };
16
+ export default fs;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file Internal - identity
3
+ * @module mlly/internal/identity
4
+ */
5
+ /**
6
+ * Return a constant value.
7
+ *
8
+ * @internal
9
+ *
10
+ * @template {unknown} T
11
+ * The value
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {T} value
16
+ * The value
17
+ * @return {T}
18
+ * `value`
19
+ */
20
+ function identity(value) {
21
+ return value;
22
+ }
23
+ export default identity;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @file Internal - invalidPackageTarget
3
+ * @module mlly/internal/invalidPackageTarget
4
+ */
5
+ import chars from '#internal/chars';
6
+ import { ERR_INVALID_PACKAGE_TARGET } from '@flex-development/errnode';
7
+ import { fileURLToPath } from '@flex-development/pathe';
8
+ /**
9
+ * Create an {@linkcode ERR_INVALID_PACKAGE_TARGET} error.
10
+ *
11
+ * @see {@linkcode ErrInvalidPackageTarget}
12
+ * @see {@linkcode ModuleId}
13
+ *
14
+ * @internal
15
+ *
16
+ * @this {void}
17
+ *
18
+ * @param {ModuleId} packageUrl
19
+ * The URL of the directory containing the `package.json` file
20
+ * @param {string} subpath
21
+ * The subpath pattern
22
+ * @param {unknown} target
23
+ * The invalid package target
24
+ * @param {boolean | null | undefined} [isImports]
25
+ * Whether `target` is internal to the package
26
+ * @param {ModuleId | null | undefined} [parent]
27
+ * The URL of the parent module
28
+ * @return {ErrInvalidPackageTarget}
29
+ * New node error
30
+ */
31
+ function invalidPackageTarget(packageUrl, subpath, target, isImports, parent) {
32
+ return new ERR_INVALID_PACKAGE_TARGET(fileURLToPath(packageUrl), subpath, typeof target === 'object' && target !== null
33
+ ? JSON.stringify(target, null, '')
34
+ : String(target) + (typeof target === 'bigint' ? 'n' : chars.empty), isImports, parent && fileURLToPath(parent));
35
+ }
36
+ export default invalidPackageTarget;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @file Internal - invalidSubpath
3
+ * @module mlly/internal/invalidSubpath
4
+ */
5
+ import chars from '#internal/chars';
6
+ import { ERR_INVALID_MODULE_SPECIFIER } from '@flex-development/errnode';
7
+ import pathe from '@flex-development/pathe';
8
+ /**
9
+ * Create an {@linkcode ERR_INVALID_MODULE_SPECIFIER} error for an invalid
10
+ * subpath pattern match.
11
+ *
12
+ * @see {@linkcode ErrInvalidModuleSpecifier}
13
+ * @see {@linkcode ModuleId}
14
+ *
15
+ * @internal
16
+ *
17
+ * @this {void}
18
+ *
19
+ * @param {string} subpath
20
+ * The subpath pattern
21
+ * @param {string} patternMatch
22
+ * The subpath pattern match
23
+ * @param {ModuleId} packageUrl
24
+ * The URL of the directory containing the `package.json` file
25
+ * @param {boolean | null | undefined} [isImports]
26
+ * Whether `target` is internal to the package
27
+ * @param {ModuleId | null | undefined} [parent]
28
+ * The URL of the parent module
29
+ * @return {ErrInvalidModuleSpecifier}
30
+ * New node error
31
+ */
32
+ function invalidSubpath(subpath, patternMatch, packageUrl, isImports, parent) {
33
+ return new ERR_INVALID_MODULE_SPECIFIER(subpath.replace(chars.asterisk, () => patternMatch), `request is not a valid match in pattern "${subpath}" for the ` +
34
+ `"${isImports ? 'imports' : 'exports'}" resolution of ` +
35
+ `${pathe.fileURLToPath(new URL('package.json', packageUrl))}`, parent && pathe.fileURLToPath(parent));
36
+ }
37
+ export default invalidSubpath;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file Internal - isPromise
3
+ * @module mlly/internal/isPromise
4
+ */
5
+ /**
6
+ * Check if `value` is a {@linkcode PromiseLike} object.
7
+ *
8
+ * @internal
9
+ *
10
+ * @template {any} T
11
+ * The resolved value of the promise
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {unknown} value
16
+ * The thing to check
17
+ * @return {value is PromiseLike<T>}
18
+ * `true` if `value` is {@linkcode PromiseLike}, `false` otherwise
19
+ */
20
+ function isPromise(value) {
21
+ return (typeof value === 'object' &&
22
+ value !== null &&
23
+ 'then' in value &&
24
+ typeof value.then === 'function');
25
+ }
26
+ export default isPromise;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @file Internal - process/browser
3
+ * @module mlly/internal/process/browser
4
+ */
5
+ export default {
6
+ browser: true,
7
+ platform: 'browser'
8
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file canParseUrl
3
+ * @module mlly/lib/canParseUrl
4
+ */
5
+ /**
6
+ * Check if `input` can be parsed to a {@linkcode URL}.
7
+ *
8
+ * > 👉 **Note**: If `input` is relative, `base` is required.
9
+ * > If `input` is absolute, `base` is ignored.
10
+ *
11
+ * @see {@linkcode ModuleId}
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {unknown} input
16
+ * The input URL
17
+ * @param {unknown} [base]
18
+ * The base URL to resolve against if `input` is not absolute
19
+ * @return {boolean}
20
+ * `true` if `input` can be parsed to a `URL`, `false` otherwise
21
+ */
22
+ declare function canParseUrl(this: void, input: unknown, base?: unknown): boolean;
23
+ export default canParseUrl;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file canParseUrl
3
+ * @module mlly/lib/canParseUrl
4
+ */
5
+ /**
6
+ * Check if `input` can be parsed to a {@linkcode URL}.
7
+ *
8
+ * > 👉 **Note**: If `input` is relative, `base` is required.
9
+ * > If `input` is absolute, `base` is ignored.
10
+ *
11
+ * @see {@linkcode ModuleId}
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {unknown} input
16
+ * The input URL
17
+ * @param {unknown} [base]
18
+ * The base URL to resolve against if `input` is not absolute
19
+ * @return {boolean}
20
+ * `true` if `input` can be parsed to a `URL`, `false` otherwise
21
+ */
22
+ function canParseUrl(input, base) {
23
+ try {
24
+ new URL(input, (base ?? undefined));
25
+ return true;
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ export default canParseUrl;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file cwd
3
+ * @module mlly/lib/cwd
4
+ */
5
+ /**
6
+ * Get the URL of the current working directory.
7
+ *
8
+ * @this {void}
9
+ *
10
+ * @return {URL}
11
+ * The current working directory URL
12
+ */
13
+ declare function cwd(this: void): URL;
14
+ export default cwd;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file cwd
3
+ * @module mlly/lib/cwd
4
+ */
5
+ import pathe from '@flex-development/pathe';
6
+ /**
7
+ * Get the URL of the current working directory.
8
+ *
9
+ * @this {void}
10
+ *
11
+ * @return {URL}
12
+ * The current working directory URL
13
+ */
14
+ function cwd() {
15
+ return pathe.pathToFileURL(pathe.cwd() + pathe.sep);
16
+ }
17
+ export default cwd;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file defaultConditions
3
+ * @module mlly/lib/defaultConditions
4
+ */
5
+ import type { Condition } from '@flex-development/mlly';
6
+ /**
7
+ * The default list of conditions.
8
+ *
9
+ * @see {@linkcode Condition}
10
+ * @see https://nodejs.org/api/packages.html#conditional-exports
11
+ *
12
+ * @const {Set<Condition>} defaultConditions
13
+ */
14
+ declare const defaultConditions: Set<Condition>;
15
+ export default defaultConditions;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file defaultConditions
3
+ * @module mlly/lib/defaultConditions
4
+ */
5
+ /**
6
+ * The default list of conditions.
7
+ *
8
+ * @see {@linkcode Condition}
9
+ * @see https://nodejs.org/api/packages.html#conditional-exports
10
+ *
11
+ * @const {Set<Condition>} defaultConditions
12
+ */
13
+ const defaultConditions = new Set(['node', 'import']);
14
+ export default defaultConditions;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file defaultExtensions
3
+ * @module mlly/lib/defaultExtensions
4
+ */
5
+ import type { Ext } from '@flex-development/mlly';
6
+ /**
7
+ * The default list of resolvable file extensions.
8
+ *
9
+ * @see {@linkcode Ext}
10
+ *
11
+ * @const {Set<Ext>} defaultExtensions
12
+ */
13
+ declare const defaultExtensions: Set<Ext>;
14
+ export default defaultExtensions;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file defaultExtensions
3
+ * @module mlly/lib/defaultExtensions
4
+ */
5
+ /**
6
+ * The default list of resolvable file extensions.
7
+ *
8
+ * @see {@linkcode Ext}
9
+ *
10
+ * @const {Set<Ext>} defaultExtensions
11
+ */
12
+ const defaultExtensions = new Set([
13
+ '.mjs',
14
+ '.mts',
15
+ '.cjs',
16
+ '.cts',
17
+ '.js',
18
+ '.ts',
19
+ '.jsx',
20
+ '.tsx',
21
+ '.css',
22
+ '.json',
23
+ '.node',
24
+ '.wasm',
25
+ '.d.mts',
26
+ '.d.cts',
27
+ '.d.ts'
28
+ ]);
29
+ export default defaultExtensions;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file defaultMainFields
3
+ * @module mlly/lib/defaultMainFields
4
+ */
5
+ import type { MainField } from '@flex-development/mlly';
6
+ /**
7
+ * The default list of main fields.
8
+ *
9
+ * @see {@linkcode MainField}
10
+ *
11
+ * @const {Set<MainField>} defaultMainFields
12
+ */
13
+ declare const defaultMainFields: Set<MainField>;
14
+ export default defaultMainFields;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file defaultMainFields
3
+ * @module mlly/lib/defaultMainFields
4
+ */
5
+ /**
6
+ * The default list of main fields.
7
+ *
8
+ * @see {@linkcode MainField}
9
+ *
10
+ * @const {Set<MainField>} defaultMainFields
11
+ */
12
+ const defaultMainFields = new Set(['main']);
13
+ export default defaultMainFields;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file extensionFormatMap
3
+ * @module mlly/lib/extensionFormatMap
4
+ */
5
+ import type { Ext, ModuleFormat } from '@flex-development/mlly';
6
+ /**
7
+ * Map, where each key is a file extension
8
+ * and each value is a default module format.
9
+ *
10
+ * @see {@linkcode Ext}
11
+ * @see {@linkcode ModuleFormat}
12
+ *
13
+ * @const {Map<Ext, ModuleFormat>} extensionFormatMap
14
+ */
15
+ declare const extensionFormatMap: Map<Ext, ModuleFormat>;
16
+ export default extensionFormatMap;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file extensionFormatMap
3
+ * @module mlly/lib/extensionFormatMap
4
+ */
5
+ import formats from '#lib/formats';
6
+ /**
7
+ * Map, where each key is a file extension
8
+ * and each value is a default module format.
9
+ *
10
+ * @see {@linkcode Ext}
11
+ * @see {@linkcode ModuleFormat}
12
+ *
13
+ * @const {Map<Ext, ModuleFormat>} extensionFormatMap
14
+ */
15
+ const extensionFormatMap = new Map([
16
+ ['.cjs', formats.commonjs],
17
+ ['.cts', formats.cts],
18
+ ['.d.cts', formats.cts],
19
+ ['.d.mts', formats.mts],
20
+ ['.d.ts', formats.mts],
21
+ ['.js', formats.module],
22
+ ['.json', formats.json],
23
+ ['.jsx', formats.module],
24
+ ['.mjs', formats.module],
25
+ ['.mts', formats.mts],
26
+ ['.node', formats.commonjs],
27
+ ['.ts', formats.mts],
28
+ ['.tsx', formats.mts],
29
+ ['.wasm', formats.wasm]
30
+ ]);
31
+ export default extensionFormatMap;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file formats
3
+ * @module mlly/lib/formats
4
+ */
5
+ /**
6
+ * Default module formats.
7
+ *
8
+ * @see {@linkcode ModuleFormat}
9
+ *
10
+ * @enum {ModuleFormat}
11
+ */
12
+ declare const enum formats {
13
+ builtin = "builtin",
14
+ commonjs = "commonjs",
15
+ cts = "commonjs-typescript",
16
+ json = "json",
17
+ module = "module",
18
+ mts = "module-typescript",
19
+ wasm = "wasm"
20
+ }
21
+ export default formats;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file formats
3
+ * @module mlly/lib/formats
4
+ */
5
+ /**
6
+ * Default module formats.
7
+ *
8
+ * @see {@linkcode ModuleFormat}
9
+ *
10
+ * @enum {ModuleFormat}
11
+ */
12
+ var formats;
13
+ (function (formats) {
14
+ formats["builtin"] = "builtin";
15
+ formats["commonjs"] = "commonjs";
16
+ formats["cts"] = "commonjs-typescript";
17
+ formats["json"] = "json";
18
+ formats["module"] = "module";
19
+ formats["mts"] = "module-typescript";
20
+ formats["wasm"] = "wasm";
21
+ })(formats || (formats = {}));
22
+ export default formats;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @file getSource
3
+ * @module mlly/lib/getSource
4
+ */
5
+ import type { Awaitable, EmptyString, GetSourceOptions, ModuleId } from '@flex-development/mlly';
6
+ export default getSource;
7
+ /**
8
+ * Get the source code for a module.
9
+ *
10
+ * @see {@linkcode EmptyString}
11
+ * @see {@linkcode GetSourceOptions}
12
+ *
13
+ * @this {void}
14
+ *
15
+ * @param {EmptyString | null | undefined} id
16
+ * The module id
17
+ * @param {GetSourceOptions | null | undefined} [options]
18
+ * Source code retrieval options
19
+ * @return {null}
20
+ * The module source code
21
+ */
22
+ declare function getSource(this: void, id: EmptyString | null | undefined, options?: GetSourceOptions | null | undefined): null;
23
+ /**
24
+ * Get the source code for a module.
25
+ *
26
+ * > 👉 **Note**: Returns a promise if the handler for `id` is async.
27
+ *
28
+ * @see {@linkcode Awaitable}
29
+ * @see {@linkcode ErrUnsupportedEsmUrlScheme}
30
+ * @see {@linkcode GetSourceOptions}
31
+ * @see {@linkcode ModuleId}
32
+ *
33
+ * @template {Awaitable<string | null | undefined>} T
34
+ * The module source code
35
+ *
36
+ * @this {void}
37
+ *
38
+ * @param {ModuleId | null | undefined} id
39
+ * The module id
40
+ * @param {GetSourceOptions | null | undefined} [options]
41
+ * Source code retrieval options
42
+ * @return {T}
43
+ * The module source code
44
+ * @throws {ErrUnsupportedEsmUrlScheme}
45
+ */
46
+ declare function getSource<T extends Awaitable<string | null | undefined>>(this: void, id: ModuleId | null | undefined, options?: GetSourceOptions | null | undefined): T;