@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.
Files changed (380) hide show
  1. package/CHANGELOG.md +431 -3
  2. package/README.md +6 -4
  3. package/changelog.config.ts +404 -0
  4. package/dist/enums/assert-type.d.mts +21 -0
  5. package/dist/enums/assert-type.mjs +10 -0
  6. package/dist/enums/assert-type.mjs.map +6 -0
  7. package/dist/enums/format.d.mts +17 -0
  8. package/dist/enums/format.mjs +13 -0
  9. package/dist/enums/format.mjs.map +6 -0
  10. package/dist/enums/index.d.mts +10 -0
  11. package/dist/enums/index.mjs +15 -0
  12. package/dist/enums/index.mjs.map +6 -0
  13. package/dist/enums/kind-specifier-syntax.d.mts +14 -0
  14. package/dist/enums/kind-specifier-syntax.mjs +10 -0
  15. package/dist/enums/kind-specifier-syntax.mjs.map +6 -0
  16. package/dist/enums/kind-specifier.d.mts +17 -0
  17. package/dist/enums/kind-specifier.mjs +11 -0
  18. package/dist/enums/kind-specifier.mjs.map +6 -0
  19. package/dist/enums/kind-statement-syntax.d.mts +22 -0
  20. package/dist/enums/kind-statement-syntax.mjs +18 -0
  21. package/dist/enums/kind-statement-syntax.mjs.map +6 -0
  22. package/dist/enums/kind-statement.d.mts +15 -0
  23. package/dist/enums/kind-statement.mjs +11 -0
  24. package/dist/enums/kind-statement.mjs.map +6 -0
  25. package/dist/index.d.mts +2 -2
  26. package/dist/index.mjs +3 -2
  27. package/dist/index.mjs.map +6 -0
  28. package/dist/interfaces/import-assertions.d.mts +20 -0
  29. package/dist/interfaces/import-dynamic.d.mts +26 -6
  30. package/dist/interfaces/import-static.d.mts +22 -4
  31. package/dist/interfaces/index.d.mts +12 -0
  32. package/dist/interfaces/index.mjs +1 -0
  33. package/dist/interfaces/index.mjs.map +6 -0
  34. package/dist/interfaces/options-fill-module.d.mts +23 -0
  35. package/dist/interfaces/options-find-subpath.d.mts +49 -0
  36. package/dist/interfaces/options-get-format.d.mts +83 -0
  37. package/dist/interfaces/options-get-source.d.mts +63 -0
  38. package/dist/interfaces/options-parse-module-id.d.mts +33 -0
  39. package/dist/interfaces/options-parse-subpath.d.mts +31 -0
  40. package/dist/interfaces/options-resolve-alias.d.mts +26 -42
  41. package/dist/interfaces/options-resolve-module.d.mts +64 -0
  42. package/dist/interfaces/options-resolve.d.mts +7 -52
  43. package/dist/interfaces/package-scope.d.mts +25 -0
  44. package/dist/interfaces/parsed-data-url.d.mts +56 -0
  45. package/dist/interfaces/parsed-module-id.d.mts +80 -0
  46. package/dist/interfaces/parsed-subpath.d.mts +40 -0
  47. package/dist/interfaces/statement-export.d.mts +22 -9
  48. package/dist/interfaces/statement-import.d.mts +15 -4
  49. package/dist/interfaces/statement-require.d.mts +15 -4
  50. package/dist/interfaces/statement.d.mts +24 -8
  51. package/dist/internal/escape-reg-exp.d.mts +16 -0
  52. package/dist/internal/escape-reg-exp.mjs +10 -0
  53. package/dist/internal/escape-reg-exp.mjs.map +6 -0
  54. package/dist/internal/format-type-map.d.mts +17 -0
  55. package/dist/internal/format-type-map.mjs +13 -0
  56. package/dist/internal/format-type-map.mjs.map +6 -0
  57. package/dist/internal/get-specifier-kind.d.mts +17 -0
  58. package/dist/internal/get-specifier-kind.mjs +14 -0
  59. package/dist/internal/get-specifier-kind.mjs.map +6 -0
  60. package/dist/internal/get-subpaths.d.mts +25 -0
  61. package/dist/internal/get-subpaths.mjs +10 -0
  62. package/dist/internal/get-subpaths.mjs.map +6 -0
  63. package/dist/internal/is-array-index.d.mts +15 -0
  64. package/dist/internal/is-array-index.mjs +9 -0
  65. package/dist/internal/is-array-index.mjs.map +6 -0
  66. package/dist/internal/is-directory.d.mts +13 -0
  67. package/dist/internal/is-directory.mjs +16 -0
  68. package/dist/internal/is-directory.mjs.map +6 -0
  69. package/dist/internal/is-file.d.mts +13 -0
  70. package/dist/internal/is-file.mjs +16 -0
  71. package/dist/internal/is-file.mjs.map +6 -0
  72. package/dist/internal/is-function.d.mts +12 -0
  73. package/dist/internal/is-function.mjs +8 -0
  74. package/dist/internal/is-function.mjs.map +6 -0
  75. package/dist/internal/regex-encoded-sep.d.mts +13 -0
  76. package/dist/internal/regex-encoded-sep.mjs +6 -0
  77. package/dist/internal/regex-encoded-sep.mjs.map +6 -0
  78. package/dist/internal/regex-internal-specifier.d.mts +14 -0
  79. package/dist/internal/regex-internal-specifier.mjs +6 -0
  80. package/dist/internal/regex-internal-specifier.mjs.map +6 -0
  81. package/dist/internal/regex-package-name.d.mts +13 -0
  82. package/dist/internal/regex-package-name.mjs +6 -0
  83. package/dist/internal/regex-package-name.mjs.map +6 -0
  84. package/dist/internal/regex-package-path.d.mts +15 -0
  85. package/dist/internal/regex-package-path.mjs +6 -0
  86. package/dist/internal/regex-package-path.mjs.map +6 -0
  87. package/dist/internal/resolver.d.mts +130 -0
  88. package/dist/internal/resolver.mjs +500 -0
  89. package/dist/internal/resolver.mjs.map +6 -0
  90. package/dist/internal/validate-boolean.d.mts +20 -0
  91. package/dist/internal/validate-boolean.mjs +11 -0
  92. package/dist/internal/validate-boolean.mjs.map +6 -0
  93. package/dist/internal/validate-object.d.mts +23 -0
  94. package/dist/internal/validate-object.mjs +11 -0
  95. package/dist/internal/validate-object.mjs.map +6 -0
  96. package/dist/internal/validate-set.d.mts +23 -0
  97. package/dist/internal/validate-set.mjs +11 -0
  98. package/dist/internal/validate-set.mjs.map +6 -0
  99. package/dist/internal/validate-string.d.mts +20 -0
  100. package/dist/internal/validate-string.mjs +11 -0
  101. package/dist/internal/validate-string.mjs.map +6 -0
  102. package/dist/internal/validate-url-string.d.mts +22 -0
  103. package/dist/internal/validate-url-string.mjs +12 -0
  104. package/dist/internal/validate-url-string.mjs.map +6 -0
  105. package/dist/types/declaration.d.mts +1 -1
  106. package/dist/types/fn-change-ext.d.mts +28 -0
  107. package/dist/types/index.d.mts +8 -4
  108. package/dist/types/index.mjs +1 -0
  109. package/dist/types/index.mjs.map +6 -0
  110. package/dist/types/mime-type.d.mts +7 -5
  111. package/dist/types/module-id.d.mts +13 -0
  112. package/dist/types/module-specifier-type.d.mts +11 -0
  113. package/dist/types/protocol.d.mts +14 -0
  114. package/dist/types/syntax-kind-export.d.mts +12 -0
  115. package/dist/types/syntax-kind-import.d.mts +12 -0
  116. package/dist/types/syntax-kind-require.d.mts +12 -0
  117. package/dist/utils/compare-subpaths.d.mts +25 -0
  118. package/dist/utils/compare-subpaths.mjs +24 -0
  119. package/dist/utils/compare-subpaths.mjs.map +6 -0
  120. package/dist/utils/conditions.d.mts +13 -0
  121. package/dist/utils/conditions.mjs +6 -0
  122. package/dist/utils/conditions.mjs.map +6 -0
  123. package/dist/{lib → utils}/detect-syntax.d.mts +4 -4
  124. package/dist/{lib → utils}/detect-syntax.mjs +1 -0
  125. package/dist/utils/detect-syntax.mjs.map +6 -0
  126. package/dist/utils/extension-format-map.d.mts +16 -0
  127. package/dist/utils/extension-format-map.mjs +22 -0
  128. package/dist/utils/extension-format-map.mjs.map +6 -0
  129. package/dist/utils/extract-statements.d.mts +21 -0
  130. package/dist/{lib → utils}/extract-statements.mjs +4 -1
  131. package/dist/utils/extract-statements.mjs.map +6 -0
  132. package/dist/utils/fill-modules.d.mts +23 -0
  133. package/dist/utils/fill-modules.mjs +64 -0
  134. package/dist/utils/fill-modules.mjs.map +6 -0
  135. package/dist/utils/find-dynamic-imports.d.mts +18 -0
  136. package/dist/utils/find-dynamic-imports.mjs +39 -0
  137. package/dist/utils/find-dynamic-imports.mjs.map +6 -0
  138. package/dist/utils/find-exports.d.mts +21 -0
  139. package/dist/utils/find-exports.mjs +95 -0
  140. package/dist/utils/find-exports.mjs.map +6 -0
  141. package/dist/utils/find-requires.d.mts +18 -0
  142. package/dist/utils/find-requires.mjs +32 -0
  143. package/dist/utils/find-requires.mjs.map +6 -0
  144. package/dist/utils/find-static-imports.d.mts +18 -0
  145. package/dist/utils/find-static-imports.mjs +34 -0
  146. package/dist/utils/find-static-imports.mjs.map +6 -0
  147. package/dist/utils/find-subpath.d.mts +30 -0
  148. package/dist/utils/find-subpath.mjs +106 -0
  149. package/dist/utils/find-subpath.mjs.map +6 -0
  150. package/dist/utils/get-format.d.mts +24 -0
  151. package/dist/utils/get-format.mjs +111 -0
  152. package/dist/utils/get-format.mjs.map +6 -0
  153. package/dist/utils/get-source.d.mts +22 -0
  154. package/dist/utils/get-source.mjs +63 -0
  155. package/dist/utils/get-source.mjs.map +6 -0
  156. package/dist/{lib → utils}/has-cjs-syntax.d.mts +5 -2
  157. package/dist/utils/has-cjs-syntax.mjs +11 -0
  158. package/dist/utils/has-cjs-syntax.mjs.map +6 -0
  159. package/dist/{lib → utils}/has-esm-syntax.d.mts +5 -2
  160. package/dist/utils/has-esm-syntax.mjs +11 -0
  161. package/dist/utils/has-esm-syntax.mjs.map +6 -0
  162. package/dist/utils/index.d.mts +42 -0
  163. package/dist/utils/index.mjs +79 -0
  164. package/dist/utils/index.mjs.map +6 -0
  165. package/dist/utils/is-absolute-specifier.d.mts +19 -0
  166. package/dist/utils/is-absolute-specifier.mjs +25 -0
  167. package/dist/utils/is-absolute-specifier.mjs.map +6 -0
  168. package/dist/utils/is-bare-specifier.d.mts +19 -0
  169. package/dist/utils/is-bare-specifier.mjs +10 -0
  170. package/dist/utils/is-bare-specifier.mjs.map +6 -0
  171. package/dist/utils/is-exports-sugar.d.mts +25 -0
  172. package/dist/utils/is-exports-sugar.mjs +26 -0
  173. package/dist/utils/is-exports-sugar.mjs.map +6 -0
  174. package/dist/utils/is-relative-specifier.d.mts +20 -0
  175. package/dist/utils/is-relative-specifier.mjs +11 -0
  176. package/dist/utils/is-relative-specifier.mjs.map +6 -0
  177. package/dist/utils/lookup-package-scope.d.mts +26 -0
  178. package/dist/utils/lookup-package-scope.mjs +38 -0
  179. package/dist/utils/lookup-package-scope.mjs.map +6 -0
  180. package/dist/utils/parse-data-url.d.mts +25 -0
  181. package/dist/utils/parse-data-url.mjs +25 -0
  182. package/dist/utils/parse-data-url.mjs.map +6 -0
  183. package/dist/utils/parse-module-id.d.mts +22 -0
  184. package/dist/utils/parse-module-id.mjs +122 -0
  185. package/dist/utils/parse-module-id.mjs.map +6 -0
  186. package/dist/utils/parse-subpath.d.mts +35 -0
  187. package/dist/utils/parse-subpath.mjs +54 -0
  188. package/dist/utils/parse-subpath.mjs.map +6 -0
  189. package/dist/utils/pattern-character.d.mts +11 -0
  190. package/dist/utils/pattern-character.mjs +6 -0
  191. package/dist/utils/pattern-character.mjs.map +6 -0
  192. package/dist/utils/read-package-json.d.mts +26 -0
  193. package/dist/utils/read-package-json.mjs +43 -0
  194. package/dist/utils/read-package-json.mjs.map +6 -0
  195. package/dist/utils/resolve-alias.d.mts +20 -0
  196. package/dist/utils/resolve-alias.mjs +106 -0
  197. package/dist/utils/resolve-alias.mjs.map +6 -0
  198. package/dist/utils/resolve-aliases.d.mts +19 -0
  199. package/dist/utils/resolve-aliases.mjs +28 -0
  200. package/dist/utils/resolve-aliases.mjs.map +6 -0
  201. package/dist/utils/resolve-extensions.d.mts +14 -0
  202. package/dist/utils/resolve-extensions.mjs +22 -0
  203. package/dist/utils/resolve-extensions.mjs.map +6 -0
  204. package/dist/utils/resolve-module.d.mts +39 -0
  205. package/dist/utils/resolve-module.mjs +64 -0
  206. package/dist/utils/resolve-module.mjs.map +6 -0
  207. package/dist/utils/resolve-modules.d.mts +25 -0
  208. package/dist/{lib → utils}/resolve-modules.mjs +7 -10
  209. package/dist/utils/resolve-modules.mjs.map +6 -0
  210. package/dist/{lib → utils}/to-absolute-specifier.d.mts +6 -6
  211. package/dist/utils/to-absolute-specifier.mjs +8 -0
  212. package/dist/utils/to-absolute-specifier.mjs.map +6 -0
  213. package/dist/utils/to-bare-specifier.d.mts +42 -0
  214. package/dist/utils/to-bare-specifier.mjs +90 -0
  215. package/dist/utils/to-bare-specifier.mjs.map +6 -0
  216. package/dist/{lib → utils}/to-data-url.d.mts +6 -5
  217. package/dist/{lib → utils}/to-data-url.mjs +4 -0
  218. package/dist/utils/to-data-url.mjs.map +6 -0
  219. package/dist/utils/to-node-url.d.mts +19 -0
  220. package/dist/utils/to-node-url.mjs +10 -0
  221. package/dist/utils/to-node-url.mjs.map +6 -0
  222. package/dist/{lib → utils}/to-relative-specifier.d.mts +6 -6
  223. package/dist/{lib → utils}/to-relative-specifier.mjs +7 -3
  224. package/dist/utils/to-relative-specifier.mjs.map +6 -0
  225. package/dist/utils/to-url.d.mts +22 -0
  226. package/dist/utils/to-url.mjs +12 -0
  227. package/dist/utils/to-url.mjs.map +6 -0
  228. package/dist/utils/validate-assertions.d.mts +23 -0
  229. package/dist/utils/validate-assertions.mjs +52 -0
  230. package/dist/utils/validate-assertions.mjs.map +6 -0
  231. package/dist/utils/validate-exports.d.mts +24 -0
  232. package/dist/utils/validate-exports.mjs +72 -0
  233. package/dist/utils/validate-exports.mjs.map +6 -0
  234. package/package.json +106 -83
  235. package/src/enums/assert-type.ts +23 -0
  236. package/src/enums/format.ts +19 -0
  237. package/src/enums/index.ts +11 -0
  238. package/src/enums/kind-specifier-syntax.ts +16 -0
  239. package/src/enums/kind-specifier.ts +19 -0
  240. package/src/enums/kind-statement-syntax.ts +24 -0
  241. package/src/enums/kind-statement.ts +17 -0
  242. package/src/index.ts +9 -0
  243. package/src/interfaces/import-assertions.ts +24 -0
  244. package/src/interfaces/import-dynamic.ts +48 -0
  245. package/src/interfaces/import-static.ts +50 -0
  246. package/src/interfaces/index.ts +25 -0
  247. package/src/interfaces/options-fill-module.ts +26 -0
  248. package/src/interfaces/options-find-subpath.ts +56 -0
  249. package/src/interfaces/options-get-format.ts +92 -0
  250. package/src/interfaces/options-get-source.ts +70 -0
  251. package/src/interfaces/options-parse-module-id.ts +38 -0
  252. package/src/interfaces/options-parse-subpath.ts +36 -0
  253. package/src/interfaces/options-resolve-alias.ts +59 -0
  254. package/src/interfaces/options-resolve-module.ts +72 -0
  255. package/src/interfaces/options-resolve.ts +17 -0
  256. package/src/interfaces/package-scope.ts +30 -0
  257. package/src/interfaces/parsed-data-url.ts +63 -0
  258. package/src/interfaces/parsed-module-id.ts +90 -0
  259. package/src/interfaces/parsed-subpath.ts +47 -0
  260. package/src/interfaces/statement-export.ts +52 -0
  261. package/src/interfaces/statement-import.ts +45 -0
  262. package/src/interfaces/statement-require.ts +45 -0
  263. package/src/interfaces/statement.ts +64 -0
  264. package/src/internal/escape-reg-exp.ts +24 -0
  265. package/src/internal/format-type-map.ts +26 -0
  266. package/src/internal/get-specifier-kind.ts +38 -0
  267. package/src/internal/get-subpaths.ts +41 -0
  268. package/src/internal/is-array-index.ts +28 -0
  269. package/src/internal/is-directory.ts +25 -0
  270. package/src/internal/is-file.ts +25 -0
  271. package/src/internal/is-function.ts +16 -0
  272. package/src/internal/regex-encoded-sep.ts +15 -0
  273. package/src/internal/regex-internal-specifier.ts +17 -0
  274. package/src/internal/regex-package-name.ts +16 -0
  275. package/src/internal/regex-package-path.ts +18 -0
  276. package/src/internal/resolver.ts +783 -0
  277. package/src/internal/validate-boolean.ts +27 -0
  278. package/src/internal/validate-object.ts +30 -0
  279. package/src/internal/validate-set.ts +33 -0
  280. package/src/internal/validate-string.ts +27 -0
  281. package/src/internal/validate-url-string.ts +31 -0
  282. package/src/types/declaration.ts +22 -0
  283. package/src/types/fn-change-ext.ts +33 -0
  284. package/src/types/index.ts +14 -0
  285. package/src/types/mime-type.ts +19 -0
  286. package/src/types/module-id.ts +15 -0
  287. package/src/types/module-specifier-type.ts +13 -0
  288. package/src/types/protocol.ts +40 -0
  289. package/src/types/syntax-kind-export.ts +20 -0
  290. package/src/types/syntax-kind-import.ts +22 -0
  291. package/src/types/syntax-kind-require.ts +15 -0
  292. package/src/utils/compare-subpaths.ts +100 -0
  293. package/src/utils/conditions.ts +15 -0
  294. package/src/utils/detect-syntax.ts +40 -0
  295. package/src/utils/extension-format-map.ts +34 -0
  296. package/src/utils/extract-statements.ts +42 -0
  297. package/src/utils/fill-modules.ts +116 -0
  298. package/src/utils/find-dynamic-imports.ts +75 -0
  299. package/src/utils/find-exports.ts +164 -0
  300. package/src/utils/find-requires.ts +75 -0
  301. package/src/utils/find-static-imports.ts +89 -0
  302. package/src/utils/find-subpath.ts +241 -0
  303. package/src/utils/get-format.ts +222 -0
  304. package/src/utils/get-source.ts +129 -0
  305. package/src/utils/has-cjs-syntax.ts +44 -0
  306. package/src/utils/has-esm-syntax.ts +40 -0
  307. package/src/utils/index.ts +43 -0
  308. package/src/utils/is-absolute-specifier.ts +48 -0
  309. package/src/utils/is-bare-specifier.ts +30 -0
  310. package/src/utils/is-exports-sugar.ts +74 -0
  311. package/src/utils/is-relative-specifier.ts +34 -0
  312. package/src/utils/lookup-package-scope.ts +97 -0
  313. package/src/utils/parse-data-url.ts +71 -0
  314. package/src/utils/parse-module-id.ts +186 -0
  315. package/src/utils/parse-subpath.ts +173 -0
  316. package/src/utils/pattern-character.ts +13 -0
  317. package/src/utils/read-package-json.ts +101 -0
  318. package/src/utils/resolve-alias.ts +219 -0
  319. package/src/utils/resolve-aliases.ts +58 -0
  320. package/src/utils/resolve-extensions.ts +33 -0
  321. package/src/utils/resolve-module.ts +153 -0
  322. package/src/utils/resolve-modules.ts +62 -0
  323. package/src/utils/to-absolute-specifier.ts +30 -0
  324. package/src/utils/to-bare-specifier.ts +201 -0
  325. package/src/utils/to-data-url.ts +42 -0
  326. package/src/utils/to-node-url.ts +27 -0
  327. package/src/utils/to-relative-specifier.ts +47 -0
  328. package/src/utils/to-url.ts +31 -0
  329. package/src/utils/validate-assertions.ts +119 -0
  330. package/src/utils/validate-exports.ts +124 -0
  331. package/changelog.config.cts +0 -204
  332. package/dist/constants.d.mts +0 -19
  333. package/dist/constants.mjs +0 -24
  334. package/dist/interfaces/import-dynamic.mjs +0 -0
  335. package/dist/interfaces/import-static.mjs +0 -0
  336. package/dist/interfaces/options-resolve-alias.mjs +0 -0
  337. package/dist/interfaces/options-resolve.mjs +0 -0
  338. package/dist/interfaces/statement-export.mjs +0 -0
  339. package/dist/interfaces/statement-import.mjs +0 -0
  340. package/dist/interfaces/statement-require.mjs +0 -0
  341. package/dist/interfaces/statement.mjs +0 -0
  342. package/dist/internal/compiler-options-json.d.mts +0 -111
  343. package/dist/internal/compiler-options-json.mjs +0 -0
  344. package/dist/internal/constants.d.mts +0 -70
  345. package/dist/internal/constants.mjs +0 -18
  346. package/dist/internal/get-compiler-options.d.mts +0 -21
  347. package/dist/internal/get-compiler-options.mjs +0 -14
  348. package/dist/internal/index.d.mts +0 -7
  349. package/dist/internal/index.mjs +0 -5
  350. package/dist/lib/extract-statements.d.mts +0 -21
  351. package/dist/lib/find-dynamic-imports.d.mts +0 -15
  352. package/dist/lib/find-dynamic-imports.mjs +0 -20
  353. package/dist/lib/find-exports.d.mts +0 -15
  354. package/dist/lib/find-exports.mjs +0 -53
  355. package/dist/lib/find-requires.d.mts +0 -17
  356. package/dist/lib/find-requires.mjs +0 -19
  357. package/dist/lib/find-static-imports.d.mts +0 -15
  358. package/dist/lib/find-static-imports.mjs +0 -20
  359. package/dist/lib/has-cjs-syntax.mjs +0 -6
  360. package/dist/lib/has-esm-syntax.mjs +0 -6
  361. package/dist/lib/index.d.mts +0 -20
  362. package/dist/lib/index.mjs +0 -34
  363. package/dist/lib/resolve-alias.d.mts +0 -20
  364. package/dist/lib/resolve-alias.mjs +0 -41
  365. package/dist/lib/resolve-aliases.d.mts +0 -17
  366. package/dist/lib/resolve-aliases.mjs +0 -34
  367. package/dist/lib/resolve-module.d.mts +0 -31
  368. package/dist/lib/resolve-module.mjs +0 -74
  369. package/dist/lib/resolve-modules.d.mts +0 -19
  370. package/dist/lib/to-absolute-specifier.mjs +0 -20
  371. package/dist/lib/to-bare-specifier.d.mts +0 -28
  372. package/dist/lib/to-bare-specifier.mjs +0 -78
  373. package/dist/types/declaration.mjs +0 -0
  374. package/dist/types/ext.d.mts +0 -9
  375. package/dist/types/ext.mjs +0 -0
  376. package/dist/types/mime-type.mjs +0 -0
  377. package/dist/types/specifier-type.d.mts +0 -11
  378. package/dist/types/specifier-type.mjs +0 -0
  379. package/dist/types/statement-type.d.mts +0 -9
  380. package/dist/types/statement-type.mjs +0 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/parse-module-id.ts"],
