@flex-development/mlly 1.0.0-alpha.1 → 1.0.0-alpha.10

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 +412 -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 +63 -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 +121 -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
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @file toAbsoluteSpecifier
3
- * @module mlly/lib/toAbsoluteSpecifier
3
+ * @module mlly/utils/toAbsoluteSpecifier
4
4
  */
5
- import { URL } from 'node:url';
5
+ import type { ModuleId } from '../types/index.mjs';
6
6
  /**
7
7
  * Converts `specifier` into an absolute specifier.
8
8
  *
@@ -11,12 +11,12 @@ import { URL } from 'node:url';
11
11
  * includes a file extension.
12
12
  * :::
13
13
  *
14
- * @see {@link URL}
14
+ * @see {@linkcode ModuleId}
15
15
  * @see https://nodejs.org/api/esm.html#terminology
16
16
  *
17
- * @param {URL | string} specifier - Module specifier to convert
18
- * @param {URL | string} [cwd=process.cwd()] - Current working directory
17
+ * @param {ModuleId} specifier - Module specifier to convert
18
+ * @param {ModuleId} [cwd=pathToFileURL('./')] - Current working directory
19
19
  * @return {string} `specifier` as absolute specifier (file url)
20
20
  */
21
- declare const toAbsoluteSpecifier: (specifier: URL | string, cwd?: URL | string) => string;
21
+ declare const toAbsoluteSpecifier: (specifier: ModuleId, cwd?: ModuleId) => string;
22
22
  export default toAbsoluteSpecifier;
