@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/internal/validate-string.ts"],
4
+ "mappings": "AAKA,SAAS,4BAA4C;AAgBrD,MAAM,iBAAiB,CAAC,OAAgB,SAAkC;AACxE,MAAI,OAAO,UAAU;AAAU,WAAO;AACtC,QAAM,IAAI,qBAAqB,MAAM,UAAU,KAAK;AACtD;AAEA,IAAO,0BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Internal - validateURLString
3
+ * @module mlly/internal/validateURLString
4
+ */
5
+ /// <reference types="node" />
6
+ import { URL } from 'node:url';
7
+ /**
8
+ * Checks if given `value` is an instance of {@linkcode URL} or a string.
9
+ *
10
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is of neither type.
11
+ *
12
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
13
+ *
14
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
15
+ *
16
+ * @param {unknown} value - Value supplied by user
17
+ * @param {string} name - Name of invalid argument or property
18
+ * @return {value is URL | string} `true` if `value` is `URL` instance or string
19
+ * @throws {NodeError<TypeError>} If `value` is not `URL` instance or string
20
+ */
21
+ declare const validateURLString: (value: unknown, name: string) => value is string | URL;
22
+ export default validateURLString;
@@ -0,0 +1,12 @@
1
+ import { ERR_INVALID_ARG_TYPE } from "@flex-development/errnode";
2
+ import { URL } from "node:url";
3
+ const validateURLString = (value, name) => {
4
+ if (value instanceof URL || typeof value === "string")
5
+ return true;
6
+ throw new ERR_INVALID_ARG_TYPE(name, ["URL", "string"], value);
7
+ };
8
+ var validate_url_string_default = validateURLString;
9
+ export {
10
+ validate_url_string_default as default
11
+ };
12
+ //# sourceMappingURL=validate-url-string.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/internal/validate-url-string.ts"],
4
+ "mappings": "AAKA,SAAS,4BAA4C;AACrD,SAAS,WAAW;AAgBpB,MAAM,oBAAoB,CACxB,OACA,SAC0B;AAC1B,MAAI,iBAAiB,OAAO,OAAO,UAAU;AAAU,WAAO;AAC9D,QAAM,IAAI,qBAAqB,MAAM,CAAC,OAAO,QAAQ,GAAG,KAAK;AAC/D;AAEA,IAAO,8BAAQ;",
5
+ "names": []
6
+ }
@@ -5,5 +5,5 @@
5
5
  /**
6
6
  * Export declaration kinds.
7
7
  */
8
- declare type Declaration = 'abstract class' | 'async function' | 'async function*' | 'class' | 'const enum' | 'const' | 'default async function' | 'default async function*' | 'default async' | 'default function' | 'default function*' | 'default' | 'enum' | 'function' | 'function*' | 'interface' | 'let' | 'namespace' | 'type' | 'var';
8
+ type Declaration = 'class' | 'const enum' | 'const' | 'enum' | 'function' | 'function*' | 'interface' | 'let' | 'namespace' | 'type' | 'var';
9
9
  export type { Declaration as default };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @file Type Definitions - ChangeExtFn
3
+ * @module mlly/types/ChangeExtFn
4
+ */
5
+ /// <reference types="node" />
6
+ import type { Nilable } from '@flex-development/tutils';
7
+ import type { URL } from 'node:url';
8
+ /**
9
+ * Function that returns a new file extension for the given module `specifier`.
10
+ *
11
+ * Returning an empty string (`''`) will remove the original file extension;
12
+ * returning `null` or `undefined` will skip extension replacement.
13
+ *
14
+ * ::: info
15
+ * The new file extension need not begin with a dot character (`'.'`).
16
+ * :::
17
+ *
18
+ * @see {@linkcode URL}
19
+ * @see https://github.com/flex-development/pathe/tree/1.0.3#changeextpath-string-ext-nullablestring-string
20
+ *
21
+ * @template Ext - File extension type(s)
22
+ *
23
+ * @param {string} specifier - Original module specifier
24
+ * @param {URL} url - Resolved module URL
25
+ * @return {Ext | PromiseLike<Ext>} New file extension, `null`, or `undefined`
26
+ */
27
+ type ChangeExtFn<Ext extends Nilable<string> = Nilable<string>> = (specifier: string, url: URL) => Ext | PromiseLike<Ext>;
28
+ export type { ChangeExtFn as default };
@@ -3,7 +3,11 @@
3
3
  * @module mlly/types
