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