@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
package/dist/index.d.mts CHANGED
@@ -2,7 +2,6 @@
2
2
  * @file Package Entry Point
3
3
  * @module mlly
4
4
  */
5
- export * from './enums/index.mjs';
6
- export * from './interfaces/index.mjs';
7
- export * from './types/index.mjs';
8
- export * from './utils/index.mjs';
5
+ export type * from '#interfaces/index';
6
+ export * from '#lib/index';
7
+ export type * from '#types/index';
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./enums/index.mjs";
2
- export * from "./interfaces/index.mjs";
3
- export * from "./types/index.mjs";
4
- export * from "./utils/index.mjs";
5
- //# sourceMappingURL=index.mjs.map
1
+ /**
2
+ * @file Package Entry Point
3
+ * @module mlly
4
+ */
5
+ export * from '#lib/index';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file Interfaces - Aliases
3
+ * @module mlly/interfaces/Aliases
4
+ */
5
+ /**
6
+ * Record, where each key is a path alias or pattern and each value
7
+ * is a path mapping configuration.
8
+ *
9
+ * This interface can be augmented to register custom aliases.
10
+ *
11
+ * @example
12
+ * declare module '@flex-development/mlly' {
13
+ * interface Aliases {
14
+ * custom?: string[] | string | null
15
+ * }
16
+ * }
17
+ */
18
+ interface Aliases {
19
+ [alias: string]: (string | null | undefined)[] | string | null | undefined;
20
+ }
21
+ export type { Aliases as default };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file Interfaces - ConditionMap
3
+ * @module mlly/interfaces/ConditionMap
4
+ */
5
+ import type * as pkgTypes from '@flex-development/pkg-types';
6
+ /**
7
+ * Registry of export/import conditions.
8
+ *
9
+ * This interface can be augmented to register custom conditions.
10
+ *
11
+ * @see {@linkcode pkgTypes.ConditionMap}
12
+ *
13
+ * @example
14
+ * declare module '@flex-development/mlly' {
15
+ * interface ConditionMap {
16
+ * custom: 'custom'
17
+ * }
18
+ * }
19
+ *
20
+ * @extends {pkgTypes.ConditionMap}
21
+ */
22
+ interface ConditionMap extends pkgTypes.ConditionMap {
23
+ }
24
+ export type { ConditionMap as default };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file Interfaces - FileSystem
3
+ * @module mlly/interfaces/FileSystem
4
+ */
5
+ import type { ReadFile, Realpath, Stat } from '@flex-development/mlly';
6
+ /**
7
+ * The file system API.
8
+ */
9
+ interface FileSystem {
10
+ /**
11
+ * Read the entire contents of a file.
12
+ *
13
+ * @see {@linkcode ReadFile}
14
+ */
15
+ readFile: ReadFile;
16
+ /**
17
+ * Compute a canonical pathname by resolving `.`, `..`, and symbolic links.
18
+ *
19
+ * @see {@linkcode Realpath}
20
+ */
21
+ realpath: Realpath;
22
+ /**
23
+ * Get information about a directory or file.
24
+ *
25
+ * @see {@linkcode Stat}
26
+ */
27
+ stat: Stat;
28
+ }
29
+ export type { FileSystem as default };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @file Interfaces - GetSourceContext
3
+ * @module mlly/interfaces/GetSourceContext
4
+ */
5
+ import type { FileSystem, GetSourceHandlers, GetSourceOptions } from '@flex-development/mlly';
6
+ /**
7
+ * Source code retrieval context.
8
+ *
9
+ * @see {@linkcode GetSourceOptions}
10
+ *
11
+ * @extends {GetSourceOptions}
12
+ */
13
+ interface GetSourceContext extends GetSourceOptions {
14
+ /**
15
+ * The file system API.
16
+ *
17
+ * @see {@linkcode FileSystem}
18
+ *
19
+ * @override
20
+ */
21
+ fs: FileSystem;
22
+ /**
23
+ * Record, where each key is a URL protocol
24
+ * and each value is a source code handler.
25
+ *
26
+ * @see {@linkcode GetSourceHandlers}
27
+ *
28
+ * @override
29
+ */
30
+ handlers: GetSourceHandlers;
31
+ /**
32
+ * Request options for network based modules.
33
+ *
34
+ * @override
35
+ */
36
+ req: RequestInit;
37
+ /**
38
+ * The list of supported URL schemes.
39
+ *
40
+ * @override
41
+ */
42
+ schemes: Set<string>;
43
+ }
44
+ export type { GetSourceContext as default };
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @file Interfaces - GetSourceOptions
3
+ * @module mlly/interfaces/GetSourceOptions
4
+ */
5
+ import type { FileSystem, GetSourceHandlers, List, ModuleFormat } from '@flex-development/mlly';
6
+ /**
7
+ * Options for retrieving source code.
8
+ */
9
+ interface GetSourceOptions {
10
+ /**
11
+ * The module format hint.
12
+ *
13
+ * @see {@linkcode ModuleFormat}
14
+ */
15
+ format?: ModuleFormat | null | undefined;
16
+ /**
17
+ * The file system API.
18
+ *
19
+ * @see {@linkcode FileSystem}
20
+ */
21
+ fs?: FileSystem | null | undefined;
22
+ /**
23
+ * Record, where each key is a URL protocol
24
+ * and each value is a source code handler.
25
+ *
26
+ * @see {@linkcode GetSourceHandlers}
27
+ */
28
+ handlers?: GetSourceHandlers | null | undefined;
29
+ /**
30
+ * Whether to ignore [`ERR_UNSUPPORTED_ESM_URL_SCHEME`][err] if thrown.
31
+ *
32
+ * [err]: https://nodejs.org/api/errors.html#err_unsupported_esm_url_scheme
33
+ */
34
+ ignoreErrors?: boolean | null | undefined;
35
+ /**
36
+ * Request options for network based modules.
37
+ */
38
+ req?: RequestInit | null | undefined;
39
+ /**
40
+ * The list of supported URL schemes.
41
+ *
42
+ * @see {@linkcode List}
43
+ *
44
+ * @default ['data','file','http','https','node']
45
+ */
46
+ schemes?: List<string> | null | undefined;
47
+ }
48
+ export type { GetSourceOptions as default };
@@ -1,24 +1,21 @@
1
1
  /**
2
- * @file Interfaces
2
+ * @file Entry Point - Interfaces
3
3
  * @module mlly/interfaces
4
4
  */
