@g3nomaly/core 0.3.1 → 0.3.3

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 (223) hide show
  1. package/README.md +122 -0
  2. package/dist/cli/commands/add.d.ts +24 -4
  3. package/dist/cli/commands/add.d.ts.map +1 -1
  4. package/dist/cli/commands/add.js +37 -14
  5. package/dist/cli/commands/add.js.map +1 -1
  6. package/dist/cli/commands/conflict.d.ts +52 -0
  7. package/dist/cli/commands/conflict.d.ts.map +1 -0
  8. package/dist/cli/commands/conflict.js +88 -0
  9. package/dist/cli/commands/conflict.js.map +1 -0
  10. package/dist/cli/commands/installFromSources.d.ts +42 -13
  11. package/dist/cli/commands/installFromSources.d.ts.map +1 -1
  12. package/dist/cli/commands/installFromSources.js +68 -19
  13. package/dist/cli/commands/installFromSources.js.map +1 -1
  14. package/dist/cli/commands/ls.d.ts +13 -3
  15. package/dist/cli/commands/ls.d.ts.map +1 -1
  16. package/dist/cli/commands/ls.js +26 -6
  17. package/dist/cli/commands/ls.js.map +1 -1
  18. package/dist/cli/commands/remove.d.ts +7 -1
  19. package/dist/cli/commands/remove.d.ts.map +1 -1
  20. package/dist/cli/commands/remove.js +15 -1
  21. package/dist/cli/commands/remove.js.map +1 -1
  22. package/dist/cli/commands/sources.d.ts +34 -10
  23. package/dist/cli/commands/sources.d.ts.map +1 -1
  24. package/dist/cli/commands/sources.js +17 -3
  25. package/dist/cli/commands/sources.js.map +1 -1
  26. package/dist/cli/commands/update.d.ts +11 -4
  27. package/dist/cli/commands/update.d.ts.map +1 -1
  28. package/dist/cli/commands/update.js +32 -14
  29. package/dist/cli/commands/update.js.map +1 -1
  30. package/dist/cli/dialogue.d.ts +65 -13
  31. package/dist/cli/dialogue.d.ts.map +1 -1
  32. package/dist/cli/dialogue.js +46 -7
  33. package/dist/cli/dialogue.js.map +1 -1
  34. package/dist/cli/index.d.ts +1 -1
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +1 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/installDialogues.d.ts +11 -3
  39. package/dist/cli/installDialogues.d.ts.map +1 -1
  40. package/dist/cli/installDialogues.js +22 -5
  41. package/dist/cli/installDialogues.js.map +1 -1
  42. package/dist/cli/pick.d.ts +11 -2
  43. package/dist/cli/pick.d.ts.map +1 -1
  44. package/dist/cli/pick.js +11 -2
  45. package/dist/cli/pick.js.map +1 -1
  46. package/dist/cli/report.d.ts +32 -8
  47. package/dist/cli/report.d.ts.map +1 -1
  48. package/dist/cli/report.js +26 -5
  49. package/dist/cli/report.js.map +1 -1
  50. package/dist/cli/theme.d.ts +4 -0
  51. package/dist/cli/theme.d.ts.map +1 -1
  52. package/dist/cli/theme.js +4 -0
  53. package/dist/cli/theme.js.map +1 -1
  54. package/dist/cli/types.d.ts +56 -5
  55. package/dist/cli/types.d.ts.map +1 -1
  56. package/dist/config/config.d.ts +32 -7
  57. package/dist/config/config.d.ts.map +1 -1
  58. package/dist/config/config.js +37 -7
  59. package/dist/config/config.js.map +1 -1
  60. package/dist/config/types.d.ts +58 -0
  61. package/dist/config/types.d.ts.map +1 -1
  62. package/dist/config/types.js +0 -10
  63. package/dist/config/types.js.map +1 -1
  64. package/dist/hash/hash.d.ts +6 -8
  65. package/dist/hash/hash.d.ts.map +1 -1
  66. package/dist/hash/hash.js +7 -8
  67. package/dist/hash/hash.js.map +1 -1
  68. package/dist/hash/index.d.ts.map +1 -1
  69. package/dist/hash/index.js +1 -0
  70. package/dist/hash/index.js.map +1 -1
  71. package/dist/index.js +1 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/installer/classify.d.ts +27 -1
  74. package/dist/installer/classify.d.ts.map +1 -1
  75. package/dist/installer/classify.js +36 -1
  76. package/dist/installer/classify.js.map +1 -1
  77. package/dist/installer/files.d.ts +10 -6
  78. package/dist/installer/files.d.ts.map +1 -1
  79. package/dist/installer/files.js +4 -3
  80. package/dist/installer/files.js.map +1 -1
  81. package/dist/installer/index.d.ts +1 -1
  82. package/dist/installer/index.d.ts.map +1 -1
  83. package/dist/installer/index.js +1 -1
  84. package/dist/installer/index.js.map +1 -1
  85. package/dist/installer/install.d.ts +18 -6
  86. package/dist/installer/install.d.ts.map +1 -1
  87. package/dist/installer/install.js +20 -7
  88. package/dist/installer/install.js.map +1 -1
  89. package/dist/installer/io.d.ts +6 -1
  90. package/dist/installer/io.d.ts.map +1 -1
  91. package/dist/installer/io.js +6 -1
  92. package/dist/installer/io.js.map +1 -1
  93. package/dist/installer/manifest.d.ts +29 -19
  94. package/dist/installer/manifest.d.ts.map +1 -1
  95. package/dist/installer/manifest.js +20 -10
  96. package/dist/installer/manifest.js.map +1 -1
  97. package/dist/installer/manifestSources.d.ts +18 -7
  98. package/dist/installer/manifestSources.d.ts.map +1 -1
  99. package/dist/installer/manifestSources.js +18 -7
  100. package/dist/installer/manifestSources.js.map +1 -1
  101. package/dist/installer/marketplace.d.ts +24 -12
  102. package/dist/installer/marketplace.d.ts.map +1 -1
  103. package/dist/installer/marketplace.js +18 -10
  104. package/dist/installer/marketplace.js.map +1 -1
  105. package/dist/installer/origin.d.ts +23 -7
  106. package/dist/installer/origin.d.ts.map +1 -1
  107. package/dist/installer/origin.js +14 -7
  108. package/dist/installer/origin.js.map +1 -1
  109. package/dist/installer/remove.d.ts +17 -5
  110. package/dist/installer/remove.d.ts.map +1 -1
  111. package/dist/installer/remove.js +17 -5
  112. package/dist/installer/remove.js.map +1 -1
  113. package/dist/installer/resolve.d.ts +80 -31
  114. package/dist/installer/resolve.d.ts.map +1 -1
  115. package/dist/installer/resolve.js +96 -29
  116. package/dist/installer/resolve.js.map +1 -1
  117. package/dist/installer/sourceRegistry.d.ts +59 -22
  118. package/dist/installer/sourceRegistry.d.ts.map +1 -1
  119. package/dist/installer/sourceRegistry.js +25 -10
  120. package/dist/installer/sourceRegistry.js.map +1 -1
  121. package/dist/installer/types.d.ts +72 -19
  122. package/dist/installer/types.d.ts.map +1 -1
  123. package/dist/installer/types.js +18 -8
  124. package/dist/installer/types.js.map +1 -1
  125. package/dist/registry/index.d.ts +0 -4
  126. package/dist/registry/index.d.ts.map +1 -1
  127. package/dist/registry/index.js +1 -4
  128. package/dist/registry/index.js.map +1 -1
  129. package/dist/registry/registry.handlers.d.ts +7 -0
  130. package/dist/registry/registry.handlers.d.ts.map +1 -1
  131. package/dist/registry/registry.handlers.js.map +1 -1
  132. package/dist/registry/registry.io.d.ts +23 -7
  133. package/dist/registry/registry.io.d.ts.map +1 -1
  134. package/dist/registry/registry.io.js +37 -14
  135. package/dist/registry/registry.io.js.map +1 -1
  136. package/dist/registry/registry.mutations.d.ts +10 -3
  137. package/dist/registry/registry.mutations.d.ts.map +1 -1
  138. package/dist/registry/registry.mutations.js +10 -3
  139. package/dist/registry/registry.mutations.js.map +1 -1
  140. package/dist/registry/registry.selectors.d.ts +41 -11
  141. package/dist/registry/registry.selectors.d.ts.map +1 -1
  142. package/dist/registry/registry.selectors.js +41 -11
  143. package/dist/registry/registry.selectors.js.map +1 -1
  144. package/dist/registry/registry.store.d.ts +22 -9
  145. package/dist/registry/registry.store.d.ts.map +1 -1
  146. package/dist/registry/registry.store.js +12 -3
  147. package/dist/registry/registry.store.js.map +1 -1
  148. package/dist/registry/registry.template.d.ts +12 -6
  149. package/dist/registry/registry.template.d.ts.map +1 -1
  150. package/dist/registry/registry.template.js +13 -6
  151. package/dist/registry/registry.template.js.map +1 -1
  152. package/dist/registry/types.d.ts +17 -3
  153. package/dist/registry/types.d.ts.map +1 -1
  154. package/dist/registry/types.js +16 -6
  155. package/dist/registry/types.js.map +1 -1
  156. package/dist/security/index.d.ts.map +1 -1
  157. package/dist/security/index.js +1 -0
  158. package/dist/security/index.js.map +1 -1
  159. package/dist/security/securityParser.d.ts +9 -8
  160. package/dist/security/securityParser.d.ts.map +1 -1
  161. package/dist/security/securityParser.js +12 -22
  162. package/dist/security/securityParser.js.map +1 -1
  163. package/dist/security/securityWorker.d.ts +11 -0
  164. package/dist/security/securityWorker.d.ts.map +1 -1
  165. package/dist/security/securityWorker.js +17 -38
  166. package/dist/security/securityWorker.js.map +1 -1
  167. package/dist/sources/checkout.d.ts +10 -4
  168. package/dist/sources/checkout.d.ts.map +1 -1
  169. package/dist/sources/checkout.js +10 -4
  170. package/dist/sources/checkout.js.map +1 -1
  171. package/dist/sources/git.d.ts +5 -3
  172. package/dist/sources/git.d.ts.map +1 -1
  173. package/dist/sources/git.js +5 -3
  174. package/dist/sources/git.js.map +1 -1
  175. package/dist/sources/local.d.ts +6 -4
  176. package/dist/sources/local.d.ts.map +1 -1
  177. package/dist/sources/local.js +6 -4
  178. package/dist/sources/local.js.map +1 -1
  179. package/dist/sources/npm.d.ts +10 -7
  180. package/dist/sources/npm.d.ts.map +1 -1
  181. package/dist/sources/npm.js +49 -15
  182. package/dist/sources/npm.js.map +1 -1
  183. package/dist/sources/parse.d.ts +24 -16
  184. package/dist/sources/parse.d.ts.map +1 -1
  185. package/dist/sources/parse.js +40 -18
  186. package/dist/sources/parse.js.map +1 -1
  187. package/dist/sources/process.d.ts +10 -7
  188. package/dist/sources/process.d.ts.map +1 -1
  189. package/dist/sources/process.js +10 -7
  190. package/dist/sources/process.js.map +1 -1
  191. package/dist/sources/register.d.ts +20 -5
  192. package/dist/sources/register.d.ts.map +1 -1
  193. package/dist/sources/register.js +20 -5
  194. package/dist/sources/register.js.map +1 -1
  195. package/dist/sources/types.d.ts +43 -8
  196. package/dist/sources/types.d.ts.map +1 -1
  197. package/dist/sources/types.js +21 -4
  198. package/dist/sources/types.js.map +1 -1
  199. package/dist/utils/errors.d.ts +6 -1
  200. package/dist/utils/errors.d.ts.map +1 -1
  201. package/dist/utils/errors.js +6 -1
  202. package/dist/utils/errors.js.map +1 -1
  203. package/dist/utils/merge.d.ts +8 -2
  204. package/dist/utils/merge.d.ts.map +1 -1
  205. package/dist/utils/merge.js +9 -2
  206. package/dist/utils/merge.js.map +1 -1
  207. package/dist/utils/packageMeta.d.ts +16 -2
  208. package/dist/utils/packageMeta.d.ts.map +1 -1
  209. package/dist/utils/packageMeta.js +6 -2
  210. package/dist/utils/packageMeta.js.map +1 -1
  211. package/dist/utils/paths.d.ts +16 -5
  212. package/dist/utils/paths.d.ts.map +1 -1
  213. package/dist/utils/paths.js +16 -5
  214. package/dist/utils/paths.js.map +1 -1
  215. package/dist/utils/prompt.d.ts +6 -1
  216. package/dist/utils/prompt.d.ts.map +1 -1
  217. package/dist/utils/prompt.js +6 -1
  218. package/dist/utils/prompt.js.map +1 -1
  219. package/dist/utils/version.d.ts +7 -2
  220. package/dist/utils/version.d.ts.map +1 -1
  221. package/dist/utils/version.js +40 -3
  222. package/dist/utils/version.js.map +1 -1
  223. package/package.json +1 -1
