@seedprotocol/sdk 0.4.3 → 0.4.4

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 (192) hide show
  1. package/dist/{ArweaveClient-BvJ1FhQ5.js → ArweaveClient-CczHvccG.js} +4 -4
  2. package/dist/{ArweaveClient-BvJ1FhQ5.js.map → ArweaveClient-CczHvccG.js.map} +1 -1
  3. package/dist/{ArweaveClient-CleX_4Gw.js → ArweaveClient-DkNLWiSZ.js} +4 -4
  4. package/dist/{ArweaveClient-CleX_4Gw.js.map → ArweaveClient-DkNLWiSZ.js.map} +1 -1
  5. package/dist/{json-I3vJhXo8.js → ClientManager-DoHUt8tU.js} +6732 -6325
  6. package/dist/ClientManager-DoHUt8tU.js.map +1 -0
  7. package/dist/{Db-BPnO1-_p.js → Db-BzQR2KX9.js} +4 -4
  8. package/dist/{Db-BPnO1-_p.js.map → Db-BzQR2KX9.js.map} +1 -1
  9. package/dist/{Db-DX08SxS9.js → Db-DJvjXVlp.js} +4 -11
  10. package/dist/{Db-DX08SxS9.js.map → Db-DJvjXVlp.js.map} +1 -1
  11. package/dist/{EasClient-BwhUcPjY.js → EasClient-CHQYmjj2.js} +3 -3
  12. package/dist/{EasClient-BwhUcPjY.js.map → EasClient-CHQYmjj2.js.map} +1 -1
  13. package/dist/{EasClient-CJSs38Db.js → EasClient-CodrIgW-.js} +3 -3
  14. package/dist/{EasClient-CJSs38Db.js.map → EasClient-CodrIgW-.js.map} +1 -1
  15. package/dist/{FileManager-Ct91ZhOE.js → FileManager-BIVsDnMu.js} +3 -3
  16. package/dist/{FileManager-Ct91ZhOE.js.map → FileManager-BIVsDnMu.js.map} +1 -1
  17. package/dist/{FileManager-B1tdLMsX.js → FileManager-BbvkZJCH.js} +3 -3
  18. package/dist/{FileManager-B1tdLMsX.js.map → FileManager-BbvkZJCH.js.map} +1 -1
  19. package/dist/Item/Item.d.ts +28 -7
  20. package/dist/Item/Item.d.ts.map +1 -1
  21. package/dist/Item/service/actors/runPublish.d.ts +5 -0
  22. package/dist/Item/service/actors/runPublish.d.ts.map +1 -0
  23. package/dist/Item/service/itemMachineSingle.d.ts +10 -5
  24. package/dist/Item/service/itemMachineSingle.d.ts.map +1 -1
  25. package/dist/ItemProperty/ItemProperty.d.ts +30 -5
  26. package/dist/ItemProperty/ItemProperty.d.ts.map +1 -1
  27. package/dist/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
  28. package/dist/ItemProperty/service/propertyMachine.d.ts +10 -10
  29. package/dist/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  30. package/dist/Model/Model.d.ts +27 -20
  31. package/dist/Model/Model.d.ts.map +1 -1
  32. package/dist/Model/index.d.ts +1 -1
  33. package/dist/Model/service/actors/createModelProperties.d.ts.map +1 -1
  34. package/dist/Model/service/actors/loadOrCreateModel.d.ts.map +1 -1
  35. package/dist/Model/service/actors/validateModel.d.ts.map +1 -1
  36. package/dist/Model/service/modelMachine.d.ts +18 -3
  37. package/dist/Model/service/modelMachine.d.ts.map +1 -1
  38. package/dist/ModelProperty/ModelProperty.d.ts +25 -2
  39. package/dist/ModelProperty/ModelProperty.d.ts.map +1 -1
  40. package/dist/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
  41. package/dist/ModelProperty/service/actors/validateProperty.d.ts.map +1 -1
  42. package/dist/ModelProperty/service/modelPropertyMachine.d.ts +17 -3
  43. package/dist/ModelProperty/service/modelPropertyMachine.d.ts.map +1 -1
  44. package/dist/{ModelProperty-Cr3BmgkC.js → ModelProperty-gjcA83Mq.js} +380 -113
  45. package/dist/ModelProperty-gjcA83Mq.js.map +1 -0
  46. package/dist/{PathResolver-BErmcZqP.js → PathResolver-9zAzPhee.js} +3 -3
  47. package/dist/{PathResolver-BErmcZqP.js.map → PathResolver-9zAzPhee.js.map} +1 -1
  48. package/dist/{PathResolver-DJdxE_OK.js → PathResolver-kGzba-zC.js} +3 -3
  49. package/dist/{PathResolver-DJdxE_OK.js.map → PathResolver-kGzba-zC.js.map} +1 -1
  50. package/dist/{QueryClient-DIu9c-w6.js → QueryClient-C7ZkTT0z.js} +3 -3
  51. package/dist/{QueryClient-DIu9c-w6.js.map → QueryClient-C7ZkTT0z.js.map} +1 -1
  52. package/dist/{QueryClient-D2mv63gP.js → QueryClient-CEtsek7Q.js} +3 -3
  53. package/dist/{QueryClient-D2mv63gP.js.map → QueryClient-CEtsek7Q.js.map} +1 -1
  54. package/dist/Schema/Schema.d.ts +24 -3
  55. package/dist/Schema/Schema.d.ts.map +1 -1
  56. package/dist/Schema/service/actors/checkExistingSchema.d.ts.map +1 -1
  57. package/dist/Schema/service/actors/createPropertyInstances.d.ts.map +1 -1
  58. package/dist/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
  59. package/dist/Schema/service/actors/verifyPropertyInstancesInCache.d.ts.map +1 -1
  60. package/dist/Schema/service/actors/writeModelsToDb.d.ts.map +1 -1
  61. package/dist/Schema/service/actors/writeSchemaToDb.d.ts.map +1 -1
  62. package/dist/Schema/service/addModelsMachine.d.ts.map +1 -1
  63. package/dist/Schema/service/schemaMachine.d.ts +17 -3
  64. package/dist/Schema/service/schemaMachine.d.ts.map +1 -1
  65. package/dist/{Schema-DeKabJ0T.js → Schema-ClTcpgbt.js} +272 -161
  66. package/dist/Schema-ClTcpgbt.js.map +1 -0
  67. package/dist/{SchemaValidationService-cTlURuDt.js → SchemaValidationService-BfoEiHNr.js} +3 -3
  68. package/dist/{SchemaValidationService-cTlURuDt.js.map → SchemaValidationService-BfoEiHNr.js.map} +1 -1
  69. package/dist/browser/db/Db.d.ts.map +1 -1
  70. package/dist/browser/react/SeedProvider.d.ts +30 -0
  71. package/dist/browser/react/SeedProvider.d.ts.map +1 -0
  72. package/dist/browser/react/index.d.ts +4 -1
  73. package/dist/browser/react/index.d.ts.map +1 -1
  74. package/dist/browser/react/item.d.ts +10 -6
  75. package/dist/browser/react/item.d.ts.map +1 -1
  76. package/dist/browser/react/itemProperty.d.ts +37 -1
  77. package/dist/browser/react/itemProperty.d.ts.map +1 -1
  78. package/dist/browser/react/liveQuery.d.ts.map +1 -1
  79. package/dist/browser/react/model.d.ts +21 -7
  80. package/dist/browser/react/model.d.ts.map +1 -1
  81. package/dist/browser/react/modelProperty.d.ts +23 -0
  82. package/dist/browser/react/modelProperty.d.ts.map +1 -1
  83. package/dist/browser/react/queryClient.d.ts +28 -0
  84. package/dist/browser/react/queryClient.d.ts.map +1 -0
  85. package/dist/browser/react/schema.d.ts +8 -0
  86. package/dist/browser/react/schema.d.ts.map +1 -1
  87. package/dist/browser/react/trash.d.ts +5 -2
  88. package/dist/browser/react/trash.d.ts.map +1 -1
  89. package/dist/cjs/{ModelProperty-MkN5Rmx7.js → ModelProperty-BRKRREYP.js} +387 -113
  90. package/dist/cjs/ModelProperty-BRKRREYP.js.map +1 -0
  91. package/dist/cjs/{Schema-B5cr_JVK.js → Schema-CV9hMg8m.js} +320 -209
  92. package/dist/cjs/Schema-CV9hMg8m.js.map +1 -0
  93. package/dist/cjs/{SchemaValidationService-BgIzc3-r.js → SchemaValidationService-DUtQUerg.js} +3 -3
  94. package/dist/cjs/{SchemaValidationService-BgIzc3-r.js.map → SchemaValidationService-DUtQUerg.js.map} +1 -1
  95. package/dist/cjs/{getItem-CVJJPky2.js → getItem-BThT-UOt.js} +3 -3
  96. package/dist/cjs/{getItem-CVJJPky2.js.map → getItem-BThT-UOt.js.map} +1 -1
  97. package/dist/cjs/{getPublishPayload-DbOc3WA-.js → getPublishPayload-CKZ7rVbU.js} +25 -10
  98. package/dist/cjs/getPublishPayload-CKZ7rVbU.js.map +1 -0
  99. package/dist/cjs/{getPublishUploads-NzioLz-3.js → getPublishUploads-CuGIvV-Q.js} +4 -4
  100. package/dist/cjs/getPublishUploads-CuGIvV-Q.js.map +1 -0
  101. package/dist/cjs/{getSegmentedItemProperties-BsaklLwI.js → getSegmentedItemProperties-BCJXJlTR.js} +2 -2
  102. package/dist/cjs/{getSegmentedItemProperties-BsaklLwI.js.map → getSegmentedItemProperties-BCJXJlTR.js.map} +1 -1
  103. package/dist/cjs/{index-BmIVfqGN.js → index-C3j3m34a.js} +10302 -9891
  104. package/dist/cjs/index-C3j3m34a.js.map +1 -0
  105. package/dist/cjs/{index-C_0angRB.js → index-CbTBDqTJ.js} +3 -3
  106. package/dist/cjs/index-CbTBDqTJ.js.map +1 -0
  107. package/dist/client/actors/processSchemaFiles.d.ts.map +1 -1
  108. package/dist/db/read/getItemData.d.ts.map +1 -1
  109. package/dist/db/read/getItems.d.ts.map +1 -1
  110. package/dist/db/read/getModelPropertiesData.d.ts +19 -0
  111. package/dist/db/read/getModelPropertiesData.d.ts.map +1 -0
  112. package/dist/db/read/getModelsData.d.ts +15 -0
  113. package/dist/db/read/getModelsData.d.ts.map +1 -0
  114. package/dist/db/read/getPublishPayload.d.ts.map +1 -1
  115. package/dist/db/read/getPublishUploads.d.ts +1 -7
  116. package/dist/db/read/getPublishUploads.d.ts.map +1 -1
  117. package/dist/db/read/getSchemaUidForModel.d.ts.map +1 -1
  118. package/dist/db/write/updateSeedUid.d.ts +7 -0
  119. package/dist/db/write/updateSeedUid.d.ts.map +1 -0
  120. package/dist/events/item/index.d.ts.map +1 -1
  121. package/dist/events/item/syncDbWithEas.d.ts.map +1 -1
  122. package/dist/{getItem-CcttmUY_.js → getItem-BWPo8wd0.js} +3 -3
  123. package/dist/{getItem-CcttmUY_.js.map → getItem-BWPo8wd0.js.map} +1 -1
  124. package/dist/{getPublishPayload-NFpqbd_H.js → getPublishPayload-Caw2laZM.js} +24 -9
  125. package/dist/getPublishPayload-Caw2laZM.js.map +1 -0
  126. package/dist/{getPublishUploads-Cpb9vgwE.js → getPublishUploads-MlyBuoXh.js} +4 -4
  127. package/dist/getPublishUploads-MlyBuoXh.js.map +1 -0
  128. package/dist/{getSegmentedItemProperties-DiyQPMgI.js → getSegmentedItemProperties-COLLdDo4.js} +2 -2
  129. package/dist/{getSegmentedItemProperties-DiyQPMgI.js.map → getSegmentedItemProperties-COLLdDo4.js.map} +1 -1
  130. package/dist/helpers/db.d.ts +12 -0
  131. package/dist/helpers/db.d.ts.map +1 -1
  132. package/dist/helpers/entity/entityDestroy.d.ts +41 -0
  133. package/dist/helpers/entity/entityDestroy.d.ts.map +1 -0
  134. package/dist/helpers/entity/index.d.ts +1 -0
  135. package/dist/helpers/entity/index.d.ts.map +1 -1
  136. package/dist/helpers/index.d.ts +1 -0
  137. package/dist/helpers/index.d.ts.map +1 -1
  138. package/dist/helpers/property/index.d.ts +12 -12
  139. package/dist/helpers/property/index.d.ts.map +1 -1
  140. package/dist/helpers/reactiveProxy.d.ts.map +1 -1
  141. package/dist/helpers/updateSchema.d.ts +9 -0
  142. package/dist/helpers/updateSchema.d.ts.map +1 -1
  143. package/dist/helpers/waitForEntityIdle.d.ts +2 -2
  144. package/dist/helpers/waitForEntityIdle.d.ts.map +1 -1
  145. package/dist/imports/json.d.ts.map +1 -1
  146. package/dist/{index-CRuq6HVi.js → index-B9i_mXXp.js} +4 -4
  147. package/dist/index-B9i_mXXp.js.map +1 -0
  148. package/dist/{index-r45w9hEq.js → index-D2OGsG4v.js} +2 -2
  149. package/dist/index-D2OGsG4v.js.map +1 -0
  150. package/dist/index.d.ts +3 -1
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/interfaces/IItem.d.ts +2 -0
  153. package/dist/interfaces/IItem.d.ts.map +1 -1
  154. package/dist/interfaces/IItemProperty.d.ts +1 -0
  155. package/dist/interfaces/IItemProperty.d.ts.map +1 -1
  156. package/dist/main.cjs +2 -2
  157. package/dist/main.js +996 -1030
  158. package/dist/main.js.map +1 -1
  159. package/dist/node.js +11 -11
  160. package/dist/node.js.map +1 -1
  161. package/dist/{property-Dy09KTxg.js → property-fK7tSUDX.js} +7 -5
  162. package/dist/property-fK7tSUDX.js.map +1 -0
  163. package/dist/{queries-LZYSuhtz.js → queries-DGOk16cd.js} +2 -2
  164. package/dist/{queries-LZYSuhtz.js.map → queries-DGOk16cd.js.map} +1 -1
  165. package/dist/services/write/actors/validateEntity.d.ts.map +1 -1
  166. package/dist/services/write/actors/writeToDatabase.d.ts.map +1 -1
  167. package/dist/services/write/writeProcessMachine.d.ts +1 -1
  168. package/dist/types/index.d.ts +9 -0
  169. package/dist/types/index.d.ts.map +1 -1
  170. package/dist/types/item.d.ts +12 -0
  171. package/dist/types/item.d.ts.map +1 -1
  172. package/dist/types/property.d.ts +6 -0
  173. package/dist/types/property.d.ts.map +1 -1
  174. package/dist/types/publish.d.ts +9 -0
  175. package/dist/types/publish.d.ts.map +1 -0
  176. package/package.json +7 -3
  177. package/dist/ModelProperty-Cr3BmgkC.js.map +0 -1
  178. package/dist/Schema-DeKabJ0T.js.map +0 -1
  179. package/dist/cjs/ModelProperty-MkN5Rmx7.js.map +0 -1
  180. package/dist/cjs/Schema-B5cr_JVK.js.map +0 -1
  181. package/dist/cjs/getPublishPayload-DbOc3WA-.js.map +0 -1
  182. package/dist/cjs/getPublishUploads-NzioLz-3.js.map +0 -1
  183. package/dist/cjs/index-BmIVfqGN.js.map +0 -1
  184. package/dist/cjs/index-C_0angRB.js.map +0 -1
  185. package/dist/events/item/publish.d.ts +0 -7
  186. package/dist/events/item/publish.d.ts.map +0 -1
  187. package/dist/getPublishPayload-NFpqbd_H.js.map +0 -1
  188. package/dist/getPublishUploads-Cpb9vgwE.js.map +0 -1
  189. package/dist/index-CRuq6HVi.js.map +0 -1
  190. package/dist/index-r45w9hEq.js.map +0 -1
  191. package/dist/json-I3vJhXo8.js.map +0 -1
  192. package/dist/property-Dy09KTxg.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var xstate = require('xstate');