4
4
  */
5
5
  export type { default as Declaration } from './declaration.mjs';
6
- export type { default as Ext } from './ext.mjs';
7
- export type { default as MIMEType } from './mime-type.mjs';
8
- export type { default as SpecifierType } from './specifier-type.mjs';
9
- export type { default as StatementType } from './statement-type.mjs';
6
+ export type { default as ChangeExtFn } from './fn-change-ext.mjs';
7
+ export type { default as MimeType } from './mime-type.mjs';
8
+ export type { default as ModuleId } from './module-id.mjs';
9
+ export type { default as ModuleSpecifierType } from './module-specifier-type.mjs';
10
+ export type { default as Protocol } from './protocol.mjs';
11
+ export type { default as SyntaxKindExport } from './syntax-kind-export.mjs';
12
+ export type { default as SyntaxKindImport } from './syntax-kind-import.mjs';
13
+ export type { default as SyntaxKindRequire } from './syntax-kind-require.mjs';
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
@@ -1,11 +1,13 @@
1
1
  /**
2
- * @file Type Definitions - MIMEType
3
- * @module mlly/types/MIMEType
2
+ * @file Type Definitions - MimeType
3
+ * @module mlly/types/MimeType
4
4
  */
5
5
  /**
6
- * Supported MIME types.
6
+ * Supported [MIME types][1].
7
+ *
8
+ * [1]: https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types
7
9
  *
8
10
  * @see https://nodejs.org/api/esm.html#esm_data_imports
9
11
  */