@@ -1,43 +1,69 @@
1
1
  /**
2
- * Get a single entry by key. Returns undefined if not found.
2
+ * @brief Gets a single entry by key.
3
+ *
4
+ * @param registry - Store to read from.
5
+ * @param key - Key of the entry.
6
+ * @returns The entry, or `undefined` when not found.
3
7
  */
4
8
  export function get(registry, key) {
5
9
  return registry.store.state[key];
6
10
  }
7
11
  /**
8
- * Check whether a key exists in the store.
12
+ * @brief Checks whether a key exists in the store.
13
+ *
14
+ * @param registry - Store to read from.
15
+ * @param key - Key to look for.
16
+ * @returns `true` when the key is present.
9
17
  */
10
18
  export function has(registry, key) {
11
19
  return key in registry.store.state;
12
20
  }
13
21
  /**
14
- * Return all entries as a plain record.
22
+ * @brief Returns all entries as a plain record.
23
+ *
24
+ * @param registry - Store to read from.
25
+ * @returns Entries by key. This is the store's own state, not a copy.
15
26
  */
16
27
  export function entries(registry) {
17
28
  return registry.store.state;
18
29
  }
19
30
  /**
20
- * Return all registered keys.
31
+ * @brief Returns all registered keys.
32
+ *
33
+ * @param registry - Store to read from.
34
+ * @returns Keys of the store's state.
21
35
  */