4
- var main_cjs = require('./index-BmIVfqGN.js');
4
+ var main_cjs = require('./index-C3j3m34a.js');
5
5
  var drizzleOrm = require('drizzle-orm');
6
6
  var debug = require('debug');
7
- var SchemaValidationService = require('./SchemaValidationService-BgIzc3-r.js');
8
- var ModelProperty = require('./ModelProperty-MkN5Rmx7.js');
7
+ var SchemaValidationService = require('./SchemaValidationService-DUtQUerg.js');
8
+ var ModelProperty = require('./ModelProperty-BRKRREYP.js');
9
9
  require('immer');
10
10
  require('reflect-metadata');
11
11
  require('drizzle-orm/sqlite-core');
@@ -15,8 +15,8 @@ require('pluralize');
15
15
  require('ethers');
16
16
  require('rxjs');
17
17
  require('lodash-es');
18
- require('eventemitter3');
19
18
  require('drizzle-orm/casing');
19
+ require('eventemitter3');
20
20
  require('@sinclair/typebox');
21
21
  require('fs/promises');
22
22
  require('fs');
@@ -48,14 +48,13 @@ const getModelIdsForSchema$1 = async (schemaId) => {
48
48
  return [];
49
49
  }
50
50
  try {
51
- const { modelSchemas, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
52
51
  const modelRecords = await db
53
52
  .select({
54
- modelFileId: modelsTable.schemaFileId,
53
+ modelFileId: main_cjs.models.schemaFileId,
55
54
  })
56
- .from(modelSchemas)
57
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
58
- .where(drizzleOrm.eq(modelSchemas.schemaId, schemaId));
55
+ .from(main_cjs.modelSchemas)
56
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
57
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaId));
59
58
  const modelIds = modelRecords
60
59
  .map((row) => row.modelFileId)
61
60
  .filter((id) => id !== null && id !== undefined);
@@ -77,7 +76,7 @@ const createModelInstances$2 = async (modelIds) => {
77
76
  return;
78
77
  }
79
78
  try {
80
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
79
+ const { Model } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.Model$1; });
81
80
  // Create instances for all model IDs in parallel
82
81
  // Model.createById() will check cache first, then query DB and create if needed
