@flex-development/mlly 1.0.0-alpha.18 → 1.0.0-alpha.19

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 (301) hide show
  1. package/CHANGELOG.md +810 -709
  2. package/README.md +173 -12
  3. package/dist/index.d.mts +3 -4
  4. package/dist/index.mjs +1 -3
  5. package/dist/interfaces/aliases.d.mts +11 -0
  6. package/dist/interfaces/context-get-source.d.mts +52 -0
  7. package/dist/interfaces/file-system.d.mts +57 -0
  8. package/dist/interfaces/index.d.mts +11 -21
  9. package/dist/interfaces/main-field-map.d.mts +13 -0
  10. package/dist/interfaces/module-format-map.d.mts +17 -0
  11. package/dist/interfaces/options-get-source.d.mts +22 -29
  12. package/dist/interfaces/options-resolve-alias.d.mts +14 -26
  13. package/dist/interfaces/options-resolve-module.d.mts +38 -27
  14. package/dist/interfaces/protocol-map.d.mts +35 -0
  15. package/dist/interfaces/stats.d.mts +28 -0
  16. package/dist/internal/chars.mjs +11 -0
  17. package/dist/internal/check-invalid-segments.mjs +19 -0
  18. package/dist/internal/fs.browser.mjs +36 -0
  19. package/dist/internal/fs.d.mts +7 -0
  20. package/dist/internal/invalid-package-target.mjs +18 -0
  21. package/dist/internal/invalid-subpath.mjs +16 -0
  22. package/dist/internal/process.browser.mjs +7 -0
  23. package/dist/internal/process.d.mts +4 -0
  24. package/dist/lib/can-parse-url.d.mts +21 -0
  25. package/dist/lib/can-parse-url.mjs +12 -0
  26. package/dist/lib/cwd.d.mts +12 -0
  27. package/dist/lib/cwd.mjs +8 -0
  28. package/dist/lib/default-conditions.d.mts +15 -0
  29. package/dist/lib/default-conditions.mjs +5 -0
  30. package/dist/lib/default-extensions.d.mts +14 -0
  31. package/dist/lib/default-extensions.mjs +21 -0
  32. package/dist/lib/default-main-fields.d.mts +14 -0
  33. package/dist/lib/default-main-fields.mjs +5 -0
  34. package/dist/lib/extension-format-map.d.mts +16 -0
  35. package/dist/lib/extension-format-map.mjs +21 -0
  36. package/dist/lib/formats.d.mts +21 -0
  37. package/dist/lib/formats.mjs +14 -0
  38. package/dist/lib/get-source.d.mts +26 -0
  39. package/dist/lib/get-source.mjs +70 -0
  40. package/dist/lib/index.d.mts +40 -0
  41. package/dist/lib/index.mjs +53 -0
  42. package/dist/lib/is-absolute-specifier.d.mts +23 -0
  43. package/dist/lib/is-absolute-specifier.mjs +9 -0
  44. package/dist/lib/is-array-index.d.mts +17 -0
  45. package/dist/lib/is-array-index.mjs +11 -0
  46. package/dist/lib/is-bare-specifier.d.mts +23 -0
  47. package/dist/lib/is-bare-specifier.mjs +11 -0
  48. package/dist/lib/is-directory.d.mts +22 -0
  49. package/dist/lib/is-directory.mjs +13 -0
  50. package/dist/lib/is-file.d.mts +22 -0
  51. package/dist/lib/is-file.mjs +13 -0
  52. package/dist/lib/is-imports-subpath.d.mts +19 -0
  53. package/dist/lib/is-imports-subpath.mjs +8 -0
  54. package/dist/lib/is-relative-specifier.d.mts +21 -0
  55. package/dist/lib/is-relative-specifier.mjs +16 -0
  56. package/dist/lib/lookup-package-scope.d.mts +26 -0
  57. package/dist/lib/lookup-package-scope.mjs +16 -0
  58. package/dist/lib/pattern-key-compare.d.mts +31 -0
  59. package/dist/lib/pattern-key-compare.mjs +18 -0
  60. package/dist/lib/pattern-match.d.mts +19 -0
  61. package/dist/lib/pattern-match.mjs +36 -0
  62. package/dist/lib/read-package-json.d.mts +35 -0
  63. package/dist/lib/read-package-json.mjs +29 -0
  64. package/dist/lib/resolve-alias.d.mts +19 -0
  65. package/dist/lib/resolve-alias.mjs +50 -0
  66. package/dist/lib/resolve-module.d.mts +37 -0
  67. package/dist/lib/resolve-module.mjs +75 -0
  68. package/dist/lib/resolver.d.mts +280 -0
  69. package/dist/lib/resolver.mjs +462 -0
  70. package/dist/lib/root.d.mts +11 -0
  71. package/dist/lib/root.mjs +6 -0
  72. package/dist/lib/to-relative-specifier.d.mts +25 -0
  73. package/dist/lib/to-relative-specifier.mjs +26 -0
  74. package/dist/lib/to-url.d.mts +24 -0
  75. package/dist/lib/to-url.mjs +10 -0
  76. package/dist/types/awaitable.d.mts +14 -0
  77. package/dist/types/change-ext-fn.d.mts +29 -0
  78. package/dist/types/get-source-handler.d.mts +21 -0
  79. package/dist/types/get-source-handlers.d.mts +14 -0
  80. package/dist/types/index.d.mts +12 -10
  81. package/dist/types/main-field.d.mts +13 -0
  82. package/dist/types/module-format.d.mts +13 -0
  83. package/dist/types/module-id.d.mts +2 -4
  84. package/dist/types/numeric.d.mts +9 -0
  85. package/dist/types/pattern-key-compare-result.d.mts +9 -0
  86. package/dist/types/pattern-match.d.mts +10 -0
  87. package/dist/types/protocol.d.mts +6 -7
  88. package/package.json +227 -155
  89. package/dist/enums/assert-type.d.mts +0 -21
  90. package/dist/enums/assert-type.mjs +0 -4
  91. package/dist/enums/format.d.mts +0 -17
  92. package/dist/enums/format.mjs +0 -4
  93. package/dist/enums/index.d.mts +0 -10
  94. package/dist/enums/index.mjs +0 -14
  95. package/dist/enums/kind-specifier-syntax.d.mts +0 -14
  96. package/dist/enums/kind-specifier-syntax.mjs +0 -4
  97. package/dist/enums/kind-specifier.d.mts +0 -17
  98. package/dist/enums/kind-specifier.mjs +0 -4
  99. package/dist/enums/kind-statement-syntax.d.mts +0 -22
  100. package/dist/enums/kind-statement-syntax.mjs +0 -4
  101. package/dist/enums/kind-statement.d.mts +0 -15
  102. package/dist/enums/kind-statement.mjs +0 -4
  103. package/dist/index.mjs.map +0 -8
  104. package/dist/interfaces/import-assertions.d.mts +0 -20
  105. package/dist/interfaces/import-dynamic.d.mts +0 -41
  106. package/dist/interfaces/import-static.d.mts +0 -35
  107. package/dist/interfaces/options-fill-module.d.mts +0 -23
  108. package/dist/interfaces/options-find-subpath.d.mts +0 -50
  109. package/dist/interfaces/options-get-format.d.mts +0 -73
  110. package/dist/interfaces/options-parse-module-id.d.mts +0 -34
  111. package/dist/interfaces/options-parse-subpath.d.mts +0 -50
  112. package/dist/interfaces/options-resolve.d.mts +0 -15
  113. package/dist/interfaces/package-scope.d.mts +0 -25
  114. package/dist/interfaces/parsed-data-url.d.mts +0 -56
  115. package/dist/interfaces/parsed-module-id.d.mts +0 -80
  116. package/dist/interfaces/parsed-subpath.d.mts +0 -44
  117. package/dist/interfaces/statement-export.d.mts +0 -44
  118. package/dist/interfaces/statement-import.d.mts +0 -38
  119. package/dist/interfaces/statement-require.d.mts +0 -38
  120. package/dist/interfaces/statement.d.mts +0 -49
  121. package/dist/internal/dequote.d.mts +0 -14
  122. package/dist/internal/dequote.mjs +0 -7
  123. package/dist/internal/dequote.mjs.map +0 -8
  124. package/dist/internal/format-type-map.d.mts +0 -19
  125. package/dist/internal/format-type-map.mjs +0 -13
  126. package/dist/internal/format-type-map.mjs.map +0 -8
  127. package/dist/internal/get-specifier-kind.d.mts +0 -19
  128. package/dist/internal/get-specifier-kind.mjs +0 -11
  129. package/dist/internal/get-specifier-kind.mjs.map +0 -8
  130. package/dist/internal/get-subpaths.d.mts +0 -28
  131. package/dist/internal/get-subpaths.mjs +0 -8
  132. package/dist/internal/get-subpaths.mjs.map +0 -8
  133. package/dist/internal/regex-encoded-sep.d.mts +0 -15
  134. package/dist/internal/regex-encoded-sep.mjs +0 -6
  135. package/dist/internal/regex-encoded-sep.mjs.map +0 -8
  136. package/dist/internal/regex-internal-specifier.d.mts +0 -16
  137. package/dist/internal/regex-internal-specifier.mjs +0 -6
  138. package/dist/internal/regex-internal-specifier.mjs.map +0 -8
  139. package/dist/internal/regex-invalid-segment.d.mts +0 -16
  140. package/dist/internal/regex-invalid-segment.mjs +0 -9
  141. package/dist/internal/regex-invalid-segment.mjs.map +0 -8
  142. package/dist/internal/regex-package-name.d.mts +0 -15
  143. package/dist/internal/regex-package-name.mjs +0 -6
  144. package/dist/internal/regex-package-name.mjs.map +0 -8
  145. package/dist/internal/regex-package-path.d.mts +0 -17
  146. package/dist/internal/regex-package-path.mjs +0 -6
  147. package/dist/internal/regex-package-path.mjs.map +0 -8
  148. package/dist/internal/resolver.d.mts +0 -132
  149. package/dist/internal/resolver.mjs +0 -483
  150. package/dist/internal/resolver.mjs.map +0 -8
  151. package/dist/internal/validate-array-set.d.mts +0 -24
  152. package/dist/internal/validate-array-set.mjs +0 -12
  153. package/dist/internal/validate-array-set.mjs.map +0 -8
  154. package/dist/internal/validate-boolean.d.mts +0 -22
  155. package/dist/internal/validate-boolean.mjs +0 -12
  156. package/dist/internal/validate-boolean.mjs.map +0 -8
  157. package/dist/internal/validate-map.d.mts +0 -26
  158. package/dist/internal/validate-map.mjs +0 -12
  159. package/dist/internal/validate-map.mjs.map +0 -8
  160. package/dist/internal/validate-object.d.mts +0 -23
  161. package/dist/internal/validate-object.mjs +0 -12
  162. package/dist/internal/validate-object.mjs.map +0 -8
  163. package/dist/internal/validate-set.d.mts +0 -24
  164. package/dist/internal/validate-set.mjs +0 -12
  165. package/dist/internal/validate-set.mjs.map +0 -8
  166. package/dist/internal/validate-string.d.mts +0 -23
  167. package/dist/internal/validate-string.mjs +0 -12
  168. package/dist/internal/validate-string.mjs.map +0 -8
  169. package/dist/internal/validate-url-string.d.mts +0 -24
  170. package/dist/internal/validate-url-string.mjs +0 -13
  171. package/dist/internal/validate-url-string.mjs.map +0 -8
  172. package/dist/types/declaration.d.mts +0 -9
  173. package/dist/types/fn-change-ext.d.mts +0 -31
  174. package/dist/types/mime-type.d.mts +0 -13
  175. package/dist/types/module-specifier-type.d.mts +0 -11
  176. package/dist/types/syntax-kind-export.d.mts +0 -12
  177. package/dist/types/syntax-kind-import.d.mts +0 -12
  178. package/dist/types/syntax-kind-require.d.mts +0 -12
  179. package/dist/utils/compare-subpaths.d.mts +0 -25
  180. package/dist/utils/compare-subpaths.mjs +0 -19
  181. package/dist/utils/compare-subpaths.mjs.map +0 -8
  182. package/dist/utils/conditions.d.mts +0 -13
  183. package/dist/utils/conditions.mjs +0 -6
  184. package/dist/utils/conditions.mjs.map +0 -8
  185. package/dist/utils/detect-syntax.d.mts +0 -21
  186. package/dist/utils/detect-syntax.mjs +0 -11
  187. package/dist/utils/detect-syntax.mjs.map +0 -8
  188. package/dist/utils/extension-format-map.d.mts +0 -16
  189. package/dist/utils/extension-format-map.mjs +0 -22
  190. package/dist/utils/extension-format-map.mjs.map +0 -8
  191. package/dist/utils/extract-statements.d.mts +0 -21
  192. package/dist/utils/extract-statements.mjs +0 -20
  193. package/dist/utils/extract-statements.mjs.map +0 -8
  194. package/dist/utils/fill-modules.d.mts +0 -24
  195. package/dist/utils/fill-modules.mjs +0 -67
  196. package/dist/utils/fill-modules.mjs.map +0 -8
  197. package/dist/utils/find-dynamic-imports.d.mts +0 -18
  198. package/dist/utils/find-dynamic-imports.mjs +0 -36
  199. package/dist/utils/find-dynamic-imports.mjs.map +0 -8
  200. package/dist/utils/find-exports.d.mts +0 -21
  201. package/dist/utils/find-exports.mjs +0 -92
  202. package/dist/utils/find-exports.mjs.map +0 -8
  203. package/dist/utils/find-requires.d.mts +0 -18
  204. package/dist/utils/find-requires.mjs +0 -32
  205. package/dist/utils/find-requires.mjs.map +0 -8
  206. package/dist/utils/find-static-imports.d.mts +0 -18
  207. package/dist/utils/find-static-imports.mjs +0 -30
  208. package/dist/utils/find-static-imports.mjs.map +0 -8
  209. package/dist/utils/find-subpath.d.mts +0 -31
  210. package/dist/utils/find-subpath.mjs +0 -86
  211. package/dist/utils/find-subpath.mjs.map +0 -8
  212. package/dist/utils/get-format.d.mts +0 -31
  213. package/dist/utils/get-format.mjs +0 -107
  214. package/dist/utils/get-format.mjs.map +0 -8
  215. package/dist/utils/get-source.d.mts +0 -30
  216. package/dist/utils/get-source.mjs +0 -61
  217. package/dist/utils/get-source.mjs.map +0 -8
  218. package/dist/utils/has-cjs-syntax.d.mts +0 -25
  219. package/dist/utils/has-cjs-syntax.mjs +0 -11
  220. package/dist/utils/has-cjs-syntax.mjs.map +0 -8
  221. package/dist/utils/has-esm-syntax.d.mts +0 -21
  222. package/dist/utils/has-esm-syntax.mjs +0 -11
  223. package/dist/utils/has-esm-syntax.mjs.map +0 -8
  224. package/dist/utils/index.d.mts +0 -44
  225. package/dist/utils/index.mjs +0 -83
  226. package/dist/utils/index.mjs.map +0 -8
  227. package/dist/utils/is-absolute-specifier.d.mts +0 -20
  228. package/dist/utils/is-absolute-specifier.mjs +0 -26
  229. package/dist/utils/is-absolute-specifier.mjs.map +0 -8
  230. package/dist/utils/is-bare-specifier.d.mts +0 -20
  231. package/dist/utils/is-bare-specifier.mjs +0 -10
  232. package/dist/utils/is-bare-specifier.mjs.map +0 -8
  233. package/dist/utils/is-directory.d.mts +0 -13
  234. package/dist/utils/is-directory.mjs +0 -14
  235. package/dist/utils/is-directory.mjs.map +0 -8
  236. package/dist/utils/is-exports-sugar.d.mts +0 -26
  237. package/dist/utils/is-exports-sugar.mjs +0 -29
  238. package/dist/utils/is-exports-sugar.mjs.map +0 -8
  239. package/dist/utils/is-file.d.mts +0 -13
  240. package/dist/utils/is-file.mjs +0 -14
  241. package/dist/utils/is-file.mjs.map +0 -8
  242. package/dist/utils/is-relative-specifier.d.mts +0 -19
  243. package/dist/utils/is-relative-specifier.mjs +0 -9
  244. package/dist/utils/is-relative-specifier.mjs.map +0 -8
  245. package/dist/utils/lookup-package-scope.d.mts +0 -26
  246. package/dist/utils/lookup-package-scope.mjs +0 -34
  247. package/dist/utils/lookup-package-scope.mjs.map +0 -8
  248. package/dist/utils/parse-data-url.d.mts +0 -25
  249. package/dist/utils/parse-data-url.mjs +0 -25
  250. package/dist/utils/parse-data-url.mjs.map +0 -8
  251. package/dist/utils/parse-module-id.d.mts +0 -20
  252. package/dist/utils/parse-module-id.mjs +0 -123
  253. package/dist/utils/parse-module-id.mjs.map +0 -8
  254. package/dist/utils/parse-subpath.d.mts +0 -35
  255. package/dist/utils/parse-subpath.mjs +0 -149
  256. package/dist/utils/parse-subpath.mjs.map +0 -8
  257. package/dist/utils/pattern-character.d.mts +0 -11
  258. package/dist/utils/pattern-character.mjs +0 -6
  259. package/dist/utils/pattern-character.mjs.map +0 -8
  260. package/dist/utils/read-package-json.d.mts +0 -26
  261. package/dist/utils/read-package-json.mjs +0 -48
  262. package/dist/utils/read-package-json.mjs.map +0 -8
  263. package/dist/utils/resolve-alias.d.mts +0 -20
  264. package/dist/utils/resolve-alias.mjs +0 -101
  265. package/dist/utils/resolve-alias.mjs.map +0 -8
  266. package/dist/utils/resolve-aliases.d.mts +0 -19
  267. package/dist/utils/resolve-aliases.mjs +0 -26
  268. package/dist/utils/resolve-aliases.mjs.map +0 -8
  269. package/dist/utils/resolve-extensions.d.mts +0 -14
  270. package/dist/utils/resolve-extensions.mjs +0 -22
  271. package/dist/utils/resolve-extensions.mjs.map +0 -8
  272. package/dist/utils/resolve-module.d.mts +0 -39
  273. package/dist/utils/resolve-module.mjs +0 -63
  274. package/dist/utils/resolve-module.mjs.map +0 -8
  275. package/dist/utils/resolve-modules.d.mts +0 -25
  276. package/dist/utils/resolve-modules.mjs +0 -23
  277. package/dist/utils/resolve-modules.mjs.map +0 -8
  278. package/dist/utils/to-absolute-specifier.d.mts +0 -22
  279. package/dist/utils/to-absolute-specifier.mjs +0 -8
  280. package/dist/utils/to-absolute-specifier.mjs.map +0 -8
  281. package/dist/utils/to-bare-specifier.d.mts +0 -42
  282. package/dist/utils/to-bare-specifier.mjs +0 -79
  283. package/dist/utils/to-bare-specifier.mjs.map +0 -8
  284. package/dist/utils/to-data-url.d.mts +0 -30
  285. package/dist/utils/to-data-url.mjs +0 -7
  286. package/dist/utils/to-data-url.mjs.map +0 -8
  287. package/dist/utils/to-node-url.d.mts +0 -19
  288. package/dist/utils/to-node-url.mjs +0 -7
  289. package/dist/utils/to-node-url.mjs.map +0 -8
  290. package/dist/utils/to-relative-specifier.d.mts +0 -24
  291. package/dist/utils/to-relative-specifier.mjs +0 -10
  292. package/dist/utils/to-relative-specifier.mjs.map +0 -8
  293. package/dist/utils/to-url.d.mts +0 -21
  294. package/dist/utils/to-url.mjs +0 -8
  295. package/dist/utils/to-url.mjs.map +0 -8
  296. package/dist/utils/validate-assertions.d.mts +0 -23
  297. package/dist/utils/validate-assertions.mjs +0 -47
  298. package/dist/utils/validate-assertions.mjs.map +0 -8
  299. package/dist/utils/validate-exports.d.mts +0 -25
  300. package/dist/utils/validate-exports.mjs +0 -73
  301. package/dist/utils/validate-exports.mjs.map +0 -8
