@happyvertical/smrt-core 0.30.0

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 (631) hide show
  1. package/AGENTS.md +124 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/README.md +265 -0
  5. package/bin/smrt-prebuild.js +26 -0
  6. package/dist/__tests__/fixtures/advisor-test-classes.d.ts +28 -0
  7. package/dist/__tests__/fixtures/advisor-test-classes.d.ts.map +1 -0
  8. package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts +12 -0
  9. package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts.map +1 -0
  10. package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts +28 -0
  11. package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts.map +1 -0
  12. package/dist/__tests__/fixtures/inheritance-test-classes.d.ts +43 -0
  13. package/dist/__tests__/fixtures/inheritance-test-classes.d.ts.map +1 -0
  14. package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts +18 -0
  15. package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts.map +1 -0
  16. package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts +15 -0
  17. package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts.map +1 -0
  18. package/dist/__tests__/fixtures/object-spec-test-classes.d.ts +13 -0
  19. package/dist/__tests__/fixtures/object-spec-test-classes.d.ts.map +1 -0
  20. package/dist/__tests__/fixtures/registry-test-classes.d.ts +23 -0
  21. package/dist/__tests__/fixtures/registry-test-classes.d.ts.map +1 -0
  22. package/dist/adapters/ai-usage.d.ts +23 -0
  23. package/dist/adapters/ai-usage.d.ts.map +1 -0
  24. package/dist/adapters/ai-usage.js +105 -0
  25. package/dist/adapters/ai-usage.js.map +1 -0
  26. package/dist/adapters/cost-rates.d.ts +20 -0
  27. package/dist/adapters/cost-rates.d.ts.map +1 -0
  28. package/dist/adapters/cost-rates.js +40 -0
  29. package/dist/adapters/cost-rates.js.map +1 -0
  30. package/dist/adapters/index.d.ts +19 -0
  31. package/dist/adapters/index.d.ts.map +1 -0
  32. package/dist/adapters/metrics.d.ts +111 -0
  33. package/dist/adapters/metrics.d.ts.map +1 -0
  34. package/dist/adapters/metrics.js +169 -0
  35. package/dist/adapters/metrics.js.map +1 -0
  36. package/dist/adapters/pubsub.d.ts +124 -0
  37. package/dist/adapters/pubsub.d.ts.map +1 -0
  38. package/dist/adapters/pubsub.js +121 -0
  39. package/dist/adapters/pubsub.js.map +1 -0
  40. package/dist/browser.d.ts +32 -0
  41. package/dist/browser.d.ts.map +1 -0
  42. package/dist/browser.js +68 -0
  43. package/dist/browser.js.map +1 -0
  44. package/dist/child-accessors.d.ts +27 -0
  45. package/dist/child-accessors.d.ts.map +1 -0
  46. package/dist/child-accessors.js +35 -0
  47. package/dist/child-accessors.js.map +1 -0
  48. package/dist/class.d.ts +313 -0
  49. package/dist/class.d.ts.map +1 -0
  50. package/dist/class.js +896 -0
  51. package/dist/class.js.map +1 -0
  52. package/dist/collection-cache.d.ts +110 -0
  53. package/dist/collection-cache.d.ts.map +1 -0
  54. package/dist/collection-cache.js +187 -0
  55. package/dist/collection-cache.js.map +1 -0
  56. package/dist/collection.d.ts +894 -0
  57. package/dist/collection.d.ts.map +1 -0
  58. package/dist/collection.js +1987 -0
  59. package/dist/collection.js.map +1 -0
  60. package/dist/config/global-config.d.ts +3 -0
  61. package/dist/config/global-config.d.ts.map +1 -0
  62. package/dist/config/global-config.js +19 -0
  63. package/dist/config/global-config.js.map +1 -0
  64. package/dist/config.d.ts +145 -0
  65. package/dist/config.d.ts.map +1 -0
  66. package/dist/config.js +57 -0
  67. package/dist/config.js.map +1 -0
  68. package/dist/consumer-plugin/index.d.ts +22 -0
  69. package/dist/consumer-plugin/index.d.ts.map +1 -0
  70. package/dist/consumer-plugin/index.js +452 -0
  71. package/dist/consumer-plugin/index.js.map +1 -0
  72. package/dist/consumer-plugin.d.ts +8 -0
  73. package/dist/consumer-plugin.d.ts.map +1 -0
  74. package/dist/consumer-plugin.js +5 -0
  75. package/dist/consumer-plugin.js.map +1 -0
  76. package/dist/database.d.ts +95 -0
  77. package/dist/database.d.ts.map +1 -0
  78. package/dist/database.js +32 -0
  79. package/dist/database.js.map +1 -0
  80. package/dist/decorators/compatibility.d.ts +14 -0
  81. package/dist/decorators/compatibility.d.ts.map +1 -0
  82. package/dist/decorators/compatibility.js +111 -0
  83. package/dist/decorators/compatibility.js.map +1 -0
  84. package/dist/decorators/index.d.ts +381 -0
  85. package/dist/decorators/index.d.ts.map +1 -0
  86. package/dist/decorators/index.js +104 -0
  87. package/dist/decorators/index.js.map +1 -0
  88. package/dist/dispatch/bus.d.ts +306 -0
  89. package/dist/dispatch/bus.d.ts.map +1 -0
  90. package/dist/dispatch/bus.js +583 -0
  91. package/dist/dispatch/bus.js.map +1 -0
  92. package/dist/dispatch/collections/DispatchSubscriptions.d.ts +79 -0
  93. package/dist/dispatch/collections/DispatchSubscriptions.d.ts.map +1 -0
  94. package/dist/dispatch/collections/DispatchSubscriptions.js +243 -0
  95. package/dist/dispatch/collections/DispatchSubscriptions.js.map +1 -0
  96. package/dist/dispatch/collections/Dispatches.d.ts +98 -0
  97. package/dist/dispatch/collections/Dispatches.d.ts.map +1 -0
  98. package/dist/dispatch/collections/Dispatches.js +358 -0
  99. package/dist/dispatch/collections/Dispatches.js.map +1 -0
  100. package/dist/dispatch/index.d.ts +47 -0
  101. package/dist/dispatch/index.d.ts.map +1 -0
  102. package/dist/dispatch/models/Dispatch.d.ts +101 -0
  103. package/dist/dispatch/models/Dispatch.d.ts.map +1 -0
  104. package/dist/dispatch/models/Dispatch.js +162 -0
  105. package/dist/dispatch/models/Dispatch.js.map +1 -0
  106. package/dist/dispatch/models/DispatchSubscription.d.ts +83 -0
  107. package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -0
  108. package/dist/dispatch/models/DispatchSubscription.js +112 -0
  109. package/dist/dispatch/models/DispatchSubscription.js.map +1 -0
  110. package/dist/dispatch/tenant-resolver.d.ts +98 -0
  111. package/dist/dispatch/tenant-resolver.d.ts.map +1 -0
  112. package/dist/dispatch/tenant-resolver.js +32 -0
  113. package/dist/dispatch/tenant-resolver.js.map +1 -0
  114. package/dist/dispatch/types.d.ts +149 -0
  115. package/dist/dispatch/types.d.ts.map +1 -0
  116. package/dist/embeddings/hash.d.ts +33 -0
  117. package/dist/embeddings/hash.d.ts.map +1 -0
  118. package/dist/embeddings/hash.js +37 -0
  119. package/dist/embeddings/hash.js.map +1 -0
  120. package/dist/embeddings/index.d.ts +36 -0
  121. package/dist/embeddings/index.d.ts.map +1 -0
  122. package/dist/embeddings/provider.d.ts +75 -0
  123. package/dist/embeddings/provider.d.ts.map +1 -0
  124. package/dist/embeddings/provider.js +170 -0
  125. package/dist/embeddings/provider.js.map +1 -0
  126. package/dist/embeddings/similarity.d.ts +47 -0
  127. package/dist/embeddings/similarity.d.ts.map +1 -0
  128. package/dist/embeddings/similarity.js +64 -0
  129. package/dist/embeddings/similarity.js.map +1 -0
  130. package/dist/embeddings/storage.d.ts +125 -0
  131. package/dist/embeddings/storage.d.ts.map +1 -0
  132. package/dist/embeddings/storage.js +283 -0
  133. package/dist/embeddings/storage.js.map +1 -0
  134. package/dist/embeddings/types.d.ts +250 -0
  135. package/dist/embeddings/types.d.ts.map +1 -0
  136. package/dist/errors.d.ts +363 -0
  137. package/dist/errors.d.ts.map +1 -0
  138. package/dist/errors.js +669 -0
  139. package/dist/errors.js.map +1 -0
  140. package/dist/generators/cli.d.ts +162 -0
  141. package/dist/generators/cli.d.ts.map +1 -0
  142. package/dist/generators/cli.js +462 -0
  143. package/dist/generators/cli.js.map +1 -0
  144. package/dist/generators/index.d.ts +13 -0
  145. package/dist/generators/index.d.ts.map +1 -0
  146. package/dist/generators/mcp-runtime-template.d.ts +60 -0
  147. package/dist/generators/mcp-runtime-template.d.ts.map +1 -0
  148. package/dist/generators/mcp-runtime-template.js +509 -0
  149. package/dist/generators/mcp-runtime-template.js.map +1 -0
  150. package/dist/generators/mcp.d.ts +231 -0
  151. package/dist/generators/mcp.d.ts.map +1 -0
  152. package/dist/generators/mcp.js +1220 -0
  153. package/dist/generators/mcp.js.map +1 -0
  154. package/dist/generators/rest.d.ts +171 -0
  155. package/dist/generators/rest.d.ts.map +1 -0
  156. package/dist/generators/rest.js +591 -0
  157. package/dist/generators/rest.js.map +1 -0
  158. package/dist/generators/swagger.d.ts +21 -0
  159. package/dist/generators/swagger.d.ts.map +1 -0
  160. package/dist/generators/swagger.js +307 -0
  161. package/dist/generators/swagger.js.map +1 -0
  162. package/dist/generators/tenant-gate.d.ts +74 -0
  163. package/dist/generators/tenant-gate.d.ts.map +1 -0
  164. package/dist/generators/tenant-gate.js +15 -0
  165. package/dist/generators/tenant-gate.js.map +1 -0
  166. package/dist/generators.d.ts +8 -0
  167. package/dist/generators.d.ts.map +1 -0
  168. package/dist/generators.js +19 -0
  169. package/dist/generators.js.map +1 -0
  170. package/dist/hierarchical.d.ts +103 -0
  171. package/dist/hierarchical.d.ts.map +1 -0
  172. package/dist/hierarchical.js +184 -0
  173. package/dist/hierarchical.js.map +1 -0
  174. package/dist/index.d.ts +57 -0
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +202 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/interceptors.d.ts +251 -0
  179. package/dist/interceptors.d.ts.map +1 -0
  180. package/dist/interceptors.js +259 -0
  181. package/dist/interceptors.js.map +1 -0
  182. package/dist/junction.d.ts +99 -0
  183. package/dist/junction.d.ts.map +1 -0
  184. package/dist/junction.js +136 -0
  185. package/dist/junction.js.map +1 -0
  186. package/dist/knowledge.d.ts +11 -0
  187. package/dist/knowledge.d.ts.map +1 -0
  188. package/dist/knowledge.js +310 -0
  189. package/dist/knowledge.js.map +1 -0
  190. package/dist/lazy-config.d.ts +160 -0
  191. package/dist/lazy-config.d.ts.map +1 -0
  192. package/dist/lazy-config.js +146 -0
  193. package/dist/lazy-config.js.map +1 -0
  194. package/dist/manifest/discover-base-classes.d.ts +78 -0
  195. package/dist/manifest/discover-base-classes.d.ts.map +1 -0
  196. package/dist/manifest/discover-base-classes.js +85 -0
  197. package/dist/manifest/discover-base-classes.js.map +1 -0
  198. package/dist/manifest/discover-smrt-packages.d.ts +48 -0
  199. package/dist/manifest/discover-smrt-packages.d.ts.map +1 -0
  200. package/dist/manifest/discover-smrt-packages.js +361 -0
  201. package/dist/manifest/discover-smrt-packages.js.map +1 -0
  202. package/dist/manifest/generator.d.ts +93 -0
  203. package/dist/manifest/generator.d.ts.map +1 -0
  204. package/dist/manifest/generator.js +380 -0
  205. package/dist/manifest/generator.js.map +1 -0
  206. package/dist/manifest/index.d.ts +16 -0
  207. package/dist/manifest/index.d.ts.map +1 -0
  208. package/dist/manifest/index.js +51 -0
  209. package/dist/manifest/index.js.map +1 -0
  210. package/dist/manifest/manager.d.ts +51 -0
  211. package/dist/manifest/manager.d.ts.map +1 -0
  212. package/dist/manifest/manager.js +89 -0
  213. package/dist/manifest/manager.js.map +1 -0
  214. package/dist/manifest/manifest-loader.d.ts +187 -0
  215. package/dist/manifest/manifest-loader.d.ts.map +1 -0
  216. package/dist/manifest/manifest-loader.js +847 -0
  217. package/dist/manifest/manifest-loader.js.map +1 -0
  218. package/dist/manifest/sources/composite.d.ts +22 -0
  219. package/dist/manifest/sources/composite.d.ts.map +1 -0
  220. package/dist/manifest/sources/composite.js +60 -0
  221. package/dist/manifest/sources/composite.js.map +1 -0
  222. package/dist/manifest/sources/embedded.d.ts +7 -0
  223. package/dist/manifest/sources/embedded.d.ts.map +1 -0
  224. package/dist/manifest/sources/embedded.js +30 -0
  225. package/dist/manifest/sources/embedded.js.map +1 -0
  226. package/dist/manifest/sources/explicit-paths.d.ts +17 -0
  227. package/dist/manifest/sources/explicit-paths.d.ts.map +1 -0
  228. package/dist/manifest/sources/explicit-paths.js +35 -0
  229. package/dist/manifest/sources/explicit-paths.js.map +1 -0
  230. package/dist/manifest/sources/fallback.d.ts +25 -0
  231. package/dist/manifest/sources/fallback.d.ts.map +1 -0
  232. package/dist/manifest/sources/fallback.js +63 -0
  233. package/dist/manifest/sources/fallback.js.map +1 -0
  234. package/dist/manifest/sources/index.d.ts +17 -0
  235. package/dist/manifest/sources/index.d.ts.map +1 -0
  236. package/dist/manifest/sources/local-test.d.ts +7 -0
  237. package/dist/manifest/sources/local-test.d.ts.map +1 -0
  238. package/dist/manifest/sources/local-test.js +21 -0
  239. package/dist/manifest/sources/local-test.js.map +1 -0
  240. package/dist/manifest/sources/static.d.ts +7 -0
  241. package/dist/manifest/sources/static.d.ts.map +1 -0
  242. package/dist/manifest/sources/static.js +19 -0
  243. package/dist/manifest/sources/static.js.map +1 -0
  244. package/dist/manifest/sources/test.d.ts +7 -0
  245. package/dist/manifest/sources/test.d.ts.map +1 -0
  246. package/dist/manifest/sources/test.js +21 -0
  247. package/dist/manifest/sources/test.js.map +1 -0
  248. package/dist/manifest/sources/types.d.ts +79 -0
  249. package/dist/manifest/sources/types.d.ts.map +1 -0
  250. package/dist/manifest/sources/types.js +61 -0
  251. package/dist/manifest/sources/types.js.map +1 -0
  252. package/dist/manifest/static-manifest.d.ts +4 -0
  253. package/dist/manifest/static-manifest.d.ts.map +1 -0
  254. package/dist/manifest/static-manifest.js +1535 -0
  255. package/dist/manifest/static-manifest.js.map +1 -0
  256. package/dist/manifest/store.d.ts +111 -0
  257. package/dist/manifest/store.d.ts.map +1 -0
  258. package/dist/manifest/store.js +431 -0
  259. package/dist/manifest/store.js.map +1 -0
  260. package/dist/manifest/test-manifest-loader.d.ts +3 -0
  261. package/dist/manifest/test-manifest-loader.d.ts.map +1 -0
  262. package/dist/manifest/test-manifest-stub.d.ts +4 -0
  263. package/dist/manifest/test-manifest-stub.d.ts.map +1 -0
  264. package/dist/manifest/test-manifest-stub.js +80013 -0
  265. package/dist/manifest/test-manifest-stub.js.map +1 -0
  266. package/dist/manifest.d.ts +8 -0
  267. package/dist/manifest.d.ts.map +1 -0
  268. package/dist/manifest.js +20 -0
  269. package/dist/manifest.js.map +1 -0
  270. package/dist/manifest.json +1489 -0
  271. package/dist/mcp-advisor/index.d.ts +499 -0
  272. package/dist/mcp-advisor/index.d.ts.map +1 -0
  273. package/dist/mcp-advisor/tools/add-ai-methods.d.ts +6 -0
  274. package/dist/mcp-advisor/tools/add-ai-methods.d.ts.map +1 -0
  275. package/dist/mcp-advisor/tools/configure-decorators.d.ts +6 -0
  276. package/dist/mcp-advisor/tools/configure-decorators.d.ts.map +1 -0
  277. package/dist/mcp-advisor/tools/generate-collection.d.ts +6 -0
  278. package/dist/mcp-advisor/tools/generate-collection.d.ts.map +1 -0
  279. package/dist/mcp-advisor/tools/generate-field-definitions.d.ts +6 -0
  280. package/dist/mcp-advisor/tools/generate-field-definitions.d.ts.map +1 -0
  281. package/dist/mcp-advisor/tools/generate-smrt-class.d.ts +6 -0
  282. package/dist/mcp-advisor/tools/generate-smrt-class.d.ts.map +1 -0
  283. package/dist/mcp-advisor/tools/get-object-config.d.ts +6 -0
  284. package/dist/mcp-advisor/tools/get-object-config.d.ts.map +1 -0
  285. package/dist/mcp-advisor/tools/get-object-schema.d.ts +10 -0
  286. package/dist/mcp-advisor/tools/get-object-schema.d.ts.map +1 -0
  287. package/dist/mcp-advisor/tools/list-registered-objects.d.ts +9 -0
  288. package/dist/mcp-advisor/tools/list-registered-objects.d.ts.map +1 -0
  289. package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts +9 -0
  290. package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts.map +1 -0
  291. package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts +9 -0
  292. package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts.map +1 -0
  293. package/dist/mcp-advisor/tools/validate-smrt-object.d.ts +6 -0
  294. package/dist/mcp-advisor/tools/validate-smrt-object.d.ts.map +1 -0
  295. package/dist/mcp-advisor/types.d.ts +209 -0
  296. package/dist/mcp-advisor/types.d.ts.map +1 -0
  297. package/dist/migrations/backfill-tracker.d.ts +84 -0
  298. package/dist/migrations/backfill-tracker.d.ts.map +1 -0
  299. package/dist/migrations/backfill-tracker.js +118 -0
  300. package/dist/migrations/backfill-tracker.js.map +1 -0
  301. package/dist/migrations/checksum.d.ts +43 -0
  302. package/dist/migrations/checksum.d.ts.map +1 -0
  303. package/dist/migrations/checksum.js +32 -0
  304. package/dist/migrations/checksum.js.map +1 -0
  305. package/dist/migrations/differ.d.ts +186 -0
  306. package/dist/migrations/differ.d.ts.map +1 -0
  307. package/dist/migrations/differ.js +601 -0
  308. package/dist/migrations/differ.js.map +1 -0
  309. package/dist/migrations/generator.d.ts +133 -0
  310. package/dist/migrations/generator.d.ts.map +1 -0
  311. package/dist/migrations/generator.js +328 -0
  312. package/dist/migrations/generator.js.map +1 -0
  313. package/dist/migrations/index.d.ts +20 -0
  314. package/dist/migrations/index.d.ts.map +1 -0
  315. package/dist/migrations/orchestrate.d.ts +148 -0
  316. package/dist/migrations/orchestrate.d.ts.map +1 -0
  317. package/dist/migrations/orchestrate.js +118 -0
  318. package/dist/migrations/orchestrate.js.map +1 -0
  319. package/dist/migrations/tracker.d.ts +134 -0
  320. package/dist/migrations/tracker.d.ts.map +1 -0
  321. package/dist/migrations/tracker.js +624 -0
  322. package/dist/migrations/tracker.js.map +1 -0
  323. package/dist/migrations/types.d.ts +221 -0
  324. package/dist/migrations/types.d.ts.map +1 -0
  325. package/dist/migrations.d.ts +7 -0
  326. package/dist/migrations.d.ts.map +1 -0
  327. package/dist/migrations.js +26 -0
  328. package/dist/migrations.js.map +1 -0
  329. package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +56 -0
  330. package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js.map +1 -0
  331. package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js +163 -0
  332. package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js.map +1 -0
  333. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js +13 -0
  334. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
  335. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js +654 -0
  336. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js.map +1 -0
  337. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js +111 -0
  338. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
  339. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js +10 -0
  340. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js.map +1 -0
  341. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js +824 -0
  342. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js.map +1 -0
  343. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js +10 -0
  344. package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
  345. package/dist/object.d.ts +1202 -0
  346. package/dist/object.d.ts.map +1 -0
  347. package/dist/object.js +2731 -0
  348. package/dist/object.js.map +1 -0
  349. package/dist/polymorphic-association.d.ts +69 -0
  350. package/dist/polymorphic-association.d.ts.map +1 -0
  351. package/dist/polymorphic-association.js +96 -0
  352. package/dist/polymorphic-association.js.map +1 -0
  353. package/dist/prebuild/cli.d.ts +7 -0
  354. package/dist/prebuild/cli.d.ts.map +1 -0
  355. package/dist/prebuild/cli.js +29 -0
  356. package/dist/prebuild/cli.js.map +1 -0
  357. package/dist/prebuild/index.d.ts +22 -0
  358. package/dist/prebuild/index.d.ts.map +1 -0
  359. package/dist/prebuild/index.js +239 -0
  360. package/dist/prebuild/index.js.map +1 -0
  361. package/dist/prebuild.d.ts +8 -0
  362. package/dist/prebuild.d.ts.map +1 -0
  363. package/dist/prebuild.js +6 -0
  364. package/dist/prebuild.js.map +1 -0
  365. package/dist/registry/cache-config.d.ts +13 -0
  366. package/dist/registry/cache-config.d.ts.map +1 -0
  367. package/dist/registry/cache-config.js +17 -0
  368. package/dist/registry/cache-config.js.map +1 -0
  369. package/dist/registry/class-registration.d.ts +31 -0
  370. package/dist/registry/class-registration.d.ts.map +1 -0
  371. package/dist/registry/class-registration.js +1074 -0
  372. package/dist/registry/class-registration.js.map +1 -0
  373. package/dist/registry/collection-resolution.d.ts +45 -0
  374. package/dist/registry/collection-resolution.d.ts.map +1 -0
  375. package/dist/registry/collection-resolution.js +121 -0
  376. package/dist/registry/collection-resolution.js.map +1 -0
  377. package/dist/registry/collision-policy.d.ts +179 -0
  378. package/dist/registry/collision-policy.d.ts.map +1 -0
  379. package/dist/registry/collision-policy.js +153 -0
  380. package/dist/registry/collision-policy.js.map +1 -0
  381. package/dist/registry/diagnostics.d.ts +58 -0
  382. package/dist/registry/diagnostics.d.ts.map +1 -0
  383. package/dist/registry/diagnostics.js +54 -0
  384. package/dist/registry/diagnostics.js.map +1 -0
  385. package/dist/registry/embedding-manager.d.ts +23 -0
  386. package/dist/registry/embedding-manager.d.ts.map +1 -0
  387. package/dist/registry/embedding-manager.js +62 -0
  388. package/dist/registry/embedding-manager.js.map +1 -0
  389. package/dist/registry/index.d.ts +13 -0
  390. package/dist/registry/index.d.ts.map +1 -0
  391. package/dist/registry/inheritance-resolver.d.ts +13 -0
  392. package/dist/registry/inheritance-resolver.d.ts.map +1 -0
  393. package/dist/registry/inheritance-resolver.js +244 -0
  394. package/dist/registry/inheritance-resolver.js.map +1 -0
  395. package/dist/registry/manifest-field-merge.d.ts +4 -0
  396. package/dist/registry/manifest-field-merge.d.ts.map +1 -0
  397. package/dist/registry/manifest-field-merge.js +82 -0
  398. package/dist/registry/manifest-field-merge.js.map +1 -0
  399. package/dist/registry/name-resolver.d.ts +102 -0
  400. package/dist/registry/name-resolver.d.ts.map +1 -0
  401. package/dist/registry/name-resolver.js +241 -0
  402. package/dist/registry/name-resolver.js.map +1 -0
  403. package/dist/registry/relationship-graph.d.ts +16 -0
  404. package/dist/registry/relationship-graph.d.ts.map +1 -0
  405. package/dist/registry/relationship-graph.js +79 -0
  406. package/dist/registry/relationship-graph.js.map +1 -0
  407. package/dist/registry/schema-builder.d.ts +113 -0
  408. package/dist/registry/schema-builder.d.ts.map +1 -0
  409. package/dist/registry/schema-builder.js +474 -0
  410. package/dist/registry/schema-builder.js.map +1 -0
  411. package/dist/registry/shared-state.d.ts +62 -0
  412. package/dist/registry/shared-state.d.ts.map +1 -0
  413. package/dist/registry/shared-state.js +135 -0
  414. package/dist/registry/shared-state.js.map +1 -0
  415. package/dist/registry/types.d.ts +667 -0
  416. package/dist/registry/types.d.ts.map +1 -0
  417. package/dist/registry/validator.d.ts +13 -0
  418. package/dist/registry/validator.d.ts.map +1 -0
  419. package/dist/registry/validator.js +138 -0
  420. package/dist/registry/validator.js.map +1 -0
  421. package/dist/registry.d.ts +1358 -0
  422. package/dist/registry.d.ts.map +1 -0
  423. package/dist/registry.js +2301 -0
  424. package/dist/registry.js.map +1 -0
  425. package/dist/runtime/client.d.ts +34 -0
  426. package/dist/runtime/client.d.ts.map +1 -0
  427. package/dist/runtime/client.js +104 -0
  428. package/dist/runtime/client.js.map +1 -0
  429. package/dist/runtime/index.d.ts +10 -0
  430. package/dist/runtime/index.d.ts.map +1 -0
  431. package/dist/runtime/mcp.d.ts +47 -0
  432. package/dist/runtime/mcp.d.ts.map +1 -0
  433. package/dist/runtime/mcp.js +72 -0
  434. package/dist/runtime/mcp.js.map +1 -0
  435. package/dist/runtime/server.d.ts +92 -0
  436. package/dist/runtime/server.d.ts.map +1 -0
  437. package/dist/runtime/server.js +390 -0
  438. package/dist/runtime/server.js.map +1 -0
  439. package/dist/runtime/types.d.ts +58 -0
  440. package/dist/runtime/types.d.ts.map +1 -0
  441. package/dist/runtime.d.ts +8 -0
  442. package/dist/runtime.d.ts.map +1 -0
  443. package/dist/runtime.js +10 -0
  444. package/dist/runtime.js.map +1 -0
  445. package/dist/scanner/import-scanner.d.ts +7 -0
  446. package/dist/scanner/import-scanner.d.ts.map +1 -0
  447. package/dist/scanner/index.d.ts +12 -0
  448. package/dist/scanner/index.d.ts.map +1 -0
  449. package/dist/scanner/manifest-generator.d.ts +304 -0
  450. package/dist/scanner/manifest-generator.d.ts.map +1 -0
  451. package/dist/scanner/manifest-generator.js +1707 -0
  452. package/dist/scanner/manifest-generator.js.map +1 -0
  453. package/dist/scanner/test-file-patterns.d.ts +18 -0
  454. package/dist/scanner/test-file-patterns.d.ts.map +1 -0
  455. package/dist/scanner/test-file-patterns.js +16 -0
  456. package/dist/scanner/test-file-patterns.js.map +1 -0
  457. package/dist/scanner/types.d.ts +313 -0
  458. package/dist/scanner/types.d.ts.map +1 -0
  459. package/dist/scanner/types.js +2 -0
  460. package/dist/scanner/types.js.map +1 -0
  461. package/dist/scanner.d.ts +6 -0
  462. package/dist/scanner.d.ts.map +1 -0
  463. package/dist/scanner.js +6 -0
  464. package/dist/scanner.js.map +1 -0
  465. package/dist/schema/code-generator.d.ts +53 -0
  466. package/dist/schema/code-generator.d.ts.map +1 -0
  467. package/dist/schema/ddl/base-strategy.d.ts +80 -0
  468. package/dist/schema/ddl/base-strategy.d.ts.map +1 -0
  469. package/dist/schema/ddl/base-strategy.js +240 -0
  470. package/dist/schema/ddl/base-strategy.js.map +1 -0
  471. package/dist/schema/ddl/duckdb-strategy.d.ts +33 -0
  472. package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -0
  473. package/dist/schema/ddl/duckdb-strategy.js +74 -0
  474. package/dist/schema/ddl/duckdb-strategy.js.map +1 -0
  475. package/dist/schema/ddl/index.d.ts +53 -0
  476. package/dist/schema/ddl/index.d.ts.map +1 -0
  477. package/dist/schema/ddl/index.js +80 -0
  478. package/dist/schema/ddl/index.js.map +1 -0
  479. package/dist/schema/ddl/json-duckdb-strategy.d.ts +8 -0
  480. package/dist/schema/ddl/json-duckdb-strategy.d.ts.map +1 -0
  481. package/dist/schema/ddl/json-duckdb-strategy.js +14 -0
  482. package/dist/schema/ddl/json-duckdb-strategy.js.map +1 -0
  483. package/dist/schema/ddl/postgres-strategy.d.ts +29 -0
  484. package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -0
  485. package/dist/schema/ddl/postgres-strategy.js +102 -0
  486. package/dist/schema/ddl/postgres-strategy.js.map +1 -0
  487. package/dist/schema/ddl/sqlite-strategy.d.ts +38 -0
  488. package/dist/schema/ddl/sqlite-strategy.d.ts.map +1 -0
  489. package/dist/schema/ddl/sqlite-strategy.js +74 -0
  490. package/dist/schema/ddl/sqlite-strategy.js.map +1 -0
  491. package/dist/schema/ddl/types.d.ts +114 -0
  492. package/dist/schema/ddl/types.d.ts.map +1 -0
  493. package/dist/schema/generator.d.ts +176 -0
  494. package/dist/schema/generator.d.ts.map +1 -0
  495. package/dist/schema/generator.js +1076 -0
  496. package/dist/schema/generator.js.map +1 -0
  497. package/dist/schema/index-utils.d.ts +19 -0
  498. package/dist/schema/index-utils.d.ts.map +1 -0
  499. package/dist/schema/index-utils.js +32 -0
  500. package/dist/schema/index-utils.js.map +1 -0
  501. package/dist/schema/index.d.ts +13 -0
  502. package/dist/schema/index.d.ts.map +1 -0
  503. package/dist/schema/override-system.d.ts +43 -0
  504. package/dist/schema/override-system.d.ts.map +1 -0
  505. package/dist/schema/schema-aggregator.d.ts +112 -0
  506. package/dist/schema/schema-aggregator.d.ts.map +1 -0
  507. package/dist/schema/schema-manager.d.ts +95 -0
  508. package/dist/schema/schema-manager.d.ts.map +1 -0
  509. package/dist/schema/schema-manager.js +283 -0
  510. package/dist/schema/schema-manager.js.map +1 -0
  511. package/dist/schema/sql-identifiers.d.ts +107 -0
  512. package/dist/schema/sql-identifiers.d.ts.map +1 -0
  513. package/dist/schema/sql-identifiers.js +190 -0
  514. package/dist/schema/sql-identifiers.js.map +1 -0
  515. package/dist/schema/table-verifier.d.ts +10 -0
  516. package/dist/schema/table-verifier.d.ts.map +1 -0
  517. package/dist/schema/table-verifier.js +37 -0
  518. package/dist/schema/table-verifier.js.map +1 -0
  519. package/dist/schema/types.d.ts +241 -0
  520. package/dist/schema/types.d.ts.map +1 -0
  521. package/dist/schema/utils.d.ts +32 -0
  522. package/dist/schema/utils.d.ts.map +1 -0
  523. package/dist/schema/utils.js +134 -0
  524. package/dist/schema/utils.js.map +1 -0
  525. package/dist/scripts/create-wrappers.js +89 -0
  526. package/dist/scripts/generate-manifest.js +155 -0
  527. package/dist/scripts/generate-test-manifest.js +77 -0
  528. package/dist/scripts/migrate-datetime-to-timestamp.ts +310 -0
  529. package/dist/scripts/prepack.js +49 -0
  530. package/dist/signals/bus.d.ts +64 -0
  531. package/dist/signals/bus.d.ts.map +1 -0
  532. package/dist/signals/bus.js +102 -0
  533. package/dist/signals/bus.js.map +1 -0
  534. package/dist/signals/index.d.ts +11 -0
  535. package/dist/signals/index.d.ts.map +1 -0
  536. package/dist/signals/sanitizer.d.ts +54 -0
  537. package/dist/signals/sanitizer.d.ts.map +1 -0
  538. package/dist/signals/sanitizer.js +111 -0
  539. package/dist/signals/sanitizer.js.map +1 -0
  540. package/dist/smrt-knowledge.json +335 -0
  541. package/dist/system/compatibility.d.ts +8 -0
  542. package/dist/system/compatibility.d.ts.map +1 -0
  543. package/dist/system/compatibility.js +409 -0
  544. package/dist/system/compatibility.js.map +1 -0
  545. package/dist/system/index.d.ts +9 -0
  546. package/dist/system/index.d.ts.map +1 -0
  547. package/dist/system/schema.d.ts +69 -0
  548. package/dist/system/schema.d.ts.map +1 -0
  549. package/dist/system/schema.js +271 -0
  550. package/dist/system/schema.js.map +1 -0
  551. package/dist/system/types.d.ts +135 -0
  552. package/dist/system/types.d.ts.map +1 -0
  553. package/dist/system-fields.d.ts +44 -0
  554. package/dist/system-fields.d.ts.map +1 -0
  555. package/dist/system-fields.js +55 -0
  556. package/dist/system-fields.js.map +1 -0
  557. package/dist/table-cache.d.ts +28 -0
  558. package/dist/table-cache.d.ts.map +1 -0
  559. package/dist/table-cache.js +21 -0
  560. package/dist/table-cache.js.map +1 -0
  561. package/dist/test-utils.d.ts +140 -0
  562. package/dist/test-utils.d.ts.map +1 -0
  563. package/dist/testing/database.d.ts +73 -0
  564. package/dist/testing/database.d.ts.map +1 -0
  565. package/dist/testing/database.js +204 -0
  566. package/dist/testing/database.js.map +1 -0
  567. package/dist/testing/index.d.ts +21 -0
  568. package/dist/testing/index.d.ts.map +1 -0
  569. package/dist/testing.d.ts +6 -0
  570. package/dist/testing.d.ts.map +1 -0
  571. package/dist/testing.js +5 -0
  572. package/dist/testing.js.map +1 -0
  573. package/dist/tools/index.d.ts +8 -0
  574. package/dist/tools/index.d.ts.map +1 -0
  575. package/dist/tools/tool-executor.d.ts +101 -0
  576. package/dist/tools/tool-executor.d.ts.map +1 -0
  577. package/dist/tools/tool-executor.js +142 -0
  578. package/dist/tools/tool-executor.js.map +1 -0
  579. package/dist/tools/tool-generator.d.ts +54 -0
  580. package/dist/tools/tool-generator.d.ts.map +1 -0
  581. package/dist/tools/tool-generator.js +121 -0
  582. package/dist/tools/tool-generator.js.map +1 -0
  583. package/dist/utils/chunk.d.ts +32 -0
  584. package/dist/utils/chunk.d.ts.map +1 -0
  585. package/dist/utils/chunk.js +14 -0
  586. package/dist/utils/chunk.js.map +1 -0
  587. package/dist/utils/import-workspace-module.d.ts +8 -0
  588. package/dist/utils/import-workspace-module.d.ts.map +1 -0
  589. package/dist/utils/import-workspace-module.js +81 -0
  590. package/dist/utils/import-workspace-module.js.map +1 -0
  591. package/dist/utils/json.d.ts +102 -0
  592. package/dist/utils/json.d.ts.map +1 -0
  593. package/dist/utils/json.js +43 -0
  594. package/dist/utils/json.js.map +1 -0
  595. package/dist/utils/lru-cache.d.ts +69 -0
  596. package/dist/utils/lru-cache.d.ts.map +1 -0
  597. package/dist/utils/lru-cache.js +100 -0
  598. package/dist/utils/lru-cache.js.map +1 -0
  599. package/dist/utils/naming.d.ts +16 -0
  600. package/dist/utils/naming.d.ts.map +1 -0
  601. package/dist/utils/naming.js +23 -0
  602. package/dist/utils/naming.js.map +1 -0
  603. package/dist/utils/qualified-names.d.ts +122 -0
  604. package/dist/utils/qualified-names.d.ts.map +1 -0
  605. package/dist/utils/qualified-names.js +82 -0
  606. package/dist/utils/qualified-names.js.map +1 -0
  607. package/dist/utils/scanner-module.d.ts +37 -0
  608. package/dist/utils/scanner-module.d.ts.map +1 -0
  609. package/dist/utils.d.ts +177 -0
  610. package/dist/utils.d.ts.map +1 -0
  611. package/dist/utils.js +185 -0
  612. package/dist/utils.js.map +1 -0
  613. package/dist/vite-plugin/import-build-aware.d.ts +68 -0
  614. package/dist/vite-plugin/import-build-aware.d.ts.map +1 -0
  615. package/dist/vite-plugin/import-build-aware.js +72 -0
  616. package/dist/vite-plugin/import-build-aware.js.map +1 -0
  617. package/dist/vite-plugin/index.d.ts +59 -0
  618. package/dist/vite-plugin/index.d.ts.map +1 -0
  619. package/dist/vite-plugin/index.js +1400 -0
  620. package/dist/vite-plugin/index.js.map +1 -0
  621. package/dist/vite-plugin/sveltekit-generator.d.ts +66 -0
  622. package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -0
  623. package/dist/vite-plugin/sveltekit-generator.js +1375 -0
  624. package/dist/vite-plugin/sveltekit-generator.js.map +1 -0
  625. package/dist/vite-plugin/templates/default-ui.ts +432 -0
  626. package/dist/vite-plugin/templates/default.html +206 -0
  627. package/dist/vite-plugin.d.ts +8 -0
  628. package/dist/vite-plugin.d.ts.map +1 -0
  629. package/dist/vite-plugin.js +11 -0
  630. package/dist/vite-plugin.js.map +1 -0
  631. package/package.json +208 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polymorphic-association.js","sources":["../src/polymorphic-association.ts"],"sourcesContent":["/**\n * SmrtPolymorphicAssociation — base class for polymorphic association rows.\n *\n * A polymorphic association links an owner row to an arbitrary target\n * SmrtObject identified by a `(metaType, metaId)` pair — `metaType` being the\n * target's qualified class name (e.g. `@happyvertical/smrt-content:Article`)\n * and `metaId` its row id. Pair that with a `role` discriminator and a\n * `sortOrder`, and one join table can reference many different target types\n * without a typed foreign key per type.\n *\n * Subclasses add their own \"owner\" side and decorate with `@smrt()`:\n *\n * ```typescript\n * @smrt({ conflictColumns: ['asset_id', 'meta_type', 'meta_id', 'role'] })\n * export class AssetAssociation extends SmrtPolymorphicAssociation {\n * @foreignKey('Asset', { required: true })\n * assetId = '';\n * }\n *\n * const target = await association.hydrate(); // resolves metaType + loads metaId\n * ```\n *\n * Convention: `metaId` is intentionally a bare string, NOT a typed\n * `@foreignKey` / `@crossPackageRef` — it is polymorphic, so there is no\n * single target table to point at. `metaType` carries the type information\n * instead, resolved at runtime via `ObjectRegistry`.\n *\n * This is an abstract framework base in the same family as\n * `SmrtHierarchical` and `SmrtJunction`: it has no `@smrt()` decorator and no\n * table of its own. Its columns are merged into each concrete subclass's\n * manifest by the scanner's `FRAMEWORK_BASE_CLASSES` /\n * `FRAMEWORK_ABSTRACT_BASE_NAMES` wiring. Keep those two lists in sync when\n * touching this class.\n *\n * @example\n * ```typescript\n * @smrt({ conflictColumns: ['owner_id', 'meta_type', 'meta_id', 'role'] })\n * export class CommentAssociation extends SmrtPolymorphicAssociation {\n * @foreignKey('Comment', { required: true })\n * ownerId = '';\n * }\n * ```\n */\n\nimport { field } from './decorators/index';\nimport { SmrtObject, type SmrtObjectOptions } from './object';\nimport { ObjectRegistry } from './registry';\n\n/**\n * Options accepted by `SmrtPolymorphicAssociation` (and its subclasses)\n * covering the polymorphic right side of the join.\n */\nexport interface SmrtPolymorphicAssociationOptions extends SmrtObjectOptions {\n /** Target class name or qualified name (e.g. `'Article'` or `'@pkg:Article'`). */\n metaType?: string;\n /** Target object id. */\n metaId?: string;\n /** Association role (e.g. `'hero'`, `'thumbnail'`, `'attachment'`). */\n role?: string;\n /** Sort order within a role. */\n sortOrder?: number;\n}\n\nexport class SmrtPolymorphicAssociation extends SmrtObject {\n /**\n * Internal marker so the scanner can recognize this framework abstract base\n * even when consumers haven't built its package. Mirrors\n * `SmrtHierarchical._isHierarchicalBase` and `SmrtJunction._isJunctionBase`.\n * Don't rename without also updating the scanner's `FRAMEWORK_BASE_CLASSES`\n * set in `packages/scanner/src/inheritance-resolver.ts` and\n * `FRAMEWORK_ABSTRACT_BASE_NAMES` in\n * `packages/core/src/scanner/manifest-generator.ts`.\n */\n static readonly _isPolymorphicAssociationBase = true as const;\n\n /** Target class name or qualified name (e.g. `'Article'` or `'@pkg:Article'`). */\n @field({ required: true })\n metaType = '';\n\n /**\n * Target object id. Bare string by design — polymorphic, not a typed\n * `@foreignKey` / `@crossPackageRef`, because there is no single target\n * table to point at.\n */\n @field({ required: true })\n metaId = '';\n\n /** Role of this association (e.g. `'hero'`, `'thumbnail'`, `'attachment'`). */\n @field({ required: true })\n role = 'default';\n\n /** Sort order for ordering targets within a role. */\n @field()\n sortOrder: number = 0;\n\n constructor(options: SmrtPolymorphicAssociationOptions = {}) {\n super(options);\n if (options.metaType) this.metaType = options.metaType;\n if (options.metaId) this.metaId = options.metaId;\n if (options.role) this.role = options.role;\n if (options.sortOrder !== undefined) this.sortOrder = options.sortOrder;\n }\n\n /**\n * Resolve and load the target object this association points at.\n *\n * Resolves `metaType` to its registered class via\n * `ObjectRegistry.getClassByQualifiedName` (falling back to a simple-name\n * lookup for legacy/unqualified values), then loads the `metaId` row through\n * the target's collection. Going through the collection means STI targets\n * are rehydrated as their concrete subclass and a missing row yields `null`.\n *\n * When the type isn't registered yet, a lazy external-package load is\n * attempted so a qualified `metaType` still hydrates even if nothing has\n * imported the target class. Once resolved, the load goes through the\n * target's collection by its qualified name — genuine failures (DB/init\n * errors) surface rather than being masked as \"no target\".\n *\n * Returns `null` when `metaType`/`metaId` are unset, the type can't be\n * resolved to a registered/loadable class, or the target row no longer\n * exists. The target shares this association's database connection via\n * `this.options`.\n *\n * Prefer qualified `metaType` values (`@pkg:Class`): a bare simple name\n * resolves to the first registered match, and an ambiguous unqualified name\n * that has to be lazily loaded surfaces a `ConfigurationError` rather than\n * guessing.\n *\n * @typeParam T - Expected target type for the caller's convenience cast.\n */\n async hydrate<T extends SmrtObject = SmrtObject>(): Promise<T | null> {\n if (!this.metaType || !this.metaId) return null;\n\n // Prefer the qualified-name lookup; fall back to a simple-name lookup for\n // legacy/unqualified values.\n let registered =\n ObjectRegistry.getClassByQualifiedName(this.metaType) ??\n ObjectRegistry.getClass(this.metaType);\n\n // Not registered yet — try a lazy external-package load, then re-resolve.\n // Branch on the boolean: a `false` result means the type genuinely isn't\n // installed (→ null), while real loader failures (e.g. an ambiguous\n // unqualified name throwing ConfigurationError) propagate instead of being\n // masked as \"no target\".\n if (!registered) {\n const loaded = await ObjectRegistry.tryLoadFromExternalPackage(\n this.metaType,\n );\n if (!loaded) return null;\n registered =\n ObjectRegistry.getClassByQualifiedName(this.metaType) ??\n ObjectRegistry.getClass(this.metaType);\n }\n\n if (!registered) return null;\n\n // Resolve via the canonical (qualified) name so the lookup is\n // unambiguous. getCollection is deliberately NOT wrapped in a catch:\n // real DB/init failures must surface, not be reported as a missing row.\n const collection = await ObjectRegistry.getCollection<SmrtObject>(\n registered.qualifiedName ?? registered.name,\n this.options,\n );\n\n const target = await collection.get({ id: this.metaId });\n return target as T | null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AA+DO,MAAM,mCAAmC,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUzD,OAAgB,gCAAgC;AAAA,EAIhD,WAAW;AAAA,EAQX,SAAS;AAAA,EAIT,OAAO;AAAA,EAIP,YAAoB;AAAA,EAEpB,YAAY,UAA6C,IAAI;AAC3D,UAAM,OAAO;AACb,QAAI,QAAQ,SAAU,MAAK,WAAW,QAAQ;AAC9C,QAAI,QAAQ,OAAQ,MAAK,SAAS,QAAQ;AAC1C,QAAI,QAAQ,KAAM,MAAK,OAAO,QAAQ;AACtC,QAAI,QAAQ,cAAc,OAAW,MAAK,YAAY,QAAQ;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BA,MAAM,UAAgE;AACpE,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,OAAQ,QAAO;AAI3C,QAAI,aACF,eAAe,wBAAwB,KAAK,QAAQ,KACpD,eAAe,SAAS,KAAK,QAAQ;AAOvC,QAAI,CAAC,YAAY;AACf,YAAM,SAAS,MAAM,eAAe;AAAA,QAClC,KAAK;AAAA,MAAA;AAEP,UAAI,CAAC,OAAQ,QAAO;AACpB,mBACE,eAAe,wBAAwB,KAAK,QAAQ,KACpD,eAAe,SAAS,KAAK,QAAQ;AAAA,IACzC;AAEA,QAAI,CAAC,WAAY,QAAO;AAKxB,UAAM,aAAa,MAAM,eAAe;AAAA,MACtC,WAAW,iBAAiB,WAAW;AAAA,MACvC,KAAK;AAAA,IAAA;AAGP,UAAM,SAAS,MAAM,WAAW,IAAI,EAAE,IAAI,KAAK,QAAQ;AACvD,WAAO;AAAA,EACT;AACF;AA1FE,gBAAA;AAAA,EADC,MAAM,EAAE,UAAU,KAAA,CAAM;AAAA,GAbd,2BAcX,WAAA,UAAA;AAQA,gBAAA;AAAA,EADC,MAAM,EAAE,UAAU,KAAA,CAAM;AAAA,GArBd,2BAsBX,WAAA,QAAA;AAIA,gBAAA;AAAA,EADC,MAAM,EAAE,UAAU,KAAA,CAAM;AAAA,GAzBd,2BA0BX,WAAA,MAAA;AAIA,gBAAA;AAAA,EADC,MAAA;AAAM,GA7BI,2BA8BX,WAAA,WAAA;"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI for pre-build type generation
4
+ * Usage: smrt generate-types [options]
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/prebuild/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env node
2
+ import { generateDeclarationsFromCLI } from "./index.js";
3
+ const args = process.argv.slice(2);
4
+ const command = args[0];
5
+ switch (command) {
6
+ case "generate-types":
7
+ case "generate-declarations":
8
+ generateDeclarationsFromCLI(args.slice(1)).catch((error) => {
9
+ console.error("Error generating declarations:", error);
10
+ process.exit(1);
11
+ });
12
+ break;
13
+ default:
14
+ console.log(`
15
+ SMRT Pre-build CLI
16
+
17
+ Usage:
18
+ smrt generate-types <manifest-path> [output-dir]
19
+
20
+ Commands:
21
+ generate-types Generate TypeScript declarations from manifest
22
+
23
+ Examples:
24
+ smrt generate-types ./manifest.json src/types/generated
25
+ smrt generate-types ./static-manifest.js
26
+ `);
27
+ process.exit(1);
28
+ }
29
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sources":["../../src/prebuild/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * CLI for pre-build type generation\n * Usage: smrt generate-types [options]\n */\n\nimport { generateDeclarationsFromCLI } from './index.js';\n\nconst args = process.argv.slice(2);\nconst command = args[0];\n\nswitch (command) {\n case 'generate-types':\n case 'generate-declarations':\n generateDeclarationsFromCLI(args.slice(1)).catch((error) => {\n console.error('Error generating declarations:', error);\n process.exit(1);\n });\n break;\n\n default:\n console.log(`\nSMRT Pre-build CLI\n\nUsage:\n smrt generate-types <manifest-path> [output-dir]\n\nCommands:\n generate-types Generate TypeScript declarations from manifest\n\nExamples:\n smrt generate-types ./manifest.json src/types/generated\n smrt generate-types ./static-manifest.js\n`);\n process.exit(1);\n}\n"],"names":[],"mappings":";;AAQA,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,MAAM,UAAU,KAAK,CAAC;AAEtB,QAAQ,SAAA;AAAA,EACN,KAAK;AAAA,EACL,KAAK;AACH,gCAA4B,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU;AAC1D,cAAQ,MAAM,kCAAkC,KAAK;AACrD,cAAQ,KAAK,CAAC;AAAA,IAChB,CAAC;AACD;AAAA,EAEF;AACE,YAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAYf;AACG,YAAQ,KAAK,CAAC;AAClB;"}
@@ -0,0 +1,22 @@
1
+ import { SmartObjectManifest } from '../scanner/types';
2
+ export interface PrebuildOptions {
3
+ /** Path to manifest file or manifest object */
4
+ manifest: string | SmartObjectManifest;
5
+ /** Output directory for generated types */
6
+ outDir: string;
7
+ /** Include virtual module declarations */
8
+ includeVirtualModules?: boolean;
9
+ /** Include object type definitions */
10
+ includeObjectTypes?: boolean;
11
+ /** Project root path for resolving relative paths */
12
+ projectRoot?: string;
13
+ }
14
+ /**
15
+ * Generate TypeScript declaration files from SMRT manifest
16
+ */
17
+ export declare function generateDeclarations(options: PrebuildOptions): Promise<void>;
18
+ /**
19
+ * CLI command for generating declarations
20
+ */
21
+ export declare function generateDeclarationsFromCLI(args: string[]): Promise<void>;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prebuild/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACvC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAmPD;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,239 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ async function generateDeclarations(options) {
4
+ const {
5
+ manifest: manifestInput,
6
+ outDir,
7
+ includeVirtualModules = true,
8
+ includeObjectTypes = true,
9
+ projectRoot = process.cwd()
10
+ } = options;
11
+ const manifest = typeof manifestInput === "string" ? JSON.parse(fs.readFileSync(manifestInput, "utf-8")) : manifestInput;
12
+ const fullOutDir = path.isAbsolute(outDir) ? outDir : path.join(projectRoot, outDir);
13
+ fs.mkdirSync(fullOutDir, { recursive: true });
14
+ console.log(`[smrt:prebuild] Generating declarations to ${fullOutDir}`);
15
+ if (includeObjectTypes) {
16
+ await generateObjectTypeDeclarations(manifest, fullOutDir);
17
+ }
18
+ if (includeVirtualModules) {
19
+ await generateVirtualModuleDeclarations(manifest, fullOutDir);
20
+ }
21
+ console.log(
22
+ `[smrt:prebuild] Generated declarations for ${Object.keys(manifest.objects).length} SMRT objects`
23
+ );
24
+ }
25
+ async function generateObjectTypeDeclarations(manifest, outDir) {
26
+ const interfaces = [];
27
+ for (const [_objectName, objectMeta] of Object.entries(manifest.objects)) {
28
+ const fields = objectMeta.fields || {};
29
+ const propertyLines = [];
30
+ propertyLines.push(" id?: string;");
31
+ propertyLines.push(" created_at?: string;");
32
+ propertyLines.push(" updated_at?: string;");
33
+ for (const [fieldName, fieldDef] of Object.entries(fields)) {
34
+ const type = mapFieldTypeToTypeScript(fieldDef.type);
35
+ const optional = !fieldDef.required ? "?" : "";
36
+ propertyLines.push(` ${fieldName}${optional}: ${type};`);
37
+ }
38
+ const interfaceDef = `export interface ${objectMeta.className}Data {
39
+ ${propertyLines.join("\n")}
40
+ }`;
41
+ interfaces.push(interfaceDef);
42
+ }
43
+ const objectTypesContent = `/**
44
+ * Auto-generated TypeScript interfaces for SMRT objects
45
+ * Generated at build time from @smrt() decorated classes
46
+ *
47
+ * DO NOT EDIT THIS FILE MANUALLY
48
+ */
49
+
50
+ ${interfaces.join("\n\n")}
51
+ `;
52
+ fs.writeFileSync(path.join(outDir, "smrt-objects.d.ts"), objectTypesContent);
53
+ }
54
+ async function generateVirtualModuleDeclarations(manifest, outDir) {
55
+ const manifestDeclaration = `/**
56
+ * Auto-generated manifest module declaration
57
+ */
58
+ declare module '@smrt/manifest' {
59
+ export interface SmrtObjectField {
60
+ type: string;
61
+ required?: boolean;
62
+ default?: any;
63
+ }
64
+
65
+ export interface SmrtObjectMethod {
66
+ name: string;
67
+ parameters: Array<{
68
+ name: string;
69
+ type: string;
70
+ optional?: boolean;
71
+ default?: any;
72
+ }>;
73
+ returnType: string;
74
+ async: boolean;
75
+ isStatic: boolean;
76
+ isPublic: boolean;
77
+ }
78
+
79
+ export interface SmrtObjectDefinition {
80
+ name: string;
81
+ className: string;
82
+ collection: string;
83
+ filePath: string;
84
+ fields: Record<string, SmrtObjectField>;
85
+ methods: Record<string, SmrtObjectMethod>;
86
+ decoratorConfig: any;
87
+ extends?: string;
88
+ }
89
+
90
+ export interface SmrtManifest {
91
+ version: string;
92
+ timestamp: number;
93
+ objects: Record<string, SmrtObjectDefinition>;
94
+ }
95
+
96
+ export const manifest: SmrtManifest;
97
+ export default manifest;
98
+ }`;
99
+ const collectionNames = [
100
+ ...new Set(Object.values(manifest.objects).map((obj) => obj.collection))
101
+ ];
102
+ const apiClientInterface = collectionNames.map((collection) => {
103
+ const dataType = Object.entries(manifest.objects).find(
104
+ ([, obj]) => obj.collection === collection
105
+ )?.[1].className;
106
+ const interfaceName = dataType ? `${dataType}Data` : "any";
107
+ return ` ${collection}: CrudOperations<${interfaceName}>;`;
108
+ }).join("\n");
109
+ const clientDeclaration = `/**
110
+ * Auto-generated API client module declaration
111
+ */
112
+ declare module '@smrt/client' {
113
+ export interface ApiResponse<T = any> {
114
+ id?: string;
115
+ data?: T;
116
+ error?: string;
117
+ message?: string;
118
+ }
119
+
120
+ export interface CrudOperations<T = any> {
121
+ list(params?: Record<string, any>): Promise<ApiResponse<T[]>>;
122
+ get(id: string): Promise<ApiResponse<T>>;
123
+ create(data: Partial<T>): Promise<ApiResponse<T>>;
124
+ update(id: string, data: Partial<T>): Promise<ApiResponse<T>>;
125
+ delete(id: string): Promise<boolean>;
126
+ }
127
+
128
+ export interface ApiClient {
129
+ ${apiClientInterface}
130
+ }
131
+
132
+ export function createClient(basePath?: string): ApiClient;
133
+ export default createClient;
134
+ }`;
135
+ const routesDeclaration = `/**
136
+ * Auto-generated routes module declaration
137
+ */
138
+ declare module '@smrt/routes' {
139
+ export interface RouteApp {
140
+ get(path: string, handler: (req: any, res: any) => void): void;
141
+ post(path: string, handler: (req: any, res: any) => void): void;
142
+ put(path: string, handler: (req: any, res: any) => void): void;
143
+ delete(path: string, handler: (req: any, res: any) => void): void;
144
+ }
145
+
146
+ export function setupRoutes(app: RouteApp): void;
147
+ export default setupRoutes;
148
+ }`;
149
+ const mcpDeclaration = `/**
150
+ * Auto-generated MCP module declaration
151
+ */
152
+ declare module '@smrt/mcp' {
153
+ export interface McpTool {
154
+ name: string;
155
+ description: string;
156
+ inputSchema: {
157
+ type: string;
158
+ properties: Record<string, any>;
159
+ required?: string[];
160
+ };
161
+ }
162
+
163
+ export const tools: McpTool[];
164
+ export function createMCPServer(): {
165
+ name: string;
166
+ version: string;
167
+ tools: McpTool[]
168
+ };
169
+ export default createMCPServer;
170
+ }`;
171
+ const objectImports = Object.values(manifest.objects).map(
172
+ (obj) => ` export type ${obj.className}Data = import('./smrt-objects').${obj.className}Data;`
173
+ ).join("\n");
174
+ const typesDeclaration = `/**
175
+ * Auto-generated types module declaration
176
+ */
177
+ declare module '@smrt/types' {
178
+ ${objectImports}
179
+
180
+ export interface Request {
181
+ params: Record<string, string>;
182
+ query: Record<string, any>;
183
+ json(): Promise<any>;
184
+ }
185
+
186
+ export interface Response {
187
+ json(data: any, init?: { status?: number }): Response;
188
+ status(code: number): Response;
189
+ }
190
+ }`;
191
+ fs.writeFileSync(
192
+ path.join(outDir, "smrt-manifest.d.ts"),
193
+ manifestDeclaration
194
+ );
195
+ fs.writeFileSync(path.join(outDir, "smrt-client.d.ts"), clientDeclaration);
196
+ fs.writeFileSync(path.join(outDir, "smrt-routes.d.ts"), routesDeclaration);
197
+ fs.writeFileSync(path.join(outDir, "smrt-mcp.d.ts"), mcpDeclaration);
198
+ fs.writeFileSync(path.join(outDir, "smrt-types.d.ts"), typesDeclaration);
199
+ }
200
+ function mapFieldTypeToTypeScript(smrtType) {
201
+ switch (smrtType) {
202
+ case "text":
203
+ return "string";
204
+ case "decimal":
205
+ case "integer":
206
+ return "number";
207
+ case "boolean":
208
+ return "boolean";
209
+ case "datetime":
210
+ return "string | Date";
211
+ case "json":
212
+ return "any";
213
+ case "foreignKey":
214
+ return "string";
215
+ default:
216
+ return "any";
217
+ }
218
+ }
219
+ async function generateDeclarationsFromCLI(args) {
220
+ const manifestPath = args[0];
221
+ const outDir = args[1] || "src/types/generated";
222
+ if (!manifestPath) {
223
+ console.error("Usage: generate-declarations <manifest-path> [output-dir]");
224
+ process.exit(1);
225
+ }
226
+ if (!fs.existsSync(manifestPath)) {
227
+ console.error(`Manifest file not found: ${manifestPath}`);
228
+ process.exit(1);
229
+ }
230
+ await generateDeclarations({
231
+ manifest: manifestPath,
232
+ outDir
233
+ });
234
+ }
235
+ export {
236
+ generateDeclarations,
237
+ generateDeclarationsFromCLI
238
+ };
239
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/prebuild/index.ts"],"sourcesContent":["/**\n * Pre-build utilities for generating TypeScript declarations\n * Solves virtual module resolution by creating physical .d.ts files\n */\n\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport type { SmartObjectManifest } from '../scanner/types';\n\nexport interface PrebuildOptions {\n /** Path to manifest file or manifest object */\n manifest: string | SmartObjectManifest;\n /** Output directory for generated types */\n outDir: string;\n /** Include virtual module declarations */\n includeVirtualModules?: boolean;\n /** Include object type definitions */\n includeObjectTypes?: boolean;\n /** Project root path for resolving relative paths */\n projectRoot?: string;\n}\n\n/**\n * Generate TypeScript declaration files from SMRT manifest\n */\nexport async function generateDeclarations(\n options: PrebuildOptions,\n): Promise<void> {\n const {\n manifest: manifestInput,\n outDir,\n includeVirtualModules = true,\n includeObjectTypes = true,\n projectRoot = process.cwd(),\n } = options;\n\n // Load manifest\n const manifest: SmartObjectManifest =\n typeof manifestInput === 'string'\n ? JSON.parse(fs.readFileSync(manifestInput, 'utf-8'))\n : manifestInput;\n\n // Ensure output directory exists\n const fullOutDir = path.isAbsolute(outDir)\n ? outDir\n : path.join(projectRoot, outDir);\n fs.mkdirSync(fullOutDir, { recursive: true });\n\n console.log(`[smrt:prebuild] Generating declarations to ${fullOutDir}`);\n\n if (includeObjectTypes) {\n await generateObjectTypeDeclarations(manifest, fullOutDir);\n }\n\n if (includeVirtualModules) {\n await generateVirtualModuleDeclarations(manifest, fullOutDir);\n }\n\n console.log(\n `[smrt:prebuild] Generated declarations for ${Object.keys(manifest.objects).length} SMRT objects`,\n );\n}\n\n/**\n * Generate TypeScript interfaces for SMRT objects\n */\nasync function generateObjectTypeDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n const interfaces: string[] = [];\n\n // Generate interfaces for each discovered SMRT object\n for (const [_objectName, objectMeta] of Object.entries(manifest.objects)) {\n const fields = objectMeta.fields || {};\n const propertyLines: string[] = [];\n\n // Add standard SmrtObject properties\n propertyLines.push(' id?: string;');\n propertyLines.push(' created_at?: string;');\n propertyLines.push(' updated_at?: string;');\n\n // Add object-specific properties\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const type = mapFieldTypeToTypeScript(fieldDef.type);\n const optional = !fieldDef.required ? '?' : '';\n propertyLines.push(` ${fieldName}${optional}: ${type};`);\n }\n\n const interfaceDef = `export interface ${objectMeta.className}Data {\n${propertyLines.join('\\n')}\n}`;\n interfaces.push(interfaceDef);\n }\n\n // Write object types file\n const objectTypesContent = `/**\n * Auto-generated TypeScript interfaces for SMRT objects\n * Generated at build time from @smrt() decorated classes\n *\n * DO NOT EDIT THIS FILE MANUALLY\n */\n\n${interfaces.join('\\n\\n')}\n`;\n\n fs.writeFileSync(path.join(outDir, 'smrt-objects.d.ts'), objectTypesContent);\n}\n\n/**\n * Generate virtual module declarations\n */\nasync function generateVirtualModuleDeclarations(\n manifest: SmartObjectManifest,\n outDir: string,\n): Promise<void> {\n // Generate manifest module declaration\n const manifestDeclaration = `/**\n * Auto-generated manifest module declaration\n */\ndeclare module '@smrt/manifest' {\n export interface SmrtObjectField {\n type: string;\n required?: boolean;\n default?: any;\n }\n\n export interface SmrtObjectMethod {\n name: string;\n parameters: Array<{\n name: string;\n type: string;\n optional?: boolean;\n default?: any;\n }>;\n returnType: string;\n async: boolean;\n isStatic: boolean;\n isPublic: boolean;\n }\n\n export interface SmrtObjectDefinition {\n name: string;\n className: string;\n collection: string;\n filePath: string;\n fields: Record<string, SmrtObjectField>;\n methods: Record<string, SmrtObjectMethod>;\n decoratorConfig: any;\n extends?: string;\n }\n\n export interface SmrtManifest {\n version: string;\n timestamp: number;\n objects: Record<string, SmrtObjectDefinition>;\n }\n\n export const manifest: SmrtManifest;\n export default manifest;\n}`;\n\n // Generate client module declaration\n const collectionNames = [\n ...new Set(Object.values(manifest.objects).map((obj) => obj.collection)),\n ];\n\n const apiClientInterface = collectionNames\n .map((collection) => {\n const dataType = Object.entries(manifest.objects).find(\n ([, obj]) => obj.collection === collection,\n )?.[1].className;\n const interfaceName = dataType ? `${dataType}Data` : 'any';\n return ` ${collection}: CrudOperations<${interfaceName}>;`;\n })\n .join('\\n');\n\n const clientDeclaration = `/**\n * Auto-generated API client module declaration\n */\ndeclare module '@smrt/client' {\n export interface ApiResponse<T = any> {\n id?: string;\n data?: T;\n error?: string;\n message?: string;\n }\n\n export interface CrudOperations<T = any> {\n list(params?: Record<string, any>): Promise<ApiResponse<T[]>>;\n get(id: string): Promise<ApiResponse<T>>;\n create(data: Partial<T>): Promise<ApiResponse<T>>;\n update(id: string, data: Partial<T>): Promise<ApiResponse<T>>;\n delete(id: string): Promise<boolean>;\n }\n\n export interface ApiClient {\n${apiClientInterface}\n }\n\n export function createClient(basePath?: string): ApiClient;\n export default createClient;\n}`;\n\n // Generate routes module declaration\n const routesDeclaration = `/**\n * Auto-generated routes module declaration\n */\ndeclare module '@smrt/routes' {\n export interface RouteApp {\n get(path: string, handler: (req: any, res: any) => void): void;\n post(path: string, handler: (req: any, res: any) => void): void;\n put(path: string, handler: (req: any, res: any) => void): void;\n delete(path: string, handler: (req: any, res: any) => void): void;\n }\n\n export function setupRoutes(app: RouteApp): void;\n export default setupRoutes;\n}`;\n\n // Generate MCP module declaration\n const mcpDeclaration = `/**\n * Auto-generated MCP module declaration\n */\ndeclare module '@smrt/mcp' {\n export interface McpTool {\n name: string;\n description: string;\n inputSchema: {\n type: string;\n properties: Record<string, any>;\n required?: string[];\n };\n }\n\n export const tools: McpTool[];\n export function createMCPServer(): {\n name: string;\n version: string;\n tools: McpTool[]\n };\n export default createMCPServer;\n}`;\n\n // Generate types module declaration with object imports\n const objectImports = Object.values(manifest.objects)\n .map(\n (obj) =>\n ` export type ${obj.className}Data = import('./smrt-objects').${obj.className}Data;`,\n )\n .join('\\n');\n\n const typesDeclaration = `/**\n * Auto-generated types module declaration\n */\ndeclare module '@smrt/types' {\n${objectImports}\n\n export interface Request {\n params: Record<string, string>;\n query: Record<string, any>;\n json(): Promise<any>;\n }\n\n export interface Response {\n json(data: any, init?: { status?: number }): Response;\n status(code: number): Response;\n }\n}`;\n\n // Write all virtual module declarations\n fs.writeFileSync(\n path.join(outDir, 'smrt-manifest.d.ts'),\n manifestDeclaration,\n );\n fs.writeFileSync(path.join(outDir, 'smrt-client.d.ts'), clientDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-routes.d.ts'), routesDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-mcp.d.ts'), mcpDeclaration);\n fs.writeFileSync(path.join(outDir, 'smrt-types.d.ts'), typesDeclaration);\n}\n\n/**\n * Map SMRT field types to TypeScript types\n */\nfunction mapFieldTypeToTypeScript(smrtType: string): string {\n switch (smrtType) {\n case 'text':\n return 'string';\n case 'decimal':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'datetime':\n return 'string | Date';\n case 'json':\n return 'any';\n case 'foreignKey':\n return 'string';\n default:\n return 'any';\n }\n}\n\n/**\n * CLI command for generating declarations\n */\nexport async function generateDeclarationsFromCLI(\n args: string[],\n): Promise<void> {\n const manifestPath = args[0];\n const outDir = args[1] || 'src/types/generated';\n\n if (!manifestPath) {\n console.error('Usage: generate-declarations <manifest-path> [output-dir]');\n process.exit(1);\n }\n\n if (!fs.existsSync(manifestPath)) {\n console.error(`Manifest file not found: ${manifestPath}`);\n process.exit(1);\n }\n\n await generateDeclarations({\n manifest: manifestPath,\n outDir,\n });\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * SMRT pre-build utilities
3
+ *
4
+ * Re-exports pre-build functionality from the prebuild/ directory.
5
+ * This file serves as the entry point for @smrt/core/prebuild exports.
6
+ */
7
+ export * from './prebuild/index.js';
8
+ //# sourceMappingURL=prebuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuild.d.ts","sourceRoot":"","sources":["../src/prebuild.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { generateDeclarations, generateDeclarationsFromCLI } from "./prebuild/index.js";
2
+ export {
3
+ generateDeclarations,
4
+ generateDeclarationsFromCLI
5
+ };
6
+ //# sourceMappingURL=prebuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prebuild.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,13 @@
1
+ import { CollectionCacheConfig } from '../collection-cache';
2
+ /**
3
+ * Resolve the effective collection cache config for a class.
4
+ *
5
+ * The nearest definition in the inheritance chain wins (self first, then
6
+ * ancestors). `cache: false` at any level explicitly disables caching for
7
+ * that class and stops the walk.
8
+ *
9
+ * @param className - Simple or qualified class name
10
+ * @returns The effective config, or undefined when caching is not opted in
11
+ */
12
+ export declare function resolveCollectionCacheConfig(className: string): CollectionCacheConfig | undefined;
13
+ //# sourceMappingURL=cache-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-config.d.ts","sourceRoot":"","sources":["../../src/registry/cache-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAIjE;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,GAChB,qBAAqB,GAAG,SAAS,CAenC"}
@@ -0,0 +1,17 @@
1
+ import { getInheritanceChain } from "./inheritance-resolver.js";
2
+ import { findClass } from "./name-resolver.js";
3
+ function resolveCollectionCacheConfig(className) {
4
+ const chain = getInheritanceChain(className);
5
+ const candidates = chain.length > 0 ? [...chain].reverse() : [className];
6
+ for (const name of candidates) {
7
+ const cache = findClass(name)?.config?.cache;
8
+ if (cache === void 0) continue;
9
+ if (cache === false || !(cache.ttl > 0)) return void 0;
10
+ return cache;
11
+ }
12
+ return void 0;
13
+ }
14
+ export {
15
+ resolveCollectionCacheConfig
16
+ };
17
+ //# sourceMappingURL=cache-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-config.js","sources":["../../src/registry/cache-config.ts"],"sourcesContent":["/**\n * Collection read-cache configuration resolution for the SMRT ObjectRegistry.\n *\n * Resolves the effective `@smrt({ cache })` config for a class, walking the\n * inheritance chain so an STI base class opt-in covers its children while a\n * child can still opt out with `cache: false`.\n *\n * @see https://github.com/happyvertical/smrt/issues/1498\n */\n\nimport type { CollectionCacheConfig } from '../collection-cache';\nimport { getInheritanceChain } from './inheritance-resolver';\nimport { findClass } from './name-resolver';\n\n/**\n * Resolve the effective collection cache config for a class.\n *\n * The nearest definition in the inheritance chain wins (self first, then\n * ancestors). `cache: false` at any level explicitly disables caching for\n * that class and stops the walk.\n *\n * @param className - Simple or qualified class name\n * @returns The effective config, or undefined when caching is not opted in\n */\nexport function resolveCollectionCacheConfig(\n className: string,\n): CollectionCacheConfig | undefined {\n // Chain is ordered [ancestor, ..., self]; walk nearest-first. Falls back\n // to a direct lookup for classes without a computable chain (e.g. inline\n // test classes registered without manifest metadata).\n const chain = getInheritanceChain(className);\n const candidates = chain.length > 0 ? [...chain].reverse() : [className];\n\n for (const name of candidates) {\n const cache = findClass(name)?.config?.cache;\n if (cache === undefined) continue;\n if (cache === false || !(cache.ttl > 0)) return undefined;\n return cache;\n }\n\n return undefined;\n}\n"],"names":[],"mappings":";;AAwBO,SAAS,6BACd,WACmC;AAInC,QAAM,QAAQ,oBAAoB,SAAS;AAC3C,QAAM,aAAa,MAAM,SAAS,IAAI,CAAC,GAAG,KAAK,EAAE,YAAY,CAAC,SAAS;AAEvE,aAAW,QAAQ,YAAY;AAC7B,UAAM,QAAQ,UAAU,IAAI,GAAG,QAAQ;AACvC,QAAI,UAAU,OAAW;AACzB,QAAI,UAAU,SAAS,EAAE,MAAM,MAAM,GAAI,QAAO;AAChD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;"}
@@ -0,0 +1,31 @@
1
+ import { SmrtCollection } from '../collection';
2
+ import { SmrtObject } from '../object';
3
+ import { RegisteredClass, SmartObjectConfig } from './types.js';
4
+ export declare function register(ctor: typeof SmrtObject, config?: SmartObjectConfig): void;
5
+ export declare function registerCollection(objectName: string, collectionConstructor: new (options: any) => SmrtCollection<any>): void;
6
+ /**
7
+ * Invalidate cached inheritance state (chain + inheritedFields +
8
+ * inheritedMethods) on `existing` AND every descendant whose `extends` or
9
+ * `inheritanceChain` references it.
10
+ *
11
+ * This covers both simple-name and qualified-name `extends` matches, which
12
+ * is why `ObjectRegistry.invalidateInheritanceCache` delegates here (Release
13
+ * C follow-up #1139 Gap 1 — the old recursive public helper only matched
14
+ * `extends === className` by exact string, silently missing qualified
15
+ * descendants like `@pkg:Parent`).
16
+ *
17
+ * `previousIdentity` is used by `upsertExistingEntry` (Gap 2): when a class
18
+ * is promoted (its name/packageName/qualifiedName are mutated in place),
19
+ * descendants registered against the pre-mutation identity need to be
20
+ * invalidated too. Pass the pre-mutation `{ name, qualifiedName }` so this
21
+ * sweep matches against both the old and new identity.
22
+ *
23
+ * Exported for the public `ObjectRegistry.invalidateInheritanceCache`
24
+ * shim in registry.ts.
25
+ */
26
+ export declare function invalidateInheritanceEntries(existing: RegisteredClass, previousIdentity?: {
27
+ name?: string;
28
+ qualifiedName?: string;
29
+ }): void;
30
+ export declare function registerFromManifest(name: string, objectDef: any, packageName?: string): void;
31
+ //# sourceMappingURL=class-registration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-registration.d.ts","sourceRoot":"","sources":["../../src/registry/class-registration.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AASpD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAkCvC,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAqapB,wBAAgB,QAAQ,CACtB,IAAI,EAAE,OAAO,UAAU,EACvB,MAAM,GAAE,iBAAsB,GAC7B,IAAI,CAomBN;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,qBAAqB,EAAE,KAAK,OAAO,EAAE,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,GAC/D,IAAI,CAON;AA8ID;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,eAAe,EACzB,gBAAgB,CAAC,EAAE;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,IAAI,CA2CN;AA+ID,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI,CAsQN"}