22
36
  export function keys(registry) {
23
37
  return Object.keys(registry.store.state);
24
38
  }
25
39
  /**
26
- * Return all entries that match a given version string.
40
+ * @brief Returns all entries whose `version` equals the given string.
41
+ *
42
+ * @param registry - Store to read from.
43
+ * @param version - Version to match exactly.
44
+ * @returns Matching entries by key.
27
45
  */
28
46
  export function getByVersion(registry, version) {
29
47
  return Object.fromEntries(Object.entries(registry.store.state).filter(([, entry]) => entry.version === version));
30
48
  }
31
49
  /**
32
- * Return the count of registered entries.
50
+ * @brief Returns the count of registered entries.
51
+ *
52
+ * @param registry - Store to read from.
53
+ * @returns Number of entries.
33
54
  */
34
55
  export function size(registry) {
35
56
  return Object.keys(registry.store.state).length;
36
57
  }
37
58
  /**
38
- * Depth-first walk of `registryDependencies` starting at `key`. Every entry
39
- * reached is added to `seen`; keys without a registry entry are pushed to
40
- * `unknown` and not walked further.
59
+ * @brief Walks `registryDependencies` depth-first, starting at `key`.
60
+ *
61
+ * Every entry reached is added to `seen`. Keys without a registry entry are pushed to `unknown` and not walked further.
62
+ *
63
+ * @param key - Key to start from.
64
+ * @param entries - Registry to walk, by key.
65
+ * @param seen - Keys already reached. Filled in place.
66
+ * @param unknown - Keys with no registry entry. Filled in place.
41
67
  */
