@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,27 @@
1
+ /**
2
+ * @file Internal - validateBoolean
3
+ * @module mlly/internal/validateBoolean
4
+ */
5
+
6
+ import { ERR_INVALID_ARG_TYPE, type NodeError } from '@flex-development/errnode'
7
+
8
+ /**
9
+ * Checks if given `value` is a boolean.
10
+ *
11
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is not a boolean.
12
+ *
13
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
14
+ *
15
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
16
+ *
17
+ * @param {unknown} value - Value supplied by user
18
+ * @param {string} name - Name of invalid argument or property
19
+ * @return {value is boolean} `true` if `value` is a boolean
20
+ * @throws {NodeError<TypeError>} If `value` is not a boolean
21
+ */
22
+ const validateBoolean = (value: unknown, name: string): value is boolean => {
23
+ if (typeof value === 'boolean') return true
24
+ throw new ERR_INVALID_ARG_TYPE(name, 'boolean', value)
25
+ }
26
+
27
+ export default validateBoolean
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @file Internal - validateObject
3
+ * @module mlly/internal/validateObject
4
+ */
5
+
6
+ import { ERR_INVALID_ARG_TYPE, type NodeError } from '@flex-development/errnode'
7
+ import type { ObjectPlain } from '@flex-development/tutils'
8
+
9
+ /**
10
+ * Checks if given `value` is an object.
11
+ *
12
+ * **Note**: Array values are not considered objects.
13
+ *
14
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is not an object.
15
+ *
16
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
17
+ *
18
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
19
+ *
20
+ * @param {unknown} value - Value supplied by user
21
+ * @param {string} name - Name of invalid argument or property
22
+ * @return {value is ObjectPlain} `true` if `value` is an object
23
+ * @throws {NodeError<TypeError>} If `value` is not an object
24
+ */
25
+ const validateObject = (value: unknown, name: string): value is ObjectPlain => {
26
+ if (typeof value === 'object' && value && !Array.isArray(value)) return true
27
+ throw new ERR_INVALID_ARG_TYPE(name, 'object', value)
28
+ }
29
+
30
+ export default validateObject
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @file Internal - validateSet
3
+ * @module mlly/internal/validateSet
4
+ */
5
+
6
+ import { ERR_INVALID_ARG_TYPE, type NodeError } from '@flex-development/errnode'
7
+
8
+ /**
9
+ * Checks if given `value` is an instance of {@linkcode Set}.
10
+ *
11
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is not a {@linkcode Set}
12
+ * instance.
13
+ *
14
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
15
+ *
16
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
17
+ *
18
+ * @template T - Item type(s)
19
+ *
20
+ * @param {unknown} value - Value supplied by user
21
+ * @param {string} name - Name of invalid argument or property
22
+ * @return {value is Set} `true` if `value` is instance of {@linkcode Set}
23
+ * @throws {NodeError<TypeError>} If `value` is an instance of {@linkcode Set}
24
+ */
25
+ function validateSet<T = unknown>(
26
+ value: unknown,
27
+ name: string
28
+ ): value is Set<T> {
29
+ if (value instanceof Set) return true
30
+ throw new ERR_INVALID_ARG_TYPE(name, ['Set'], value)
31
+ }
32
+
33
+ export default validateSet
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file Internal - validateString
3
+ * @module mlly/internal/validateString
4
+ */
5
+
6
+ import { ERR_INVALID_ARG_TYPE, type NodeError } from '@flex-development/errnode'
7
+
8
+ /**
9
+ * Checks if given `value` is a string.
10
+ *
11
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is not a string.
12
+ *
13
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
14
+ *
15
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
16
+ *
17
+ * @param {unknown} value - Value supplied by user
18
+ * @param {string} name - Name of invalid argument or property
19
+ * @return {value is string} `true` if `value` is a string
20
+ * @throws {NodeError<TypeError>} If `value` is not a string
21
+ */
22
+ const validateString = (value: unknown, name: string): value is string => {
23
+ if (typeof value === 'string') return true
24
+ throw new ERR_INVALID_ARG_TYPE(name, 'string', value)
25
+ }
26
+
27
+ export default validateString
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @file Internal - validateURLString
3
+ * @module mlly/internal/validateURLString
4
+ */
5
+
6
+ import { ERR_INVALID_ARG_TYPE, type NodeError } from '@flex-development/errnode'
7
+ import { URL } from 'node:url'
8
+
9
+ /**
10
+ * Checks if given `value` is an instance of {@linkcode URL} or a string.
11
+ *
12
+ * Throws [`ERR_INVALID_ARG_TYPE`][1] if the `value` is of neither type.
13
+ *
14
+ * [1]: https://nodejs.org/api/errors.html#err_invalid_arg_value
15
+ *
16
+ * @see {@linkcode ERR_INVALID_ARG_TYPE}
17
+ *
18
+ * @param {unknown} value - Value supplied by user
19
+ * @param {string} name - Name of invalid argument or property
20
+ * @return {value is URL | string} `true` if `value` is `URL` instance or string
21
+ * @throws {NodeError<TypeError>} If `value` is not `URL` instance or string
22
+ */
23
+ const validateURLString = (
24
+ value: unknown,
25
+ name: string
26
+ ): value is URL | string => {
27
+ if (value instanceof URL || typeof value === 'string') return true
28
+ throw new ERR_INVALID_ARG_TYPE(name, ['URL', 'string'], value)
29
+ }
30
+
31
+ export default validateURLString
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Type Definitions - Declaration
3
+ * @module mlly/types/Declaration
4
+ */
5
+
6
+ /**
7
+ * Export declaration kinds.
8
+ */
9
+ type Declaration =
10
+ | 'class'
11
+ | 'const enum'
12
+ | 'const'
13
+ | 'enum'
14
+ | 'function'
15
+ | 'function*'
16
+ | 'interface'
17
+ | 'let'
18
+ | 'namespace'
19
+ | 'type'
20
+ | 'var'
21
+
22
+ export type { Declaration as default }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @file Type Definitions - ChangeExtFn
3
+ * @module mlly/types/ChangeExtFn
4
+ */
5
+
6
+ import type { Nilable } from '@flex-development/tutils'
7
+ import type { URL } from 'node:url'
8
+
9
+ /**
10
+ * Function that returns a new file extension for the given module `specifier`.
11
+ *
12
+ * Returning an empty string (`''`) will remove the original file extension;
13
+ * returning `null` or `undefined` will skip extension replacement.
14
+ *
15
+ * ::: info
16
+ * The new file extension need not begin with a dot character (`'.'`).
17
+ * :::
18
+ *
19
+ * @see {@linkcode URL}
20
+ * @see https://github.com/flex-development/pathe/tree/1.0.3#changeextpath-string-ext-nullablestring-string
21
+ *
22
+ * @template Ext - File extension type(s)
23
+ *
24
+ * @param {string} specifier - Original module specifier
25
+ * @param {URL} url - Resolved module URL
26
+ * @return {Ext | PromiseLike<Ext>} New file extension, `null`, or `undefined`
27
+ */
28
+ type ChangeExtFn<Ext extends Nilable<string> = Nilable<string>> = (
29
+ specifier: string,
30
+ url: URL
31
+ ) => Ext | PromiseLike<Ext>
32
+
33
+ export type { ChangeExtFn as default }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file Type Definitions
3
+ * @module mlly/types
4
+ */
5
+
6
+ export type { default as Declaration } from './declaration'
7
+ export type { default as ChangeExtFn } from './fn-change-ext'
8
+ export type { default as MimeType } from './mime-type'
9
+ export type { default as ModuleId } from './module-id'
10
+ export type { default as ModuleSpecifierType } from './module-specifier-type'
11
+ export type { default as Protocol } from './protocol'
12
+ export type { default as SyntaxKindExport } from './syntax-kind-export'
13
+ export type { default as SyntaxKindImport } from './syntax-kind-import'
14
+ export type { default as SyntaxKindRequire } from './syntax-kind-require'
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @file Type Definitions - MimeType
3
+ * @module mlly/types/MimeType
4
+ */
5
+
6
+ /**
7
+ * Supported [MIME types][1].
8
+ *
9
+ * [1]: https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types
10
+ *
11
+ * @see https://nodejs.org/api/esm.html#esm_data_imports
12
+ */
13
+ type MimeType =
14
+ | 'application/json'
15
+ | 'application/typescript'
16
+ | 'application/wasm'
17
+ | 'text/javascript'
18
+
19
+ export type { MimeType as default }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file Type Definitions - ModuleId
3
+ * @module mlly/types/ModuleId
4
+ */
5
+
6
+ import type { URL } from 'node:url'
7
+
8
+ /**
9
+ * ECMAScript (ES) module identifier.
10
+ *
11
+ * @see {@linkcode URL}
12
+ */
13
+ type ModuleId = URL | string
14
+
15
+ export type { ModuleId as default }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file Type Definitions - ModuleSpecifierType
3
+ * @module mlly/types/ModuleSpecifierType
4
+ */
5
+
6
+ /**
7
+ * Module specifier types.
8
+ *
9
+ * @see https://nodejs.org/api/esm.html#terminology
10
+ */
11
+ type ModuleSpecifierType = 'absolute' | 'bare' | 'relative'
12
+
13
+ export type { ModuleSpecifierType as default }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @file Type Definitions - Protocol
3
+ * @module mlly/types/Protocol
4
+ */
5
+
6
+ import type { LiteralUnion } from '@flex-development/tutils'
7
+
8
+ /**
9
+ * URL protocols.
10
+ *
11
+ * @see https://nodejs.org/api/url.html#urlprotocol
12
+ * @see https://iana.org/assignments/uri-schemes/uri-schemes.xhtml
13
+ * @see https://url.spec.whatwg.org/#special-scheme
14
+ */
15
+ type Protocol = LiteralUnion<
16
+ `${
17
+ | 'blob'
18
+ | 'content'
19
+ | 'cvs'
20
+ | 'data'
21
+ | 'dns'
22
+ | 'file'
23
+ | 'fish'
24
+ | 'ftp'
25
+ | 'git'
26
+ | 'http'
27
+ | 'https'
28
+ | 'mvn'
29
+ | 'redis'
30
+ | 'sftp'
31
+ | 'ssh'
32
+ | 'svn'
33
+ | 'urn'
34
+ | 'view-source'
35
+ | 'ws'
36
+ | 'wss'}:`,
37
+ `${string}:`
38
+ >
39
+
40
+ export type { Protocol as default }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindExport
3
+ * @module mlly/types/SyntaxKindExport
4
+ */
5
+
6
+ import type { StatementSyntaxKind } from '#src/enums'
7
+
8
+ /**
9
+ * `export` statement syntax kinds.
10
+ *
11
+ * @see {@linkcode StatementSyntaxKind}
12
+ */
13
+ type SyntaxKindExport =
14
+ | StatementSyntaxKind.DECLARATION
15
+ | StatementSyntaxKind.DEFAULT
16
+ | StatementSyntaxKind.LIST
17
+ | StatementSyntaxKind.NAMED
18
+ | StatementSyntaxKind.NAMESPACE
19
+
20
+ export type { SyntaxKindExport as default }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindImport
3
+ * @module mlly/types/SyntaxKindImport
4
+ */
5
+
6
+ import type { StatementSyntaxKind } from '#src/enums'
7
+
8
+ /**
9
+ * `import` statement syntax kinds.
10
+ *
11
+ * @see {@linkcode StatementSyntaxKind}
12
+ */
13
+ type SyntaxKindImport =
14
+ | StatementSyntaxKind.DEFAULT
15
+ | StatementSyntaxKind.DEFAULT_WITH_NAMED
16
+ | StatementSyntaxKind.DEFAULT_WITH_NAMESPACE
17
+ | StatementSyntaxKind.DYNAMIC
18
+ | StatementSyntaxKind.NAMED
19
+ | StatementSyntaxKind.NAMESPACE
20
+ | StatementSyntaxKind.SIDE_EFFECT
21
+
22
+ export type { SyntaxKindImport as default }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file Type Definitions - SyntaxKindRequire
3
+ * @module mlly/types/SyntaxKindRequire
4
+ */
5
+
6
+ import type { StatementSyntaxKind } from '#src/enums'
7
+
8
+ /**
9
+ * `require` statement syntax kinds.
10
+ *
11
+ * @see {@linkcode StatementSyntaxKind}
12
+ */
13
+ type SyntaxKindRequire = StatementSyntaxKind.REQUIRE
14
+
15
+ export type { SyntaxKindRequire as default }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @file compareSubpaths
3
+ * @module mlly/utils/compareSubpaths
4
+ */
5
+
6
+ import validateString from '#src/internal/validate-string'
7
+ import type { NodeError } from '@flex-development/errnode'
8
+ import { CompareResult } from '@flex-development/tutils'
9
+ import assert from 'node:assert'
10
+ import PATTERN_CHARACTER from './pattern-character'
11
+
12
+ /**
13
+ * Returns a number indicating if a subpath pattern is equal to, greater than,
14
+ * or less than another subpath pattern.
15
+ *
16
+ * - `-1`: `subpath2` is less than `subpath1`
17
+ * - `0`: `subpath2` is equal to `subpath1`
18
+ * - `1`: `subpath2` is greater than `subpath1`
19
+ *
20
+ * Implements the `PATTERN_KEY_COMPARE` algorithm.
21
+ *
22
+ * @see https://nodejs.org/api/esm.html#resolution-algorithm
23
+ *
24
+ * @param {string} subpath1 - Subpath to be compared
25
+ * @param {string} subpath2 - Subpath to compare `subpath1` to
26
+ * @return {CompareResult} Comparsion result
27
+ * @throws {NodeError<Error | TypeError>} If either either subpath contains more
28
+ * than pattern character (`'*'`) or is not a string
29
+ */
30
+ const compareSubpaths = (subpath1: string, subpath2: string): CompareResult => {
31
+ validateString(subpath1, 'subpath1')
32
+ validateString(subpath2, 'subpath2')
33
+
34
+ /**
35
+ * Index of {@linkcode pattern_char} in {@linkcode subpath1}.
36
+ *
37
+ * @const {number} pattern1
38
+ */
39
+ let pattern1: number = -1
40
+
41
+ /**
42
+ * Index of {@linkcode pattern_char} in {@linkcode subpath2}.
43
+ *
44
+ * @const {number} pattern2
45
+ */
46
+ let pattern2: number = -1
47
+
48
+ // ensure subpaths contain a single '*'
49
+ for (const [index, subpath] of [subpath1, subpath2].entries()) {
50
+ /**
51
+ * Error message thrown if {@linkcode subpath} contains more than one `'*'`.
52
+ *
53
+ * @const {string} message
54
+ */
55
+ const message: string = `'${subpath}' is expected to contain a single '*'`
56
+
57
+ /**
58
+ * Index of {@linkcode PATTERN_CHARACTER} in {@linkcode subpath}.
59
+ *
60
+ * @const {number} pattern
61
+ */
62
+ const pattern_index: number = subpath.indexOf(PATTERN_CHARACTER)
63
+
64
+ // ensure respective subpath contains no more than one '*'
65
+ assert(pattern_index === subpath.lastIndexOf(PATTERN_CHARACTER), message)
66
+
67
+ // set index of pattern character in respective subpath
68
+ index === 0 ? (pattern1 = pattern_index) : (pattern2 = pattern_index)
69
+ }
70
+
71
+ /**
72
+ * Base length of {@linkcode subpath1}.
73
+ *
74
+ * @const {number} length1
75
+ */
76
+ const length1: number = pattern1 === -1 ? subpath1.length : pattern1 + 1
77
+
78
+ /**
79
+ * Base length of {@linkcode subpath2}.
80
+ *
81
+ * @const {number} length2
82
+ */
83
+ const length2: number = pattern2 === -1 ? subpath2.length : pattern2 + 1
84
+
85
+ return length1 > length2
86
+ ? CompareResult.LESS_THAN
87
+ : length2 > length1
88
+ ? CompareResult.GREATER_THAN
89
+ : pattern1 === -1
90
+ ? CompareResult.GREATER_THAN
91
+ : pattern2 === -1
92
+ ? CompareResult.LESS_THAN
93
+ : subpath1.length > subpath2.length
94
+ ? CompareResult.LESS_THAN
95
+ : subpath2.length > subpath1.length
96
+ ? CompareResult.GREATER_THAN
97
+ : CompareResult.EQUAL
98
+ }
99
+
100
+ export default compareSubpaths
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file CONDITIONS
3
+ * @module mlly/utils/CONDITIONS
4
+ */
5
+
6
+ /**
7
+ * Default export conditions.
8
+ *
9
+ * @see https://nodejs.org/api/packages.html#conditional-exports
10
+ *
11
+ * @const {Set<string>} CONDITIONS
12
+ */
13
+ const CONDITIONS: Set<string> = new Set(['node', 'import'])
14
+
15
+ export default CONDITIONS
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @file detectSyntax
3
+ * @module mlly/utils/detectSyntax
4
+ */
5
+
6
+ import hasCJSSyntax from './has-cjs-syntax'
7
+ import hasESMSyntax from './has-esm-syntax'
8
+
9
+ /**
10
+ * Detects if `code` contains CommonJS syntax, ESM syntax, or a mixture of both.
11
+ *
12
+ * Ignores matches in comments.
13
+ *
14
+ * @see {@linkcode hasCJSSyntax}
15
+ * @see {@linkcode hasESMSyntax}
16
+ *
17
+ * @param {string} code - Code to evaluate
18
+ * @return {{ cjs: boolean; esm: boolean; mixed: boolean }} Detection result
19
+ */
20
+ const detectSyntax = (
21
+ code: string
22
+ ): { cjs: boolean; esm: boolean; mixed: boolean } => {
23
+ /**
24
+ * CommonJS syntax check.
25
+ *
26
+ * @const {boolean} cjs
27
+ */
28
+ const cjs: boolean = hasCJSSyntax(code)
29
+
30
+ /**
31
+ * ESM syntax check.
32
+ *
33
+ * @const {boolean} esm
34
+ */
35
+ const esm: boolean = hasESMSyntax(code)
36
+
37
+ return { cjs, esm, mixed: cjs && esm }
38
+ }
39
+
40
+ export default detectSyntax
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @file EXTENSION_FORMAT_MAP
3
+ * @module mlly/utils/EXTENSION_FORMAT_MAP
4
+ */
5
+
6
+ import { Format } from '#src/enums'
7
+ import type { Ext } from '@flex-development/pathe'
8
+
9
+ /**
10
+ * Default file extension to module formats map.
11
+ *
12
+ * @see {@linkcode Ext}
13
+ * @see {@linkcode Format}
14
+ *
15
+ * @const {Map<Ext, Format>} EXTENSION_FORMAT_MAP
16
+ */
17
+ const EXTENSION_FORMAT_MAP: Map<Ext, Format> = new Map<Ext, Format>([
18
+ ['.cjs', Format.COMMONJS],
19
+ ['.cts', Format.COMMONJS],
20
+ ['.d.cts', Format.COMMONJS],
21
+ ['.d.mts', Format.MODULE],
22
+ ['.d.ts', Format.MODULE],
23
+ ['.js', Format.MODULE],
24
+ ['.json', Format.JSON],
25
+ ['.jsx', Format.MODULE],
26
+ ['.mjs', Format.MODULE],
27
+ ['.mts', Format.MODULE],
28
+ ['.node', Format.COMMONJS],
29
+ ['.ts', Format.MODULE],
30
+ ['.tsx', Format.MODULE],
31
+ ['.wasm', Format.WASM]
32
+ ])
33
+
34
+ export default EXTENSION_FORMAT_MAP
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @file extractStatements
3
+ * @module mlly/utils/extractStatements
4
+ */
5
+
6
+ import type { Statement } from '#src/interfaces'
7
+ import validateString from '#src/internal/validate-string'
8
+ import type { NodeError } from '@flex-development/errnode'
9
+ import findDynamicImports from './find-dynamic-imports'
10
+ import findExports from './find-exports'
11
+ import findRequires from './find-requires'
12
+ import findStaticImports from './find-static-imports'
13
+
14
+ /**
15
+ * Finds all `export`, `import`, and/or `require` statements in `code`.
16
+ *
17
+ * Ignores matches in comments.
18
+ *
19
+ * @see {@linkcode findDynamicImports}
20
+ * @see {@linkcode findExports}
21
+ * @see {@linkcode findRequires}
22
+ * @see {@linkcode findStaticImports}
23
+ *
24
+ * @param {string} [code=''] - Code to evaluate
25
+ * @return {Statement[]} Extracted statements
26
+ * @throws {NodeError<TypeError>} If `code` is not a string
27
+ */
28
+ const extractStatements = (code: string = ''): Statement[] => {
29
+ validateString(code, 'code')
30
+
31
+ // code shorter than first shortest keyword => no possible matches
32
+ if (code.trim().length < 'export'.length) return []
33
+
34
+ return [
35
+ ...findDynamicImports(code),
36
+ ...findExports(code),
37
+ ...findRequires(code),
38
+ ...findStaticImports(code)
39
+ ]
40
+ }
41
+
42
+ export default extractStatements