10
- declare type MIMEType = 'application/json' | 'application/wasm' | 'text/javascript';
11
- export type { MIMEType as default };
12
+ type MimeType = 'application/json' | 'application/typescript' | 'application/wasm' | 'text/javascript';
13
+ export type { MimeType as default };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file Type Definitions - ModuleId
3
+ * @module mlly/types/ModuleId
4
+ */
5
+ /// <reference types="node" />
6
+ import type { URL } from 'node:url';
7
+ /**
8
+ * ECMAScript (ES) module identifier.
9
+ *
10
+ * @see {@linkcode URL}
11
+ */
12
+ type ModuleId = URL | string;
13
+ export type { ModuleId as default };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file Type Definitions - ModuleSpecifierType
3
+ * @module mlly/types/ModuleSpecifierType
4
+ */
5
+ /**
6
+ * Module specifier types.
7
+ *
8
+ * @see https://nodejs.org/api/esm.html#terminology
9
+ */
10
+ type ModuleSpecifierType = 'absolute' | 'bare' | 'relative';
11
+ export type { ModuleSpecifierType as default };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file Type Definitions - Protocol
3
+ * @module mlly/types/Protocol
4
+ */
5
+ import type { LiteralUnion } from '@flex-development/tutils';
6
+ /**
7
+ * URL protocols.
8
+ *
9
+ * @see https://nodejs.org/api/url.html#urlprotocol
10
+ * @see https://iana.org/assignments/uri-schemes/uri-schemes.xhtml
11
+ * @see https://url.spec.whatwg.org/#special-scheme
12
+ */
13
+ type Protocol = LiteralUnion<`${'blob' | 'content' | 'cvs' | 'data' | 'dns' | 'file' | 'fish' | 'ftp' | 'git' | 'http' | 'https' | 'mvn' | 'redis' | 'sftp' | 'ssh' | 'svn' | 'urn' | 'view-source' | 'ws' | 'wss'}:`, `${string}:`>;
14
+ export type { Protocol as default };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindExport
3
+ * @module mlly/types/SyntaxKindExport
4
+ */
5
+ import type { StatementSyntaxKind } from '../enums/index.mjs';
6
+ /**
7
+ * `export` statement syntax kinds.
8
+ *
9
+ * @see {@linkcode StatementSyntaxKind}
10
+ */
11
+ type SyntaxKindExport = StatementSyntaxKind.DECLARATION | StatementSyntaxKind.DEFAULT | StatementSyntaxKind.LIST | StatementSyntaxKind.NAMED | StatementSyntaxKind.NAMESPACE;
12
+ export type { SyntaxKindExport as default };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindImport
3
+ * @module mlly/types/SyntaxKindImport
4
+ */
5
+ import type { StatementSyntaxKind } from '../enums/index.mjs';
6
+ /**
7
+ * `import` statement syntax kinds.
8
+ *
9
+ * @see {@linkcode StatementSyntaxKind}
10
+ */
11
+ type SyntaxKindImport = StatementSyntaxKind.DEFAULT | StatementSyntaxKind.DEFAULT_WITH_NAMED | StatementSyntaxKind.DEFAULT_WITH_NAMESPACE | StatementSyntaxKind.DYNAMIC | StatementSyntaxKind.NAMED | StatementSyntaxKind.NAMESPACE | StatementSyntaxKind.SIDE_EFFECT;
12
+ export type { SyntaxKindImport as default };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindRequire
3
+ * @module mlly/types/SyntaxKindRequire
4
+ */
5
+ import type { StatementSyntaxKind } from '../enums/index.mjs';
6
+ /**
7
+ * `require` statement syntax kinds.
8
+ *
9
+ * @see {@linkcode StatementSyntaxKind}
10
+ */
11
+ type SyntaxKindRequire = StatementSyntaxKind.REQUIRE;
12
+ export type { SyntaxKindRequire as default };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @file compareSubpaths
3
+ * @module mlly/utils/compareSubpaths
4
+ */
5
+ import { CompareResult } from '@flex-development/tutils';
6
+ /**
7
+ * Returns a number indicating if a subpath pattern is equal to, greater than,
8
+ * or less than another subpath pattern.
9
+ *
10
+ * - `-1`: `subpath2` is less than `subpath1`
11
+ * - `0`: `subpath2` is equal to `subpath1`
12
+ * - `1`: `subpath2` is greater than `subpath1`
13
+ *
14
+ * Implements the `PATTERN_KEY_COMPARE` algorithm.
15
+ *
16
+ * @see https://nodejs.org/api/esm.html#resolution-algorithm
17
+ *
18
+ * @param {string} subpath1 - Subpath to be compared
19
+ * @param {string} subpath2 - Subpath to compare `subpath1` to
20
+ * @return {CompareResult} Comparsion result
21
+ * @throws {NodeError<Error | TypeError>} If either either subpath contains more
22
+ * than pattern character (`'*'`) or is not a string
23
+ */
24
+ declare const compareSubpaths: (subpath1: string, subpath2: string) => CompareResult;
25
+ export default compareSubpaths;
@@ -0,0 +1,24 @@
1
+ import validateString from "../internal/validate-string.mjs";
2
+ import { CompareResult } from "@flex-development/tutils";
3
+ import assert from "node:assert";
4
+ import PATTERN_CHARACTER from "./pattern-character.mjs";
5
+ const compareSubpaths = (subpath1, subpath2) => {
6
+ validateString(subpath1, "subpath1");
7
+ validateString(subpath2, "subpath2");
8
+ let pattern1 = -1;
9
+ let pattern2 = -1;
10
+ for (const [index, subpath] of [subpath1, subpath2].entries()) {
11
+ const message = `'${subpath}' is expected to contain a single '*'`;
12
+ const pattern_index = subpath.indexOf(PATTERN_CHARACTER);
13
+ assert(pattern_index === subpath.lastIndexOf(PATTERN_CHARACTER), message);
14
+ index === 0 ? pattern1 = pattern_index : pattern2 = pattern_index;
15
+ }
16
+ const length1 = pattern1 === -1 ? subpath1.length : pattern1 + 1;
17
+ const length2 = pattern2 === -1 ? subpath2.length : pattern2 + 1;
18
+ return length1 > length2 ? CompareResult.LESS_THAN : length2 > length1 ? CompareResult.GREATER_THAN : pattern1 === -1 ? CompareResult.GREATER_THAN : pattern2 === -1 ? CompareResult.LESS_THAN : subpath1.length > subpath2.length ? CompareResult.LESS_THAN : subpath2.length > subpath1.length ? CompareResult.GREATER_THAN : CompareResult.EQUAL;
19
+ };
20
+ var compare_subpaths_default = compareSubpaths;
21
+ export {
22
+ compare_subpaths_default as default
23
+ };
24
+ //# sourceMappingURL=compare-subpaths.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/compare-subpaths.ts"],
4
+ "mappings": "AAKA,OAAO,oBAAoB;AAE3B,SAAS,qBAAqB;AAC9B,OAAO,YAAY;AACnB,OAAO,uBAAuB;AAoB9B,MAAM,kBAAkB,CAAC,UAAkB,aAAoC;AAC7E,iBAAe,UAAU,UAAU;AACnC,iBAAe,UAAU,UAAU;AAOnC,MAAI,WAAmB;AAOvB,MAAI,WAAmB;AAGvB,aAAW,CAAC,OAAO,OAAO,KAAK,CAAC,UAAU,QAAQ,EAAE,QAAQ,GAAG;AAM7D,UAAM,UAAkB,IAAI;AAO5B,UAAM,gBAAwB,QAAQ,QAAQ,iBAAiB;AAG/D,WAAO,kBAAkB,QAAQ,YAAY,iBAAiB,GAAG,OAAO;AAGxE,cAAU,IAAK,WAAW,gBAAkB,WAAW;AAAA,EACzD;AAOA,QAAM,UAAkB,aAAa,KAAK,SAAS,SAAS,WAAW;AAOvE,QAAM,UAAkB,aAAa,KAAK,SAAS,SAAS,WAAW;AAEvE,SAAO,UAAU,UACb,cAAc,YACd,UAAU,UACV,cAAc,eACd,aAAa,KACb,cAAc,eACd,aAAa,KACb,cAAc,YACd,SAAS,SAAS,SAAS,SAC3B,cAAc,YACd,SAAS,SAAS,SAAS,SAC3B,cAAc,eACd,cAAc;AACpB;AAEA,IAAO,2BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file CONDITIONS
3
+ * @module mlly/utils/CONDITIONS
4
+ */
5
+ /**
6
+ * Default export conditions.
7
+ *
8
+ * @see https://nodejs.org/api/packages.html#conditional-exports
9
+ *
10
+ * @const {Set<string>} CONDITIONS
11
+ */
12
+ declare const CONDITIONS: Set<string>;
13
+ export default CONDITIONS;
@@ -0,0 +1,6 @@
1
+ const CONDITIONS = /* @__PURE__ */ new Set(["node", "import"]);
2
+ var conditions_default = CONDITIONS;
3
+ export {
4
+ conditions_default as default
5
+ };
6
+ //# sourceMappingURL=conditions.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/conditions.ts"],
4
+ "mappings": "AAYA,MAAM,aAA0B,oBAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AAE1D,IAAO,qBAAQ;",
5
+ "names": []
6
+ }
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * @file detectSyntax
3
- * @module mlly/lib/detectSyntax
3
+ * @module mlly/utils/detectSyntax
4
4
  */