42
68
  export function collectDependencies(key, entries, seen, unknown) {
43
69
  if (seen.has(key))
@@ -52,8 +78,12 @@ export function collectDependencies(key, entries, seen, unknown) {
52
78
  collectDependencies(dep, entries, seen, unknown);
53
79
  }
54
80
  /**
55
- * Return which of `candidates` have `key` in their `registryDependencies` —
56
- * the entries that need it and would break if it were removed.
81
+ * @brief Finds the candidates that depend on `key`, the entries that would break if it were removed.
82
+ *
83
+ * @param key - Key that may be needed.
84
+ * @param entries - Registry to read `registryDependencies` from, by key.
85
+ * @param candidates - Keys to check.
86
+ * @returns The candidates whose `registryDependencies` include `key`.
57
87
  */
58
88
  export function entryDependencies(key, entries, candidates) {
59
89
  return candidates.filter((k) => entries[k]?.registryDependencies?.includes(key) ?? false);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.selectors.js","sourceRoot":"","sources":["../../src/registry/registry.selectors.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,GAAG,CACjB,QAA0B,EAC1B,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CACjB,QAA0B,EAC1B,GAAW;IAEX,OAAO,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,QAA0B;IAE1B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAClB,QAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA0B,EAC1B,OAAe;IAEf,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CACtF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAClB,QAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,OAAqB,EACrB,IAAiB,EACjB,OAAiB;IAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAM;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE;QAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACtG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,OAAqB,EACrB,UAAoB;IAEpB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAA;AAC3F,CAAC"}
1
+ {"version":3,"file":"registry.selectors.js","sourceRoot":"","sources":["../../src/registry/registry.selectors.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CACjB,QAA0B,EAC1B,GAAW;IAEX,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CACjB,QAA0B,EAC1B,GAAW;IAEX,OAAO,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,QAA0B;IAE1B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAA;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,QAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA0B,EAC1B,OAAe;IAEf,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CACtF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAClB,QAA0B;IAE1B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;AACjD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAW,EACX,OAAqB,EACrB,IAAiB,EACjB,OAAiB;IAEjB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAM;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,OAAM;IACR,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE;QAAE,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACtG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,OAAqB,EACrB,UAAoB;IAEpB,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAA;AAC3F,CAAC"}
@@ -1,34 +1,47 @@
1
1
  import { Store } from "@tanstack/store";
2
2
  import type { BaseRegistry, BaseRegistryEntry } from "./types";
3
3
  import type { RegistryHandler } from "./registry.handlers";
4
+ /**
5
+ * @brief Options for `createRegistryStore`.
6
+ *
7
+ * @property filePath - Absolute path to the manifest file. Used by `load()` and `flush()`.
8
+ * @property handler - Serialization handler. Defaults to `tsHandler`.
9
+ */
4
10
  export interface RegistryStoreOptions<T extends BaseRegistryEntry = BaseRegistryEntry> {
5
- /** Absolute path to the manifest file. Used by load() and flush(). */
6
11
  filePath?: string;
7
- /** Default handler for serialization/deserialization. Defaults to tsHandler. */
8
12
  handler?: RegistryHandler<T>;
9
13
  }
10
14
  /**
11
- * The registry store instance — passed to mutations, selectors, and io helpers.
15
+ * @brief A registry store, passed to mutations, selectors and io helpers.
16
+ *
17
+ * @property store - The underlying TanStack Store. Subscribe, derive, or read `.state` directly.
18
+ * @property filePath - Absolute path this store is bound to, if any.
19
+ * @property handler - Serialization handler used when `load()` and `flush()` are not given one.
12
20
  */
13
21
  export interface RegistryStore<T extends BaseRegistryEntry = BaseRegistryEntry> {
14
- /** The underlying TanStack Store. Subscribe, derive, or read .state directly. */
15
22
  store: Store<BaseRegistry<T>>;
16
- /** Absolute path this store is bound to (if any). */
17
23
  filePath?: string;
18
- /** Default handler for serialization/deserialization. */
19
24
  handler?: RegistryHandler<T>;
20
25
  }
21
26
  /**
22
- * Creates a RegistryStore backed by TanStack Store.
23
- * State starts empty — call load() to hydrate from disk.
27
+ * @brief Creates a `RegistryStore` backed by TanStack Store, starting empty.
28
+ *
29
+ * Call `load()` to hydrate it from disk.
24
30
  *
25
31
  * @example
26
32
  * const registry = createRegistryStore<MyEntry>({ filePath: "/abs/.g3nerate-manifest.ts" })
27
33
  * await load(registry)
34
+ *
35
+ * @param options - Bound file path and handler. Both optional.
36
+ * @returns A new store with no entries.
28
37
  */
29
38
  export declare function createRegistryStore<T extends BaseRegistryEntry = BaseRegistryEntry>(options?: RegistryStoreOptions<T>): RegistryStore<T>;
30
39
  /**
31
- * Sets the default handler on the store. Returns the store for chaining.
40
+ * @brief Sets the default handler on a store.
41
+ *
42
+ * @param registry - Store to update.
43
+ * @param handler - Handler used for serialization and deserialization.
44
+ * @returns The same store, for chaining.
32
45
  */
33
46
  export declare function useHandler<T extends BaseRegistryEntry>(registry: RegistryStore<T>, handler: RegistryHandler<T>): RegistryStore<T>;
34
47
  //# sourceMappingURL=registry.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.store.d.ts","sourceRoot":"","sources":["../../src/registry/registry.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAM1D,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IACnF,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAC5E,iFAAiF;IACjF,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC7B;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EACjF,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,aAAa,CAAC,CAAC,CAAC,CAMlB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,iBAAiB,EACpD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,CAAC,CAGlB"}
1
+ {"version":3,"file":"registry.store.d.ts","sourceRoot":"","sources":["../../src/registry/registry.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAM1D;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB;IAC5E,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC7B;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EACjF,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,aAAa,CAAC,CAAC,CAAC,CAMlB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,iBAAiB,EACpD,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,CAAC,CAGlB"}
@@ -1,14 +1,19 @@
1
+ // packages/core/src/registry/registry.store.ts
1
2
  import { Store } from "@tanstack/store";
2
3
  // ---------------------------------------------------------------------------
3
4
  // Factory
4
5
  // ---------------------------------------------------------------------------
5
6
  /**
6
- * Creates a RegistryStore backed by TanStack Store.
7
- * State starts empty — call load() to hydrate from disk.
7
+ * @brief Creates a `RegistryStore` backed by TanStack Store, starting empty.
8
+ *
9
+ * Call `load()` to hydrate it from disk.
8
10
  *
9
11
  * @example
10
12
  * const registry = createRegistryStore<MyEntry>({ filePath: "/abs/.g3nerate-manifest.ts" })
11
13
  * await load(registry)
14
+ *
15
+ * @param options - Bound file path and handler. Both optional.
16
+ * @returns A new store with no entries.
12
17
  */
13
18
  export function createRegistryStore(options = {}) {
14
19
  return {
@@ -18,7 +23,11 @@ export function createRegistryStore(options = {}) {
18
23
  };
19
24
  }
20
25
  /**
21
- * Sets the default handler on the store. Returns the store for chaining.
26
+ * @brief Sets the default handler on a store.
27
+ *
28
+ * @param registry - Store to update.
29
+ * @param handler - Handler used for serialization and deserialization.
30
+ * @returns The same store, for chaining.
22
31
  */
23
32
  export function useHandler(registry, handler) {
24
33
  registry.handler = handler;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.store.js","sourceRoot":"","sources":["../../src/registry/registry.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AA2BvC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAO,GAA4B,EAAE;IAErC,OAAO;QACL,KAAK,EAAE,IAAI,KAAK,CAAkB,EAAE,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,QAA0B,EAC1B,OAA2B;IAE3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"registry.store.js","sourceRoot":"","sources":["../../src/registry/registry.store.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAgCvC,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAO,GAA4B,EAAE;IAErC,OAAO;QACL,KAAK,EAAE,IAAI,KAAK,CAAkB,EAAE,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,QAA0B,EAC1B,OAA2B;IAE3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -1,14 +1,20 @@
1
1
  /**
2
- * Recursively serializes a value to a TypeScript object literal string.
3
- * Used by generateRegistryFile to produce human-readable .ts output.
2
+ * @brief Recursively serializes a value to a TypeScript object literal string.
3
+ *
4
+ * Used by `generateRegistryFile` to produce human-readable `.ts` output.
5
+ *
6
+ * @param value - Value to serialize. Objects, arrays, strings, numbers, booleans and null are written as literals.
7
+ * @param depth - Nesting level of `value`, used for indentation.
8
+ * @returns Source text of the literal.
4
9
  */
5
10
  export declare function stringifyValue(value: unknown, depth?: number): string;
6
11
  /**
7
- * Generates the full content of a typed .ts registry manifest file.
12
+ * @brief Generates the full content of a typed `.ts` registry manifest file.
8
13
  *
9
- * @param entries - The registry entries to serialize
10
- * @param typeName - TypeScript type name for the `satisfies` clause
11
- * @param importFrom - Package to import the type from
14
+ * @param entries - Registry entries to serialize, by key.
15
+ * @param typeName - TypeScript type name for the `satisfies` clause, e.g. `G3nerateRegistry`.
16
+ * @param importFrom - Package the type is imported from, e.g. `@g3nomaly/g3nerate`.
17
+ * @returns Source text of the file, ending with a newline.
12
18
  *
13
19
  * @example
14
20
  * generateRegistryFile(entries, "G3nerateRegistry", "@g3nomaly/g3nerate")
@@ -1 +1 @@
1
- {"version":3,"file":"registry.template.d.ts","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CA2BhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR"}
1
+ {"version":3,"file":"registry.template.d.ts","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,MAAM,CA2BhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR"}
@@ -1,6 +1,12 @@
1
+ // packages/core/src/registry/registry.template.ts
1
2
  /**
2
- * Recursively serializes a value to a TypeScript object literal string.
3
- * Used by generateRegistryFile to produce human-readable .ts output.
3
+ * @brief Recursively serializes a value to a TypeScript object literal string.
4
+ *
5
+ * Used by `generateRegistryFile` to produce human-readable `.ts` output.
6
+ *
7
+ * @param value - Value to serialize. Objects, arrays, strings, numbers, booleans and null are written as literals.
8
+ * @param depth - Nesting level of `value`, used for indentation.
9
+ * @returns Source text of the literal.
4
10
  */
5
11
  export function stringifyValue(value, depth = 0) {
6
12
  const indent = " ".repeat(depth);
@@ -33,11 +39,12 @@ export function stringifyValue(value, depth = 0) {
33
39
  return String(value);
34
40
  }
35
41
  /**
36
- * Generates the full content of a typed .ts registry manifest file.
42
+ * @brief Generates the full content of a typed `.ts` registry manifest file.
37
43
  *
38
- * @param entries - The registry entries to serialize
39
- * @param typeName - TypeScript type name for the `satisfies` clause
40
- * @param importFrom - Package to import the type from
44
+ * @param entries - Registry entries to serialize, by key.
45
+ * @param typeName - TypeScript type name for the `satisfies` clause, e.g. `G3nerateRegistry`.
46
+ * @param importFrom - Package the type is imported from, e.g. `@g3nomaly/g3nerate`.
47
+ * @returns Source text of the file, ending with a newline.
41
48
  *
42
49
  * @example
43
50
  * generateRegistryFile(entries, "G3nerateRegistry", "@g3nomaly/g3nerate")
@@ -1 +1 @@
1
- {"version":3,"file":"registry.template.js","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAE1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IAEjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACnC,MAAM,KAAK,GAAG,KAAK;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3D,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aACtF,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"registry.template.js","sourceRoot":"","sources":["../../src/registry/registry.template.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAE1C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IACjC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IAEjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACnC,MAAM,KAAK,GAAG,KAAK;aAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3D,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,KAAK,GAAG,OAAO;aAClB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;aACtF,IAAI,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,MAAM,KAAK,MAAM,MAAM,GAAG,CAAA;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,QAAgB,EAChB,UAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,iBAAiB,QAAQ,YAAY,UAAU,GAAG,CAAC,CAAA;IAC9D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAA;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -1,6 +1,11 @@
1
1
  import { z } from "zod";
2
2
  /**
3
- * Base file entry — extended by each package with their own `type` enum.
3
+ * @brief One file of a registry entry. Each package extends it with its own `type` values.
4
+ *
5
+ * @property path - Path of the file relative to the entry's folder.
6
+ * @property type - Kind of file, set by each package.
7
+ * @property hash - Content hash. Set at build or install time, absent in unbuilt source meta files.
8
+ * @property version - Version of the file. Set at build or install time, absent in unbuilt source meta files.
4
9
  */
5
10
  export declare const BaseFileEntrySchema: z.ZodObject<{
6
11
  path: z.ZodString;
@@ -8,9 +13,17 @@ export declare const BaseFileEntrySchema: z.ZodObject<{
8
13
  hash: z.ZodOptional<z.ZodString>;
9
14
  version: z.ZodOptional<z.ZodString>;
10
15
  }, z.core.$strip>;
16
+ /** One file of a registry entry, inferred from `BaseFileEntrySchema`. */
11
17
  export type BaseFileEntry = z.infer<typeof BaseFileEntrySchema>;
12
18
  /**
13
- * Base registry entry — extended by each package with their own fields.
19
+ * @brief One entry of a registry. Each package extends it with its own fields.
20
+ *
21
+ * @property name - Unique name of the entry.
22
+ * @property description - What the entry is for.
23
+ * @property version - Version of the entry.
24
+ * @property group - Display group for `ls`. Packages derive it when the registry is built or loaded.
25
+ * @property registryDependencies - Keys of entries this entry needs installed alongside it.
26
+ * @property files - Files that make up the entry. At least one.
14
27
  */
15
28
  export declare const BaseRegistryEntrySchema: z.ZodObject<{
16
29
  name: z.ZodString;
@@ -25,9 +38,10 @@ export declare const BaseRegistryEntrySchema: z.ZodObject<{
25
38
  version: z.ZodOptional<z.ZodString>;
26
39
  }, z.core.$strip>>;
27
40
  }, z.core.$strip>;
41
+ /** One registry entry, inferred from `BaseRegistryEntrySchema`. */
28
42
  export type BaseRegistryEntry = z.infer<typeof BaseRegistryEntrySchema>;
29
43
  /**
30
- * Generic registry map — key → entry.
44
+ * Registry map from key to entry.
31
45
  */
32
46
  export type BaseRegistry<T extends BaseRegistryEntry = BaseRegistryEntry> = Record<string, T>;
33
47
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBASlC,CAAA;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAOlC,CAAA;AAEF,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA"}
@@ -1,24 +1,34 @@
1
1
  // packages/core/src/registry/types.ts
2
2
  import { z } from "zod";
3
3
  /**
4
- * Base file entry — extended by each package with their own `type` enum.
4
+ * @brief One file of a registry entry. Each package extends it with its own `type` values.
5
+ *
6
+ * @property path - Path of the file relative to the entry's folder.
7
+ * @property type - Kind of file, set by each package.
8
+ * @property hash - Content hash. Set at build or install time, absent in unbuilt source meta files.
9
+ * @property version - Version of the file. Set at build or install time, absent in unbuilt source meta files.
5
10
  */
6
11
  export const BaseFileEntrySchema = z.object({
7
12
  path: z.string().min(1),
8
13
  type: z.string(),
9
- hash: z.string().min(1).optional(), // populated at build/install time, absent in unbuilt source meta files
10
- version: z.string().min(1).optional(), // populated at build/install time, absent in unbuilt source meta files
14
+ hash: z.string().min(1).optional(),
15
+ version: z.string().min(1).optional(),
11
16
  });
12
17
  /**
13
- * Base registry entry — extended by each package with their own fields.
18
+ * @brief One entry of a registry. Each package extends it with its own fields.
19
+ *
20
+ * @property name - Unique name of the entry.
21
+ * @property description - What the entry is for.
22
+ * @property version - Version of the entry.
23
+ * @property group - Display group for `ls`. Packages derive it when the registry is built or loaded.
24
+ * @property registryDependencies - Keys of entries this entry needs installed alongside it.
25
+ * @property files - Files that make up the entry. At least one.
14
26
  */
15
27
  export const BaseRegistryEntrySchema = z.object({
16
28
  name: z.string().min(1),
17
29
  description: z.string().optional(),
18
30
  version: z.string().optional(),
19
- /** Display group for `ls`; packages derive it at registry build/load time */
20
31
  group: z.string().optional(),
21
- /** Keys of entries this entry needs installed alongside it */
22
32
  registryDependencies: z.array(z.string().min(1)).optional(),
23
33
  files: z.array(BaseFileEntrySchema).min(1),
24
34
  });
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,uEAAuE;IAC9G,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,uEAAuE;CAC/G,CAAC,CAAA;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,6EAA6E;IAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,8DAA8D;IAC9D,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAA;AAKF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,2 +1,3 @@
1
+ // packages/core/src/security/index.ts
1
2
  export { getSafeObject } from "./securityParser";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import type { ZodType, z } from "zod";
2
2
  /**
3
- * Safely parses a TypeScript file that has a default export object literal.
4
- * Transpiles the file, extracts the object literal via regex, evaluates it
5
- * inside a sandboxed Worker with a timeout, then validates with the provided
6
- * Zod schema.
3
+ * @brief Parses a TypeScript file that has a default export object literal, without running it in the main thread.
7
4
  *
8
- * @param filePath - Absolute path to the .ts file to parse
9
- * @param schema - Zod schema to validate the extracted object against
10
- * @param timeoutMs - Worker timeout in milliseconds (default: 1000)
11
- * @returns Validated, typed object
5
+ * Transpiles the file, extracts the object literal with a regex, evaluates it in a sandboxed Worker with a
6
+ * timeout, then validates the result with `schema`.
7
+ *
8
+ * @param filePath - Absolute path to the `.ts` file to parse.
9
+ * @param schema - Zod schema the extracted object must match.
10
+ * @param timeoutMs - Worker timeout in milliseconds.
11
+ * @returns Validated object, typed by `schema`.
12
+ * @throws {Error} When static analysis blocks the source, no object literal is found, the worker fails or times out, or validation fails.
12
13
  */
13
14
  export declare function getSafeObject<TSchema extends ZodType>(filePath: string, schema: TSchema, timeoutMs?: number): Promise<z.infer<TSchema>>;
14
15
  //# sourceMappingURL=securityParser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"securityParser.d.ts","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,OAAO,SAAS,OAAO,EACzD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,SAAS,SAAO,GACf,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAkG3B"}
1
+ {"version":3,"file":"securityParser.d.ts","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEtC;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,SAAS,OAAO,EACzD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,SAAS,SAAO,GACf,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAsF3B"}
@@ -1,47 +1,37 @@
1
1
  // packages/core/src/security/securityParser.ts
2
2
  import { Transpiler } from "bun";
3
3
  /**
4
- * Safely parses a TypeScript file that has a default export object literal.
5
- * Transpiles the file, extracts the object literal via regex, evaluates it
6
- * inside a sandboxed Worker with a timeout, then validates with the provided
7
- * Zod schema.
4
+ * @brief Parses a TypeScript file that has a default export object literal, without running it in the main thread.
8
5
  *
9
- * @param filePath - Absolute path to the .ts file to parse
10
- * @param schema - Zod schema to validate the extracted object against
11
- * @param timeoutMs - Worker timeout in milliseconds (default: 1000)
12
- * @returns Validated, typed object
6
+ * Transpiles the file, extracts the object literal with a regex, evaluates it in a sandboxed Worker with a
7
+ * timeout, then validates the result with `schema`.
8
+ *
9
+ * @param filePath - Absolute path to the `.ts` file to parse.
10
+ * @param schema - Zod schema the extracted object must match.
11
+ * @param timeoutMs - Worker timeout in milliseconds.
12
+ * @returns Validated object, typed by `schema`.
13
+ * @throws {Error} When static analysis blocks the source, no object literal is found, the worker fails or times out, or validation fails.
13
14
  */
14
15
  export async function getSafeObject(filePath, schema, timeoutMs = 1000) {
15
16
  const file = Bun.file(filePath);
16
17
  const rawContent = await file.text();
17
18
  const transpiler = new Transpiler({ loader: "ts" });
18
19
  const jsCode = transpiler.transformSync(rawContent);
19
- // ---------------------------------------------------------------------------
20
- // Pre-eval static analysis
21
- // Catches attacks that are undetectable at runtime because they complete
22
- // successfully before the sanitiser sees any output.
23
- // ---------------------------------------------------------------------------
20
+ // Static analysis runs before evaluation, since some attacks finish before the sanitiser sees any output.
24
21
  const DANGEROUS_PATTERNS = [
25
22
  [/\bimport\s*\(/, "dynamic import()"],
26
23
  [/\bimport\.meta\b/, "import.meta"],
27
24
  [/\bnew\s+Worker\b/, "Worker construction"],
28
25
  [/\beval\s*\(/, "eval()"],
29
26
  [/\.constructor\s*\.\s*constructor/, "constructor.constructor chain"],
30
- // deep-object.meta.ts: IIFE builds 100k nested object literals in a loop.
31
- // Object literal construction bypasses any runtime stub (the Object()
32
- // constructor is not called for `{}`), so the only reliable catch is
33
- // source-level: reject any for/while loop that contains an object literal.
34
- // Pattern: a for(...) or while(...) body that contains `{` (object/block).
27
+ // Object literals skip the Object() constructor, so loops that build objects are rejected in the source.
35
28
  [/\bfor\s*\([\s\S]{0,200}?\)\s*\{[\s\S]{0,500}?\bnested\b/,
36
29
  "deep object construction loop"],
37
- // Broader: any loop body that reassigns via `= {` (obj = { ... })
38
30
  [/\bfor\s*\([^)]*\)[^{]*\{[^}]*=\s*\{/,
39
31
  "object-building loop"],
40
32
  [/\bwhile\s*\([^)]*\)[^{]*\{[^}]*=\s*\{/,
41
33
  "object-building loop"],
42
- // regex-bomb.meta.ts: uses a regex *literal* /(a+)+$/ — the RegExp constructor
43
- // stub in the worker never fires for literals. Detect nested quantifiers
44
- // statically: pattern (x+)+ or (x*)* or (x+)* are canonical ReDoS forms.
34
+ // Regex literals bypass the RegExp stub in the worker, so nested quantifiers such as (x+)+ are rejected in the source.
45
35
  [/\/[^/]*\([^)]*[+*]\)[+*]/, "catastrophic regex literal (nested quantifier)"],
46
36
  ];
47
37
  for (const [pattern, label] of DANGEROUS_PATTERNS) {
@@ -1 +1 @@
1
- {"version":3,"file":"securityParser.js","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"securityParser.js","sourceRoot":"","sources":["../../src/security/securityParser.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,17 @@ declare const MAX_DEPTH = 20;
3
3
  declare const MAX_KEYS = 1000;
4
4
  declare const MAX_STRLEN = 100000;
5
5
  declare let totalKeys: number;
6
+ /**
7
+ * @brief Copies evaluated sandbox data into plain values, rejecting anything that can carry code, memory or stacks.
8
+ *
9
+ * Getters and setters are dropped without running them.
10
+ *
11
+ * @param value - Value to copy. Usually the result of the sandbox evaluation.
12
+ * @param depth - Current nesting depth, starting at 0.
13
+ * @returns Plain copy of `value`.
14
+ * @throws {Error} When the value nests too deep, has too many keys, is a function, symbol, RegExp, buffer, error,
15
+ * promise or non-plain object, or is a string that is too long or looks like a stack trace.
16
+ */
6
17
  declare function sanitise(value: unknown, depth?: number): unknown;
7
18
  declare const SANDBOX_PREAMBLE = "\n \"use strict\";\n\n const process = undefined;\n const global = undefined;\n const globalThis = Object.create(null); // isolated dummy \u2014 writes succeed but go nowhere\n const module = undefined;\n const require = undefined;\n const __dirname = undefined;\n const __filename = undefined;\n const importScripts = undefined;\n const Function = undefined;\n const Reflect = undefined;\n const Proxy = undefined;\n\n // Stub ArrayBuffer \u2014 catches IIFE allocation bombs before they run.\n const ArrayBuffer = function() {\n throw new RangeError(\"ArrayBuffer construction is not allowed in meta files\");\n };\n\n // Stub RegExp constructor \u2014 catches IIFE regex bombs constructed via\n // new RegExp(...) or RegExp(...). Regex *literals* are a different path\n // (they don't call the RegExp constructor at parse time) but executing\n // .match()/.exec() on them still goes through the engine's regex executor.\n // The Worker timeout is the backstop for literal-based regex bombs.\n const RegExp = function() {\n throw new Error(\"RegExp construction is not allowed in meta files\");\n };\n";
8
19
  //# sourceMappingURL=securityWorker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"securityWorker.d.ts","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM,EAAsB,0BAA0B,CAAC;AAM7D,QAAA,MAAM,SAAS,KAAM,CAAC;AACtB,QAAA,MAAM,QAAQ,OAAU,CAAC;AACzB,QAAA,MAAM,UAAU,SAAU,CAAC;AAC3B,QAAA,IAAM,SAAS,QAAK,CAAC;AAErB,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAwEpD;AAwCD,QAAA,MAAM,gBAAgB,uqCA4BrB,CAAC"}
1
+ {"version":3,"file":"securityWorker.d.ts","sourceRoot":"","sources":["../../src/security/securityWorker.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,MAAM,EAAsB,0BAA0B,CAAC;AAM7D,QAAA,MAAM,SAAS,KAAM,CAAC;AACtB,QAAA,MAAM,QAAQ,OAAU,CAAC;AACzB,QAAA,MAAM,UAAU,SAAU,CAAC;AAC3B,QAAA,IAAM,SAAS,QAAK,CAAC;AAErB;;;;;;;;;;GAUG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAoEpD;AAWD,QAAA,MAAM,gBAAgB,uqCA4BrB,CAAC"}