@@ -0,0 +1,8 @@
1
+ import { pathToFileURL } from "node:url";
2
+ import toURL from "./to-url.mjs";
3
+ const toAbsoluteSpecifier = (specifier, cwd = pathToFileURL("./")) => toURL(specifier, cwd).href;
4
+ var to_absolute_specifier_default = toAbsoluteSpecifier;
5
+ export {
6
+ to_absolute_specifier_default as default
7
+ };
8
+ //# sourceMappingURL=to-absolute-specifier.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-absolute-specifier.ts"],
4
+ "mappings": "AAMA,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAiBlB,MAAM,sBAAsB,CAC1B,WACA,MAAgB,cAAc,IAAI,MACvB,MAAM,WAAW,GAAG,EAAE;AAEnC,IAAO,gCAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @file toBareSpecifier
3
+ * @module mlly/utils/toBareSpecifier
4
+ */
5
+ import type { ModuleId } from '../types/index.mjs';
6
+ /**
7
+ * Converts the given module `specifier` into a bare specifier.
8
+ *
9
+ * The new specifier is **not** guaranteed to resolve to an existing module, nor
10
+ * is it guaranteed to have a file extension, but it *is* guaranteed to be a
11
+ * package path containing a valid [subpath export][1] if the specifier's parent
12
+ * package uses package [`exports`][2]. If the parent package does not use
13
+ * `exports`, the new specifier is only guaranteed to begin with a valid NPM
14
+ * package name or Node.js [builtin module][3] name.
15
+ *
16
+ * The given module `specifier` should be absolute, syntactically bare (i.e. not
17
+ * begin with `'/'` or `'.'`), or relative to the current working directory
18
+ * (e.g. `'./dist/index.mjs'`).
19
+ *
20
+ * ::: warning
21
+ * Internal specifier (i.e. [subpath import][4]; `'#src'`, `'#src/utils'`)
22
+ * conversion is not supported. Converting *_to_* an internal specifier will be
23
+ * supported in the future.
24
+ * :::
25
+ *
26
+ * [1]: https://nodejs.org/api/packages.html#subpath-exports
27
+ * [2]: https://nodejs.org/api/packages.html#exports
28
+ * [3]: https://nodejs.org/api/module.html#modulebuiltinmodules
29
+ * [4]: https://nodejs.org/api/packages.html#subpath-imports
30
+ *
31
+ * @see {@linkcode CONDITIONS}
32
+ * @see {@linkcode ModuleId}
33
+ * @see https://nodejs.org/api/esm.html#terminology
34
+ *
35
+ * @param {ModuleId} specifier - Module specifier to convert
36
+ * @param {ModuleId} parent - URL of module to resolve from
37
+ * @param {Set<string>?} [conditions=CONDITIONS] - Export conditions
38
+ * @return {string} `specifier` as bare specifier
39
+ * @throws {NodeError}
40
+ */
41
+ declare const toBareSpecifier: (specifier: ModuleId, parent: ModuleId, conditions?: Set<string>) => string;
42
+ export default toBareSpecifier;
@@ -0,0 +1,90 @@
1
+ import regexp from "../internal/escape-reg-exp.mjs";
2
+ import validateURLString from "../internal/validate-url-string.mjs";
3
+ import {
4
+ ERR_OPERATION_FAILED,
5
+ ERR_PACKAGE_PATH_NOT_EXPORTED,
6
+ ErrorCode
7
+ } from "@flex-development/errnode";
8
+ import { isBuiltin } from "@flex-development/is-builtin";
9
+ import pathe from "@flex-development/pathe";
10
+ import { isNIL } from "@flex-development/tutils";
11
+ import { URL, fileURLToPath, pathToFileURL } from "node:url";
12
+ import CONDITIONS from "./conditions.mjs";
13
+ import findSubpath from "./find-subpath.mjs";
14
+ import isAbsoluteSpecifier from "./is-absolute-specifier.mjs";
15
+ import isRelativeSpecifier from "./is-relative-specifier.mjs";
16
+ import lookupPackageScope from "./lookup-package-scope.mjs";
17
+ import parseModuleId from "./parse-module-id.mjs";
18
+ import parseSubpath from "./parse-subpath.mjs";
19
+ import PATTERN_CHARACTER from "./pattern-character.mjs";
20
+ import toAbsoluteSpecifier from "./to-absolute-specifier.mjs";
21
+ import toNodeURL from "./to-node-url.mjs";
22
+ import toURL from "./to-url.mjs";
23
+ const toBareSpecifier = (specifier, parent, conditions = CONDITIONS) => {
24
+ validateURLString(specifier, "specifier");
25
+ validateURLString(parent, "parent");
26
+ if (specifier instanceof URL)
27
+ specifier = specifier.href;
28
+ if (isBuiltin(specifier))
29
+ return toNodeURL(specifier);
30
+ if (specifier.startsWith("file:"))
31
+ specifier = fileURLToPath(specifier);
32
+ if (isRelativeSpecifier(specifier)) {
33
+ specifier = fileURLToPath(toAbsoluteSpecifier(specifier));
34
+ }
35
+ const url = toURL(
36
+ isAbsoluteSpecifier(specifier) || specifier.startsWith("node_modules") ? specifier : `node_modules/${specifier}`
37
+ );
38
+ const scope = lookupPackageScope(
39
+ url,
40
+ pathToFileURL(".")
41
+ );
42
+ if (!scope) {
43
+ throw new ERR_OPERATION_FAILED(`Package scope for '${specifier}' not found`);
44
+ }
45
+ const { dir: pkgdir, pkgjson } = scope;
46
+ const { exports, main, name = "", types } = pkgjson;
47
+ specifier = url.pathname.includes(name) ? name + url.pathname.replace(new RegExp(`.*?${regexp(name)}`), "") : name + specifier.replace(fileURLToPath(pkgdir.replace(/\/$/, "")), "");
48
+ const id = parseModuleId(specifier, {
49
+ internal: false,
50
+ parent,
51
+ pkgname: true
52
+ });
53
+ if (isNIL(exports)) {
54
+ return [main, types].some((ep) => ep === id.path || ep === id.path.slice(2)) ? id.pkg : specifier;
55
+ }
56
+ try {
57
+ parseSubpath(specifier, exports, { dir: pkgdir, parent });
58
+ } catch (e) {
59
+ if (e.code === ErrorCode.ERR_PACKAGE_PATH_NOT_EXPORTED) {
60
+ const target = specifier.replace(name, ".");
61
+ let subpath = findSubpath(target, exports, {
62
+ conditions,
63
+ dir: pkgdir,
64
+ parent
65
+ });
66
+ if (subpath === null) {
67
+ throw new ERR_PACKAGE_PATH_NOT_EXPORTED(
68
+ fileURLToPath(pkgdir),
69
+ id.path,
70
+ fileURLToPath(parent)
71
+ );
72
+ }
73
+ if (subpath.includes(PATTERN_CHARACTER)) {
74
+ subpath = subpath.slice(0, subpath.indexOf(PATTERN_CHARACTER)).slice(1);
75
+ subpath = "." + target.slice(target.indexOf(subpath));
76
+ }
77
+ if (pathe.extname(target) === pathe.extname(subpath)) {
78
+ subpath = pathe.changeExt(subpath, "");
79
+ }
80
+ return name + subpath.slice(1);
81
+ }
82
+ throw e;
83
+ }
84
+ return specifier;
85
+ };
86
+ var to_bare_specifier_default = toBareSpecifier;
87
+ export {
88
+ to_bare_specifier_default as default
89
+ };
90
+ //# sourceMappingURL=to-bare-specifier.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-bare-specifier.ts"],
4
+ "mappings": "AAMA,OAAO,YAAY;AACnB,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,iBAAiB;AAC1B,OAAO,WAAW;AAClB,SAAS,aAA4B;AACrC,SAAS,KAAK,eAAe,qBAAqB;AAClD,OAAO,gBAAgB;AACvB,OAAO,iBAAiB;AACxB,OAAO,yBAAyB;AAChC,OAAO,yBAAyB;AAChC,OAAO,wBAAwB;AAC/B,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAC9B,OAAO,yBAAyB;AAChC,OAAO,eAAe;AACtB,OAAO,WAAW;AAqClB,MAAM,kBAAkB,CACtB,WACA,QACA,aAA0B,eACf;AACX,oBAAkB,WAAW,WAAW;AACxC,oBAAkB,QAAQ,QAAQ;AAGlC,MAAI,qBAAqB;AAAK,gBAAY,UAAU;AAGpD,MAAI,UAAU,SAAS;AAAG,WAAO,UAAU,SAAS;AAGpD,MAAI,UAAU,WAAW,OAAO;AAAG,gBAAY,cAAc,SAAS;AAGtE,MAAI,oBAAoB,SAAS,GAAG;AAClC,gBAAY,cAAc,oBAAoB,SAAS,CAAC;AAAA,EAC1D;AAOA,QAAM,MAAW;AAAA,IACf,oBAAoB,SAAS,KAAK,UAAU,WAAW,cAAc,IACjE,YACA,gBAAgB;AAAA,EACtB;AAOA,QAAM,QAAgC;AAAA,IACpC;AAAA,IACA,cAAc,GAAG;AAAA,EACnB;AAGA,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,qBAAqB,sBAAsB,sBAAsB;AAAA,EAC7E;AAGA,QAAM,EAAE,KAAK,QAAQ,QAAQ,IAAI;AAGjC,QAAM,EAAE,SAAS,MAAM,OAAO,IAAI,MAAM,IAAI;AAG5C,cAAY,IAAI,SAAS,SAAS,IAAI,IAClC,OAAO,IAAI,SAAS,QAAQ,IAAI,OAAO,MAAM,OAAO,IAAI,GAAG,GAAG,EAAE,IAChE,OAAO,UAAU,QAAQ,cAAc,OAAO,QAAQ,OAAO,EAAE,CAAC,GAAG,EAAE;AASzE,QAAM,KAAqB,cAAc,WAAW;AAAA,IAClD,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAGD,MAAI,MAAM,OAAO,GAAG;AAClB,WAAO,CAAC,MAAM,KAAK,EAAE,KAAK,QAAM,OAAO,GAAG,QAAQ,OAAO,GAAG,KAAK,MAAM,CAAC,CAAC,IACrE,GAAG,MACH;AAAA,EACN;AAGA,MAAI;AACF,iBAAa,WAAW,SAAS,EAAE,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1D,SAAS,GAAP;AAEA,QAAK,EAAgB,SAAS,UAAU,+BAA+B;AAMrE,YAAM,SAAiB,UAAU,QAAQ,MAAM,GAAG;AAQlD,UAAI,UAA4B,YAAY,QAAQ,SAAS;AAAA,QAC3D;AAAA,QACA,KAAK;AAAA,QACL;AAAA,MACF,CAAC;AAGD,UAAI,YAAY,MAAM;AACpB,cAAM,IAAI;AAAA,UACR,cAAc,MAAM;AAAA,UACpB,GAAG;AAAA,UACH,cAAc,MAAM;AAAA,QACtB;AAAA,MACF;AAGA,UAAI,QAAQ,SAAS,iBAAiB,GAAG;AACvC,kBAAU,QAAQ,MAAM,GAAG,QAAQ,QAAQ,iBAAiB,CAAC,EAAE,MAAM,CAAC;AACtE,kBAAU,MAAM,OAAO,MAAM,OAAO,QAAQ,OAAO,CAAC;AAAA,MACtD;AAIA,UAAI,MAAM,QAAQ,MAAM,MAAM,MAAM,QAAQ,OAAO,GAAG;AACpD,kBAAU,MAAM,UAAU,SAAS,EAAE;AAAA,MACvC;AAEA,aAAO,OAAO,QAAQ,MAAM,CAAC;AAAA,IAC/B;AAEA,UAAM;AAAA,EACR;AAEA,SAAO;AACT;AAEA,IAAO,4BAAQ;",
5
+ "names": []
6
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @file toDataURL
3
- * @module mlly/lib/toDataURL
3
+ * @module mlly/utils/toDataURL
4
4
  */