5
- export type { default as ImportAssertions } from './import-assertions.mjs';
6
- export type { default as DynamicImport } from './import-dynamic.mjs';
7
- export type { default as StaticImport } from './import-static.mjs';
8
- export type { default as FillModuleOptions } from './options-fill-module.mjs';
9
- export type { default as FindSubpathOptions } from './options-find-subpath.mjs';
10
- export type { default as GetFormatOptions } from './options-get-format.mjs';
11
- export type { default as GetSourceOptions } from './options-get-source.mjs';
12
- export type { default as ParseModuleIdOptions } from './options-parse-module-id.mjs';
13
- export type { default as ParseSubpathOptions } from './options-parse-subpath.mjs';
14
- export type { default as ResolveOptions } from './options-resolve.mjs';
15
- export type { default as ResolveAliasOptions } from './options-resolve-alias.mjs';
16
- export type { default as ResolveModuleOptions } from './options-resolve-module.mjs';
17
- export type { default as PackageScope } from './package-scope.mjs';
18
- export type { default as ParsedDataUrl } from './parsed-data-url.mjs';
19
- export type { default as ParsedModuleId } from './parsed-module-id.mjs';
20
- export type { default as ParsedSubpath } from './parsed-subpath.mjs';
21
- export type { default as Statement } from './statement.mjs';
22
- export type { default as ExportStatement } from './statement-export.mjs';
23
- export type { default as ImportStatement } from './statement-import.mjs';
24
- export type { default as RequireStatement } from './statement-require.mjs';
5
+ export type { default as Aliases } from '#interfaces/aliases';
6
+ export type { default as ConditionMap } from '#interfaces/condition-map';
7
+ export type { default as FileSystem } from '#interfaces/file-system';
8
+ export type { default as GetSourceContext } from '#interfaces/get-source-context';
9
+ export type { default as GetSourceOptions } from '#interfaces/get-source-options';
10
+ export type { default as IsDirectory } from '#interfaces/is-directory';
11
+ export type { default as IsFile } from '#interfaces/is-file';
12
+ export type { default as MainFieldMap } from '#interfaces/main-field-map';
13
+ export type { default as ModuleFormatMap } from '#interfaces/module-format-map';
14
+ export type { default as PatternKeyComparisonMap } from '#interfaces/pattern-key-comparison-map';
15
+ export type { default as ProtocolMap } from '#interfaces/protocol-map';
16
+ export type { default as ReadFile } from '#interfaces/read-file';
17
+ export type { default as Realpath } from '#interfaces/realpath';
18
+ export type { default as ResolveAliasOptions } from '#interfaces/resolve-alias-options';
19
+ export type { default as ResolveModuleOptions } from '#interfaces/resolve-module-options';
20
+ export type { default as Stat } from '#interfaces/stat';
21
+ export type { default as Stats } from '#interfaces/stats';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file Interfaces - IsDirectory
3
+ * @module mlly/interfaces/IsDirectory
4
+ */
5
+ /**
6
+ * Check if a stats object describes a directory.
7
+ */
8
+ interface IsDirectory {
9
+ /**
10
+ * @this {void}
11
+ *
12
+ * @return {boolean}
13
+ * `true` if stats describes directory, `false` otherwise
14
+ */
15
+ (this: void): boolean;
16
+ }
17
+ export type { IsDirectory as default };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @file Interfaces - IsFile
3
+ * @module mlly/interfaces/IsFile
4
+ */
5
+ /**
6
+ * Check if a stats object describes a file.
7
+ */
8
+ interface IsFile {
9
+ /**
10
+ * @this {void}
11
+ *
12
+ * @return {boolean}
13
+ * `true` if stats object describes regular file, `false` otherwise
14
+ */
15
+ (this: void): boolean;
16
+ }
17
+ export type { IsFile as default };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Interfaces - MainFieldMap
3
+ * @module mlly/interfaces/MainFieldMap
4
+ */
5
+ /**
6
+ * Registry of main fields.
7
+ *
8
+ * This interface can be augmented to register custom main fields.
9
+ *
10
+ * @example
11
+ * declare module '@flex-development/mlly' {
12
+ * interface MainFieldMap {
13
+ * unpkg: 'unpkg'
14
+ * }
15
+ * }
16
+ */
17
+ interface MainFieldMap {
18
+ main: 'main';
19
+ module: 'module';
20
+ types: 'types';
21
+ }
22
+ export type { MainFieldMap as default };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file Interfaces - ModuleFormatMap
3
+ * @module mlly/interfaces/ModuleFormatMap
4
+ */
5
+ /**
6
+ * Registry of module formats.
7
+ *
8
+ * This interface can be augmented to register custom module formats.
9
+ *
10
+ * @example
11
+ * declare module '@flex-development/mlly' {
12
+ * interface ModuleFormatMap {
13
+ * custom: 'custom'
14
+ * }
15
+ * }
16
+ */
17
+ interface ModuleFormatMap {
18
+ builtin: 'builtin';
19
+ commonjs: 'commonjs';
20
+ cts: 'commonjs-typescript';
21
+ json: 'json';
22
+ module: 'module';
23
+ mts: 'module-typescript';
24
+ wasm: 'wasm';
25
+ }
26
+ export type { ModuleFormatMap as default };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file Interfaces - PatternKeyComparisonMap
3
+ * @module mlly/interfaces/PatternKeyComparisonMap
4
+ */
5
+ /**
6
+ * Registry of `PATTERN_KEY_COMPARE` algorithm results.
7
+ *
8
+ * This interface can be augmented to register custom results.
9
+ *
10
+ * @example
11
+ * declare module '@flex-development/mlly' {
12
+ * interface PatternKeyComparisonMap {
13
+ * afterThree: 3
14
+ * }
15
+ * }
16
+ */
17
+ interface PatternKeyComparisonMap {
18
+ /**
19
+ * `a` should come after `b`.
20
+ */
21
+ after: 1;
22
+ /**
23
+ * `a` should come before `b`.
24
+ */
25
+ before: -1;
26
+ /**
27
+ * `a` and `b` are equal.
28
+ */
29
+ equal: 0;
30
+ }
31
+ export type { PatternKeyComparisonMap as default };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @file Interfaces - ProtocolMap
3
+ * @module mlly/interfaces/ProtocolMap
4
+ */
5
+ /**
6
+ * Registry of URL protocols.
7
+ *
8
+ * This interface can be augmented to register custom protocols.
9
+ *
10
+ * @see https://nodejs.org/api/url.html#urlprotocol
11
+ * @see https://iana.org/assignments/uri-schemes/uri-schemes.xhtml
12
+ * @see https://url.spec.whatwg.org/#special-scheme
13
+ *
14
+ * @example
15
+ * declare module '@flex-development/mlly' {
16
+ * interface ProtocolMap {
17
+ * custom: 'custom:'
18
+ * }
19
+ * }
20
+ */
21
+ interface ProtocolMap {
22
+ blob: 'blob:';
23
+ content: 'content:';
24
+ cvs: 'cvs:';
25
+ data: 'data:';
26
+ dns: 'dns:';
27
+ file: 'file:';
28
+ fish: 'fish:';
29
+ ftp: 'ftp:';
30
+ git: 'git:';
31
+ http: 'http:';
32
+ https: 'https:';
33
+ mvn: 'mvn:';
34
+ node: 'node:';
35
+ redis: 'redis:';
36
+ sftp: 'sftp:';
37
+ ssh: 'ssh:';
38
+ svn: 'svn:';
39
+ urn: 'urn:';
40
+ viewSource: 'view-source:';
41
+ ws: 'ws:';
42
+ wss: 'wss:';
43
+ }
44
+ export type { ProtocolMap as default };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file Interfaces - ReadFile
3
+ * @module mlly/interfaces/ReadFile
4
+ */
5
+ import type { Awaitable, ModuleId } from '@flex-development/mlly';
6
+ /**
7
+ * Read the entire contents of a file.
8
+ *
9
+ * @see {@linkcode Awaitable}
10
+ * @see {@linkcode Buffer}
11
+ *
12
+ * @template {Awaitable<Buffer | string>} [T]
13
+ * The file contents
14
+ */
15
+ interface ReadFile<T extends Awaitable<Buffer | string> = Awaitable<Buffer | string>> {
16
+ /**
17
+ * @see {@linkcode ModuleId}
18
+ *
19
+ * @this {void}
20
+ *
21
+ * @param {ModuleId} id
22
+ * The module id
23
+ * @return {T}
24
+ * The file contents
25
+ */
26
+ (this: void, id: ModuleId): T;
27
+ }
28
+ export type { ReadFile as default };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @file Interfaces - Realpath
3
+ * @module mlly/interfaces/Realpath
4
+ */
5
+ import type { Awaitable, ModuleId } from '@flex-development/mlly';
6
+ /**
7
+ * Compute a canonical pathname by resolving `.`, `..`, and symbolic links.
8
+ *
9
+ * > 👉 **Note**: A canonical pathname is not necessarily unique.
10
+ * > Hard links and bind mounts can expose an entity through many pathnames.
11
+ *
12
+ * @see {@linkcode Awaitable}
13
+ *
14
+ * @template {Awaitable<string>} [T]
15
+ * The canonical pathname
16
+ */
17
+ interface Realpath<T extends Awaitable<string> = Awaitable<string>> {
18
+ /**
19
+ * @see {@linkcode ModuleId}
20
+ *
21
+ * @this {void}
22
+ *
23
+ * @param {ModuleId} id
24
+ * The module id
25
+ * @return {T}
26
+ * The canonical pathname
27
+ */
28
+ (this: void, id: ModuleId): T;
29
+ }
30
+ export type { Realpath as default };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @file Interfaces - ResolveAliasOptions
3
+ * @module mlly/interfaces/ResolveAliasOptions
4
+ */
5
+ import type { Aliases, ModuleId } from '@flex-development/mlly';
6
+ /**
7
+ * Options for path alias resolution.
8
+ */
9
+ interface ResolveAliasOptions {
10
+ /**
11
+ * Whether the resolved specifier should be absolute.
12
+ *
13
+ * If `true`, the resolved specifier will be a [`file:` URL][file-url].
14
+ *
15
+ * [file-url]: https://nodejs.org/api/esm.html#file-urls
16
+ *
17
+ * @see https://nodejs.org/api/esm.html#terminology
18
+ */
19
+ absolute?: boolean | null | undefined;
20
+ /**
21
+ * The path mappings dictionary.
22
+ *
23
+ * > 👉 **Note**: Paths should be relative to {@linkcode cwd}.
24
+ *
25
+ * @see {@linkcode Aliases}
26
+ */
27
+ aliases?: Aliases | null | undefined;
28
+ /**
29
+ * The URL of the directory to resolve non-absolute modules from.
30
+ *
31
+ * @see {@linkcode ModuleId}
32
+ *
33
+ * @default cwd()
34
+ */
35
+ cwd?: ModuleId | null | undefined;
36
+ /**
37
+ * The URL of the parent module.
38
+ *
39
+ * @see {@linkcode ModuleId}
40
+ */
41
+ parent?: ModuleId | null | undefined;
42
+ }
43
+ export type { ResolveAliasOptions as default };
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @file Interfaces - ResolveModuleOptions
3
+ * @module mlly/interfaces/ResolveModuleOptions
4
+ */
5
+ import type { Aliases, ChangeExtFn, Condition, FileSystem, List, MainField, ModuleId } from '@flex-development/mlly';
6
+ /**
7
+ * Module resolution options.
8
+ */
9
+ interface ResolveModuleOptions {
10
+ /**
11
+ * The path mappings dictionary.
12
+ *
13
+ * > 👉 **Note**: Paths should be relative to {@linkcode cwd}.
14
+ *
15
+ * @see {@linkcode Aliases}
16
+ */
17
+ aliases?: Aliases | null | undefined;
18
+ /**
19
+ * The list of export/import conditions.
20
+ *
21
+ * > 👉 **Note**: Should be sorted by priority.
22
+ *
23
+ * @see {@linkcode Condition}
24
+ * @see {@linkcode List}
25
+ * @see https://nodejs.org/api/packages.html#conditional-exports
26
+ *
27
+ * @default defaultConditions
28
+ */
29
+ conditions?: List<Condition> | null | undefined;
30
+ /**
31
+ * The URL of the directory to resolve path {@linkcode aliases} from.
32
+ *
33
+ * @see {@linkcode ModuleId}
34
+ *
35
+ * @default cwd()
36
+ */
37
+ cwd?: ModuleId | null | undefined;
38
+ /**
39
+ * A replacement file extension or a function that returns a file extension.
40
+ *
41
+ * > 👉 **Note**: An empty string (`''`) or `null` will
42
+ * > remove a file extension.
43
+ *
44
+ * @see {@linkcode ChangeExtFn}
45
+ */
46
+ ext?: ChangeExtFn | string | null | undefined;
47
+ /**
48
+ * The module extensions to probe for.
49
+ *
50
+ * > 👉 **Note**: Should be sorted by priority.
51
+ *
52
+ * @see {@linkcode List}
53
+ *
54
+ * @default defaultExtensions
55
+ */
56
+ extensions?: List<string> | null | undefined;
57
+ /**
58
+ * The file system API.
59
+ *
60
+ * @see {@linkcode FileSystem}
61
+ */
62
+ fs?: FileSystem | null | undefined;
63
+ /**
64
+ * The list of legacy `main` fields.
65
+ *
66
+ * > 👉 **Note**: Should be sorted by priority.
67
+ *
68
+ * @see {@linkcode List}
69
+ * @see {@linkcode MainField}
70
+ *
71
+ * @default defaultMainFields
72
+ */
73
+ mainFields?: List<MainField> | null | undefined;
74
+ /**
75
+ * Whether to keep symlinks instead of resolving them.
76
+ */
77
+ preserveSymlinks?: boolean | null | undefined;
78
+ }
79
+ export type { ResolveModuleOptions as default };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file Interfaces - Stat
3
+ * @module mlly/interfaces/Stat
4
+ */
5
+ import type { Awaitable, ModuleId, Stats } from '@flex-development/mlly';
6
+ /**
7
+ * Get information about a directory or file.
8
+ *
9
+ * @see {@linkcode Awaitable}
10
+ * @see {@linkcode Stats}
11
+ *
12
+ * @template {Awaitable<Stats>} [T]
13
+ * The info
14
+ */
15
+ interface Stat<T extends Awaitable<Stats> = Awaitable<Stats>> {
16
+ /**
17
+ * @see {@linkcode ModuleId}
18
+ *
19
+ * @this {void}
20
+ *
21
+ * @param {ModuleId} id
22
+ * The module id
23
+ * @return {T}
24
+ * The info
25
+ */
26
+ (this: void, id: ModuleId): T;
27
+ }
28
+ export type { Stat as default };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file Interfaces - Stats
3
+ * @module mlly/interfaces/Stats
4
+ */
5
+ import type { IsDirectory, IsFile } from '@flex-development/mlly';
6
+ /**
7
+ * An object describing a directory or file.
8
+ */
9
+ interface Stats {
10
+ /**
11
+ * Check if the stats object describes a directory.
12
+ *
13
+ * @see {@linkcode IsDirectory}
14
+ */
15
+ isDirectory: IsDirectory;
16
+ /**
17
+ * Check if the stats object describes a file.
18
+ *
19
+ * @see {@linkcode IsFile}
20
+ */
21
+ isFile: IsFile;
22
+ }
23
+ export type { Stats as default };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @file Internal - chainOrCall
3
+ * @module mlly/internal/chainOrCall
4
+ */
5
+ import isPromise from '#internal/is-promise';
6
+ export default chainOrCall;
7
+ /**
8
+ * Chain a callback, calling the function after `promise` is resolved,
9
+ * otherwise synchronously call `fn`.
10
+ *
11
+ * @internal
12
+ *
13
+ * @see {@linkcode Awaitable}
14
+ *
15
+ * @this {void}
16
+ *
17
+ * @param {unknown} promise
18
+ * The promise to chain or the resolved value
19
+ * @param {(...params: any[]) => unknown} fn
20
+ * The function to call
21
+ * @param {(e: unknown) => unknown} [reject]
22
+ * The callback to fire when a promise is rejected
23
+ * @param {unknown} [self]
24
+ * The `this` context of `fn`
25
+ * @param {unknown[]} params
26
+ * The arguments to pass to `fn`
27
+ * @return {unknown}
28
+ * A new promise to resolve or the result of `fn`
29
+ */
30
+ function chainOrCall(promise, fn, reject, self, ...params) {
31
+ return isPromise(promise) // already have a promise, chain callback.
32
+ ? promise.then(resolved => fn.call(self, ...params, resolved), reject)
33
+ : fn.call(self, ...params);
34
+ }