5
5
  /**
6
6
  * Detects if `code` contains CommonJS syntax, ESM syntax, or a mixture of both.
7
7
  *
8
8
  * Ignores matches in comments.
9
9
  *
10
- * @see {@link hasCJSSyntax}
11
- * @see {@link hasESMSyntax}
10
+ * @see {@linkcode hasCJSSyntax}
11
+ * @see {@linkcode hasESMSyntax}
12
12
  *
13
- * @param {string} code - Code to check
13
+ * @param {string} code - Code to evaluate
14
14
  * @return {{ cjs: boolean; esm: boolean; mixed: boolean }} Detection result
15
15
  */
16
16
  declare const detectSyntax: (code: string) => {
@@ -9,3 +9,4 @@ var detect_syntax_default = detectSyntax;
9
9
  export {
10
10
  detect_syntax_default as default
11
11
  };
12
+ //# sourceMappingURL=detect-syntax.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/detect-syntax.ts"],
4
+ "mappings": "AAKA,OAAO,kBAAkB;AACzB,OAAO,kBAAkB;AAazB,MAAM,eAAe,CACnB,SACmD;AAMnD,QAAM,MAAe,aAAa,IAAI;AAOtC,QAAM,MAAe,aAAa,IAAI;AAEtC,SAAO,EAAE,KAAK,KAAK,OAAO,OAAO,IAAI;AACvC;AAEA,IAAO,wBAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file EXTENSION_FORMAT_MAP
3
+ * @module mlly/utils/EXTENSION_FORMAT_MAP
4
+ */
5
+ import { Format } from '../enums/index.mjs';
6
+ import type { Ext } from '@flex-development/pathe';
7
+ /**
8
+ * Default file extension to module formats map.
9
+ *
10
+ * @see {@linkcode Ext}
11
+ * @see {@linkcode Format}
12
+ *
13
+ * @const {Map<Ext, Format>} EXTENSION_FORMAT_MAP
14
+ */
15
+ declare const EXTENSION_FORMAT_MAP: Map<Ext, Format>;
16
+ export default EXTENSION_FORMAT_MAP;
@@ -0,0 +1,22 @@
1
+ import { Format } from "../enums/index.mjs";
2
+ const EXTENSION_FORMAT_MAP = /* @__PURE__ */ new Map([
3
+ [".cjs", Format.COMMONJS],
4
+ [".cts", Format.COMMONJS],
5
+ [".d.cts", Format.COMMONJS],
6
+ [".d.mts", Format.MODULE],
7
+ [".d.ts", Format.MODULE],
8
+ [".js", Format.MODULE],
9
+ [".json", Format.JSON],
10
+ [".jsx", Format.MODULE],
11
+ [".mjs", Format.MODULE],
12
+ [".mts", Format.MODULE],
13
+ [".node", Format.COMMONJS],
14
+ [".ts", Format.MODULE],
15
+ [".tsx", Format.MODULE],
16
+ [".wasm", Format.WASM]
17
+ ]);
18
+ var extension_format_map_default = EXTENSION_FORMAT_MAP;
19
+ export {
20
+ extension_format_map_default as default
21
+ };
22
+ //# sourceMappingURL=extension-format-map.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/extension-format-map.ts"],
4
+ "mappings": "AAKA,SAAS,cAAc;AAWvB,MAAM,uBAAyC,oBAAI,IAAiB;AAAA,EAClE,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACxB,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACxB,CAAC,UAAU,OAAO,QAAQ;AAAA,EAC1B,CAAC,UAAU,OAAO,MAAM;AAAA,EACxB,CAAC,SAAS,OAAO,MAAM;AAAA,EACvB,CAAC,OAAO,OAAO,MAAM;AAAA,EACrB,CAAC,SAAS,OAAO,IAAI;AAAA,EACrB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,SAAS,OAAO,QAAQ;AAAA,EACzB,CAAC,OAAO,OAAO,MAAM;AAAA,EACrB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,SAAS,OAAO,IAAI;AACvB,CAAC;AAED,IAAO,+BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file extractStatements
3
+ * @module mlly/utils/extractStatements
4
+ */
5
+ import type { Statement } from '../interfaces/index.mjs';
6
+ /**
7
+ * Finds all `export`, `import`, and/or `require` statements in `code`.
8
+ *
9
+ * Ignores matches in comments.
10
+ *
11
+ * @see {@linkcode findDynamicImports}
12
+ * @see {@linkcode findExports}
13
+ * @see {@linkcode findRequires}
14
+ * @see {@linkcode findStaticImports}
15
+ *
16
+ * @param {string} [code=''] - Code to evaluate
17
+ * @return {Statement[]} Extracted statements
18
+ * @throws {NodeError<TypeError>} If `code` is not a string
19
+ */
20
+ declare const extractStatements: (code?: string) => Statement[];
21
+ export default extractStatements;
@@ -1,9 +1,11 @@
1
+ import validateString from "../internal/validate-string.mjs";
1
2
  import findDynamicImports from "./find-dynamic-imports.mjs";
2
3
  import findExports from "./find-exports.mjs";
3
4
  import findRequires from "./find-requires.mjs";
4
5
  import findStaticImports from "./find-static-imports.mjs";
5
6
  const extractStatements = (code = "") => {
6
- if (!code)
7
+ validateString(code, "code");
8
+ if (code.trim().length < "export".length)
7
9
  return [];
8
10
  return [
9
11
  ...findDynamicImports(code),
@@ -16,3 +18,4 @@ var extract_statements_default = extractStatements;
16
18
  export {
17
19
  extract_statements_default as default
18
20
  };
21
+ //# sourceMappingURL=extract-statements.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/extract-statements.ts"],
4
+ "mappings": "AAMA,OAAO,oBAAoB;AAE3B,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAgB9B,MAAM,oBAAoB,CAAC,OAAe,OAAoB;AAC5D,iBAAe,MAAM,MAAM;AAG3B,MAAI,KAAK,KAAK,EAAE,SAAS,SAAS;AAAQ,WAAO,CAAC;AAElD,SAAO;AAAA,IACL,GAAG,mBAAmB,IAAI;AAAA,IAC1B,GAAG,YAAY,IAAI;AAAA,IACnB,GAAG,aAAa,IAAI;AAAA,IACpB,GAAG,kBAAkB,IAAI;AAAA,EAC3B;AACF;AAEA,IAAO,6BAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file fillModules
3
+ * @module mlly/utils/fillModules
4
+ */
5
+ import type { FillModuleOptions } from '../interfaces/index.mjs';
6
+ /**
7
+ * Ensures all absolute and relative module specifiers in the given piece of
8
+ * source `code` are fully specified.
9
+ *
10
+ * Ignores specifiers that already have file extensions.
11
+ *
12
+ * @see {@linkcode FillModuleOptions}
13
+ * @see https://nodejs.org/api/esm.html#mandatory-file-extensions
14
+ * @see https://nodejs.org/api/esm.html#terminology
15
+ *
16
+ * @async
17
+ *
18
+ * @param {string} code - Code to evaluate
19
+ * @param {FillModuleOptions} options - Module fill options
20
+ * @return {Promise<string>} `code` with fully specified module specifiers
21
+ */
22
+ declare const fillModules: (code: string, options: FillModuleOptions) => Promise<string>;
23
+ export default fillModules;
@@ -0,0 +1,64 @@
1
+ import { SpecifierSyntaxKind } from "../enums/index.mjs";
2
+ import regexp from "../internal/escape-reg-exp.mjs";
3
+ import isFunction from "../internal/is-function.mjs";
4
+ import { ERR_UNKNOWN_FILE_EXTENSION } from "@flex-development/errnode";
5
+ import pathe from "@flex-development/pathe";
6
+ import CONDITIONS from "./conditions.mjs";
7
+ import extractStatements from "./extract-statements.mjs";
8
+ import isAbsoluteSpecifier from "./is-absolute-specifier.mjs";
9
+ import isBareSpecifier from "./is-bare-specifier.mjs";
10
+ import resolveModule from "./resolve-module.mjs";
11
+ import toBareSpecifier from "./to-bare-specifier.mjs";
12
+ import toRelativeSpecifier from "./to-relative-specifier.mjs";
13
+ const fillModules = async (code, options) => {
14
+ const { conditions = CONDITIONS, ext, parent = import.meta.url } = options;
15
+ for (const statement of extractStatements(code)) {
16
+ if (!statement.specifier)
17
+ continue;
18
+ if (statement.specifier_syntax === SpecifierSyntaxKind.DYNAMIC)
19
+ continue;
20
+ const url = await resolveModule(statement.specifier, {
21
+ ...options,
22
+ /**
23
+ * Returns a replacement file extension for the given module `specifier`
24
+ * **if it is non-bare and does not already have an extension**.
25
+ *
26
+ * Throws [`ERR_UNKNOWN_FILE_EXTENSION`][1] if the replacement extension
27
+ * is `null`, `undefined`, an empty string, or a dot character (`'.'`).
28
+ *
29
+ * [1]: https://nodejs.org/api/errors.html#err_unknown_file_extension
30
+ *
31
+ * @async
32
+ *
33
+ * @param {string} specifier - Module specifier
34
+ * @param {URL} url - Resolved module URL
35
+ * @return {Promise<string | undefined>} New file extension or `undefined`
36
+ */
37
+ async ext(specifier, url2) {
38
+ if (isBareSpecifier(specifier))
39
+ return void 0;
40
+ if (pathe.extname(specifier) === pathe.extname(url2.href))
41
+ return void 0;
42
+ const rext = isFunction(ext) ? await ext(specifier, url2) : ext;
43
+ if (!(rext && rext.trim().length > (rext.startsWith(".") ? 1 : 0))) {
44
+ throw new ERR_UNKNOWN_FILE_EXTENSION(rext, specifier);
45
+ }
46
+ return rext;
47
+ }
48
+ });
49
+ code = code.replace(
50
+ statement.code,
51
+ statement.code.replace(
52
+ new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
53
+ // convert module url back to absolute, bare, or relative specifier
54
+ statement.specifier.startsWith("#") ? statement.specifier : isAbsoluteSpecifier(statement.specifier) ? url.href : isBareSpecifier(statement.specifier) ? toBareSpecifier(url, parent, new Set(conditions)) : toRelativeSpecifier(url, parent)
55
+ )
56
+ );
57
+ }
58
+ return code;
59
+ };
60
+ var fill_modules_default = fillModules;
61
+ export {
62
+ fill_modules_default as default
63
+ };
64
+ //# sourceMappingURL=fill-modules.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/fill-modules.ts"],
4
+ "mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,YAAY;AACnB,OAAO,gBAAgB;AACvB,SAAS,kCAAkC;AAC3C,OAAO,WAAW;AAElB,OAAO,gBAAgB;AACvB,OAAO,uBAAuB;AAC9B,OAAO,yBAAyB;AAChC,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,yBAAyB;AAkBhC,MAAM,cAAc,OAClB,MACA,YACoB;AACpB,QAAM,EAAE,aAAa,YAAY,KAAK,SAAS,YAAY,IAAI,IAAI;AAGnE,aAAW,aAAa,kBAAkB,IAAI,GAAG;AAE/C,QAAI,CAAC,UAAU;AAAW;AAG1B,QAAI,UAAU,qBAAqB,oBAAoB;AAAS;AAOhE,UAAM,MAAW,MAAM,cAAc,UAAU,WAAW;AAAA,MACxD,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBH,MAAM,IAAI,WAAmBA,MAAuC;AAElE,YAAI,gBAAgB,SAAS;AAAG,iBAAO;AAGvC,YAAI,MAAM,QAAQ,SAAS,MAAM,MAAM,QAAQA,KAAI,IAAI;AAAG,iBAAO;AAOjE,cAAM,OAAe,WAAW,GAAG,IAAI,MAAM,IAAI,WAAWA,IAAG,IAAI;AAGnE,YAAI,EAAE,QAAQ,KAAK,KAAK,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI,IAAI,KAAK;AAClE,gBAAM,IAAI,2BAA2B,MAAM,SAAS;AAAA,QACtD;AAEA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAGD,WAAO,KAAK;AAAA,MACV,UAAU;AAAA,MACV,UAAU,KAAK;AAAA,QACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,WAAW;AAAA;AAAA,QAE5D,UAAU,UAAU,WAAW,GAAG,IAC9B,UAAU,YACV,oBAAoB,UAAU,SAAS,IACvC,IAAI,OACJ,gBAAgB,UAAU,SAAS,IACnC,gBAAgB,KAAK,QAAQ,IAAI,IAAI,UAAU,CAAC,IAChD,oBAAoB,KAAK,MAAM;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAO,uBAAQ;",
5
+ "names": ["url"]
6
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @file findDynamicImports
3
+ * @module mlly/utils/findDynamicImports
4
+ */
5
+ import type { DynamicImport } from '../interfaces/index.mjs';
6
+ /**
7
+ * Finds all dynamic import statements in `code`. Ignores matches in comments.
8
+ *
9
+ * @see {@linkcode DynamicImport}
10
+ * @see https://regex101.com/r/PTPAvU
11
+ * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/import
12
+ *
13
+ * @param {string} [code=''] - Code to evaluate
14
+ * @return {DynamicImport[]} Dynamic import statement objects
15
+ * @throws {NodeError<TypeError>} If `code` is not a string
16
+ */
17
+ declare const findDynamicImports: (code?: string) => DynamicImport[];
18
+ export default findDynamicImports;
@@ -0,0 +1,39 @@
1
+ import {
2
+ SpecifierSyntaxKind,
3
+ StatementKind,
4
+ StatementSyntaxKind
5
+ } from "../enums/index.mjs";
6
+ import getSpecifierKind from "../internal/get-specifier-kind.mjs";
7
+ import validateString from "../internal/validate-string.mjs";
8
+ import { DYNAMIC_IMPORT_REGEX } from "@flex-development/import-regex";
9
+ const findDynamicImports = (code = "") => {
10
+ validateString(code, "code");
11
+ return [...code.matchAll(DYNAMIC_IMPORT_REGEX)].map((match) => {
12
+ const { 0: code2 = "", index: start = 0, groups = {} } = match;
13
+ const {
14
+ expression = "",
15
+ imports = "",
16
+ options = "",
17
+ specifier = ""
18
+ } = groups;
19
+ const specifier_syntax = /^["']/.test(specifier) ? SpecifierSyntaxKind.STATIC : SpecifierSyntaxKind.DYNAMIC;
20
+ return {
21
+ code: code2,
22
+ end: start + code2.length,
23
+ expression,
24
+ imports: imports === "" ? [] : imports.replace(/^{|}$/g, "").split(",").map((e) => e.trim()).filter((e) => e.length > 0),
25
+ kind: StatementKind.IMPORT,
26
+ options,
27
+ specifier: specifier.replace(/^["']|["']$/g, ""),
28
+ specifier_kind: specifier_syntax === SpecifierSyntaxKind.DYNAMIC ? null : getSpecifierKind(specifier),
29
+ specifier_syntax,
30
+ start,
31
+ syntax: StatementSyntaxKind.DYNAMIC
32
+ };
33
+ });
34
+ };
35
+ var find_dynamic_imports_default = findDynamicImports;
36
+ export {
37
+ find_dynamic_imports_default as default
38
+ };
39
+ //# sourceMappingURL=find-dynamic-imports.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/find-dynamic-imports.ts"],
4
+ "mappings": "AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAE3B,SAAS,4BAA4B;AAarC,MAAM,qBAAqB,CAAC,OAAe,OAAwB;AACjE,iBAAe,MAAM,MAAM;AAE3B,SAAO,CAAC,GAAG,KAAK,SAAS,oBAAoB,CAAC,EAAE,IAAI,WAAS;AAC3D,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI;AACxD,UAAM;AAAA,MACJ,aAAa;AAAA,MACb,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,IACd,IAAI;AAOJ,UAAM,mBAAwC,QAAQ,KAAK,SAAS,IAChE,oBAAoB,SACpB,oBAAoB;AAExB,WAAO;AAAA,MACL,MAAAA;AAAA,MACA,KAAK,QAAQA,MAAK;AAAA,MAClB;AAAA,MACA,SACE,YAAY,KACR,CAAC,IACD,QACG,QAAQ,UAAU,EAAE,EACpB,MAAM,GAAG,EACT,IAAI,OAAK,EAAE,KAAK,CAAC,EACjB,OAAO,OAAK,EAAE,SAAS,CAAC;AAAA,MACjC,MAAM,cAAc;AAAA,MACpB;AAAA,MACA,WAAW,UAAU,QAAQ,gBAAgB,EAAE;AAAA,MAC/C,gBACE,qBAAqB,oBAAoB,UACrC,OACA,iBAAiB,SAAS;AAAA,MAChC;AAAA,MACA;AAAA,MACA,QAAQ,oBAAoB;AAAA,IAC9B;AAAA,EACF,CAAC;AACH;AAEA,IAAO,+BAAQ;",
5
+ "names": ["code"]
6
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @file findExports
3
+ * @module mlly/utils/findExports
4
+ */
5
+ import type { ExportStatement } from '../interfaces/index.mjs';
6
+ /**
7
+ * Finds all export statements in `code`. Ignores matches in comments.
8
+ *
9
+ * @see {@linkcode ExportStatement}
10
+ * @see https://regex101.com/r/JtvRUt
11
+ * @see https://regex101.com/r/8HpMrA
12
+ * @see https://regex101.com/r/G7GhEt
13
+ * @see https://regex101.com/r/KQEDdZ
14
+ * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export
15
+ *
16
+ * @param {string} [code=''] - Code to evaluate
17
+ * @return {ExportStatement[]} Export statement objects
18
+ * @throws {NodeError<TypeError>} If `code` is not a string
19
+ */
20
+ declare const findExports: (code?: string) => ExportStatement[];
21
+ export default findExports;