5
- import type { MIMEType } from '../types/index.mjs';
5
+ import type { MimeType } from '../types/index.mjs';
6
6
  /**
7
7
  * Converts `code` into a [`data:` URL][1] using `base64` encoding.
8
8
  *
@@ -18,12 +18,13 @@ import type { MIMEType } from '../types/index.mjs';
18
18
  * [2]: https://nodejs.org/api/esm.html#terminology
19
19
  * [3]: {@link ./resolve-modules.ts}
20
20
  *
21
- * @see {@link MIMEType}
21
+ * @see {@linkcode MimeType}
22
22
  * @see https://nodejs.org/api/esm.html#esm_data_imports
23
23
  *
24
24
  * @param {string} code - Code to convert
25
- * @param {MIMEType} [mime='text/javascript'] - MIME type
25
+ * @param {MimeType} [mime='text/javascript'] - MIME type
26
26
  * @return {string} `code` as `data:` URL
27
+ * @throws {NodeError<TypeError>} If `code` or `mime` is not a string
27
28
  */
28
- declare const toDataURL: (code: string, mime?: MIMEType) => string;
29
+ declare const toDataURL: (code: string, mime?: MimeType) => string;
29
30
  export default toDataURL;
@@ -1,7 +1,11 @@
1
+ import validateString from "../internal/validate-string.mjs";
1
2
  const toDataURL = (code, mime = "text/javascript") => {
3
+ validateString(code, "code");
4
+ validateString(mime, "mime");
2
5
  return `data:${mime};base64,${Buffer.from(code).toString("base64")}`;
3
6
  };