4
+ "mappings": "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",
5
+ "names": ["protocol", "pathname"]
6
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @file parseSubpath
3
+ * @module mlly/utils/parseSubpath
4
+ */
5
+ import type { ParseSubpathOptions, ParsedSubpath } from '../interfaces/index.mjs';
6
+ import type { Exports, Imports } from '@flex-development/pkg-types';
7
+ /**
8
+ * Creates an object representation of a subpath export or import from the given
9
+ * module `specifier` after ensuring the subpath defined in `specifier` is also
10
+ * defined in the given package `context`, a `package.json` [`exports`][1] or
11
+ * [`imports`][2] field.
12
+ *
13
+ * ::: warning
14
+ * Does **not** guarantee `specifier` resolves to an existing module.
15
+ * :::
16
+ *
17
+ * [1]: https://nodejs.org/api/packages.html#exports
18
+ * [2]: https://nodejs.org/api/packages.html#imports
19
+ *
20
+ * @see {@linkcode Exports}
21
+ * @see {@linkcode Imports}
22
+ * @see {@linkcode ParseSubpathOptions}
23
+ * @see {@linkcode ParsedSubpath}
24
+ * @see https://nodejs.org/api/packages.html#subpath-exports
25
+ * @see https://nodejs.org/api/packages.html#subpath-imports
26
+ *
27
+ * @param {string} specifier - Module specifier to evaluate
28
+ * @param {Exports | Imports | undefined} context - Package context
29
+ * @param {ParseSubpathOptions} options - Parsing options
30
+ * @return {ParsedSubpath} Object representing package subpath
31
+ * @throws {NodeError<Error | TypeError>} If `specifier` is not a string or the
32
+ * subpath defined in `specifier` is not defined in `context`
33
+ */
34
+ declare const parseSubpath: (specifier: string, context: Exports | Imports | undefined, options: ParseSubpathOptions) => ParsedSubpath;
35
+ export default parseSubpath;
@@ -0,0 +1,54 @@
1
+ import getSubpaths from "../internal/get-subpaths.mjs";
2
+ import validateString from "../internal/validate-string.mjs";
3
+ import validateURLString from "../internal/validate-url-string.mjs";
4
+ import {
5
+ ERR_PACKAGE_IMPORT_NOT_DEFINED,
6
+ ERR_PACKAGE_PATH_NOT_EXPORTED
7
+ } from "@flex-development/errnode";
8
+ import pathe from "@flex-development/pathe";
9
+ import { CompareResult } from "@flex-development/tutils";
10
+ import { URL, fileURLToPath, pathToFileURL } from "node:url";
11
+ import compareSubpaths from "./compare-subpaths.mjs";
12
+ import parseModuleId from "./parse-module-id.mjs";
13
+ import PATTERN_CHARACTER from "./pattern-character.mjs";
14
+ const parseSubpath = (specifier, context, options) => {
15
+ const { dir, internal = specifier.startsWith("#"), parent } = options;
16
+ validateString(specifier, "specifier");
17
+ validateURLString(dir, "options.dir");
18
+ const id = parseModuleId(specifier, {
19
+ internal,
20
+ parent,
21
+ pkgname: !internal
22
+ });
23
+ const pkgdir = fileURLToPath(dir).replace(/\/$/, "") + pathe.sep;
24
+ const pkg = new URL("package.json", pathToFileURL(pkgdir));
25
+ const keys = getSubpaths(context, id.internal, pkg, parent);
26
+ let key = null;
27
+ let base = "";
28
+ for (const pkgsubpath of keys) {
29
+ const pattern = pkgsubpath.indexOf(PATTERN_CHARACTER);
30
+ if (pattern === -1 && pkgsubpath === id.path) {
31
+ key = pkgsubpath;
32
+ break;
33
+ }
34
+ if (pattern !== -1 && id.path.startsWith(pkgsubpath.slice(0, pattern))) {
35
+ const trailer = pkgsubpath.slice(pattern + 1);
36
+ if (id.path.length >= pkgsubpath.length && id.path.endsWith(trailer) && compareSubpaths(key ?? "", pkgsubpath) === CompareResult.GREATER_THAN && pkgsubpath.lastIndexOf(PATTERN_CHARACTER) === pattern) {
37
+ key = pkgsubpath;
38
+ base = id.path.slice(pattern, id.path.length - trailer.length);
39
+ }
40
+ }
41
+ }
42
+ if (key === null) {
43
+ let { parent: parent2 } = options;
44
+ validateURLString(parent2, "options.parent");
45
+ parent2 = fileURLToPath(parent2);
46
+ throw internal ? new ERR_PACKAGE_IMPORT_NOT_DEFINED(id.path, parent2, pkgdir) : new ERR_PACKAGE_PATH_NOT_EXPORTED(pkgdir, id.path, parent2);
47
+ }
48
+ return { base, internal, key, raw: id.path, specifier: id.raw };
49
+ };
50
+ var parse_subpath_default = parseSubpath;
51
+ export {
52
+ parse_subpath_default as default
53
+ };
54
+ //# sourceMappingURL=parse-subpath.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/parse-subpath.ts"],
4
+ "mappings": "AAUA,OAAO,iBAAiB;AACxB,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP,OAAO,WAAW;AAElB,SAAS,qBAAoC;AAC7C,SAAS,KAAK,eAAe,qBAAqB;AAClD,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,uBAAuB;AA6B9B,MAAM,eAAe,CACnB,WACA,SACA,YACkB;AAClB,QAAM,EAAE,KAAK,WAAW,UAAU,WAAW,GAAG,GAAG,OAAO,IAAI;AAG9D,iBAAe,WAAW,WAAW;AAGrC,oBAAkB,KAAK,aAAa;AAYpC,QAAM,KAAqB,cAAc,WAAW;AAAA,IAClD;AAAA,IACA;AAAA,IACA,SAAS,CAAC;AAAA,EACZ,CAAC;AAOD,QAAM,SAAiB,cAAc,GAAG,EAAE,QAAQ,OAAO,EAAE,IAAI,MAAM;AAOrE,QAAM,MAAW,IAAI,IAAI,gBAAgB,cAAc,MAAM,CAAC;AAO9D,QAAM,OAAiB,YAAY,SAAS,GAAG,UAAU,KAAK,MAAM;AAOpE,MAAI,MAAwB;AAO5B,MAAI,OAAe;AAGnB,aAAW,cAAc,MAAM;AAM7B,UAAM,UAAkB,WAAW,QAAQ,iBAAiB;AAG5D,QAAI,YAAY,MAAM,eAAe,GAAG,MAAM;AAC5C,YAAM;AACN;AAAA,IACF;AAGA,QAAI,YAAY,MAAM,GAAG,KAAK,WAAW,WAAW,MAAM,GAAG,OAAO,CAAC,GAAG;AAMtE,YAAM,UAAkB,WAAW,MAAM,UAAU,CAAC;AAGpD,UACE,GAAG,KAAK,UAAU,WAAW,UAC7B,GAAG,KAAK,SAAS,OAAO,KACxB,gBAAgB,OAAO,IAAI,UAAU,MAAM,cAAc,gBACzD,WAAW,YAAY,iBAAiB,MAAM,SAC9C;AACA,cAAM;AACN,eAAO,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,SAAS,QAAQ,MAAM;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,MAAM;AAChB,QAAI,EAAE,QAAAA,QAAO,IAAI;AAGjB,sBAAkBA,SAAQ,gBAAgB;AAG1C,IAAAA,UAAS,cAAcA,OAAM;AAE7B,UAAM,WACF,IAAI,+BAA+B,GAAG,MAAMA,SAAQ,MAAM,IAC1D,IAAI,8BAA8B,QAAQ,GAAG,MAAMA,OAAM;AAAA,EAC/D;AAEA,SAAO,EAAE,MAAM,UAAU,KAAK,KAAK,GAAG,MAAM,WAAW,GAAG,IAAI;AAChE;AAEA,IAAO,wBAAQ;",
5
+ "names": ["parent"]
6
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file PATTERN_CHARACTER
3
+ * @module mlly/utils/PATTERN_CHARACTER
4
+ */
5
+ /**
6
+ * Character representing a subpath pattern.
7
+ *
8
+ * @const {string} PATTERN_CHARACTER
9
+ */
10
+ declare const PATTERN_CHARACTER: string;
11
+ export default PATTERN_CHARACTER;
@@ -0,0 +1,6 @@
1
+ const PATTERN_CHARACTER = "*";
2
+ var pattern_character_default = PATTERN_CHARACTER;
3
+ export {
4
+ pattern_character_default as default
5
+ };
6
+ //# sourceMappingURL=pattern-character.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/pattern-character.ts"],
4
+ "mappings": "AAUA,MAAM,oBAA4B;AAElC,IAAO,4BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file readPackageJson
3
+ * @module mlly/utils/readPackageJson
4
+ */
5
+ import type { ModuleId } from '../types/index.mjs';
6
+ import type { PackageJson } from '@flex-development/pkg-types';
7
+ import { type Nullable } from '@flex-development/tutils';
8
+ /**
9
+ * Reads a `package.json` file from the given directory.
10
+ *
11
+ * Returns `null` if a file is not found.
12
+ *
13
+ * @see {@linkcode ModuleId}
14
+ * @see {@linkcode PackageJson}
15
+ *
16
+ * @param {ModuleId} [dir='.'] - Id of directory containing `package.json` file
17
+ * @param {string?} [specifier] - Module specifier passed by user to initiate
18
+ * reading of `package.json` file
19
+ * @param {ModuleId?} [parent] - Id of module to resolve from
20
+ * @return {?PackageJson} `package.json` object or `null` if file is not found
21
+ * @throws {NodeError<Error | TypeError>} If `dir` is not a string or instance
22
+ * of {@linkcode URL}, if `specifier` is not a string, if `parent` is not a
23
+ * string, or if a `package.json` is file found and does not contain valid JSON
24
+ */
25
+ declare const readPackageJson: (dir?: ModuleId, specifier?: string, parent?: ModuleId) => Nullable<PackageJson>;
26
+ export default readPackageJson;
@@ -0,0 +1,43 @@
1
+ import isFile from "../internal/is-file.mjs";
2
+ import validateString from "../internal/validate-string.mjs";
3
+ import validateURLString from "../internal/validate-url-string.mjs";
4
+ import {
5
+ ERR_INVALID_PACKAGE_CONFIG
6
+ } from "@flex-development/errnode";
7
+ import pathe from "@flex-development/pathe";
8
+ import { isEmptyString, isNIL } from "@flex-development/tutils";
9
+ import fs from "node:fs";
10
+ import { fileURLToPath } from "node:url";
11
+ import toURL from "./to-url.mjs";
12
+ const readPackageJson = (dir = ".", specifier, parent) => {
13
+ validateURLString(dir, "dir");
14
+ if (specifier !== void 0)
15
+ validateString(specifier, "specifier");
16
+ if (parent !== void 0)
17
+ validateURLString(parent, "parent");
18
+ dir = fileURLToPath(toURL(dir));
19
+ const path = pathe.toNamespacedPath(pathe.join(dir, "package.json"));
20
+ if (!isFile(path))
21
+ return null;
22
+ let pkg;
23
+ try {
24
+ pkg = JSON.parse(fs.readFileSync(path, "utf8"));
25
+ } catch (e) {
26
+ let base;
27
+ switch (true) {
28
+ case (specifier && !isNIL(parent) && !isEmptyString(parent)):
29
+ base = `'${specifier}' from ${fileURLToPath(toURL(parent))}`;
30
+ break;
31
+ case (specifier == null ? void 0 : specifier.startsWith("file:")):
32
+ base = fileURLToPath(specifier);
33
+ break;
34
+ }
35
+ throw new ERR_INVALID_PACKAGE_CONFIG(path, base, e.message);
36
+ }
37
+ return pkg;
38
+ };
39
+ var read_package_json_default = readPackageJson;
40
+ export {
41
+ read_package_json_default as default
42
+ };
43
+ //# sourceMappingURL=read-package-json.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/read-package-json.ts"],
4
+ "mappings": "AAKA,OAAO,YAAY;AACnB,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AACP,OAAO,WAAW;AAElB,SAAS,eAAe,aAA4B;AACpD,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAmBlB,MAAM,kBAAkB,CACtB,MAAgB,KAChB,WACA,WAC0B;AAE1B,oBAAkB,KAAK,KAAK;AAG5B,MAAI,cAAc;AAAW,mBAAe,WAAW,WAAW;AAGlE,MAAI,WAAW;AAAW,sBAAkB,QAAQ,QAAQ;AAG5D,QAAM,cAAc,MAAM,GAAG,CAAC;AAO9B,QAAM,OAAe,MAAM,iBAAiB,MAAM,KAAK,KAAK,cAAc,CAAC;AAG3E,MAAI,CAAC,OAAO,IAAI;AAAG,WAAO;AAO1B,MAAI;AAGJ,MAAI;AACF,UAAM,KAAK,MAAM,GAAG,aAAa,MAAM,MAAM,CAAC;AAAA,EAChD,SAAS,GAAP;AAQA,QAAI;AAGJ,YAAQ,MAAM;AAAA,MACZ,MAAK,aAAa,CAAC,MAAM,MAAM,KAAK,CAAC,cAAc,MAAM;AACvD,eAAO,IAAI,mBAAmB,cAAc,MAAM,MAAO,CAAC;AAC1D;AAAA,MACF,MAAK,uCAAW,WAAW;AACzB,eAAO,cAAc,SAAU;AAC/B;AAAA,IACJ;AAEA,UAAM,IAAI,2BAA2B,MAAM,MAAO,EAAkB,OAAO;AAAA,EAC7E;AAEA,SAAO;AACT;AAEA,IAAO,4BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file resolveAlias
3
+ * @module mlly/utils/resolveAlias
4
+ */
5
+ import type { ResolveAliasOptions } from '../interfaces/index.mjs';
6
+ /**
7
+ * Resolves a path alias in the given module `specifier`; does nothing if a path
8
+ * match isn't found.
9
+ *
10
+ * @see {@linkcode ResolveAliasOptions}
11
+ *
12
+ * @async
13
+ *
14
+ * @param {string} specifier - Module specifier to evaluate
15
+ * @param {ResolveAliasOptions} [options={}] - Resolution options
16
+ * @return {Promise<string>} Resolved specifier or original module specifier
17
+ * @throws {NodeError}
18
+ */
19
+ declare const resolveAlias: (specifier: string, options?: ResolveAliasOptions) => Promise<string>;
20
+ export default resolveAlias;
@@ -0,0 +1,106 @@
1
+ import regexp from "../internal/escape-reg-exp.mjs";
2
+ import validateBoolean from "../internal/validate-boolean.mjs";
3
+ import validateObject from "../internal/validate-object.mjs";
4
+ import validateSet from "../internal/validate-set.mjs";
5
+ import validateString from "../internal/validate-string.mjs";
6
+ import validateURLString from "../internal/validate-url-string.mjs";
7
+ import pathe from "@flex-development/pathe";
8
+ import { CompareResult, isNIL } from "@flex-development/tutils";
9
+ import { URL, pathToFileURL } from "node:url";
10
+ import compareSubpaths from "./compare-subpaths.mjs";
11
+ import CONDITIONS from "./conditions.mjs";
12
+ import parseModuleId from "./parse-module-id.mjs";
13
+ import PATTERN_CHARACTER from "./pattern-character.mjs";
14
+ import RESOLVE_EXTENSIONS from "./resolve-extensions.mjs";
15
+ import resolveModule from "./resolve-module.mjs";
16
+ import toBareSpecifier from "./to-bare-specifier.mjs";
17
+ import toRelativeSpecifier from "./to-relative-specifier.mjs";
18
+ import toURL from "./to-url.mjs";
19
+ const resolveAlias = async (specifier, options = {}) => {
20
+ const {
21
+ absolute = true,
22
+ aliases = {},
23
+ condition = "default",
24
+ conditions = CONDITIONS,
25
+ cwd = pathToFileURL("."),
26
+ ext,
27
+ extensions = RESOLVE_EXTENSIONS,
28
+ parent = import.meta.url,
29
+ preserveSymlinks = false
30
+ } = options;
31
+ validateString(specifier, "specifier");
32
+ validateBoolean(absolute, "options.absolute");
33
+ validateObject(aliases, "options.aliases");
34
+ validateString(condition, "options.condition");
35
+ validateURLString(cwd, "options.cwd");
36
+ validateSet(extensions, "options.extensions");
37
+ validateURLString(parent, "options.parent");
38
+ validateBoolean(preserveSymlinks, "options.preserveSymlinks");
39
+ const id = parseModuleId(specifier, {
40
+ parent: toURL(parent),
41
+ pkgname: false
42
+ });
43
+ const keys = Object.keys(aliases).sort(compareSubpaths);
44
+ let alias = null;
45
+ let trail = "";
46
+ for (const key of keys) {
47
+ const pattern = key.indexOf(PATTERN_CHARACTER);
48
+ if (pattern === -1 && key === id.raw) {
49
+ alias = key;
50
+ break;
51
+ }
52
+ if (pattern !== -1 && id.raw.startsWith(key.slice(0, pattern))) {
53
+ const trailer = key.slice(pattern + 1);
54
+ if (id.raw.length >= key.length && id.raw.endsWith(trailer) && compareSubpaths(alias ?? "", key) === CompareResult.GREATER_THAN && key.lastIndexOf(PATTERN_CHARACTER) === pattern) {
55
+ alias = key;
56
+ trail = id.raw.slice(pattern, id.raw.length - trailer.length);
57
+ }
58
+ }
59
+ }
60
+ if (alias === null || isNIL(aliases[alias]))
61
+ return specifier;
62
+ const base = toURL(cwd).href.replace(/\/$/, "") + pathe.sep;
63
+ let url = null;
64
+ for (let segment of [aliases[alias]].flat()) {
65
+ if (segment.includes(PATTERN_CHARACTER)) {
66
+ segment = segment.replace(
67
+ new RegExp(`${regexp(PATTERN_CHARACTER)}$`),
68
+ trail
69
+ );
70
+ }
71
+ let tries = new Set(
72
+ [
73
+ "",
74
+ ...[...extensions].map((ext2) => pathe.formatExt(ext2)),
75
+ ...[...extensions].map((ext2) => "/index" + pathe.formatExt(ext2))
76
+ ].map((suffix) => segment + suffix).filter((segment2) => segment2.length > 0).map((segment2) => new URL(segment2, base).pathname)
77
+ );
78
+ if (segment.startsWith("node_modules")) {
79
+ const [trypath = ""] = [...tries];
80
+ tries = /* @__PURE__ */ new Set([trypath.replace(/.*\/node_modules\//, ""), ...tries]);
81
+ }
82
+ for (const trypath of tries) {
83
+ try {
84
+ url = await resolveModule(trypath, {
85
+ condition,
86
+ conditions,
87
+ ext,
88
+ extensions,
89
+ parent: toURL(parent),
90
+ preserveSymlinks
91
+ });
92
+ break;
93
+ } catch {
94
+ continue;
95
+ }
96
+ }
97
+ if (url)
98
+ break;
99
+ }
100
+ return url ? absolute ? url.href : /\/node_modules\//.test(url.href) ? toBareSpecifier(url, toURL(parent), new Set(conditions)) : toRelativeSpecifier(url, toURL(parent)) : specifier;
101
+ };
102
+ var resolve_alias_default = resolveAlias;
103
+ export {
104
+ resolve_alias_default as default
105
+ };
106
+ //# sourceMappingURL=resolve-alias.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/resolve-alias.ts"],
4
+ "mappings": "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",
5
+ "names": ["ext", "segment"]
6
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @file resolveAliases
3
+ * @module mlly/utils/resolveAliases
4
+ */
5
+ import type { ResolveAliasOptions } from '../interfaces/index.mjs';
6
+ /**
7
+ * Resolves path aliases in the given piece of source `code`.
8
+ *
9
+ * @see {@linkcode ResolveAliasOptions}
10
+ * @see {@linkcode resolveAlias}
11
+ *
12
+ * @async
13
+ *
14
+ * @param {string} code - Code to evaluate
15
+ * @param {ResolveAliasOptions} [options={}] - Resolve alias options
16
+ * @return {Promise<string>} `code` unmodified or with path aliases resolved
17
+ */
18
+ declare const resolveAliases: (code: string, options?: ResolveAliasOptions) => Promise<string>;
19
+ export default resolveAliases;
@@ -0,0 +1,28 @@
1
+ import { SpecifierSyntaxKind } from "../enums/index.mjs";
2
+ import regexp from "../internal/escape-reg-exp.mjs";
3
+ import extractStatements from "./extract-statements.mjs";
4
+ import resolveAlias from "./resolve-alias.mjs";
5
+ const resolveAliases = async (code, options = {}) => {
6
+ for (const statement of extractStatements(code)) {
7
+ if (!statement.specifier)
8
+ continue;
9
+ if (statement.specifier_syntax === SpecifierSyntaxKind.DYNAMIC)
10
+ continue;
11
+ const specifier = await resolveAlias(statement.specifier, options);
12
+ if (specifier === statement.specifier)
13
+ continue;
14
+ code = code.replace(
15
+ statement.code,
16
+ statement.code.replace(
17
+ new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
18
+ specifier
19
+ )
20
+ );
21
+ }
22
+ return code;
23
+ };
24
+ var resolve_aliases_default = resolveAliases;
25
+ export {
26
+ resolve_aliases_default as default
27
+ };
28
+ //# sourceMappingURL=resolve-aliases.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/resolve-aliases.ts"],
4
+ "mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AACnB,OAAO,uBAAuB;AAC9B,OAAO,kBAAkB;AAczB,MAAM,iBAAiB,OACrB,MACA,UAA+B,CAAC,MACZ;AACpB,aAAW,aAAa,kBAAkB,IAAI,GAAG;AAE/C,QAAI,CAAC,UAAU;AAAW;AAG1B,QAAI,UAAU,qBAAqB,oBAAoB;AAAS;AAOhE,UAAM,YAAoB,MAAM,aAAa,UAAU,WAAW,OAAO;AAGzE,QAAI,cAAc,UAAU;AAAW;AAGvC,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,UAAU,KAAK;AAAA,QACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,WAAW;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,0BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file RESOLVE_EXTENSIONS
3
+ * @module mlly/utils/RESOLVE_EXTENSIONS
4
+ */
5
+ import type { Ext } from '@flex-development/pathe';
6
+ /**
7
+ * Default resolvable file extensions.
8
+ *
9
+ * @see {@linkcode Ext}
10
+ *
11
+ * @const {Set<Ext>} RESOLVE_EXTENSIONS
12
+ */
13
+ declare const RESOLVE_EXTENSIONS: Set<Ext>;
14
+ export default RESOLVE_EXTENSIONS;
@@ -0,0 +1,22 @@
1
+ const RESOLVE_EXTENSIONS = /* @__PURE__ */ new Set([
2
+ ".mjs",
3
+ ".mts",
4
+ ".cjs",
5
+ ".cts",
6
+ ".js",
7
+ ".ts",
8
+ ".jsx",
9
+ ".tsx",
10
+ ".css",
11
+ ".json",
12
+ ".node",
13
+ ".wasm",
14
+ ".d.mts",
15
+ ".d.cts",
16
+ ".d.ts"
17
+ ]);
18
+ var resolve_extensions_default = RESOLVE_EXTENSIONS;
19
+ export {
20
+ resolve_extensions_default as default
21
+ };
22
+ //# sourceMappingURL=resolve-extensions.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/resolve-extensions.ts"],
4
+ "mappings": "AAcA,MAAM,qBAA+B,oBAAI,IAAI;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAO,6BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @file resolveModule
3
+ * @module mlly/utils/resolveModule
4
+ */
5
+ import type { ResolveModuleOptions } from '../interfaces/index.mjs';
6
+ import { URL } from 'node:url';
7
+ /**
8
+ * Resolves `specifier` according to the [ESM Resolver algorithm][1], mostly 😉.
9
+ *
10
+ * Adds support for:
11
+ *
12
+ * - Extensionless file and directory index resolution
13
+ * - Replacing file extensions
14
+ *
15
+ * Other differences between Node.js:
16
+ *
17
+ * - [Subpath import][2] targets (that are strings) must be relative to the
18
+ * current working directory (e.g. `'./src/index.ts'`, `'./src/*.ts'`) or
19
+ * start with a [NPM valid package name][3]. See [`nodejs/node#40579`][4] for
20
+ * details.
21
+ *
22
+ * [1]: https://nodejs.org/api/esm.html#esm_resolver_algorithm
23
+ * [2]: https://nodejs.org/api/packages.html#subpath-imports
24
+ * [3]: https://regex101.com/r/BHcJfc
25
+ * [4]: https://github.com/nodejs/node/issues/40579
26
+ *
27
+ * @see {@linkcode NodeError}
28
+ * @see {@linkcode ResolveModuleOptions}
29
+ * @see {@linkcode URL}
30
+ *
31
+ * @async
32
+ *
33
+ * @param {string} specifier - Module specifier to resolve
34
+ * @param {ResolveModuleOptions} [options={}] - Module resolution options
35
+ * @return {Promise<URL>} Resolved module URL
36
+ * @throws {NodeError}
37
+ */
38
+ declare const resolveModule: (specifier: string, options?: ResolveModuleOptions) => Promise<URL>;
39
+ export default resolveModule;
@@ -0,0 +1,64 @@
1
+ import isFunction from "../internal/is-function.mjs";
2
+ import Resolver from "../internal/resolver.mjs";
3
+ import { ErrorCode } from "@flex-development/errnode";
4
+ import { isBuiltin } from "@flex-development/is-builtin";
5
+ import pathe from "@flex-development/pathe";
6
+ import { fileURLToPath } from "node:url";
7
+ import CONDITIONS from "./conditions.mjs";
8
+ import RESOLVE_EXTENSIONS from "./resolve-extensions.mjs";
9
+ const resolveModule = async (specifier, options = {}) => {
10
+ const {
11
+ condition = "default",
12
+ conditions = CONDITIONS,
13
+ extensions = RESOLVE_EXTENSIONS,
14
+ parent = import.meta.url,
15
+ preserveSymlinks = false
16
+ } = options;
17
+ const resolver = new Resolver();
18
+ const tries = isBuiltin(specifier) || /^\S+:/.test(specifier) && !specifier.startsWith("file:") ? [] : [...extensions].flatMap((ext) => [
19
+ specifier + (ext = pathe.formatExt(ext)),
20
+ specifier.startsWith("#") ? specifier + "/index" : "",
21
+ specifier + "/index" + ext
22
+ ]).filter((id) => id.length > 0);
23
+ tries.unshift(specifier);
24
+ const ignore = /* @__PURE__ */ new Set([
25
+ ErrorCode.ERR_MODULE_NOT_FOUND,
26
+ ErrorCode.ERR_PACKAGE_PATH_NOT_EXPORTED,
27
+ ErrorCode.ERR_UNSUPPORTED_DIR_IMPORT
28
+ ]);
29
+ let error;
30
+ let url = null;
31
+ for (const id of tries) {
32
+ try {
33
+ url = resolver.resolveModule(
34
+ id,
35
+ parent,
36
+ condition,
37
+ new Set(conditions),
38
+ preserveSymlinks
39
+ );
40
+ } catch (e) {
41
+ url = null;
42
+ if (id === specifier)
43
+ error = e;
44
+ if (!ignore.has(e.code))
45
+ throw e;
46
+ }
47
+ if (url)
48
+ break;
49
+ }
50
+ if (!url)
51
+ throw error;
52
+ if (url.protocol === "file:") {
53
+ let { ext } = options;
54
+ ext = isFunction(ext) ? await ext(specifier, url) : ext;
55
+ url.href = pathe.changeExt(url.href, ext).replace(/\/index$/, "");
56
+ url.pathname = fileURLToPath(url.href);
57
+ }
58
+ return url;
59
+ };
60
+ var resolve_module_default = resolveModule;
61
+ export {
62
+ resolve_module_default as default
63
+ };
64
+ //# sourceMappingURL=resolve-module.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/resolve-module.ts"],
4
+ "mappings": "AAMA,OAAO,gBAAgB;AACvB,OAAO,cAAc;AACrB,SAAS,iBAAiC;AAC1C,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAElB,SAAc,qBAAqB;AACnC,OAAO,gBAAgB;AACvB,OAAO,wBAAwB;AAiC/B,MAAM,gBAAgB,OACpB,WACA,UAAgC,CAAC,MAChB;AACjB,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,SAAS,YAAY;AAAA,IACrB,mBAAmB;AAAA,EACrB,IAAI;AAOJ,QAAM,WAAqB,IAAI,SAAS;AAOxC,QAAM,QACJ,UAAU,SAAS,KAClB,QAAQ,KAAK,SAAS,KAAK,CAAC,UAAU,WAAW,OAAO,IACrD,CAAC,IACD,CAAC,GAAG,UAAU,EACX,QAAQ,SAAO;AAAA,IACd,aAAa,MAAM,MAAM,UAAU,GAAG;AAAA,IACtC,UAAU,WAAW,GAAG,IAAI,YAAY,WAAW;AAAA,IACnD,YAAY,WAAW;AAAA,EACzB,CAAC,EACA,OAAO,QAAM,GAAG,SAAS,CAAC;AAGnC,QAAM,QAAQ,SAAS;AAUvB,QAAM,SAAyB,oBAAI,IAAe;AAAA,IAChD,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,EACZ,CAAC;AAOD,MAAI;AAOJ,MAAI,MAAqB;AAGzB,aAAW,MAAM,OAAO;AACtB,QAAI;AACF,YAAM,SAAS;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI,IAAI,UAAU;AAAA,QAClB;AAAA,MACF;AAAA,IACF,SAAS,GAAP;AACA,YAAM;AACN,UAAI,OAAO;AAAW,gBAAQ;AAC9B,UAAI,CAAC,OAAO,IAAK,EAAgB,IAAI;AAAG,cAAM;AAAA,IAChD;AAGA,QAAI;AAAK;AAAA,EACX;AAGA,MAAI,CAAC;AAAK,UAAM;AAGhB,MAAI,IAAI,aAAa,SAAS;AAC5B,QAAI,EAAE,IAAI,IAAI;AAGd,UAAM,WAAW,GAAG,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI;AAGpD,QAAI,OAAO,MAAM,UAAU,IAAI,MAAM,GAAG,EAAE,QAAQ,YAAY,EAAE;AAChE,QAAI,WAAW,cAAc,IAAI,IAAI;AAAA,EACvC;AAEA,SAAO;AACT;AAEA,IAAO,yBAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @file resolveModules
3
+ * @module mlly/utils/resolveModules
4
+ */
5
+ import type { ResolveModuleOptions } from '../interfaces/index.mjs';
6
+ /**
7
+ * Converts all module specifiers in `code` to absolute specifiers.
8
+ *
9
+ * ::: info
10
+ * Useful for converting code to [`data:` URLs][1].
11
+ * :::
12
+ *
13
+ * [1]: https://nodejs.org/api/esm.html#data-imports
14
+ *
15
+ * @see {@linkcode ResolveModuleOptions}
16
+ * @see https://nodejs.org/api/esm.html#terminology
17
+ *
18
+ * @async
19
+ *
20
+ * @param {string} code - Code to evaluate
21
+ * @param {ResolveModuleOptions} [options={}] - Module resolution options
22
+ * @return {Promise<string>} `code` with module specifiers fully resolved
23
+ */
24
+ declare const resolveModules: (code: string, options?: ResolveModuleOptions) => Promise<string>;
25
+ export default resolveModules;
@@ -1,23 +1,19 @@
1
- import upath from "upath";
1
+ import { SpecifierSyntaxKind } from "../enums/index.mjs";
2
+ import regexp from "../internal/escape-reg-exp.mjs";
2
3
  import extractStatements from "./extract-statements.mjs";
3
4
  import resolveModule from "./resolve-module.mjs";
4
5
  const resolveModules = async (code, options = {}) => {
5
6
  for (const statement of extractStatements(code)) {
6
7
  if (!statement.specifier)
7
8
  continue;
8
- if (statement.specifier_type === "dynamic")
9
+ if (statement.specifier_syntax === SpecifierSyntaxKind.DYNAMIC)
9
10
  continue;
10
- const type = (resolved) => {
11
- return upath.isAbsolute(statement.specifier) || statement.specifier.startsWith("file:") ? "absolute" : /\/node_modules\//.test(resolved) ? "bare" : "relative";
12
- };
11
+ const url = await resolveModule(statement.specifier, options);
13
12
  code = code.replace(
14
13
  statement.code,
15
14
  statement.code.replace(
16
- statement.specifier,
17
- await resolveModule(statement.specifier, {
18
- ...options,
19
- type: options.type ?? type
20
- })
15
+ new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
16
+ url.href
21
17
  )
22
18
  );
23
19
  }
@@ -27,3 +23,4 @@ var resolve_modules_default = resolveModules;
27
23
  export {
28
24
  resolve_modules_default as default
29
25
  };
26
+ //# sourceMappingURL=resolve-modules.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/resolve-modules.ts"],
4
+ "mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AAEnB,OAAO,uBAAuB;AAC9B,OAAO,mBAAmB;AAoB1B,MAAM,iBAAiB,OACrB,MACA,UAAgC,CAAC,MACb;AACpB,aAAW,aAAa,kBAAkB,IAAI,GAAG;AAE/C,QAAI,CAAC,UAAU;AAAW;AAG1B,QAAI,UAAU,qBAAqB,oBAAoB;AAAS;AAOhE,UAAM,MAAW,MAAM,cAAc,UAAU,WAAW,OAAO;AAGjE,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,UAAU,KAAK;AAAA,QACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,WAAW;AAAA,QAC5D,IAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,0BAAQ;",
5
+ "names": []
6
+ }