83
82
  const createPromises = modelIds.map(async (modelFileId) => {
@@ -117,13 +116,11 @@ const verifyPropertiesPersisted = async (modelId, modelName, maxRetries = 10, re
117
116
  if (!db) {
118
117
  throw new Error('Database not available for property verification');
119
118
  }
120
- const { properties: propertiesTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
121
- const { eq } = await import('drizzle-orm');
122
119
  for (let attempt = 0; attempt < maxRetries; attempt++) {
123
120
  const props = await db
124
121
  .select()
125
- .from(propertiesTable)
126
- .where(eq(propertiesTable.modelId, modelId))
122
+ .from(main_cjs.properties)
123
+ .where(drizzleOrm.eq(main_cjs.properties.modelId, modelId))
127
124
  .limit(1);
128
125
  if (props.length > 0) {
129
126
  logger$c(`Verified properties exist for model "${modelName}" (modelId: ${modelId}) after ${attempt + 1} attempt(s)`);
@@ -185,15 +182,14 @@ const getSchemaFilePath$1 = (name, version, schemaFileId) => {
185
182
  const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }) => {
186
183
  const _loadOrCreateSchema = async () => {
187
184
  const { schemaName } = context;
188
- // Check if this is an internal SDK schema (should not create files in app directory)
189
- const { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.constants$1; });
190
- const isInternal = isInternalSchema(schemaName);
191
- if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {
185
+ // Check if this is an internal SDK schema (should not create files in app directory) — use static import so consumer bundles resolve correctly
186
+ const isInternal = main_cjs.isInternalSchema(schemaName);
187
+ if (isInternal && schemaName === main_cjs.SEED_PROTOCOL_SCHEMA_NAME) {
192
188
  // For Seed Protocol, always load from internal file, never create new
193
189
  logger$c(`Loading internal Seed Protocol schema from SDK`);
194
190
  console.log('[loadOrCreateSchema] Loading internal Seed Protocol schema from SDK');
195
191
  try {
196
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
192
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
197
193
  const schemaFile = internalSchema.default;
198
194
  console.log('[loadOrCreateSchema] Loaded schema file, models count:', Object.keys(schemaFile.models || {}).length);
199
195
  // Check if it exists in database, if not, add it
@@ -218,8 +214,6 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
218
214
  logger$c(`Added Seed Protocol schema to database`);
219
215
  // Also add models and properties to database
220
216
  // Convert to JsonImportSchema format for processing
221
- const { createModelsFromJson } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.json; });
222
- const { addModelsToDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.db; });
223
217
  const importData = {
224
218
  name: schemaName,
225
219
  models: Object.fromEntries(Object.entries(schemaFile.models || {}).map(([modelName, model]) => [
@@ -297,10 +291,10 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
297
291
  }
298
292
  }
299
293
  // Convert JSON models to Model classes, passing modelFileIds and propertyFileIds so Model instances use correct IDs
300
- const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds);
294
+ const modelDefinitions = await main_cjs.createModelsFromJson(importData, modelFileIds, propertyFileIds);
301
295
  // Add models to database and link them to the schema with schemaFileIds
302
296
  if (Object.keys(modelDefinitions).length > 0 && schemaRecord) {
303
- await addModelsToDb(modelDefinitions, schemaRecord, undefined, {
297
+ await main_cjs.addModelsToDb(modelDefinitions, schemaRecord, undefined, {
304
298
  schemaFileId: schemaFile.id,
305
299
  modelFileIds,
306
300
  propertyFileIds,
@@ -308,16 +302,14 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
308
302
  logger$c(`Added ${Object.keys(modelDefinitions).length} models and their properties to database for Seed Protocol schema`);
309
303
  // Verify properties are persisted (important for browser environments)
310
304
  // Query the database to get model IDs that were just created
311
- const { modelSchemas } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchemaSchema; });
312
- const { models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
313
305
  const modelLinks = await db
314
306
  .select({
315
- modelId: modelSchemas.modelId,
316
- modelName: modelsTable.name,
307
+ modelId: main_cjs.modelSchemas.modelId,
308
+ modelName: main_cjs.models.name,
317
309
  })
318
- .from(modelSchemas)
319
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
320
- .where(drizzleOrm.eq(modelSchemas.schemaId, schemaRecord.id));
310
+ .from(main_cjs.modelSchemas)
311
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
312
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaRecord.id));
321
313
  // Verify properties for at least one model (Seed model if available)
322
314
  const seedModelLink = modelLinks.find((link) => link.modelName === 'Seed');
323
315
  if (seedModelLink && seedModelLink.modelId) {
@@ -333,18 +325,15 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
333
325
  // Schema exists, but always ensure models/properties are in database
334
326
  // This handles the case where schema was added but models weren't (from previous code)
335
327
  // or where models were added but properties weren't
336
- const { modelSchemas } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchemaSchema; });
337
- const { models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
338
- const { properties: propertiesTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
339
328
  // Check if models are linked to the schema
340
329
  const modelLinks = await db
341
330
  .select({
342
- modelId: modelSchemas.modelId,
343
- modelName: modelsTable.name,
331
+ modelId: main_cjs.modelSchemas.modelId,
332
+ modelName: main_cjs.models.name,
344
333
  })
345
- .from(modelSchemas)
346
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
347
- .where(drizzleOrm.eq(modelSchemas.schemaId, schemaRecord.id));
334
+ .from(main_cjs.modelSchemas)
335
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
336
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaRecord.id));
348
337
  // Check if we have all expected models
349
338
  const expectedModelNames = Object.keys(schemaFile.models || {});
350
339
  const linkedModelNames = modelLinks
@@ -359,8 +348,8 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
359
348
  if (link.modelId) {
360
349
  const props = await db
361
350
  .select()
362
- .from(propertiesTable)
363
- .where(drizzleOrm.eq(propertiesTable.modelId, link.modelId))
351
+ .from(main_cjs.properties)
352
+ .where(drizzleOrm.eq(main_cjs.properties.modelId, link.modelId))
364
353
  .limit(1);
365
354
  if (props.length === 0) {
366
355
  missingProperties = true;
@@ -374,8 +363,6 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
374
363
  if (missingModels.length > 0 || missingProperties || modelLinks.length === 0) {
375
364
  logger$c(`Seed Protocol schema exists but models/properties incomplete (missing models: ${missingModels.length}, missing properties: ${missingProperties}), adding them now`);
376
365
  console.log(`[loadOrCreateSchema] Adding models/properties: missingModels=${missingModels.length}, missingProperties=${missingProperties}, modelLinks=${modelLinks.length}`);
377
- const { createModelsFromJson } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.json; });
378
- const { addModelsToDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.db; });
379
366
  // Convert SchemaFileFormat to JsonImportSchema format
380
367
  // Schema format: { dataType, ref, refValueType, storageType, localStorageDir, filenameSuffix }
381
368
  // JSON import format: { type, model, items, storage: { type, path, extension } }
@@ -449,7 +436,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
449
436
  }
450
437
  }
451
438
  // Convert JSON models to Model classes, passing modelFileIds and propertyFileIds so Model instances use correct IDs
452
- const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds);
439
+ const modelDefinitions = await main_cjs.createModelsFromJson(importData, modelFileIds, propertyFileIds);
453
440
  console.log(`[loadOrCreateSchema] createModelsFromJson returned ${Object.keys(modelDefinitions).length} models: ${Object.keys(modelDefinitions).join(', ')}`);
454
441
  console.log(`[loadOrCreateSchema] Expected ${expectedModelNames.length} models from schema file: ${expectedModelNames.join(', ')}`);
455
442
  // Verify all expected models are in modelDefinitions
@@ -459,7 +446,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
459
446
  }
460
447
  if (Object.keys(modelDefinitions).length > 0) {
461
448
  console.log(`[loadOrCreateSchema] Calling addModelsToDb with ${Object.keys(modelDefinitions).length} models: ${Object.keys(modelDefinitions).join(', ')}`);
462
- await addModelsToDb(modelDefinitions, schemaRecord, undefined, {
449
+ await main_cjs.addModelsToDb(modelDefinitions, schemaRecord, undefined, {
463
450
  schemaFileId: schemaFile.id,
464
451
  modelFileIds,
465
452
  propertyFileIds,
@@ -478,12 +465,12 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
478
465
  for (let attempt = 0; attempt < maxRetries; attempt++) {
479
466
  updatedModelLinks = await db
480
467
  .select({
481
- modelId: modelSchemas.modelId,
482
- modelName: modelsTable.name,
468
+ modelId: main_cjs.modelSchemas.modelId,
469
+ modelName: main_cjs.models.name,
483
470
  })
484
- .from(modelSchemas)
485
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
486
- .where(drizzleOrm.eq(modelSchemas.schemaId, schemaRecord.id));
471
+ .from(main_cjs.modelSchemas)
472
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
473
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaRecord.id));
487
474
  const linkedModelNames = updatedModelLinks
488
475
  .map((link) => link.modelName)
489
476
  .filter((n) => n !== null);
@@ -702,7 +689,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
702
689
  // Ensure models are populated (fallback for seed-protocol if missing)
703
690
  if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {
704
691
  try {
705
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
692
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
706
693
  const internalSchemaFile = internalSchema.default;
707
694
  mergedModels = { ...(internalSchemaFile.models || {}) };
708
695
  logger$c(`Populated models for seed-protocol schema from internal file`);
@@ -897,7 +884,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
897
884
  // Ensure models are populated (fallback for seed-protocol if missing)
898
885
  if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {
899
886
  try {
900
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
887
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
901
888
  const internalSchemaFile = internalSchema.default;
902
889
  mergedModels = { ...(internalSchemaFile.models || {}) };
903
890
  logger$c(`Populated models for seed-protocol schema from internal file`);
@@ -969,7 +956,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
969
956
  // Ensure models are populated (fallback for seed-protocol if missing)
970
957
  if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {
971
958
  try {
972
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
959
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
973
960
  const internalSchemaFile = internalSchema.default;
974
961
  mergedModels = { ...(internalSchemaFile.models || {}) };
975
962
  logger$c(`Populated models for seed-protocol schema from internal file`);
@@ -1038,7 +1025,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
1038
1025
  // If schemaData is missing, try to load from internal schema file for seed-protocol
1039
1026
  if (!dbSchema.schemaData && schemaName === 'Seed Protocol') {
1040
1027
  try {
1041
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
1028
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
1042
1029
  const schemaFile = internalSchema.default;
1043
1030
  logger$c(`Found seed-protocol schema in internal file (schemaData missing, using internal schema)`);
1044
1031
  // Update database with schemaData for future loads
@@ -1147,7 +1134,7 @@ const loadOrCreateSchema = xstate.fromCallback(({ sendBack, input: { context } }
1147
1134
  // Ensure models are populated (fallback for seed-protocol if missing)
1148
1135
  if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {
1149
1136
  try {
1150
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
1137
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
1151
1138
  const internalSchemaFile = internalSchema.default;
1152
1139
  mergedModels = { ...(internalSchemaFile.models || {}) };
1153
1140
  logger$c(`Populated models for seed-protocol schema from internal file`);
@@ -1464,14 +1451,16 @@ const addModelsMachine = xstate.setup({
1464
1451
  createModelInstances: xstate.fromCallback(({ sendBack, input }) => {
1465
1452
  const _createInstances = async () => {
1466
1453
  const { Schema } = await Promise.resolve().then(function () { return Schema$1; });
1467
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
1468
- const { models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
1454
+ const { BaseDb } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.BaseDb$1; });
1455
+ const { models: modelsTable } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.ModelSchema; });
1469
1456
  const { eq } = await import('drizzle-orm');
1470
- const { generateId } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.index; });
1457
+ const { generateId } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.index; });
1471
1458
  const debug = (await import('debug')).default;
1472
1459
  const logger = debug('seedSdk:schema:addModels:createInstances');
1473
1460
  const schemaName = input.schemaContext.metadata?.name || input.schemaContext.schemaName;
1474
- const schemaInstance = Schema.create(schemaName);
1461
+ const schemaInstance = Schema.create(schemaName, {
1462
+ waitForReady: false,
1463
+ });
1475
1464
  const modelInstances = new Map();
1476
1465
  // Get instance state to store model instances
1477
1466
  const { schemaInstanceState } = await Promise.resolve().then(function () { return Schema$1; });
@@ -1508,7 +1497,10 @@ const addModelsMachine = xstate.setup({
1508
1497
  }
1509
1498
  // Create new Model instance with modelFileId
1510
1499
  // Model.create() will set _modelFileId in the context automatically
1511
- const modelInstance = main_cjs.Model.create(modelName, schemaName, { modelFileId });
1500
+ const modelInstance = main_cjs.Model.create(modelName, schemaName, {
1501
+ modelFileId,
1502
+ waitForReady: false,
1503
+ });
1512
1504
  const service = modelInstance.getService();
1513
1505
  logger(`Created Model instance for "${modelName}" with modelFileId "${modelFileId}"`);
1514
1506
  // Wait for the Model service to finish loading (loadOrCreateModel completes)
@@ -1689,10 +1681,8 @@ const addModelsMachine = xstate.setup({
1689
1681
  const _persist = async () => {
1690
1682
  const debug = (await import('debug')).default;
1691
1683
  const logger = debug('seedSdk:schema:addModels:persist');
1692
- const { createModelFromJson } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.json; });
1693
- const { addModelsToDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.db; });
1694
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
1695
- const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SchemaSchema; });
1684
+ const { BaseDb } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.BaseDb$1; });
1685
+ const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SchemaSchema; });
1696
1686
  const { eq } = await import('drizzle-orm');
1697
1687
  // Only process in browser environment where store is available
1698
1688
  if (typeof window === 'undefined') {
@@ -1813,14 +1803,14 @@ const addModelsMachine = xstate.setup({
1813
1803
  properties: convertedProperties,
1814
1804
  };
1815
1805
  // Create Model instance
1816
- const ModelClass = await createModelFromJson(modelName, jsonModelDef, schemaName);
1806
+ const ModelClass = await main_cjs.createModelFromJson(modelName, jsonModelDef, schemaName);
1817
1807
  modelDefinitions[modelName] = ModelClass;
1818
1808
  // Model is now accessible via Model static methods, no registration needed
1819
1809
  logger(`Created model "${modelName}"`);
1820
1810
  }
1821
1811
  // Add models to database with modelFileIds
1822
1812
  if (Object.keys(modelDefinitions).length > 0) {
1823
- await addModelsToDb(modelDefinitions, schemaRecord, undefined, {
1813
+ await main_cjs.addModelsToDb(modelDefinitions, schemaRecord, undefined, {
1824
1814
  schemaFileId: input.schemaContext.id, // id is the schemaFileId (string) in SchemaMachineContext
1825
1815
  modelFileIds: input.modelFileIds.size > 0 ? input.modelFileIds : undefined,
1826
1816
  });
@@ -2007,14 +1997,13 @@ const getModelIdsForSchema = async (schemaId) => {
2007
1997
  return [];
2008
1998
  }
2009
1999
  try {
2010
- const { modelSchemas, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
2011
2000
  const modelRecords = await db
2012
2001
  .select({
2013
- modelFileId: modelsTable.schemaFileId,
2002
+ modelFileId: main_cjs.models.schemaFileId,
2014
2003
  })
2015
- .from(modelSchemas)
2016
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
2017
- .where(drizzleOrm.eq(modelSchemas.schemaId, schemaId));
2004
+ .from(main_cjs.modelSchemas)
2005
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
2006
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaId));
2018
2007
  const modelIds = modelRecords
2019
2008
  .map((row) => row.modelFileId)
2020
2009
  .filter((id) => id !== null && id !== undefined);
@@ -2051,7 +2040,12 @@ const createModelInstances$1 = async (modelIds) => {
2051
2040
  return;
2052
2041
  }
2053
2042
  try {
2054
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
2043
+ const mod = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.Model$1; });
2044
+ const Model = mod?.Model ?? mod?.default;
2045
+ if (!Model) {
2046
+ logger$b('Model not available from dynamic import');
2047
+ return;
2048
+ }
2055
2049
  const createPromises = modelIds.map(async (modelFileId) => {
2056
2050
  try {
2057
2051
  const model = await Model.createById(modelFileId);
@@ -2086,13 +2080,12 @@ const checkExistingSchema = xstate.fromCallback(({ sendBack, input: { context }
2086
2080
  });
2087
2081
  return;
2088
2082
  }
2089
- // Check if this is an internal SDK schema (Seed Protocol)
2090
- const { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.constants$1; });
2091
- const isInternal = isInternalSchema(schemaName);
2092
- if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {
2083
+ // Check if this is an internal SDK schema (Seed Protocol) — use static import so consumer bundles resolve correctly
2084
+ const isInternal = main_cjs.isInternalSchema(schemaName);
2085
+ if (isInternal && schemaName === main_cjs.SEED_PROTOCOL_SCHEMA_NAME) {
2093
2086
  // For Seed Protocol, check if it exists in database
2094
2087
  try {
2095
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
2088
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
2096
2089
  const schemaFile = internalSchema.default;
2097
2090
  if (db && schemaFile.id) {
2098
2091
  const existing = await db
@@ -2443,15 +2436,14 @@ const writeSchemaToDb = xstate.fromCallback(({ sendBack, input }) => {
2443
2436
  const _write = async () => {
2444
2437
  const { schemaName, schemaFile, existingDbSchema } = input;
2445
2438
  try {
2446
- // Check if this is an internal SDK schema (Seed Protocol)
2447
- const { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.constants$1; });
2448
- const isInternal = isInternalSchema(schemaName);
2439
+ // Check if this is an internal SDK schema (Seed Protocol) — use static import so consumer bundles resolve correctly
2440
+ const isInternal = main_cjs.isInternalSchema(schemaName);
2449
2441
  let finalSchema;
2450
2442
  let schemaRecord;
2451
- if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {
2443
+ if (isInternal && schemaName === main_cjs.SEED_PROTOCOL_SCHEMA_NAME) {
2452
2444
  // For Seed Protocol, load from internal file
2453
2445
  logger$a(`Loading internal Seed Protocol schema from SDK`);
2454
- const internalSchema = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
2446
+ const internalSchema = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.SEEDPROTOCOL_Seed_Protocol_v1; });
2455
2447
  finalSchema = internalSchema.default;
2456
2448
  const db = main_cjs.BaseDb.getAppDb();
2457
2449
  if (db && finalSchema.id) {
@@ -2647,23 +2639,19 @@ const writeModelsToDb = xstate.fromCallback(({ sendBack, input }) => {
2647
2639
  const { schema, schemaRecord, schemaName } = input;
2648
2640
  try {
2649
2641
  // Check if models already exist in database
2650
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
2651
- const { modelSchemas } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchemaSchema; });
2652
- const { models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
2653
- const { eq } = await import('drizzle-orm');
2654
- const db = BaseDb.getAppDb();
2642
+ const db = main_cjs.BaseDb.getAppDb();
2655
2643
  if (!db) {
2656
2644
  throw new Error('Database not available');
2657
2645
  }
2658
2646
  // Check if models are linked to the schema
2659
2647
  const modelLinks = await db
2660
2648
  .select({
2661
- modelId: modelSchemas.modelId,
2662
- modelName: modelsTable.name,
2649
+ modelId: main_cjs.modelSchemas.modelId,
2650
+ modelName: main_cjs.models.name,
2663
2651
  })
2664
- .from(modelSchemas)
2665
- .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))
2666
- .where(eq(modelSchemas.schemaId, schemaRecord.id));
2652
+ .from(main_cjs.modelSchemas)
2653
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
2654
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, schemaRecord.id));
2667
2655
  // Check if we have all expected models
2668
2656
  const expectedModelNames = Object.keys(schema.models || {});
2669
2657
  const linkedModelNames = modelLinks
@@ -2678,9 +2666,9 @@ const writeModelsToDb = xstate.fromCallback(({ sendBack, input }) => {
2678
2666
  for (const link of modelLinks) {
2679
2667
  if (link.modelId) {
2680
2668
  const modelRecord = await db
2681
- .select({ schemaFileId: modelsTable.schemaFileId })
2682
- .from(modelsTable)
2683
- .where(eq(modelsTable.id, link.modelId))
2669
+ .select({ schemaFileId: main_cjs.models.schemaFileId })
2670
+ .from(main_cjs.models)
2671
+ .where(drizzleOrm.eq(main_cjs.models.id, link.modelId))
2684
2672
  .limit(1);
2685
2673
  if (modelRecord.length > 0 && modelRecord[0].schemaFileId) {
2686
2674
  modelFileIds.push(modelRecord[0].schemaFileId);
@@ -2693,13 +2681,10 @@ const writeModelsToDb = xstate.fromCallback(({ sendBack, input }) => {
2693
2681
  });
2694
2682
  return;
2695
2683
  }
2696
- // Convert SchemaFileFormat to JsonImportSchema format
2697
- const { createModelsFromJson } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.json; });
2698
- // Check if this is Seed Protocol schema (has different format)
2699
- const { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.constants$1; });
2700
- const isInternal = isInternalSchema(schemaName);
2684
+ // Check if this is Seed Protocol schema (has different format) — use static import so consumer bundles resolve correctly
2685
+ const isInternal = main_cjs.isInternalSchema(schemaName);
2701
2686
  let importData;
2702
- if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {
2687
+ if (isInternal && schemaName === main_cjs.SEED_PROTOCOL_SCHEMA_NAME) {
2703
2688
  // Convert Seed Protocol schema format to JSON import format
2704
2689
  importData = {
2705
2690
  name: schemaName,
@@ -2782,7 +2767,7 @@ const writeModelsToDb = xstate.fromCallback(({ sendBack, input }) => {
2782
2767
  }
2783
2768
  }
2784
2769
  // Convert JSON models to Model classes
2785
- const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds);
2770
+ const modelDefinitions = await main_cjs.createModelsFromJson(importData, modelFileIds, propertyFileIds);
2786
2771
  // Add models to database
2787
2772
  if (Object.keys(modelDefinitions).length > 0) {
2788
2773
  await main_cjs.addModelsToDb(modelDefinitions, schemaRecord, undefined, {
@@ -2926,7 +2911,7 @@ const createModelInstances = xstate.fromCallback(({ sendBack, input }) => {
2926
2911
  return;
2927
2912
  }
2928
2913
  try {
2929
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
2914
+ const { Model } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.Model$1; });
2930
2915
  // Create instances for all model IDs in parallel
2931
2916
  // Model.createById() will check cache first, then query DB and create if needed
2932
2917
  const createPromises = modelIds.map(async (modelFileId) => {
@@ -3011,7 +2996,7 @@ const verifyModelInstancesInCache = xstate.fromCallback(({ sendBack, input }) =>
3011
2996
  }
3012
2997
  try {
3013
2998
  const result = await verifyWithRetry$2(async () => {
3014
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
2999
+ const { Model } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.Model$1; });
3015
3000
  // Check each model ID in the cache
3016
3001
  const verifiedInstances = [];
3017
3002
  const missingIds = [];
@@ -3067,8 +3052,8 @@ const writePropertiesToDb = xstate.fromCallback(({ sendBack, input }) => {
3067
3052
  const _write = async () => {
3068
3053
  const { modelIds } = input;
3069
3054
  try {
3070
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
3071
- const { models: modelsTable, properties: propertiesTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ModelSchema; });
3055
+ const { BaseDb } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.BaseDb$1; });
3056
+ const { models: modelsTable, properties: propertiesTable } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.ModelSchema; });
3072
3057
  const { eq } = await import('drizzle-orm');
3073
3058
  const db = BaseDb.getAppDb();
3074
3059
  if (!db) {
@@ -3254,8 +3239,15 @@ const createPropertyInstances = xstate.fromCallback(({ sendBack, input }) => {
3254
3239
  return;
3255
3240
  }
3256
3241
  try {
3257
- const { ModelProperty } = await Promise.resolve().then(function () { return require('./ModelProperty-MkN5Rmx7.js'); }).then(function (n) { return n.ModelProperty$1; });
3258
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
3242
+ const modProp = await Promise.resolve().then(function () { return require('./ModelProperty-BRKRREYP.js'); }).then(function (n) { return n.ModelProperty$1; });
3243
+ const ModelProperty = modProp?.ModelProperty ?? modProp?.default;
3244
+ const modModel = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.Model$1; });
3245
+ const Model = modModel?.Model ?? modModel?.default;
3246
+ if (!ModelProperty || !Model) {
3247
+ logger$2('ModelProperty or Model not available from dynamic import');
3248
+ sendBack({ type: 'instancesCreated', count: 0 });
3249
+ return;
3250
+ }
3259
3251
  // Properties are typically loaded when Model instances are loaded
3260
3252
  // But we can verify they exist by checking Model instances
3261
3253
  let successCount = 0;
@@ -3354,7 +3346,11 @@ const verifyPropertyInstancesInCache = xstate.fromCallback(({ sendBack, input })
3354
3346
  }
3355
3347
  try {
3356
3348
  const result = await verifyWithRetry(async () => {
3357
- const { ModelProperty } = await Promise.resolve().then(function () { return require('./ModelProperty-MkN5Rmx7.js'); }).then(function (n) { return n.ModelProperty$1; });
3349
+ const mod = await Promise.resolve().then(function () { return require('./ModelProperty-BRKRREYP.js'); }).then(function (n) { return n.ModelProperty$1; });
3350
+ const ModelProperty = mod?.ModelProperty ?? mod?.default;
3351
+ if (!ModelProperty) {
3352
+ throw new Error('ModelProperty not available from dynamic import');
3353
+ }
3358
3354
  // Check each property ID in the cache
3359
3355
  const verifiedInstances = [];
3360
3356
  const missingIds = [];
@@ -3514,6 +3510,23 @@ const schemaMachine = xstate.setup({
3514
3510
  return newContext;
3515
3511
  }),
3516
3512
  },
3513
+ destroyStarted: {
3514
+ actions: xstate.assign({ _destroyInProgress: true, _destroyError: null }),
3515
+ },
3516
+ destroyDone: {
3517
+ actions: xstate.assign({ _destroyInProgress: false }),
3518
+ },
3519
+ destroyError: {
3520
+ actions: xstate.assign(({ event }) => ({
3521
+ _destroyInProgress: false,
3522
+ _destroyError: event.error instanceof Error
3523
+ ? { message: event.error.message, name: event.error.name }
3524
+ : { message: String(event.error) },
3525
+ })),
3526
+ },
3527
+ clearDestroyError: {
3528
+ actions: xstate.assign({ _destroyError: null }),
3529
+ },
3517
3530
  },
3518
3531
  states: {
3519
3532
  loading: {
@@ -4107,10 +4120,12 @@ class Schema {
4107
4120
  });
4108
4121
  // Note: Property getters/setters are now handled by the Proxy in create()
4109
4122
  }
4110
- static create(schemaName) {
4123
+ static create(schemaName, options) {
4111
4124
  if (!schemaName) {
4112
4125
  throw new Error('Schema name is required');
4113
4126
  }
4127
+ const waitForReady = options?.waitForReady !== false;
4128
+ const readyTimeout = options?.readyTimeout ?? 5000;
4114
4129
  // First, check if we have an instance cached by name
4115
4130
  if (this.instanceCacheByName.has(schemaName)) {
4116
4131
  const { instance, refCount } = this.instanceCacheByName.get(schemaName);
@@ -4118,7 +4133,9 @@ class Schema {
4118
4133
  instance,
4119
4134
  refCount: refCount + 1,
4120
4135
  });
4121
- return instance;
4136
+ if (!waitForReady)
4137
+ return instance;
4138
+ return main_cjs.waitForEntityIdle(instance, { timeout: readyTimeout }).then(() => instance);
4122
4139
  }
4123
4140
  // Create new instance
4124
4141
  const newInstance = new this(schemaName);
@@ -4441,9 +4458,10 @@ class Schema {
4441
4458
  instance: proxiedInstance,
4442
4459
  refCount: 1,
4443
4460
  });
4444
- // The proxiedInstance is Proxied<Schema> which preserves all methods
4445
- // TypeScript recognizes this as Schema with all methods intact
4446
- return proxiedInstance;
4461
+ const schema = proxiedInstance;
4462
+ if (!waitForReady)
4463
+ return schema;
4464
+ return main_cjs.waitForEntityIdle(schema, { timeout: readyTimeout }).then(() => schema);
4447
4465
  }
4448
4466
  /**
4449
4467
  * Update the cache to use schemaFileId as the key instead of schemaName
@@ -4480,7 +4498,7 @@ class Schema {
4480
4498
  });
4481
4499
  return instance;
4482
4500
  }
4483
- return undefined;
4501
+ return null;
4484
4502
  }
4485
4503
  /**
4486
4504
  * Clear all cached Schema instances.
@@ -4527,17 +4545,15 @@ class Schema {
4527
4545
  return cachedInstance;
4528
4546
  }
4529
4547
  // Query database to get schema name from ID
4530
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
4531
- const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SchemaSchema; });
4532
- const db = BaseDb.getAppDb();
4548
+ const db = main_cjs.BaseDb.getAppDb();
4533
4549
  if (!db) {
4534
4550
  throw new Error('Database not available');
4535
4551
  }
4536
4552
  const dbSchemas = await db
4537
4553
  .select()
4538
- .from(schemasTable)
4539
- .where(drizzleOrm.eq(schemasTable.schemaFileId, schemaFileId))
4540
- .orderBy(drizzleOrm.desc(schemasTable.version))
4554
+ .from(main_cjs.schemas)
4555
+ .where(drizzleOrm.eq(main_cjs.schemas.schemaFileId, schemaFileId))
4556
+ .orderBy(drizzleOrm.desc(main_cjs.schemas.version))
4541
4557
  .limit(1);
4542
4558
  if (dbSchemas.length === 0) {
4543
4559
  throw new Error(`Schema with ID "${schemaFileId}" not found in database`);
@@ -4584,7 +4600,7 @@ class Schema {
4584
4600
  * @returns Array of Schema instances
4585
4601
  */
4586
4602
  static async all(options = {}) {
4587
- const { includeAllVersions = false, includeInternal = false } = options;
4603
+ const { includeAllVersions = false, includeInternal = false, waitForReady = false, readyTimeout = 5000, } = options;
4588
4604
  try {
4589
4605
  // Use loadAllSchemasFromDb as single source of truth
4590
4606
  // This intelligently merges database and file data, including drafts
@@ -4667,13 +4683,18 @@ class Schema {
4667
4683
  }
4668
4684
  catch (error) {
4669
4685
  // Fallback to creating by name if createById fails
4670
- schemaInstances.push(this.create(schemaName));
4686
+ schemaInstances.push(this.create(schemaName, { waitForReady: false }));
4671
4687
  }
4672
4688
  }
4673
4689
  else {
4674
- schemaInstances.push(this.create(schemaName));
4690
+ schemaInstances.push(this.create(schemaName, { waitForReady: false }));
4675
4691
  }
4676
4692
  }
4693
+ if (waitForReady && schemaInstances.length > 0) {
4694
+ await Promise.all(schemaInstances.map((s) => main_cjs.waitForEntityIdle(s, {
4695
+ timeout: readyTimeout,
4696
+ })));
4697
+ }
4677
4698
  return schemaInstances;
4678
4699
  }
4679
4700
  catch (error) {
@@ -4711,7 +4732,12 @@ class Schema {
4711
4732
  // Create Schema instances for each unique schema name
4712
4733
  const schemaInstances = [];
4713
4734
  for (const schemaName of uniqueSchemaNames) {
4714
- schemaInstances.push(this.create(schemaName));
4735
+ schemaInstances.push(this.create(schemaName, { waitForReady: false }));
4736
+ }
4737
+ if (waitForReady && schemaInstances.length > 0) {
4738
+ await Promise.all(schemaInstances.map((s) => main_cjs.waitForEntityIdle(s, {
4739
+ timeout: readyTimeout,
4740
+ })));
4715
4741
  }
4716
4742
  return schemaInstances;
4717
4743
  }
@@ -4754,6 +4780,7 @@ class Schema {
4754
4780
  */
4755
4781
  get models() {
4756
4782
  const context = this._getSnapshotContext();
4783
+ const schemaName = context.schemaName;
4757
4784
  // Get model IDs from service context (reactive state)
4758
4785
  const liveQueryIds = context._liveQueryModelIds || [];
4759
4786
  // Get pending model IDs (not yet in DB)
@@ -4762,15 +4789,27 @@ class Schema {
4762
4789
  const pendingIds = [];
4763
4790
  // Combine and deduplicate
4764
4791
  const allModelIds = [...new Set([...liveQueryIds, ...pendingIds])];
4765
- // Get Model instances from static cache
4792
+ // Get Model instances from static cache (from schema load)
4793
+ const seen = new Set();
4766
4794
  const modelInstances = [];
4767
4795
  for (const modelFileId of allModelIds) {
4768
4796
  const model = main_cjs.Model.getById(modelFileId);
4769
- if (model) {
4797
+ if (model && modelFileId && !seen.has(modelFileId)) {
4770
4798
  modelInstances.push(model);
4799
+ seen.add(modelFileId);
4800
+ }
4801
+ }
4802
+ // Include models created at runtime via Model.create() that belong to this schema
4803
+ // (they may not be in _liveQueryModelIds until schema context is updated)
4804
+ if (schemaName) {
4805
+ const cachedForSchema = main_cjs.Model.getCachedInstancesForSchema(schemaName);
4806
+ for (const model of cachedForSchema) {
4807
+ const id = model.id;
4808
+ if (id && !seen.has(id)) {
4809
+ modelInstances.push(model);
4810
+ seen.add(id);
4811
+ }
4771
4812
  }
4772
- // Note: Cannot create models asynchronously in this synchronous getter
4773
- // Models will be created elsewhere when needed
4774
4813
  }
4775
4814
  // Return a new array reference (snapshot at time of access)
4776
4815
  return [...modelInstances];
@@ -4887,9 +4926,7 @@ class Schema {
4887
4926
  throw new main_cjs.ConflictError(errorMessage, conflictCheck);
4888
4927
  }
4889
4928
  const context = this._getSnapshotContext();
4890
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
4891
- const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SchemaSchema; });
4892
- const { addSchemaToDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.db; });
4929
+ const { addSchemaToDb } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.db; });
4893
4930
  if (!context._isDraft || !context._editedProperties || context._editedProperties.size === 0) {
4894
4931
  logger('No changes to save');
4895
4932
  return '';
@@ -4902,7 +4939,7 @@ class Schema {
4902
4939
  }
4903
4940
  logger(`Saving new version for schema ${this.schemaName} with ${context._editedProperties.size} edited properties`);
4904
4941
  // STEP 1: Ensure draft exists in database and update it with current state
4905
- const db = BaseDb.getAppDb();
4942
+ const db = main_cjs.BaseDb.getAppDb();
4906
4943
  if (!db) {
4907
4944
  throw new Error('Database not found');
4908
4945
  }
@@ -4929,6 +4966,11 @@ class Schema {
4929
4966
  createdAt: new Date(currentSchema.metadata.createdAt).getTime(),
4930
4967
  updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),
4931
4968
  }, currentSchema.id, JSON.stringify(currentSchema, null, 2), true);
4969
+ const dbSchema = await db
4970
+ .select()
4971
+ .from(main_cjs.schemas)
4972
+ .where(drizzleOrm.eq(main_cjs.schemas.name, this.schemaName))
4973
+ .limit(1);
4932
4974
  // Collect all edited properties and convert them to SchemaPropertyUpdate format
4933
4975
  const propertyUpdates = [];
4934
4976
  for (const propertyKey of context._editedProperties) {
@@ -4957,6 +4999,32 @@ class Schema {
4957
4999
  propertyUpdates.push(propertyUpdate);
4958
5000
  }
4959
5001
  if (propertyUpdates.length === 0) {
5002
+ // When only new models were added, _editedProperties contains 'schema:models' and we write the full schema
5003
+ if (context._editedProperties.has('schema:models')) {
5004
+ const newFilePath = await ModelProperty.writeFullSchemaNewVersion(this.schemaName, currentSchema);
5005
+ const { BaseFileManager } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.BaseFileManager$1; });
5006
+ const fileContent = await BaseFileManager.readFileAsString(newFilePath);
5007
+ const publishedSchema = JSON.parse(fileContent);
5008
+ if (dbSchema.length > 0) {
5009
+ await db
5010
+ .update(main_cjs.schemas)
5011
+ .set({
5012
+ isDraft: false,
5013
+ isEdited: false,
5014
+ schemaFileId: publishedSchema.id,
5015
+ schemaData: JSON.stringify(publishedSchema, null, 2),
5016
+ version: publishedSchema.version,
5017
+ updatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),
5018
+ })
5019
+ .where(drizzleOrm.eq(main_cjs.schemas.id, dbSchema[0].id));
5020
+ }
5021
+ this._service.send({
5022
+ type: 'clearDraft',
5023
+ _dbUpdatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),
5024
+ _dbVersion: publishedSchema.version,
5025
+ });
5026
+ return newFilePath;
5027
+ }
4960
5028
  logger('No valid property updates to save');
4961
5029
  return '';
4962
5030
  }
@@ -4964,18 +5032,13 @@ class Schema {
4964
5032
  const newFilePath = await ModelProperty.updateModelProperties(this.schemaName, propertyUpdates);
4965
5033
  // STEP 3: After file is written, update database to mark as published (isDraft = false)
4966
5034
  // Load the file to get the final schema with IDs
4967
- const { BaseFileManager } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseFileManager$1; });
5035
+ const { BaseFileManager } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.BaseFileManager$1; });
4968
5036
  const fileContent = await BaseFileManager.readFileAsString(newFilePath);
4969
5037
  const publishedSchema = JSON.parse(fileContent);
4970
5038
  // Update database record: set isDraft = false and update schemaFileId
4971
- const dbSchema = await db
4972
- .select()
4973
- .from(schemasTable)
4974
- .where(drizzleOrm.eq(schemasTable.name, this.schemaName))
4975
- .limit(1);
4976
5039
  if (dbSchema.length > 0) {
4977
5040
  await db
4978
- .update(schemasTable)
5041
+ .update(main_cjs.schemas)
4979
5042
  .set({
4980
5043
  isDraft: false,
4981
5044
  isEdited: false, // Clear isEdited flag after saving to file
@@ -4984,7 +5047,7 @@ class Schema {
4984
5047
  version: publishedSchema.version,
4985
5048
  updatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),
4986
5049
  })
4987
- .where(drizzleOrm.eq(schemasTable.id, dbSchema[0].id));
5050
+ .where(drizzleOrm.eq(main_cjs.schemas.id, dbSchema[0].id));
4988
5051
  }
4989
5052
  else {
4990
5053
  // Create new record if it doesn't exist (shouldn't happen, but safety)
@@ -5003,7 +5066,6 @@ class Schema {
5003
5066
  _dbVersion: publishedSchema.version,
5004
5067
  });
5005
5068
  // Clear edited flags on all ModelProperty instances and in database
5006
- const { properties: propertiesTable, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
5007
5069
  for (const propertyKey of context._editedProperties) {
5008
5070
  const [modelName, propertyName] = propertyKey.split(':');
5009
5071
  const cacheKey = `${modelName}:${propertyName}`;
@@ -5021,23 +5083,23 @@ class Schema {
5021
5083
  if (db && modelName && propertyName) {
5022
5084
  // Find model by name
5023
5085
  const modelRecords = await db
5024
- .select({ id: modelsTable.id })
5025
- .from(modelsTable)
5026
- .where(drizzleOrm.eq(modelsTable.name, modelName))
5086
+ .select({ id: main_cjs.models.id })
5087
+ .from(main_cjs.models)
5088
+ .where(drizzleOrm.eq(main_cjs.models.name, modelName))
5027
5089
  .limit(1);
5028
5090
  if (modelRecords.length > 0) {
5029
5091
  // Find property by name and modelId
5030
5092
  const propertyRecords = await db
5031
- .select({ id: propertiesTable.id })
5032
- .from(propertiesTable)
5033
- .where(drizzleOrm.and(drizzleOrm.eq(propertiesTable.name, propertyName), drizzleOrm.eq(propertiesTable.modelId, modelRecords[0].id)))
5093
+ .select({ id: main_cjs.properties.id })
5094
+ .from(main_cjs.properties)
5095
+ .where(drizzleOrm.and(drizzleOrm.eq(main_cjs.properties.name, propertyName), drizzleOrm.eq(main_cjs.properties.modelId, modelRecords[0].id)))
5034
5096
  .limit(1);
5035
5097
  if (propertyRecords.length > 0) {
5036
5098
  // Clear isEdited flag in database
5037
5099
  await db
5038
- .update(propertiesTable)
5100
+ .update(main_cjs.properties)
5039
5101
  .set({ isEdited: false })
5040
- .where(drizzleOrm.eq(propertiesTable.id, propertyRecords[0].id));
5102
+ .where(drizzleOrm.eq(main_cjs.properties.id, propertyRecords[0].id));
5041
5103
  }
5042
5104
  }
5043
5105
  }
@@ -5051,19 +5113,18 @@ class Schema {
5051
5113
  try {
5052
5114
  if (db && context._dbId) {
5053
5115
  // Get all models for this schema
5054
- const { modelSchemas, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
5055
5116
  const modelRecords = await db
5056
- .select({ id: modelsTable.id })
5057
- .from(modelSchemas)
5058
- .innerJoin(modelsTable, drizzleOrm.eq(modelSchemas.modelId, modelsTable.id))
5059
- .where(drizzleOrm.eq(modelSchemas.schemaId, context._dbId));
5117
+ .select({ id: main_cjs.models.id })
5118
+ .from(main_cjs.modelSchemas)
5119
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
5120
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, context._dbId));
5060
5121
  // Clear isEdited flag for all models
5061
5122
  for (const modelRecord of modelRecords) {
5062
5123
  if (modelRecord.id) {
5063
5124
  await db
5064
- .update(modelsTable)
5125
+ .update(main_cjs.models)
5065
5126
  .set({ isEdited: false })
5066
- .where(drizzleOrm.eq(modelsTable.id, modelRecord.id));
5127
+ .where(drizzleOrm.eq(main_cjs.models.id, modelRecord.id));
5067
5128
  }
5068
5129
  }
5069
5130
  }
@@ -5167,8 +5228,8 @@ class Schema {
5167
5228
  if (shouldRecheck) {
5168
5229
  try {
5169
5230
  // Use dynamic import for browser compatibility (require() doesn't work in browsers)
5170
- const { getClient } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.ClientManager$1; });
5171
- const { ClientManagerState } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.constants; });
5231
+ const { getClient } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.ClientManager$1; });
5232
+ const { ClientManagerState } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.constants; });
5172
5233
  const client = getClient();
5173
5234
  const clientSnapshot = client.getService().getSnapshot();
5174
5235
  // Check if state is IDLE (primary check) - isInitialized is set in entry action so should be true
@@ -5239,11 +5300,9 @@ class Schema {
5239
5300
  _editedProperties: new Set(),
5240
5301
  };
5241
5302
  }
5242
- const { addSchemaToDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.db; });
5243
- const { generateId } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.index; });
5244
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
5245
- const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.SchemaSchema; });
5246
- const db = BaseDb.getAppDb();
5303
+ const { addSchemaToDb } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.db; });
5304
+ const { generateId } = await Promise.resolve().then(function () { return require('./index-C3j3m34a.js'); }).then(function (n) { return n.index; });
5305
+ const db = main_cjs.BaseDb.getAppDb();
5247
5306
  if (!db) {
5248
5307
  throw new Error('Database not found');
5249
5308
  }
@@ -5262,8 +5321,8 @@ class Schema {
5262
5321
  logger(`Looking up schema by schemaFileId: ${context.id}`);
5263
5322
  const schemasById = await db
5264
5323
  .select()
5265
- .from(schemasTable)
5266
- .where(drizzleOrm.eq(schemasTable.schemaFileId, context.id)) // id is now the schemaFileId (string)
5324
+ .from(main_cjs.schemas)
5325
+ .where(drizzleOrm.eq(main_cjs.schemas.schemaFileId, context.id)) // id is now the schemaFileId (string)
5267
5326
  .limit(1);
5268
5327
  if (schemasById.length > 0) {
5269
5328
  const foundRecord = schemasById[0];
@@ -5283,8 +5342,8 @@ class Schema {
5283
5342
  logger(`Looking up schema by name "${lookupName}" (oldName: ${oldName}, finalNewName: ${finalNewName})`);
5284
5343
  const existingSchemas = await db
5285
5344
  .select()
5286
- .from(schemasTable)
5287
- .where(drizzleOrm.eq(schemasTable.name, lookupName))
5345
+ .from(main_cjs.schemas)
5346
+ .where(drizzleOrm.eq(main_cjs.schemas.name, lookupName))
5288
5347
  .limit(10); // Get multiple to find drafts
5289
5348
  logger(`Found ${existingSchemas.length} records with name "${lookupName}"`);
5290
5349
  // If name changed, prefer draft records; otherwise prefer any record
@@ -5374,14 +5433,14 @@ class Schema {
5374
5433
  saveDraftLogger(`Setting schemaFileId to ${finalSchemaFileId} (was null)`);
5375
5434
  }
5376
5435
  await db
5377
- .update(schemasTable)
5436
+ .update(main_cjs.schemas)
5378
5437
  .set(updateData)
5379
- .where(drizzleOrm.eq(schemasTable.id, existingSchemaRecord.id));
5438
+ .where(drizzleOrm.eq(main_cjs.schemas.id, existingSchemaRecord.id));
5380
5439
  // Verify what was saved by reading it back
5381
5440
  const verifyRecord = await db
5382
5441
  .select()
5383
- .from(schemasTable)
5384
- .where(drizzleOrm.eq(schemasTable.id, existingSchemaRecord.id))
5442
+ .from(main_cjs.schemas)
5443
+ .where(drizzleOrm.eq(main_cjs.schemas.id, existingSchemaRecord.id))
5385
5444
  .limit(1);
5386
5445
  if (verifyRecord.length > 0 && verifyRecord[0].schemaData) {
5387
5446
  try {
@@ -5391,15 +5450,15 @@ class Schema {
5391
5450
  saveDraftLogger(`ERROR: isDraft is not true after save! Expected true, got ${verifyRecord[0].isDraft}. This will cause the schema to load from file instead of database!`);
5392
5451
  // Try to fix it immediately
5393
5452
  await db
5394
- .update(schemasTable)
5453
+ .update(main_cjs.schemas)
5395
5454
  .set({ isDraft: true })
5396
- .where(drizzleOrm.eq(schemasTable.id, existingSchemaRecord.id));
5455
+ .where(drizzleOrm.eq(main_cjs.schemas.id, existingSchemaRecord.id));
5397
5456
  saveDraftLogger(`Attempted to fix isDraft by setting it to true again`);
5398
5457
  // Verify the fix
5399
5458
  const fixedRecord = await db
5400
5459
  .select()
5401
- .from(schemasTable)
5402
- .where(drizzleOrm.eq(schemasTable.id, existingSchemaRecord.id))
5460
+ .from(main_cjs.schemas)
5461
+ .where(drizzleOrm.eq(main_cjs.schemas.id, existingSchemaRecord.id))
5403
5462
  .limit(1);
5404
5463
  if (fixedRecord.length > 0) {
5405
5464
  saveDraftLogger(`After fix attempt: isDraft=${fixedRecord[0].isDraft}`);
@@ -5441,8 +5500,8 @@ class Schema {
5441
5500
  // Try to find by looking for ANY draft with the old name (even if it doesn't match exactly)
5442
5501
  const allDrafts = await db
5443
5502
  .select()
5444
- .from(schemasTable)
5445
- .where(drizzleOrm.eq(schemasTable.name, oldName))
5503
+ .from(main_cjs.schemas)
5504
+ .where(drizzleOrm.eq(main_cjs.schemas.name, oldName))
5446
5505
  .limit(1);
5447
5506
  if (allDrafts.length > 0 && allDrafts[0].id) {
5448
5507
  const foundRecord = allDrafts[0];
@@ -5450,7 +5509,7 @@ class Schema {
5450
5509
  // Update the existing record with the new name
5451
5510
  // CRITICAL: Ensure schemaFileId matches schema.id
5452
5511
  await db
5453
- .update(schemasTable)
5512
+ .update(main_cjs.schemas)
5454
5513
  .set({
5455
5514
  name: finalNewName,
5456
5515
  schemaData: JSON.stringify(currentSchema, null, 2),
@@ -5459,7 +5518,7 @@ class Schema {
5459
5518
  updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),
5460
5519
  isDraft: true, // Ensure it's marked as a draft when saving via _saveDraftToDb
5461
5520
  })
5462
- .where(drizzleOrm.eq(schemasTable.id, foundRecord.id));
5521
+ .where(drizzleOrm.eq(main_cjs.schemas.id, foundRecord.id));
5463
5522
  // Update context with id (schemaFileId) and conflict detection metadata
5464
5523
  try {
5465
5524
  const snapshot = this._service.getSnapshot();
@@ -5570,6 +5629,68 @@ class Schema {
5570
5629
  }
5571
5630
  }
5572
5631
  }
5632
+ /**
5633
+ * Destroy the schema instance completely: remove from caches, delete from database (cascade),
5634
+ * and stop the service. Uses shared destroy helpers.
5635
+ */
5636
+ async destroy() {
5637
+ const context = this._getSnapshotContext();
5638
+ const schemaFileId = context.id;
5639
+ const schemaName = context.schemaName;
5640
+ main_cjs.clearDestroySubscriptions(this, {
5641
+ instanceState: schemaInstanceState,
5642
+ onUnload: () => schemaInstanceState.delete(this),
5643
+ });
5644
+ const cacheKeys = [];
5645
+ if (schemaFileId)
5646
+ cacheKeys.push(schemaFileId);
5647
+ if (schemaName)
5648
+ cacheKeys.push(schemaName);
5649
+ main_cjs.forceRemoveFromCaches(this, {
5650
+ getCacheKeys: () => cacheKeys,
5651
+ caches: [
5652
+ Schema.instanceCacheById,
5653
+ Schema.instanceCacheByName,
5654
+ ],
5655
+ });
5656
+ await main_cjs.runDestroyLifecycle(this, {
5657
+ getService: (instance) => instance._service,
5658
+ doDestroy: async () => {
5659
+ const db = main_cjs.BaseDb.getAppDb();
5660
+ if (!db || !schemaFileId)
5661
+ return;
5662
+ const schemaRecords = await db
5663
+ .select({ id: main_cjs.schemas.id })
5664
+ .from(main_cjs.schemas)
5665
+ .where(drizzleOrm.eq(main_cjs.schemas.schemaFileId, schemaFileId));
5666
+ if (schemaRecords.length === 0)
5667
+ return;
5668
+ const schemaIds = schemaRecords
5669
+ .map((r) => r.id)
5670
+ .filter((id) => id != null);
5671
+ if (schemaIds.length === 0)
5672
+ return;
5673
+ const { inArray } = await import('drizzle-orm');
5674
+ const joinRows = await db
5675
+ .select({ modelId: main_cjs.modelSchemas.modelId })
5676
+ .from(main_cjs.modelSchemas)
5677
+ .where(inArray(main_cjs.modelSchemas.schemaId, schemaIds));
5678
+ const modelIds = [
5679
+ ...new Set(joinRows
5680
+ .map((r) => r.modelId)
5681
+ .filter((id) => id != null)),
5682
+ ];
5683
+ await db.delete(main_cjs.modelSchemas).where(inArray(main_cjs.modelSchemas.schemaId, schemaIds));
5684
+ for (const modelId of modelIds) {
5685
+ await db.delete(main_cjs.properties).where(drizzleOrm.eq(main_cjs.properties.modelId, modelId));
5686
+ }
5687
+ for (const modelId of modelIds) {
5688
+ await db.delete(main_cjs.models).where(drizzleOrm.eq(main_cjs.models.id, modelId));
5689
+ }
5690
+ await db.delete(main_cjs.schemas).where(drizzleOrm.eq(main_cjs.schemas.schemaFileId, schemaFileId));
5691
+ },
5692
+ });
5693
+ }
5573
5694
  /**
5574
5695
  * Set up liveQuery subscription to watch for model changes in the database
5575
5696
  * This enables cross-instance synchronization (e.g., changes in other tabs/windows)
@@ -5581,10 +5702,7 @@ class Schema {
5581
5702
  }
5582
5703
  main_cjs.setupEntityLiveQuery(this, {
5583
5704
  getEntityId: async (schema) => {
5584
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
5585
- const { schemas: schemasTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
5586
- const { eq } = await import('drizzle-orm');
5587
- const db = BaseDb.getAppDb();
5705
+ const db = main_cjs.BaseDb.getAppDb();
5588
5706
  if (!db) {
5589
5707
  return undefined;
5590
5708
  }
@@ -5595,8 +5713,8 @@ class Schema {
5595
5713
  }
5596
5714
  const schemaRecords = await db
5597
5715
  .select()
5598
- .from(schemasTable)
5599
- .where(eq(schemasTable.name, schemaName))
5716
+ .from(main_cjs.schemas)
5717
+ .where(drizzleOrm.eq(main_cjs.schemas.name, schemaName))
5600
5718
  .limit(1);
5601
5719
  if (schemaRecords.length === 0 || !schemaRecords[0].id) {
5602
5720
  return undefined;
@@ -5604,22 +5722,19 @@ class Schema {
5604
5722
  return schemaRecords[0].id;
5605
5723
  },
5606
5724
  buildQuery: async (schemaId) => {
5607
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
5608
- const { modelSchemas, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
5609
- const { eq } = await import('drizzle-orm');
5610
- const db = BaseDb.getAppDb();
5725
+ const db = main_cjs.BaseDb.getAppDb();
5611
5726
  if (!db) {
5612
5727
  throw new Error('Database not available');
5613
5728
  }
5614
- return BaseDb.liveQuery(db
5729
+ return main_cjs.BaseDb.liveQuery(db
5615
5730
  .select({
5616
- modelId: modelSchemas.modelId,
5617
- modelName: modelsTable.name,
5618
- modelFileId: modelsTable.schemaFileId,
5731
+ modelId: main_cjs.modelSchemas.modelId,
5732
+ modelName: main_cjs.models.name,
5733
+ modelFileId: main_cjs.models.schemaFileId,
5619
5734
  })
5620
- .from(modelSchemas)
5621
- .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))
5622
- .where(eq(modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId)));
5735
+ .from(main_cjs.modelSchemas)
5736
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
5737
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId)));
5623
5738
  },
5624
5739
  extractEntityIds: (rows) => rows.map(row => row.modelFileId).filter(Boolean),
5625
5740
  updateContext: (schema, ids) => {
@@ -5678,16 +5793,12 @@ class Schema {
5678
5793
  }
5679
5794
  },
5680
5795
  createChildInstances: async (ids) => {
5681
- const { Model } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.Model$1; });
5682
5796
  for (const id of ids) {
5683
- await Model.createById(id);
5797
+ await main_cjs.Model.createById(id);
5684
5798
  }
5685
5799
  },
5686
5800
  queryInitialData: async (schemaId) => {
5687
- const { BaseDb } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.BaseDb$1; });
5688
- const { modelSchemas, models: modelsTable } = await Promise.resolve().then(function () { return require('./index-BmIVfqGN.js'); }).then(function (n) { return n.schema; });
5689
- const { eq } = await import('drizzle-orm');
5690
- const db = BaseDb.getAppDb();
5801
+ const db = main_cjs.BaseDb.getAppDb();
5691
5802
  if (!db) {
5692
5803
  return [];
5693
5804
  }
@@ -5696,13 +5807,13 @@ class Schema {
5696
5807
  try {
5697
5808
  const initialModels = await db
5698
5809
  .select({
5699
- modelId: modelSchemas.modelId,
5700
- modelName: modelsTable.name,
5701
- modelFileId: modelsTable.schemaFileId,
5810
+ modelId: main_cjs.modelSchemas.modelId,
5811
+ modelName: main_cjs.models.name,
5812
+ modelFileId: main_cjs.models.schemaFileId,
5702
5813
  })
5703
- .from(modelSchemas)
5704
- .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))
5705
- .where(eq(modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId));
5814
+ .from(main_cjs.modelSchemas)
5815
+ .innerJoin(main_cjs.models, drizzleOrm.eq(main_cjs.modelSchemas.modelId, main_cjs.models.id))
5816
+ .where(drizzleOrm.eq(main_cjs.modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId));
5706
5817
  logger(`[Schema._setupLiveQuerySubscription] Initial query found ${initialModels.length} models`);
5707
5818
  if (initialModels.length > 0) {
5708
5819
  return initialModels.map((row) => ({
@@ -5759,4 +5870,4 @@ var Schema$1 = /*#__PURE__*/Object.freeze({
5759
5870
 
5760
5871
  exports.Schema = Schema;
5761
5872
  exports.schemaInstanceState = schemaInstanceState;
5762
- //# sourceMappingURL=Schema-B5cr_JVK.js.map
5873
+ //# sourceMappingURL=Schema-CV9hMg8m.js.map