4
7
  var to_data_url_default = toDataURL;
5
8
  export {
6
9
  to_data_url_default as default
7
10
  };
11
+ //# sourceMappingURL=to-data-url.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-data-url.ts"],
4
+ "mappings": "AAKA,OAAO,oBAAoB;AA2B3B,MAAM,YAAY,CAChB,MACA,OAAiB,sBACN;AACX,iBAAe,MAAM,MAAM;AAC3B,iBAAe,MAAM,MAAM;AAC3B,SAAO,QAAQ,eAAe,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AACnE;AAEA,IAAO,sBAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @file toNodeURL
3
+ * @module mlly/utils/toNodeURL
4
+ */
5
+ /**
6
+ * Converts the given module `specifier` to a `node:` URL.
7
+ *
8
+ * ::: warning
9
+ * Does not guarantee the new specifier is an existing Node.js builtin module.
10
+ * :::
11
+ *
12
+ * @see https://nodejs.org/api/esm.html#node-imports
13
+ *
14
+ * @param {string} specifier - Module specifier to convert
15
+ * @return {string} `specifier` as `node:` URL
16
+ * @throws {NodeError<TypeError>} If `specifier` is not a string
17
+ */
18
+ declare const toNodeURL: (specifier: string) => string;
19
+ export default toNodeURL;
@@ -0,0 +1,10 @@
1
+ import validateString from "../internal/validate-string.mjs";
2
+ const toNodeURL = (specifier) => {
3
+ validateString(specifier, "specifier");
4
+ return specifier.startsWith("node:") ? specifier : `node:${specifier}`;
5
+ };
6
+ var to_node_url_default = toNodeURL;
7
+ export {
8
+ to_node_url_default as default
9
+ };
10
+ //# sourceMappingURL=to-node-url.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-node-url.ts"],
4
+ "mappings": "AAKA,OAAO,oBAAoB;AAgB3B,MAAM,YAAY,CAAC,cAA8B;AAC/C,iBAAe,WAAW,WAAW;AACrC,SAAO,UAAU,WAAW,OAAO,IAAI,YAAY,QAAQ;AAC7D;AAEA,IAAO,sBAAQ;",
5
+ "names": []
6
+ }
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @file toRelativeSpecifier
3
- * @module mlly/lib/toRelativeSpecifier
3
+ * @module mlly/utils/toRelativeSpecifier
4
4
  */