@@ -1,22 +0,0 @@
1
- import { Format } from "../enums/index.mjs";
2
- const EXTENSION_FORMAT_MAP = /* @__PURE__ */ new Map([
3
- [".cjs", Format.COMMONJS],
4
- [".cts", Format.COMMONJS],
5
- [".d.cts", Format.COMMONJS],
6
- [".d.mts", Format.MODULE],
7
- [".d.ts", Format.MODULE],
8
- [".js", Format.MODULE],
9
- [".json", Format.JSON],
10
- [".jsx", Format.MODULE],
11
- [".mjs", Format.MODULE],
12
- [".mts", Format.MODULE],
13
- [".node", Format.COMMONJS],
14
- [".ts", Format.MODULE],
15
- [".tsx", Format.MODULE],
16
- [".wasm", Format.WASM]
17
- ]);
18
- var extension_format_map_default = EXTENSION_FORMAT_MAP;
19
- export {
20
- extension_format_map_default as default
21
- };
22
- //# sourceMappingURL=extension-format-map.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/extension-format-map.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file EXTENSION_FORMAT_MAP\n * @module mlly/utils/EXTENSION_FORMAT_MAP\n */\n\nimport { Format } from '#src/enums'\nimport type { Ext } from '@flex-development/pathe'\n\n/**\n * Default file extension to module formats map.\n *\n * @see {@linkcode Ext}\n * @see {@linkcode Format}\n *\n * @const {Map<Ext, Format>} EXTENSION_FORMAT_MAP\n */\nconst EXTENSION_FORMAT_MAP: Map<Ext, Format> = new Map<Ext, Format>([\n ['.cjs', Format.COMMONJS],\n ['.cts', Format.COMMONJS],\n ['.d.cts', Format.COMMONJS],\n ['.d.mts', Format.MODULE],\n ['.d.ts', Format.MODULE],\n ['.js', Format.MODULE],\n ['.json', Format.JSON],\n ['.jsx', Format.MODULE],\n ['.mjs', Format.MODULE],\n ['.mts', Format.MODULE],\n ['.node', Format.COMMONJS],\n ['.ts', Format.MODULE],\n ['.tsx', Format.MODULE],\n ['.wasm', Format.WASM]\n])\n\nexport default EXTENSION_FORMAT_MAP\n"],
6
- "mappings": "AAKA,SAAS,cAAc;AAWvB,MAAM,uBAAyC,oBAAI,IAAiB;AAAA,EAClE,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACxB,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACxB,CAAC,UAAU,OAAO,QAAQ;AAAA,EAC1B,CAAC,UAAU,OAAO,MAAM;AAAA,EACxB,CAAC,SAAS,OAAO,MAAM;AAAA,EACvB,CAAC,OAAO,OAAO,MAAM;AAAA,EACrB,CAAC,SAAS,OAAO,IAAI;AAAA,EACrB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,SAAS,OAAO,QAAQ;AAAA,EACzB,CAAC,OAAO,OAAO,MAAM;AAAA,EACrB,CAAC,QAAQ,OAAO,MAAM;AAAA,EACtB,CAAC,SAAS,OAAO,IAAI;AACvB,CAAC;AAED,IAAO,+BAAQ;",
7
- "names": []
8
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * @file extractStatements
3
- * @module mlly/utils/extractStatements
4
- */
5
- import type { Statement } from '../interfaces/index.mjs';
6
- /**
7
- * Finds all `export`, `import`, and/or `require` statements in `code`.
8
- *
9
- * Ignores matches in comments.
10
- *
11
- * @see {@linkcode findDynamicImports}
12
- * @see {@linkcode findExports}
13
- * @see {@linkcode findRequires}
14
- * @see {@linkcode findStaticImports}
15
- *
16
- * @param {string} [code=''] - Code to evaluate
17
- * @return {Statement[]} Extracted statements
18
- * @throws {NodeError<TypeError>} If `code` is not a string
19
- */
20
- declare const extractStatements: (code?: string) => Statement[];
21
- export default extractStatements;
@@ -1,20 +0,0 @@
1
- import validateString from "../internal/validate-string.mjs";
2
- import { sort, trim } from "@flex-development/tutils";
3
- import findDynamicImports from "./find-dynamic-imports.mjs";
4
- import findExports from "./find-exports.mjs";
5
- import findRequires from "./find-requires.mjs";
6
- import findStaticImports from "./find-static-imports.mjs";
7
- const extractStatements = (code = "") => (validateString(code, "code"), trim(code).length < 6 ? [] : sort(
8
- [
9
- ...findDynamicImports(code),
10
- ...findExports(code),
11
- ...findRequires(code),
12
- ...findStaticImports(code)
13
- ],
14
- (s1, s2) => s1.start - s2.start
15
- ));
16
- var extract_statements_default = extractStatements;
17
- export {
18
- extract_statements_default as default
19
- };
20
- //# sourceMappingURL=extract-statements.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/extract-statements.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file extractStatements\n * @module mlly/utils/extractStatements\n */\n\nimport type { Statement } from '#src/interfaces'\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport { sort, trim } from '@flex-development/tutils'\nimport findDynamicImports from './find-dynamic-imports'\nimport findExports from './find-exports'\nimport findRequires from './find-requires'\nimport findStaticImports from './find-static-imports'\n\n/**\n * Finds all `export`, `import`, and/or `require` statements in `code`.\n *\n * Ignores matches in comments.\n *\n * @see {@linkcode findDynamicImports}\n * @see {@linkcode findExports}\n * @see {@linkcode findRequires}\n * @see {@linkcode findStaticImports}\n *\n * @param {string} [code=''] - Code to evaluate\n * @return {Statement[]} Extracted statements\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst extractStatements = (code: string = ''): Statement[] => {\n validateString(code, 'code')\n\n // code shorter than first shortest keyword => no possible matches\n if (trim(code).length < 'export'.length) return []\n\n return sort(\n [\n ...findDynamicImports(code),\n ...findExports(code),\n ...findRequires(code),\n ...findStaticImports(code)\n ],\n (s1: Statement, s2: Statement): number => s1.start - s2.start\n )\n}\n\nexport default extractStatements\n"],
6
- "mappings": "AAMA,OAAO,oBAAoB;AAE3B,SAAS,MAAM,YAAY;AAC3B,OAAO,wBAAwB;AAC/B,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,uBAAuB;AAgB9B,MAAM,oBAAoB,CAAC,OAAe,QACxC,eAAe,MAAM,MAAM,GAGvB,KAAK,IAAI,EAAE,SAAS,IAAwB,CAAC,IAE1C;AAAA,EACL;AAAA,IACE,GAAG,mBAAmB,IAAI;AAAA,IAC1B,GAAG,YAAY,IAAI;AAAA,IACnB,GAAG,aAAa,IAAI;AAAA,IACpB,GAAG,kBAAkB,IAAI;AAAA,EAC3B;AAAA,EACA,CAAC,IAAe,OAA0B,GAAG,QAAQ,GAAG;AAC1D;AAGF,IAAO,6BAAQ;",
7
- "names": []
8
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * @file fillModules
3
- * @module mlly/utils/fillModules
4
- */
5
- import type { FillModuleOptions } from '../interfaces/index.mjs';
6
- /**
7
- * Ensures all absolute and relative module specifiers in the given piece of
8
- * source `code` are fully specified.
9
- *
10
- * Ignores specifiers that already have file extensions.
11
- *
12
- * @see {@linkcode FillModuleOptions}
13
- * @see https://nodejs.org/api/esm.html#mandatory-file-extensions
14
- * @see https://nodejs.org/api/esm.html#terminology
15
- *
16
- * @async
17
- *
18
- * @param {string} code - Code to evaluate
19
- * @param {FillModuleOptions} options - Module fill options
20
- * @return {Promise<string>} `code` with fully specified module specifiers
21
- * @throws {NodeError<TypeError>}
22
- */
23
- declare const fillModules: (code: string, options: FillModuleOptions) => Promise<string>;
24
- export default fillModules;
@@ -1,67 +0,0 @@
1
- import { SpecifierSyntaxKind } from "../enums/index.mjs";
2
- import validateArraySet from "../internal/validate-array-set.mjs";
3
- import validateURLString from "../internal/validate-url-string.mjs";
4
- import {
5
- ERR_UNKNOWN_FILE_EXTENSION
6
- } from "@flex-development/errnode";
7
- import pathe from "@flex-development/pathe";
8
- import {
9
- DOT,
10
- isFunction,
11
- regexp,
12
- trim
13
- } from "@flex-development/tutils";
14
- import CONDITIONS from "./conditions.mjs";
15
- import extractStatements from "./extract-statements.mjs";
16
- import isAbsoluteSpecifier from "./is-absolute-specifier.mjs";
17
- import isBareSpecifier from "./is-bare-specifier.mjs";
18
- import resolveModule from "./resolve-module.mjs";
19
- import toBareSpecifier from "./to-bare-specifier.mjs";
20
- import toRelativeSpecifier from "./to-relative-specifier.mjs";
21
- const fillModules = async (code, options) => {
22
- const { conditions = CONDITIONS, ext, parent = import.meta.url } = options;
23
- validateArraySet(conditions, "options.conditions"), validateURLString(parent, "options.parent");
24
- for (const statement of extractStatements(code))
25
- if (statement.specifier && statement.specifier_syntax !== SpecifierSyntaxKind.DYNAMIC) {
26
- const url = await resolveModule(statement.specifier, {
27
- ...options,
28
- /**
29
- * Returns a replacement file extension for the given `specifier` if
30
- * it is non-bare and does not already have an extension.
31
- *
32
- * Throws [`ERR_UNKNOWN_FILE_EXTENSION`][1] if the new extension is
33
- * `null`, `undefined`, an empty string, or a dot character (`'.'`).
34
- *
35
- * [1]: https://nodejs.org/api/errors.html#err_unknown_file_extension
36
- *
37
- * @async
38
- *
39
- * @param {string} specifier - Module specifier
40
- * @param {URL} url - Resolved module URL
41
- * @return {Promise<Optional<string>>} New file extension
42
- */
43
- async ext(specifier, url2) {
44
- if (isBareSpecifier(specifier) || pathe.extname(specifier) === pathe.extname(url2.href))
45
- return;
46
- const rext = isFunction(ext) ? await ext(specifier, url2) : ext;
47
- if (!(rext && trim(rext).length > (rext.startsWith(DOT) ? 1 : 0)))
48
- throw new ERR_UNKNOWN_FILE_EXTENSION(rext, specifier);
49
- return rext;
50
- }
51
- });
52
- code = code.replace(
53
- statement.code,
54
- statement.code.replace(
55
- new RegExp(`(?<=["'])${regexp(statement.specifier)}(?=["'])`),
56
- // convert module url back to absolute, bare, or relative specifier
57
- statement.specifier.startsWith("#") ? statement.specifier : isAbsoluteSpecifier(statement.specifier) ? url.href : isBareSpecifier(statement.specifier) ? toBareSpecifier(url, parent, new Set(conditions)) : toRelativeSpecifier(url, parent)
58
- )
59
- );
60
- }
61
- return code;
62
- };
63
- var fill_modules_default = fillModules;
64
- export {
65
- fill_modules_default as default
66
- };
67
- //# sourceMappingURL=fill-modules.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/fill-modules.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file fillModules\n * @module mlly/utils/fillModules\n */\n\nimport { SpecifierSyntaxKind } from '#src/enums'\nimport type { FillModuleOptions } from '#src/interfaces'\nimport validateArraySet from '#src/internal/validate-array-set'\nimport validateURLString from '#src/internal/validate-url-string'\nimport {\n ERR_UNKNOWN_FILE_EXTENSION,\n type NodeError\n} from '@flex-development/errnode'\nimport pathe from '@flex-development/pathe'\nimport {\n DOT,\n isFunction,\n regexp,\n trim,\n type Optional\n} from '@flex-development/tutils'\nimport type { URL } from 'node:url'\nimport CONDITIONS from './conditions'\nimport extractStatements from './extract-statements'\nimport isAbsoluteSpecifier from './is-absolute-specifier'\nimport isBareSpecifier from './is-bare-specifier'\nimport resolveModule from './resolve-module'\nimport toBareSpecifier from './to-bare-specifier'\nimport toRelativeSpecifier from './to-relative-specifier'\n\n/**\n * Ensures all absolute and relative module specifiers in the given piece of\n * source `code` are fully specified.\n *\n * Ignores specifiers that already have file extensions.\n *\n * @see {@linkcode FillModuleOptions}\n * @see https://nodejs.org/api/esm.html#mandatory-file-extensions\n * @see https://nodejs.org/api/esm.html#terminology\n *\n * @async\n *\n * @param {string} code - Code to evaluate\n * @param {FillModuleOptions} options - Module fill options\n * @return {Promise<string>} `code` with fully specified module specifiers\n * @throws {NodeError<TypeError>}\n */\nconst fillModules = async (\n code: string,\n options: FillModuleOptions\n): Promise<string> => {\n const { conditions = CONDITIONS, ext, parent = import.meta.url } = options\n\n // validate options\n validateArraySet(conditions, 'options.conditions')\n validateURLString(parent, 'options.parent')\n\n // ensure specifiers have file extensions\n for (const statement of extractStatements(code)) {\n if (statement.specifier) {\n if (statement.specifier_syntax !== SpecifierSyntaxKind.DYNAMIC) {\n /**\n * Resolved module URL.\n *\n * @const {URL} url\n */\n const url: URL = await resolveModule(statement.specifier, {\n ...options,\n /**\n * Returns a replacement file extension for the given `specifier` if\n * it is non-bare and does not already have an extension.\n *\n * Throws [`ERR_UNKNOWN_FILE_EXTENSION`][1] if the new extension is\n * `null`, `undefined`, an empty string, or a dot character (`'.'`).\n *\n * [1]: https://nodejs.org/api/errors.html#err_unknown_file_extension\n *\n * @async\n *\n * @param {string} specifier - Module specifier\n * @param {URL} url - Resolved module URL\n * @return {Promise<Optional<string>>} New file extension\n */\n async ext(specifier: string, url: URL): Promise<Optional<string>> {\n // skip replacement for bare specifiers\n if (isBareSpecifier(specifier)) return void 0\n\n // skip replacement for specifiers that are already fully specified\n if (pathe.extname(specifier) === pathe.extname(url.href)) {\n return void 0\n }\n\n /**\n * Replacement file extension.\n *\n * @var {string} rext\n */\n const rext: string = isFunction(ext)\n ? await ext(specifier, url)\n : ext\n\n // ensure replacement extension is non-empty and non-dot ('.')\n if (!(rext && trim(rext).length > (rext.startsWith(DOT) ? 1 : 0))) {\n throw new ERR_UNKNOWN_FILE_EXTENSION(rext, specifier)\n }\n\n return rext\n }\n })\n\n // replace original module specifier\n code = code.replace(\n statement.code,\n statement.code.replace(\n new RegExp(`(?<=[\"'])${regexp(statement.specifier)}(?=[\"'])`),\n // convert module url back to absolute, bare, or relative specifier\n statement.specifier.startsWith('#')\n ? statement.specifier\n : isAbsoluteSpecifier(statement.specifier)\n ? url.href\n : isBareSpecifier(statement.specifier)\n ? toBareSpecifier(url, parent, new Set(conditions))\n : toRelativeSpecifier(url, parent)\n )\n )\n }\n }\n }\n\n return code\n}\n\nexport default fillModules\n"],
6
- "mappings": "AAKA,SAAS,2BAA2B;AAEpC,OAAO,sBAAsB;AAC7B,OAAO,uBAAuB;AAC9B;AAAA,EACE;AAAA,OAEK;AACP,OAAO,WAAW;AAClB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAEP,OAAO,gBAAgB;AACvB,OAAO,uBAAuB;AAC9B,OAAO,yBAAyB;AAChC,OAAO,qBAAqB;AAC5B,OAAO,mBAAmB;AAC1B,OAAO,qBAAqB;AAC5B,OAAO,yBAAyB;AAmBhC,MAAM,cAAc,OAClB,MACA,YACoB;AACpB,QAAM,EAAE,aAAa,YAAY,KAAK,SAAS,YAAY,IAAI,IAAI;AAGnE,mBAAiB,YAAY,oBAAoB,GACjD,kBAAkB,QAAQ,gBAAgB;AAG1C,aAAW,aAAa,kBAAkB,IAAI;AAC5C,QAAI,UAAU,aACR,UAAU,qBAAqB,oBAAoB,SAAS;AAM9D,YAAM,MAAW,MAAM,cAAc,UAAU,WAAW;AAAA,QACxD,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAgBH,MAAM,IAAI,WAAmBA,MAAqC;AAKhE,cAHI,gBAAgB,SAAS,KAGzB,MAAM,QAAQ,SAAS,MAAM,MAAM,QAAQA,KAAI,IAAI;AACrD;AAQF,gBAAM,OAAe,WAAW,GAAG,IAC/B,MAAM,IAAI,WAAWA,IAAG,IACxB;AAGJ,cAAI,EAAE,QAAQ,KAAK,IAAI,EAAE,UAAU,KAAK,WAAW,GAAG,IAAI,IAAI;AAC5D,kBAAM,IAAI,2BAA2B,MAAM,SAAS;AAGtD,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAGD,aAAO,KAAK;AAAA,QACV,UAAU;AAAA,QACV,UAAU,KAAK;AAAA,UACb,IAAI,OAAO,YAAY,OAAO,UAAU,SAAS,CAAC,UAAU;AAAA;AAAA,UAE5D,UAAU,UAAU,WAAW,GAAG,IAC9B,UAAU,YACV,oBAAoB,UAAU,SAAS,IACvC,IAAI,OACJ,gBAAgB,UAAU,SAAS,IACnC,gBAAgB,KAAK,QAAQ,IAAI,IAAI,UAAU,CAAC,IAChD,oBAAoB,KAAK,MAAM;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAIJ,SAAO;AACT;AAEA,IAAO,uBAAQ;",
7
- "names": ["url"]
8
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * @file findDynamicImports
3
- * @module mlly/utils/findDynamicImports
4
- */
5
- import type { DynamicImport } from '../interfaces/index.mjs';
6
- /**
7
- * Finds all dynamic import statements in `code`. Ignores matches in comments.
8
- *
9
- * @see {@linkcode DynamicImport}
10
- * @see https://regex101.com/r/PTPAvU
11
- * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/import
12
- *
13
- * @param {string} [code=''] - Code to evaluate
14
- * @return {DynamicImport[]} Dynamic import statement objects
15
- * @throws {NodeError<TypeError>} If `code` is not a string
16
- */
17
- declare const findDynamicImports: (code?: string) => DynamicImport[];
18
- export default findDynamicImports;
@@ -1,36 +0,0 @@
1
- import {
2
- SpecifierSyntaxKind,
3
- StatementKind,
4
- StatementSyntaxKind
5
- } from "../enums/index.mjs";
6
- import dequote from "../internal/dequote.mjs";
7
- import getSpecifierKind from "../internal/get-specifier-kind.mjs";
8
- import validateString from "../internal/validate-string.mjs";
9
- import { DYNAMIC_IMPORT_REGEX } from "@flex-development/import-regex";
10
- import { split, trim } from "@flex-development/tutils";
11
- const findDynamicImports = (code = "") => (validateString(code, "code"), [...code.matchAll(DYNAMIC_IMPORT_REGEX)].map((match) => {
12
- const { 0: code2 = "", index: start = 0, groups = {} } = match, {
13
- expression = "",
14
- imports = "",
15
- options = "",
16
- specifier = ""
17
- } = groups, specifier_syntax = /^["']/.test(specifier) ? SpecifierSyntaxKind.STATIC : SpecifierSyntaxKind.DYNAMIC;
18
- return {
19
- code: code2,
20
- end: start + code2.length,
21
- expression,
22
- imports: imports === "" ? [] : split(imports.replace(/^{|}$/g, ""), ",").map(trim).filter((e) => !!e.length),
23
- kind: StatementKind.IMPORT,
24
- options,
25
- specifier: dequote(specifier),
26
- specifier_kind: specifier_syntax === SpecifierSyntaxKind.DYNAMIC ? null : getSpecifierKind(specifier),
27
- specifier_syntax,
28
- start,
29
- syntax: StatementSyntaxKind.DYNAMIC
30
- };
31
- }));
32
- var find_dynamic_imports_default = findDynamicImports;
33
- export {
34
- find_dynamic_imports_default as default
35
- };
36
- //# sourceMappingURL=find-dynamic-imports.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/find-dynamic-imports.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file findDynamicImports\n * @module mlly/utils/findDynamicImports\n */\n\nimport {\n SpecifierSyntaxKind,\n StatementKind,\n StatementSyntaxKind\n} from '#src/enums'\nimport type { DynamicImport } from '#src/interfaces'\nimport dequote from '#src/internal/dequote'\nimport getSpecifierKind from '#src/internal/get-specifier-kind'\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport { DYNAMIC_IMPORT_REGEX } from '@flex-development/import-regex'\nimport { split, trim } from '@flex-development/tutils'\n\n/**\n * Finds all dynamic import statements in `code`. Ignores matches in comments.\n *\n * @see {@linkcode DynamicImport}\n * @see https://regex101.com/r/PTPAvU\n * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/import\n *\n * @param {string} [code=''] - Code to evaluate\n * @return {DynamicImport[]} Dynamic import statement objects\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst findDynamicImports = (code: string = ''): DynamicImport[] => {\n validateString(code, 'code')\n\n return [...code.matchAll(DYNAMIC_IMPORT_REGEX)].map(match => {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const {\n expression = '',\n imports = '',\n options = '',\n specifier = ''\n } = groups\n\n /**\n * Module specifier syntax.\n *\n * @const {SpecifierSyntaxKind} specifier_syntax\n */\n const specifier_syntax: SpecifierSyntaxKind = /^[\"']/.test(specifier)\n ? SpecifierSyntaxKind.STATIC\n : SpecifierSyntaxKind.DYNAMIC\n\n return {\n code,\n end: start + code.length,\n expression,\n imports:\n imports === ''\n ? []\n : split(imports.replace(/^{|}$/g, ''), ',')\n .map(trim)\n .filter(e => !!e.length),\n kind: StatementKind.IMPORT,\n options,\n specifier: dequote(specifier),\n specifier_kind:\n specifier_syntax === SpecifierSyntaxKind.DYNAMIC\n ? null\n : getSpecifierKind(specifier),\n specifier_syntax,\n start,\n syntax: StatementSyntaxKind.DYNAMIC\n }\n })\n}\n\nexport default findDynamicImports\n"],
6
- "mappings": "AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,aAAa;AACpB,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAE3B,SAAS,4BAA4B;AACrC,SAAS,OAAO,YAAY;AAa5B,MAAM,qBAAqB,CAAC,OAAe,QACzC,eAAe,MAAM,MAAM,GAEpB,CAAC,GAAG,KAAK,SAAS,oBAAoB,CAAC,EAAE,IAAI,WAAS;AAC3D,QAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD;AAAA,IACJ,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,YAAY;AAAA,EACd,IAAI,QAOE,mBAAwC,QAAQ,KAAK,SAAS,IAChE,oBAAoB,SACpB,oBAAoB;AAExB,SAAO;AAAA,IACL,MAAAA;AAAA,IACA,KAAK,QAAQA,MAAK;AAAA,IAClB;AAAA,IACA,SACE,YAAY,KACR,CAAC,IACD,MAAM,QAAQ,QAAQ,UAAU,EAAE,GAAG,GAAG,EACrC,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,IAC/B,MAAM,cAAc;AAAA,IACpB;AAAA,IACA,WAAW,QAAQ,SAAS;AAAA,IAC5B,gBACE,qBAAqB,oBAAoB,UACrC,OACA,iBAAiB,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,IACA,QAAQ,oBAAoB;AAAA,EAC9B;AACF,CAAC;AAGH,IAAO,+BAAQ;",
7
- "names": ["code"]
8
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * @file findExports
3
- * @module mlly/utils/findExports
4
- */
5
- import type { ExportStatement } from '../interfaces/index.mjs';
6
- /**
7
- * Finds all export statements in `code`. Ignores matches in comments.
8
- *
9
- * @see {@linkcode ExportStatement}
10
- * @see https://regex101.com/r/JtvRUt
11
- * @see https://regex101.com/r/8HpMrA
12
- * @see https://regex101.com/r/G7GhEt
13
- * @see https://regex101.com/r/KQEDdZ
14
- * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export
15
- *
16
- * @param {string} [code=''] - Code to evaluate
17
- * @return {ExportStatement[]} Export statement objects
18
- * @throws {NodeError<TypeError>} If `code` is not a string
19
- */
20
- declare const findExports: (code?: string) => ExportStatement[];
21
- export default findExports;
@@ -1,92 +0,0 @@
1
- import {
2
- SpecifierSyntaxKind,
3
- StatementKind,
4
- StatementSyntaxKind
5
- } from "../enums/index.mjs";
6
- import getSpecifierKind from "../internal/get-specifier-kind.mjs";
7
- import validateString from "../internal/validate-string.mjs";
8
- import {
9
- EXPORT_AGGREGATE_REGEX,
10
- EXPORT_DECLARATION_REGEX,
11
- EXPORT_DEFAULT_REGEX,
12
- EXPORT_LIST_REGEX
13
- } from "@flex-development/export-regex";
14
- import { cast, sort, split, trim } from "@flex-development/tutils";
15
- const findExports = (code = "") => {
16
- validateString(code, "code");
17
- const statements = [];
18
- for (const match of code.matchAll(EXPORT_AGGREGATE_REGEX)) {
19
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { exports = "", specifier = "", type = "" } = groups;
20
- statements.push({
21
- code: code2,
22
- declaration: null,
23
- end: start + code2.length,
24
- exports: exports.startsWith("*") ? [exports] : split(exports.replace(/^{|}$/g, ""), ",").map(trim).filter((e) => !!e.length),
25
- kind: StatementKind.EXPORT,
26
- modifiers: [],
27
- specifier,
28
- specifier_kind: getSpecifierKind(specifier),
29
- specifier_syntax: SpecifierSyntaxKind.STATIC,
30
- start,
31
- syntax: exports.startsWith("{") ? StatementSyntaxKind.NAMED : StatementSyntaxKind.NAMESPACE,
32
- type: !!type
33
- });
34
- }
35
- for (const match of code.matchAll(EXPORT_DECLARATION_REGEX)) {
36
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { declaration = "", exports = "", modifiers = "" } = groups;
37
- statements.push({
38
- code: code2,
39
- declaration: cast(declaration),
40
- end: start + code2.length,
41
- exports: /^\w+$/.test(exports) ? [exports] : split(exports.replace(/^[[{]|[\]}]$/g, ""), ",").map((e) => trim(e).replace(/\s*=\s*.*$/, "")).filter((e) => !!e.length),
42
- kind: StatementKind.EXPORT,
43
- modifiers: modifiers === "" ? [] : split(modifiers, " ").map(trim).filter((e) => !!e.length),
44
- specifier: null,
45
- specifier_kind: null,
46
- specifier_syntax: null,
47
- start,
48
- syntax: StatementSyntaxKind.DECLARATION,
49
- type: !1
50
- });
51
- }
52
- for (const match of code.matchAll(EXPORT_DEFAULT_REGEX)) {
53
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { exports = "", kind: declaration = "", modifiers = "" } = groups;
54
- statements.push({
55
- code: code2,
56
- declaration: declaration ? cast(declaration) : null,
57
- end: start + code2.length,
58
- exports: exports === "" ? [] : [exports],
59
- kind: StatementKind.EXPORT,
60
- modifiers: modifiers === "" ? [] : split(modifiers, " ").map(trim).filter((e) => !!e.length),
61
- specifier: null,
62
- specifier_kind: null,
63
- specifier_syntax: null,
64
- start,
65
- syntax: StatementSyntaxKind.DEFAULT,
66
- type: !1
67
- });
68
- }
69
- for (const match of code.matchAll(EXPORT_LIST_REGEX)) {
70
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { exports = "", type = "" } = groups;
71
- statements.push({
72
- code: code2,
73
- declaration: null,
74
- end: start + code2.length,
75
- exports: split(exports.replace(/^{|}$/g, ""), ",").map(trim).filter((e) => !!e.length),
76
- kind: StatementKind.EXPORT,
77
- modifiers: [],
78
- specifier: null,
79
- specifier_kind: null,
80
- specifier_syntax: null,
81
- start,
82
- syntax: StatementSyntaxKind.LIST,
83
- type: !!type
84
- });
85
- }
86
- return sort(statements, (s1, s2) => s1.start - s2.start);
87
- };
88
- var find_exports_default = findExports;
89
- export {
90
- find_exports_default as default
91
- };
92
- //# sourceMappingURL=find-exports.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/find-exports.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file findExports\n * @module mlly/utils/findExports\n */\n\nimport {\n SpecifierSyntaxKind,\n StatementKind,\n StatementSyntaxKind\n} from '#src/enums'\nimport type { ExportStatement } from '#src/interfaces'\nimport getSpecifierKind from '#src/internal/get-specifier-kind'\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport {\n EXPORT_AGGREGATE_REGEX,\n EXPORT_DECLARATION_REGEX,\n EXPORT_DEFAULT_REGEX,\n EXPORT_LIST_REGEX\n} from '@flex-development/export-regex'\nimport { cast, sort, split, trim } from '@flex-development/tutils'\n\n/**\n * Finds all export statements in `code`. Ignores matches in comments.\n *\n * @see {@linkcode ExportStatement}\n * @see https://regex101.com/r/JtvRUt\n * @see https://regex101.com/r/8HpMrA\n * @see https://regex101.com/r/G7GhEt\n * @see https://regex101.com/r/KQEDdZ\n * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/export\n *\n * @param {string} [code=''] - Code to evaluate\n * @return {ExportStatement[]} Export statement objects\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst findExports = (code: string = ''): ExportStatement[] => {\n validateString(code, 'code')\n\n /**\n * `export` statement objects.\n *\n * @const {ExportStatement[]} statements\n */\n const statements: ExportStatement[] = []\n\n // get aggregate export statements\n for (const match of code.matchAll(EXPORT_AGGREGATE_REGEX)) {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { exports = '', specifier = '', type = '' } = groups\n\n statements.push({\n code,\n declaration: null,\n end: start + code.length,\n exports: exports.startsWith('*')\n ? [exports]\n : split(exports.replace(/^{|}$/g, ''), ',')\n .map(trim)\n .filter(e => !!e.length),\n kind: StatementKind.EXPORT,\n modifiers: [],\n specifier,\n specifier_kind: getSpecifierKind(specifier),\n specifier_syntax: SpecifierSyntaxKind.STATIC,\n start,\n syntax: exports.startsWith('{')\n ? StatementSyntaxKind.NAMED\n : StatementSyntaxKind.NAMESPACE,\n type: !!type\n })\n }\n\n // get declaration export statements\n for (const match of code.matchAll(EXPORT_DECLARATION_REGEX)) {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { declaration = '', exports = '', modifiers = '' } = groups\n\n statements.push({\n code,\n declaration: cast(declaration),\n end: start + code.length,\n exports: /^\\w+$/.test(exports)\n ? [exports]\n : split(exports.replace(/^[[{]|[\\]}]$/g, ''), ',')\n .map(e => trim(e).replace(/\\s*=\\s*.*$/, ''))\n .filter(e => !!e.length),\n kind: StatementKind.EXPORT,\n modifiers:\n modifiers === ''\n ? []\n : split(modifiers, ' ')\n .map(trim)\n .filter(e => !!e.length),\n specifier: null,\n specifier_kind: null,\n specifier_syntax: null,\n start,\n syntax: StatementSyntaxKind.DECLARATION,\n type: false\n })\n }\n\n // get export default statements\n for (const match of code.matchAll(EXPORT_DEFAULT_REGEX)) {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { exports = '', kind: declaration = '', modifiers = '' } = groups\n\n statements.push({\n code,\n declaration: declaration ? cast(declaration) : null,\n end: start + code.length,\n exports: exports === '' ? [] : [exports],\n kind: StatementKind.EXPORT,\n modifiers:\n modifiers === ''\n ? []\n : split(modifiers, ' ')\n .map(trim)\n .filter(e => !!e.length),\n specifier: null,\n specifier_kind: null,\n specifier_syntax: null,\n start,\n syntax: StatementSyntaxKind.DEFAULT,\n type: false\n })\n }\n\n // get list export statements\n for (const match of code.matchAll(EXPORT_LIST_REGEX)) {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { exports = '', type = '' } = groups\n\n statements.push({\n code,\n declaration: null,\n end: start + code.length,\n exports: split(exports.replace(/^{|}$/g, ''), ',')\n .map(trim)\n .filter(e => !!e.length),\n kind: StatementKind.EXPORT,\n modifiers: [],\n specifier: null,\n specifier_kind: null,\n specifier_syntax: null,\n start,\n syntax: StatementSyntaxKind.LIST,\n type: !!type\n })\n }\n\n return sort(statements, (s1, s2): number => s1.start - s2.start)\n}\n\nexport default findExports\n"],
6
- "mappings": "AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAE3B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,MAAM,MAAM,OAAO,YAAY;AAgBxC,MAAM,cAAc,CAAC,OAAe,OAA0B;AAC5D,iBAAe,MAAM,MAAM;AAO3B,QAAM,aAAgC,CAAC;AAGvC,aAAW,SAAS,KAAK,SAAS,sBAAsB,GAAG;AACzD,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,UAAU,IAAI,YAAY,IAAI,OAAO,GAAG,IAAI;AAEpD,eAAW,KAAK;AAAA,MACd,MAAAA;AAAA,MACA,aAAa;AAAA,MACb,KAAK,QAAQA,MAAK;AAAA,MAClB,SAAS,QAAQ,WAAW,GAAG,IAC3B,CAAC,OAAO,IACR,MAAM,QAAQ,QAAQ,UAAU,EAAE,GAAG,GAAG,EACrC,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MAC7B,MAAM,cAAc;AAAA,MACpB,WAAW,CAAC;AAAA,MACZ;AAAA,MACA,gBAAgB,iBAAiB,SAAS;AAAA,MAC1C,kBAAkB,oBAAoB;AAAA,MACtC;AAAA,MACA,QAAQ,QAAQ,WAAW,GAAG,IAC1B,oBAAoB,QACpB,oBAAoB;AAAA,MACxB,MAAM,CAAC,CAAC;AAAA,IACV,CAAC;AAAA,EACH;AAGA,aAAW,SAAS,KAAK,SAAS,wBAAwB,GAAG;AAC3D,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,cAAc,IAAI,UAAU,IAAI,YAAY,GAAG,IAAI;AAE3D,eAAW,KAAK;AAAA,MACd,MAAAA;AAAA,MACA,aAAa,KAAK,WAAW;AAAA,MAC7B,KAAK,QAAQA,MAAK;AAAA,MAClB,SAAS,QAAQ,KAAK,OAAO,IACzB,CAAC,OAAO,IACR,MAAM,QAAQ,QAAQ,iBAAiB,EAAE,GAAG,GAAG,EAC5C,IAAI,OAAK,KAAK,CAAC,EAAE,QAAQ,cAAc,EAAE,CAAC,EAC1C,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MAC7B,MAAM,cAAc;AAAA,MACpB,WACE,cAAc,KACV,CAAC,IACD,MAAM,WAAW,GAAG,EACjB,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MAC/B,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB;AAAA,MACA,QAAQ,oBAAoB;AAAA,MAC5B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAGA,aAAW,SAAS,KAAK,SAAS,oBAAoB,GAAG;AACvD,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,UAAU,IAAI,MAAM,cAAc,IAAI,YAAY,GAAG,IAAI;AAEjE,eAAW,KAAK;AAAA,MACd,MAAAA;AAAA,MACA,aAAa,cAAc,KAAK,WAAW,IAAI;AAAA,MAC/C,KAAK,QAAQA,MAAK;AAAA,MAClB,SAAS,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO;AAAA,MACvC,MAAM,cAAc;AAAA,MACpB,WACE,cAAc,KACV,CAAC,IACD,MAAM,WAAW,GAAG,EACjB,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MAC/B,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB;AAAA,MACA,QAAQ,oBAAoB;AAAA,MAC5B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAGA,aAAW,SAAS,KAAK,SAAS,iBAAiB,GAAG;AACpD,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,UAAU,IAAI,OAAO,GAAG,IAAI;AAEpC,eAAW,KAAK;AAAA,MACd,MAAAA;AAAA,MACA,aAAa;AAAA,MACb,KAAK,QAAQA,MAAK;AAAA,MAClB,SAAS,MAAM,QAAQ,QAAQ,UAAU,EAAE,GAAG,GAAG,EAC9C,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MACzB,MAAM,cAAc;AAAA,MACpB,WAAW,CAAC;AAAA,MACZ,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,MAClB;AAAA,MACA,QAAQ,oBAAoB;AAAA,MAC5B,MAAM,CAAC,CAAC;AAAA,IACV,CAAC;AAAA,EACH;AAEA,SAAO,KAAK,YAAY,CAAC,IAAI,OAAe,GAAG,QAAQ,GAAG,KAAK;AACjE;AAEA,IAAO,uBAAQ;",
7
- "names": ["code"]
8
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * @file findRequires
3
- * @module mlly/utils/findRequires
4
- */
5
- import type { RequireStatement } from '../interfaces/index.mjs';
6
- /**
7
- * Finds all `require` statements in `code`. Ignores matches in comments.
8
- *
9
- * @see {@linkcode RequireStatement}
10
- * @see https://regex101.com/r/uCqSYB
11
- * @see https://nodejs.org/api/modules.html#requireid
12
- *
13
- * @param {string} [code=''] - Code to evaluate
14
- * @return {RequireStatement[]} Require statement objects
15
- * @throws {NodeError<TypeError>} If `code` is not a string
16
- */
17
- declare const findRequires: (code?: string) => RequireStatement[];
18
- export default findRequires;
@@ -1,32 +0,0 @@
1
- import {
2
- SpecifierSyntaxKind,
3
- StatementKind,
4
- StatementSyntaxKind
5
- } from "../enums/index.mjs";
6
- import dequote from "../internal/dequote.mjs";
7
- import getSpecifierKind from "../internal/get-specifier-kind.mjs";
8
- import validateString from "../internal/validate-string.mjs";
9
- import { split, trim } from "@flex-development/tutils";
10
- const findRequires = (code = "") => {
11
- validateString(code, "code");
12
- const REQUIRE_REGEX = /(?<=^|[\s,:;([])\b(?:(?:const\s*|let\s*|var\s*)?(?:(?<=(?:const\s*|let\s*|var\s*))(?<imports>(?:[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*)|(?:[\w\t\n\r "$'*,./:{}-]+?)))?\s*=?\s*(?<kind>require)\((?<specifier>["']?[\S\t\n\r]+?["']?)\))(?<!(?:\/\/|\*).*)/gu;
13
- return [...code.matchAll(REQUIRE_REGEX)].map((match) => {
14
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { imports = "", specifier = "" } = groups, specifier_syntax = /^["']/.test(specifier) ? SpecifierSyntaxKind.STATIC : SpecifierSyntaxKind.DYNAMIC;
15
- return {
16
- code: code2,
17
- end: start + code2.length,
18
- imports: imports === "" ? [] : split(imports.replace(/^{|}$/g, ""), ",").map(trim).filter((e) => !!e.length),
19
- kind: StatementKind.REQUIRE,
20
- specifier: dequote(specifier),
21
- specifier_kind: specifier_syntax === SpecifierSyntaxKind.DYNAMIC ? null : getSpecifierKind(specifier),
22
- specifier_syntax,
23
- start,
24
- syntax: StatementSyntaxKind.REQUIRE
25
- };
26
- });
27
- };
28
- var find_requires_default = findRequires;
29
- export {
30
- find_requires_default as default
31
- };
32
- //# sourceMappingURL=find-requires.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/find-requires.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file findRequires\n * @module mlly/utils/findRequires\n */\n\nimport {\n SpecifierSyntaxKind,\n StatementKind,\n StatementSyntaxKind\n} from '#src/enums'\nimport type { RequireStatement } from '#src/interfaces'\nimport dequote from '#src/internal/dequote'\nimport getSpecifierKind from '#src/internal/get-specifier-kind'\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport { split, trim } from '@flex-development/tutils'\n\n/**\n * Finds all `require` statements in `code`. Ignores matches in comments.\n *\n * @see {@linkcode RequireStatement}\n * @see https://regex101.com/r/uCqSYB\n * @see https://nodejs.org/api/modules.html#requireid\n *\n * @param {string} [code=''] - Code to evaluate\n * @return {RequireStatement[]} Require statement objects\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst findRequires = (code: string = ''): RequireStatement[] => {\n validateString(code, 'code')\n\n /**\n * `require` statement regex.\n *\n * @const {RegExp} REQUIRE_REGEX\n */\n const REQUIRE_REGEX: RegExp =\n /(?<=^|[\\s,:;([])\\b(?:(?:const\\s*|let\\s*|var\\s*)?(?:(?<=(?:const\\s*|let\\s*|var\\s*))(?<imports>(?:[$_\\p{ID_Start}][$\\u200C\\u200D\\p{ID_Continue}]*)|(?:[\\w\\t\\n\\r \"$'*,./:{}-]+?)))?\\s*=?\\s*(?<kind>require)\\((?<specifier>[\"']?[\\S\\t\\n\\r]+?[\"']?)\\))(?<!(?:\\/\\/|\\*).*)/gu\n\n return [...code.matchAll(REQUIRE_REGEX)].map(match => {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { imports = '', specifier = '' } = groups\n\n /**\n * Module specifier syntax.\n *\n * @const {SpecifierSyntaxKind} specifier_syntax\n */\n const specifier_syntax: SpecifierSyntaxKind = /^[\"']/.test(specifier)\n ? SpecifierSyntaxKind.STATIC\n : SpecifierSyntaxKind.DYNAMIC\n\n return {\n code,\n end: start + code.length,\n imports:\n imports === ''\n ? []\n : split(imports.replace(/^{|}$/g, ''), ',')\n .map(trim)\n .filter(e => !!e.length),\n kind: StatementKind.REQUIRE,\n specifier: dequote(specifier),\n specifier_kind:\n specifier_syntax === SpecifierSyntaxKind.DYNAMIC\n ? null\n : getSpecifierKind(specifier),\n specifier_syntax,\n start,\n syntax: StatementSyntaxKind.REQUIRE\n }\n })\n}\n\nexport default findRequires\n"],
6
- "mappings": "AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,aAAa;AACpB,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAE3B,SAAS,OAAO,YAAY;AAa5B,MAAM,eAAe,CAAC,OAAe,OAA2B;AAC9D,iBAAe,MAAM,MAAM;AAO3B,QAAM,gBACJ;AAEF,SAAO,CAAC,GAAG,KAAK,SAAS,aAAa,CAAC,EAAE,IAAI,WAAS;AACpD,UAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,UAAU,IAAI,YAAY,GAAG,IAAI,QAOnC,mBAAwC,QAAQ,KAAK,SAAS,IAChE,oBAAoB,SACpB,oBAAoB;AAExB,WAAO;AAAA,MACL,MAAAA;AAAA,MACA,KAAK,QAAQA,MAAK;AAAA,MAClB,SACE,YAAY,KACR,CAAC,IACD,MAAM,QAAQ,QAAQ,UAAU,EAAE,GAAG,GAAG,EACrC,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM;AAAA,MAC/B,MAAM,cAAc;AAAA,MACpB,WAAW,QAAQ,SAAS;AAAA,MAC5B,gBACE,qBAAqB,oBAAoB,UACrC,OACA,iBAAiB,SAAS;AAAA,MAChC;AAAA,MACA;AAAA,MACA,QAAQ,oBAAoB;AAAA,IAC9B;AAAA,EACF,CAAC;AACH;AAEA,IAAO,wBAAQ;",
7
- "names": ["code"]
8
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * @file findStaticImports
3
- * @module mlly/utils/findStaticImports
4
- */
5
- import type { StaticImport } from '../interfaces/index.mjs';
6
- /**
7
- * Finds all static import statements in `code`. Ignores matches in comments.
8
- *
9
- * @see {@linkcode StaticImport}
10
- * @see https://regex101.com/r/wlYQUN
11
- * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import
12
- *
13
- * @param {string} [code=''] - Code to evaluate
14
- * @return {StaticImport[]} Static import statement objects
15
- * @throws {NodeError<TypeError>} If `code` is not a string
16
- */
17
- declare const findStaticImports: (code?: string) => StaticImport[];
18
- export default findStaticImports;
@@ -1,30 +0,0 @@
1
- import {
2
- SpecifierSyntaxKind,
3
- StatementKind,
4
- StatementSyntaxKind
5
- } from "../enums/index.mjs";
6
- import getSpecifierKind from "../internal/get-specifier-kind.mjs";
7
- import validateString from "../internal/validate-string.mjs";
8
- import { STATIC_IMPORT_REGEX } from "@flex-development/import-regex";
9
- import { split, trim } from "@flex-development/tutils";
10
- const findStaticImports = (code = "") => (validateString(code, "code"), [...code.matchAll(STATIC_IMPORT_REGEX)].map((match) => {
11
- const { 0: code2 = "", index: start = 0, groups = {} } = match, { assertion = "", imports = "", specifier = "", type = "" } = groups, syntax = imports === "" ? StatementSyntaxKind.SIDE_EFFECT : imports.startsWith("* as") ? StatementSyntaxKind.NAMESPACE : imports.startsWith("{") ? StatementSyntaxKind.NAMED : /^\w+$/.test(imports) ? StatementSyntaxKind.DEFAULT : /^\w+,\s*{/.test(imports) ? StatementSyntaxKind.DEFAULT_WITH_NAMED : StatementSyntaxKind.DEFAULT_WITH_NAMESPACE;
12
- return {
13
- assertion,
14
- code: code2,
15
- end: start + code2.length,
16
- imports: syntax === StatementSyntaxKind.SIDE_EFFECT ? [] : syntax === StatementSyntaxKind.NAMED ? split(imports.replace(/^{|}$/g, ""), ",").map(trim).filter((i) => !!i.length) : syntax === StatementSyntaxKind.DEFAULT_WITH_NAMED ? split(imports, ",").map((i) => trim(i).replace(/^{|}$/g, "")).map(trim).filter((i) => !!i.length) : syntax === StatementSyntaxKind.DEFAULT_WITH_NAMESPACE ? split(imports, ",").map(trim).filter((i) => !!i.length) : [imports],
17
- kind: StatementKind.IMPORT,
18
- specifier,
19
- specifier_kind: getSpecifierKind(specifier),
20
- specifier_syntax: SpecifierSyntaxKind.STATIC,
21
- start,
22
- syntax,
23
- type: !!type
24
- };
25
- }));
26
- var find_static_imports_default = findStaticImports;
27
- export {
28
- find_static_imports_default as default
29
- };
30
- //# sourceMappingURL=find-static-imports.mjs.map
@@ -1,8 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/find-static-imports.ts"],
4
- "sourceRoot": "file://",
5
- "sourcesContent": ["/**\n * @file findStaticImports\n * @module mlly/utils/findStaticImports\n */\n\nimport {\n SpecifierSyntaxKind,\n StatementKind,\n StatementSyntaxKind\n} from '#src/enums'\nimport type { StaticImport } from '#src/interfaces'\nimport getSpecifierKind from '#src/internal/get-specifier-kind'\nimport validateString from '#src/internal/validate-string'\nimport type { NodeError } from '@flex-development/errnode'\nimport { STATIC_IMPORT_REGEX } from '@flex-development/import-regex'\nimport { split, trim } from '@flex-development/tutils'\n\n/**\n * Finds all static import statements in `code`. Ignores matches in comments.\n *\n * @see {@linkcode StaticImport}\n * @see https://regex101.com/r/wlYQUN\n * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/import\n *\n * @param {string} [code=''] - Code to evaluate\n * @return {StaticImport[]} Static import statement objects\n * @throws {NodeError<TypeError>} If `code` is not a string\n */\nconst findStaticImports = (code: string = ''): StaticImport[] => {\n validateString(code, 'code')\n\n return [...code.matchAll(STATIC_IMPORT_REGEX)].map(match => {\n const { 0: code = '', index: start = 0, groups = {} } = match\n const { assertion = '', imports = '', specifier = '', type = '' } = groups\n\n /**\n * Statement syntax kind.\n *\n * @const {StaticImport['syntax']} syntax\n */\n const syntax: StaticImport['syntax'] =\n imports === ''\n ? StatementSyntaxKind.SIDE_EFFECT\n : imports.startsWith('* as')\n ? StatementSyntaxKind.NAMESPACE\n : imports.startsWith('{')\n ? StatementSyntaxKind.NAMED\n : /^\\w+$/.test(imports)\n ? StatementSyntaxKind.DEFAULT\n : /^\\w+,\\s*{/.test(imports)\n ? StatementSyntaxKind.DEFAULT_WITH_NAMED\n : StatementSyntaxKind.DEFAULT_WITH_NAMESPACE\n\n return {\n assertion,\n code,\n end: start + code.length,\n imports:\n syntax === StatementSyntaxKind.SIDE_EFFECT\n ? []\n : syntax === StatementSyntaxKind.NAMED\n ? split(imports.replace(/^{|}$/g, ''), ',')\n .map(trim)\n .filter(i => !!i.length)\n : syntax === StatementSyntaxKind.DEFAULT_WITH_NAMED\n ? split(imports, ',')\n .map(i => trim(i).replace(/^{|}$/g, ''))\n .map(trim)\n .filter(i => !!i.length)\n : syntax === StatementSyntaxKind.DEFAULT_WITH_NAMESPACE\n ? split(imports, ',')\n .map(trim)\n .filter(i => !!i.length)\n : [imports],\n kind: StatementKind.IMPORT,\n specifier,\n specifier_kind: getSpecifierKind(specifier),\n specifier_syntax: SpecifierSyntaxKind.STATIC,\n start,\n syntax,\n type: !!type\n }\n })\n}\n\nexport default findStaticImports\n"],
6
- "mappings": "AAKA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,OAAO,sBAAsB;AAC7B,OAAO,oBAAoB;AAE3B,SAAS,2BAA2B;AACpC,SAAS,OAAO,YAAY;AAa5B,MAAM,oBAAoB,CAAC,OAAe,QACxC,eAAe,MAAM,MAAM,GAEpB,CAAC,GAAG,KAAK,SAAS,mBAAmB,CAAC,EAAE,IAAI,WAAS;AAC1D,QAAM,EAAE,GAAGA,QAAO,IAAI,OAAO,QAAQ,GAAG,SAAS,CAAC,EAAE,IAAI,OAClD,EAAE,YAAY,IAAI,UAAU,IAAI,YAAY,IAAI,OAAO,GAAG,IAAI,QAO9D,SACJ,YAAY,KACR,oBAAoB,cACpB,QAAQ,WAAW,MAAM,IACzB,oBAAoB,YACpB,QAAQ,WAAW,GAAG,IACtB,oBAAoB,QACpB,QAAQ,KAAK,OAAO,IACpB,oBAAoB,UACpB,YAAY,KAAK,OAAO,IACxB,oBAAoB,qBACpB,oBAAoB;AAE1B,SAAO;AAAA,IACL;AAAA,IACA,MAAAA;AAAA,IACA,KAAK,QAAQA,MAAK;AAAA,IAClB,SACE,WAAW,oBAAoB,cAC3B,CAAC,IACD,WAAW,oBAAoB,QAC/B,MAAM,QAAQ,QAAQ,UAAU,EAAE,GAAG,GAAG,EACrC,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM,IACzB,WAAW,oBAAoB,qBAC/B,MAAM,SAAS,GAAG,EACf,IAAI,OAAK,KAAK,CAAC,EAAE,QAAQ,UAAU,EAAE,CAAC,EACtC,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM,IACzB,WAAW,oBAAoB,yBAC/B,MAAM,SAAS,GAAG,EACf,IAAI,IAAI,EACR,OAAO,OAAK,CAAC,CAAC,EAAE,MAAM,IACzB,CAAC,OAAO;AAAA,IACd,MAAM,cAAc;AAAA,IACpB;AAAA,IACA,gBAAgB,iBAAiB,SAAS;AAAA,IAC1C,kBAAkB,oBAAoB;AAAA,IACtC;AAAA,IACA;AAAA,IACA,MAAM,CAAC,CAAC;AAAA,EACV;AACF,CAAC;AAGH,IAAO,8BAAQ;",
7
- "names": ["code"]
8
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * @file findSubpath
3
- * @module mlly/utils/findSubpath
4
- */
5
- import type { FindSubpathOptions } from '../interfaces/index.mjs';
6
- import type { Exports, Imports } from '@flex-development/pkg-types';
7
- import { type Nilable, type Nullable } from '@flex-development/tutils';
8
- /**
9
- * Finds the subpath defined in `context`, a `package.json` [`exports`][1] or
10
- * [`imports`][2] field, that maps to the given package `target`.
11
- *
12
- * Supports extensionless targets and targets without explicit `'/index'` usage.
13
- * Returns `null` if a subpath is not found.
14
- *
15
- * [1]: https://nodejs.org/api/packages.html#exports
16
- * [2]: https://nodejs.org/api/packages.html#imports
17
- *
18
- * @see {@linkcode Exports}
19
- * @see {@linkcode FindSubpathOptions}
20
- * @see {@linkcode Imports}
21
- * @see https://nodejs.org/api/packages.html#subpath-exports
22
- * @see https://nodejs.org/api/packages.html#subpath-imports
23
- *
24
- * @param {string} target - Package target to find in `context`
25
- * @param {Nilable<Exports | Imports>} context - Package context
26
- * @param {FindSubpathOptions} options - Search options
27
- * @return {Nullable<string>} Subpath defined in `context` or `null`
28
- * @throws {NodeError<Error | TypeError>}
29
- */
30
- declare const findSubpath: (target: string, context: Nilable<Exports | Imports>, options: FindSubpathOptions) => Nullable<string>;
31
- export default findSubpath;