5
- import { URL } from 'node:url';
5
+ import type { ModuleId } from '../types/index.mjs';
6
6
  /**
7
7
  * Converts `specifier` into a relative specifier.
8
8
  *
@@ -11,12 +11,12 @@ import { URL } from 'node:url';
11
11
  * includes a file extension.
12
12
  * :::
13
13
  *
14
- * @see {@link URL}
14
+ * @see {@linkcode ModuleId}
15
15
  * @see https://nodejs.org/api/esm.html#terminology
16
16
  *
17
- * @param {URL | string} specifier - Module specifier to convert
18
- * @param {URL | string} parent - Parent module URL or path to resolve from
17
+ * @param {ModuleId} specifier - Module specifier to convert
18
+ * @param {ModuleId} parent - Parent module URL or path to resolve from
19
19
  * @return {string} `specifier` as relative specifier
20
20
  */
21
- declare const toRelativeSpecifier: (specifier: URL | string, parent: URL | string) => string;
21
+ declare const toRelativeSpecifier: (specifier: ModuleId, parent: ModuleId) => string;
22
22
  export default toRelativeSpecifier;
@@ -1,5 +1,5 @@
1
- import { fileURLToPath, URL } from "node:url";
2
- import upath from "upath";
1
+ import pathe from "@flex-development/pathe";
2
+ import { URL, fileURLToPath } from "node:url";
3
3
  const toRelativeSpecifier = (specifier, parent) => {
4
4
  if (parent instanceof URL)
5
5
  parent = parent.href;
@@ -9,9 +9,13 @@ const toRelativeSpecifier = (specifier, parent) => {
9
9
  parent = fileURLToPath(parent);
10
10
  if (specifier.startsWith("file:"))
11
11
  specifier = fileURLToPath(specifier);
12
- return upath.relative(upath.dirname(parent), specifier).replace(/^(\w)/, "./$1");
12
+ specifier = pathe.relative(pathe.resolve(parent), pathe.resolve(specifier)).replace(/^\.\.\/?/, "").replace(/^(\w)/, "./$1");
13
+ if (!specifier)
14
+ specifier = ".";
15
+ return specifier;
13
16
  };
14
17
  var to_relative_specifier_default = toRelativeSpecifier;
15
18
  export {
16
19
  to_relative_specifier_default as default
17
20
  };
21
+ //# sourceMappingURL=to-relative-specifier.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-relative-specifier.ts"],
4
+ "mappings": "AAMA,OAAO,WAAW;AAClB,SAAS,KAAK,qBAAqB;AAiBnC,MAAM,sBAAsB,CAAC,WAAqB,WAA6B;AAE7E,MAAI,kBAAkB;AAAK,aAAS,OAAO;AAC3C,MAAI,qBAAqB;AAAK,gBAAY,UAAU;AAGpD,MAAI,OAAO,WAAW,OAAO;AAAG,aAAS,cAAc,MAAM;AAC7D,MAAI,UAAU,WAAW,OAAO;AAAG,gBAAY,cAAc,SAAS;AAGtE,cAAY,MACT,SAAS,MAAM,QAAQ,MAAM,GAAG,MAAM,QAAQ,SAAS,CAAC,EACxD,QAAQ,YAAY,EAAE,EACtB,QAAQ,SAAS,MAAM;AAI1B,MAAI,CAAC;AAAW,gBAAY;AAE5B,SAAO;AACT;AAEA,IAAO,gCAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file toURL
3
+ * @module mlly/utils/toURL
4
+ */
5
+ import type { ModuleId } from '../types/index.mjs';
6
+ import { URL } from 'node:url';
7
+ /**
8
+ * Converts the given module `id` to an instance of [`URL`][1].
9
+ *
10
+ * [1]: https://nodejs.org/api/url.html#class-url
11
+ *
12
+ * @see {@linkcode ModuleId}
13
+ *
14
+ * @param {ModuleId} id - Module id to evaluate
15
+ * @param {ModuleId?} [base=pathToFileURL('./')] - Base URL to resolve against
16
+ * if `id` is not absolute
17
+ * @return {URL} `id` as instance of `URL`
18
+ * @throws {NodeError<TypeError>} If either `id` or `base` is not a string or an
19
+ * instance of `URL`
20
+ */
21
+ declare const toURL: (id: ModuleId, base?: ModuleId) => URL;
22
+ export default toURL;
@@ -0,0 +1,12 @@
1
+ import validateURLString from "../internal/validate-url-string.mjs";
2
+ import { URL, pathToFileURL } from "node:url";
3
+ const toURL = (id, base = pathToFileURL("./")) => {
4
+ validateURLString(id, "id");
5
+ validateURLString(base, "base");
6
+ return id instanceof URL ? id : new URL(id, base);
7
+ };
8
+ var to_url_default = toURL;
9
+ export {
10
+ to_url_default as default
11
+ };
12
+ //# sourceMappingURL=to-url.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/to-url.ts"],
4
+ "mappings": "AAKA,OAAO,uBAAuB;AAG9B,SAAS,KAAK,qBAAqB;AAgBnC,MAAM,QAAQ,CAAC,IAAc,OAAiB,cAAc,IAAI,MAAW;AACzE,oBAAkB,IAAI,IAAI;AAC1B,oBAAkB,MAAM,MAAM;AAC9B,SAAO,cAAc,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI;AAClD;AAEA,IAAO,iBAAQ;",
5
+ "names": []
6
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file validateAssertions
3
+ * @module mlly/utils/validateAssertions
4
+ */
5
+ import type { Format } from '../enums/index.mjs';
6
+ import type { ImportAssertions } from '../interfaces/index.mjs';
7
+ import type { ModuleId } from '../types/index.mjs';
8
+ import type { LiteralUnion } from '@flex-development/tutils';
9
+ /**
10
+ * Test a module's `import` assertions.
11
+ *
12
+ * @see {@linkcode Format}
13
+ * @see {@linkcode ImportAssertions}
14
+ * @see {@linkcode ModuleId}
15
+ *
16
+ * @param {ModuleId} url - Module URL of imported module (for error reporting)
17
+ * @param {LiteralUnion<Format, string>} format - Module format
18
+ * @param {ImportAssertions} [assertions={}] - `import` assertions
19
+ * @return {true} `true` if `assertions` are valid
20
+ * @throws {NodeError<TypeError>}
21
+ */
22
+ declare const validateAssertions: (url: ModuleId, format: LiteralUnion<Format, string>, assertions?: ImportAssertions) => true;
23
+ export default validateAssertions;
@@ -0,0 +1,52 @@
1
+ import { AssertType } from "../enums/index.mjs";
2
+ import FORMAT_TYPE_MAP from "../internal/format-type-map.mjs";
3
+ import validateString from "../internal/validate-string.mjs";
4
+ import validateURLString from "../internal/validate-url-string.mjs";
5
+ import {
6
+ ERR_IMPORT_ASSERTION_TYPE_FAILED,
7
+ ERR_IMPORT_ASSERTION_TYPE_MISSING,
8
+ ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED
9
+ } from "@flex-development/errnode";
10
+ import { URL } from "node:url";
11
+ const validateAssertions = (url, format, assertions = {}) => {
12
+ validateURLString(url, "url");
13
+ validateString(format, "format");
14
+ if (url instanceof URL)
15
+ url = url.href;
16
+ const has_type = Object.hasOwnProperty.call(assertions, "type");
17
+ const type = FORMAT_TYPE_MAP.get(format);
18
+ let err = false;
19
+ switch (type) {
20
+ case void 0:
21
+ break;
22
+ case AssertType.IMPLICIT:
23
+ if (has_type)
24
+ err = true;
25
+ break;
26
+ case assertions.type:
27
+ break;
28
+ default:
29
+ err = true;
30
+ }
31
+ if (err) {
32
+ if (!has_type)
33
+ throw new ERR_IMPORT_ASSERTION_TYPE_MISSING(url, type);
34
+ validateString(assertions.type, "assertions.type");
35
+ const supported = [];
36
+ for (const [, type2] of FORMAT_TYPE_MAP) {
37
+ if (type2 === AssertType.IMPLICIT)
38
+ continue;
39
+ supported.push(type2);
40
+ }
41
+ if (!supported.includes(assertions.type)) {
42
+ throw new ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED(assertions.type);
43
+ }
44
+ throw new ERR_IMPORT_ASSERTION_TYPE_FAILED(url, assertions.type);
45
+ }
46
+ return true;
47
+ };
48
+ var validate_assertions_default = validateAssertions;
49
+ export {
50
+ validate_assertions_default as default
51
+ };
52
+ //# sourceMappingURL=validate-assertions.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/validate-assertions.ts"],
4
+ "mappings": "AAMA,SAAS,kBAAkB;AAE3B,OAAO,qBAAqB;AAC5B,OAAO,oBAAoB;AAC3B,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,SAAS,WAAW;AAepB,MAAM,qBAAqB,CACzB,KACA,QACA,aAA+B,CAAC,MACvB;AACT,oBAAkB,KAAK,KAAK;AAC5B,iBAAe,QAAQ,QAAQ;AAG/B,MAAI,eAAe;AAAK,UAAM,IAAI;AAOlC,QAAM,WAAoB,OAAO,eAAe,KAAK,YAAY,MAAM;AAOvE,QAAM,OAA+B,gBAAgB,IAAI,MAAgB;AAOzE,MAAI,MAAe;AAGnB,UAAQ,MAAM;AAAA,IACZ,KAAK;AAGH;AAAA,IACF,KAAK,WAAW;AAGd,UAAI;AAAU,cAAM;AACpB;AAAA,IACF,KAAK,WAAW;AAEd;AAAA,IACF;AAEE,YAAM;AAAA,EACV;AAGA,MAAI,KAAK;AAEP,QAAI,CAAC;AAAU,YAAM,IAAI,kCAAkC,KAAK,IAAK;AAGrE,mBAAe,WAAW,MAAM,iBAAiB;AAOjD,UAAM,YAA0B,CAAC;AAGjC,eAAW,CAAC,EAAEA,KAAI,KAAK,iBAAiB;AACtC,UAAIA,UAAS,WAAW;AAAU;AAClC,gBAAU,KAAKA,KAAI;AAAA,IACrB;AAGA,QAAI,CAAC,UAAU,SAAS,WAAW,IAAkB,GAAG;AACtD,YAAM,IAAI,sCAAsC,WAAW,IAAK;AAAA,IAClE;AAGA,UAAM,IAAI,iCAAiC,KAAK,WAAW,IAAK;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,IAAO,8BAAQ;",
5
+ "names": ["type"]
6
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file validateExports
3
+ * @module mlly/utils/validateExports
4
+ */
5
+ import type { ModuleId } from '../types/index.mjs';
6
+ import type { Exports } from '@flex-development/pkg-types';
7
+ /**
8
+ * Validates the given package [`exports`][1] configuration and schema.
9
+ *
10
+ * [1]: https://nodejs.org/api/packages.html#exports
11
+ *
12
+ * @see {@linkcode Exports}
13
+ * @see {@linkcode ModuleId}
14
+ *
15
+ * @param {Exports | undefined} exports - Package `exports`
16
+ * @param {ModuleId} pkg - URL of relevant `package.json` file
17
+ * @param {ModuleId} parent - URL of module to resolve from
18
+ * @return {true} `true` if `exports` configuration and schema are valid
19
+ * @throws {NodeError<Error | TypeError>} If either `pkg` or `parent` is not an
20
+ * instance of {@linkcode URL} or a string, or if `exports` configuration or
21
+ * schema is invalid
22
+ */
23
+ declare const validateExports: (exports: Exports | undefined, pkg: ModuleId, parent: ModuleId) => true;
24
+ export default validateExports;
@@ -0,0 +1,72 @@
1
+ import isArrayIndex from "../internal/is-array-index.mjs";
2
+ import validateURLString from "../internal/validate-url-string.mjs";
3
+ import {
4
+ ERR_INVALID_PACKAGE_CONFIG
5
+ } from "@flex-development/errnode";
6
+ import { isNIL } from "@flex-development/tutils";
7
+ import { URL, fileURLToPath } from "node:url";
8
+ const validateExports = (exports, pkg, parent) => {
9
+ switch (true) {
10
+ case Array.isArray(exports):
11
+ for (const item of exports) {
12
+ switch (true) {
13
+ case Array.isArray(item):
14
+ case isNIL(item):
15
+ case (typeof item !== "object" && typeof item !== "string"):
16
+ throw new ERR_INVALID_PACKAGE_CONFIG(
17
+ fileURLToPath(pkg),
18
+ fileURLToPath(parent),
19
+ 'The "exports" array must contain either objects of package subpath keys, objects of condition name keys, or strings'
20
+ );
21
+ default:
22
+ validateExports(
23
+ item,
24
+ pkg,
25
+ parent
26
+ );
27
+ break;
28
+ }
29
+ }
30
+ break;
31
+ case isNIL(exports):
32
+ case typeof exports === "string":
33
+ break;
34
+ case typeof exports !== "object":
35
+ throw new ERR_INVALID_PACKAGE_CONFIG(
36
+ fileURLToPath(pkg),
37
+ fileURLToPath(parent),
38
+ '"exports" must be null, undefined, a string, an object of package subpath keys or condition name keys, or an array containing objects of package subpath keys, objects of condition name keys, or strings'
39
+ );
40
+ default:
41
+ exports = exports;
42
+ validateURLString(pkg, "pkg");
43
+ validateURLString(parent, "parent");
44
+ const keys = Object.getOwnPropertyNames(exports);
45
+ for (const [index, key] of keys.entries()) {
46
+ if (isArrayIndex(key)) {
47
+ throw new ERR_INVALID_PACKAGE_CONFIG(
48
+ fileURLToPath(new URL(".", pkg)),
49
+ fileURLToPath(parent),
50
+ '"exports" cannot contain numeric property keys'
51
+ );
52
+ }
53
+ if (index > 0) {
54
+ const prev = keys[index - 1];
55
+ if (!key.startsWith(".") && prev.startsWith(".") || key.startsWith(".") && !prev.startsWith(".")) {
56
+ throw new ERR_INVALID_PACKAGE_CONFIG(
57
+ fileURLToPath(pkg),
58
+ fileURLToPath(parent),
59
+ `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`
60
+ );
61
+ }
62
+ }
63
+ }
64
+ break;
65
+ }
66
+ return true;
67
+ };
68
+ var validate_exports_default = validateExports;
69
+ export {
70
+ validate_exports_default as default
71
+ };
72
+ //# sourceMappingURL=validate-exports.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/validate-exports.ts"],
4
+ "mappings": "AAKA,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAE9B;AAAA,EACE;AAAA,OAEK;AAEP,SAAS,aAAa;AACtB,SAAS,KAAK,qBAAqB;AAkBnC,MAAM,kBAAkB,CACtB,SACA,KACA,WACS;AACT,UAAQ,MAAM;AAAA,IACZ,KAAK,MAAM,QAAQ,OAAO;AACxB,iBAAW,QAAQ,SAAsB;AACvC,gBAAQ,MAAM;AAAA,UACZ,KAAK,MAAM,QAAQ,IAAI;AAAA,UACvB,KAAK,MAAM,IAAI;AAAA,UACf,MAAK,OAAO,SAAS,YAAY,OAAO,SAAS;AAC/C,kBAAM,IAAI;AAAA,cACR,cAAc,GAAG;AAAA,cACjB,cAAc,MAAM;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AACE;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,YACF;AACA;AAAA,QACJ;AAAA,MACF;AAEA;AAAA,IACF,KAAK,MAAM,OAAO;AAAA,IAClB,KAAK,OAAO,YAAY;AACtB;AAAA,IACF,KAAK,OAAO,YAAY;AACtB,YAAM,IAAI;AAAA,QACR,cAAc,GAAG;AAAA,QACjB,cAAc,MAAM;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AACE,gBAAU;AAEV,wBAAkB,KAAK,KAAK;AAC5B,wBAAkB,QAAQ,QAAQ;AAOlC,YAAM,OAAiB,OAAO,oBAAoB,OAAO;AAGzD,iBAAW,CAAC,OAAO,GAAG,KAAK,KAAK,QAAQ,GAAG;AAEzC,YAAI,aAAa,GAAG,GAAG;AACrB,gBAAM,IAAI;AAAA,YACR,cAAc,IAAI,IAAI,KAAK,GAAG,CAAC;AAAA,YAC/B,cAAc,MAAM;AAAA,YACpB;AAAA,UACF;AAAA,QACF;AAIA,YAAI,QAAQ,GAAG;AAMb,gBAAM,OAAe,KAAK,QAAQ,CAAC;AAGnC,cACG,CAAC,IAAI,WAAW,GAAG,KAAK,KAAK,WAAW,GAAG,KAC3C,IAAI,WAAW,GAAG,KAAK,CAAC,KAAK,WAAW,GAAG,GAC5C;AACA,kBAAM,IAAI;AAAA,cACR,cAAc,GAAG;AAAA,cACjB,cAAc,MAAM;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA;AAAA,EACJ;AAEA,SAAO;AACT;AAEA,IAAO,2BAAQ;",
5
+ "names": []
6
+ }