@seedprotocol/sdk 0.3.14 → 0.3.16

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/addModel.js +93 -0
  2. package/dist/addModel.js.map +1 -0
  3. package/dist/bin.js +8 -5
  4. package/dist/bin.js.map +1 -1
  5. package/dist/main.js +1 -0
  6. package/dist/main.js.map +1 -1
  7. package/dist/protos/seed.proto +97 -0
  8. package/dist/rpcServer.js +358 -0
  9. package/dist/rpcServer.js.map +1 -0
  10. package/dist/scripts/addModel.d.ts +3 -0
  11. package/dist/scripts/addModel.d.ts.map +1 -0
  12. package/dist/scripts/bin.d.ts.map +1 -1
  13. package/dist/scripts/rpcServer.cursor.d.ts +2 -0
  14. package/dist/scripts/rpcServer.cursor.d.ts.map +1 -0
  15. package/dist/scripts/rpcServer.d.ts +3 -0
  16. package/dist/scripts/rpcServer.d.ts.map +1 -0
  17. package/dist/scripts/vite.config.d.ts +3 -0
  18. package/dist/scripts/vite.config.d.ts.map +1 -0
  19. package/dist/seedSchema/AppStateSchema.ts +2 -2
  20. package/dist/seedSchema/ConfigSchema.ts +18 -14
  21. package/dist/seedSchema/MetadataSchema.ts +2 -1
  22. package/dist/seedSchema/ModelSchema.ts +3 -3
  23. package/dist/seedSchema/SeedSchema.ts +2 -1
  24. package/dist/seedSchema/VersionSchema.ts +2 -1
  25. package/dist/seedSchema/index.ts +1 -0
  26. package/dist/src/Item/BaseItem.d.ts +1 -1
  27. package/dist/src/Item/BaseItem.d.ts.map +1 -1
  28. package/dist/src/Item/BaseItem.js.map +1 -1
  29. package/dist/src/ItemProperty/BaseItemProperty.d.ts +55 -192
  30. package/dist/src/ItemProperty/BaseItemProperty.d.ts.map +1 -1
  31. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts +2 -1
  32. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  33. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +2 -1
  34. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
  35. package/dist/src/ItemProperty/service/actors/initialize.d.ts +2 -1
  36. package/dist/src/ItemProperty/service/actors/initialize.d.ts.map +1 -1
  37. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts +2 -1
  38. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
  39. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +2 -1
  40. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +1 -1
  41. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +1 -1
  42. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -1
  43. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts +2 -2
  44. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +1 -1
  45. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts +2 -2
  46. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
  47. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts +2 -2
  48. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  49. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js +1 -0
  50. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js.map +1 -1
  51. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts +2 -2
  52. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts.map +1 -1
  53. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts +2 -2
  54. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts.map +1 -1
  55. package/dist/src/ItemProperty/service/propertyMachine.d.ts +60 -195
  56. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  57. package/dist/src/browser/helpers/FileManager.d.ts +1 -0
  58. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  59. package/dist/src/browser/helpers/FileManager.js +3 -0
  60. package/dist/src/browser/helpers/FileManager.js.map +1 -1
  61. package/dist/src/browser/react/services.js +1 -0
  62. package/dist/src/browser/react/services.js.map +1 -1
  63. package/dist/src/client/ClientManager.js +1 -0
  64. package/dist/src/client/ClientManager.js.map +1 -1
  65. package/dist/src/client/actors/initialize.d.ts.map +1 -1
  66. package/dist/src/client/actors/initialize.js +28 -14
  67. package/dist/src/client/actors/initialize.js.map +1 -1
  68. package/dist/src/client/actors/saveAppState.js +1 -0
  69. package/dist/src/client/actors/saveAppState.js.map +1 -1
  70. package/dist/src/client/index.d.ts +1 -1
  71. package/dist/src/client/index.d.ts.map +1 -1
  72. package/dist/src/db/Db/BaseDb.d.ts +1 -0
  73. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  74. package/dist/src/db/Db/BaseDb.js +3 -0
  75. package/dist/src/db/Db/BaseDb.js.map +1 -1
  76. package/dist/src/db/read/getExistingItem.js +1 -0
  77. package/dist/src/db/read/getExistingItem.js.map +1 -1
  78. package/dist/src/db/read/getItemData.js +1 -0
  79. package/dist/src/db/read/getItemData.js.map +1 -1
  80. package/dist/src/db/read/getItemProperties.js +1 -0
  81. package/dist/src/db/read/getItemProperties.js.map +1 -1
  82. package/dist/src/db/read/getItemProperty.js +1 -0
  83. package/dist/src/db/read/getItemProperty.js.map +1 -1
  84. package/dist/src/db/read/getItems.js +1 -0
  85. package/dist/src/db/read/getItems.js.map +1 -1
  86. package/dist/src/db/read/getMetadata.js +1 -0
  87. package/dist/src/db/read/getMetadata.js.map +1 -1
  88. package/dist/src/db/read/getModelSchemas.js +1 -0
  89. package/dist/src/db/read/getModelSchemas.js.map +1 -1
  90. package/dist/src/db/read/getModels.js +1 -0
  91. package/dist/src/db/read/getModels.js.map +1 -1
  92. package/dist/src/db/read/getPropertyData.js +1 -0
  93. package/dist/src/db/read/getPropertyData.js.map +1 -1
  94. package/dist/src/db/read/getRelationValueData.js +1 -0
  95. package/dist/src/db/read/getRelationValueData.js.map +1 -1
  96. package/dist/src/db/read/getSeedData.js +1 -0
  97. package/dist/src/db/read/getSeedData.js.map +1 -1
  98. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js +1 -0
  99. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js.map +1 -1
  100. package/dist/src/db/read/getVersionData.js +1 -0
  101. package/dist/src/db/read/getVersionData.js.map +1 -1
  102. package/dist/src/db/read/subqueries/metadataLatest.js +1 -0
  103. package/dist/src/db/read/subqueries/metadataLatest.js.map +1 -1
  104. package/dist/src/db/read/subqueries/versionData.js +1 -0
  105. package/dist/src/db/read/subqueries/versionData.js.map +1 -1
  106. package/dist/src/db/write/createMetadata.js +1 -0
  107. package/dist/src/db/write/createMetadata.js.map +1 -1
  108. package/dist/src/db/write/createSeed.js +1 -0
  109. package/dist/src/db/write/createSeed.js.map +1 -1
  110. package/dist/src/db/write/createSeeds.js +1 -0
  111. package/dist/src/db/write/createSeeds.js.map +1 -1
  112. package/dist/src/db/write/createVersion.js +1 -0
  113. package/dist/src/db/write/createVersion.js.map +1 -1
  114. package/dist/src/db/write/deleteItem.js +1 -0
  115. package/dist/src/db/write/deleteItem.js.map +1 -1
  116. package/dist/src/db/write/saveAppState.js +1 -0
  117. package/dist/src/db/write/saveAppState.js.map +1 -1
  118. package/dist/src/db/write/saveMetadata.js +1 -0
  119. package/dist/src/db/write/saveMetadata.js.map +1 -1
  120. package/dist/src/db/write/updateItemPropertyValue.js +1 -0
  121. package/dist/src/db/write/updateItemPropertyValue.js.map +1 -1
  122. package/dist/src/db/write/updateMetadata.js +1 -0
  123. package/dist/src/db/write/updateMetadata.js.map +1 -1
  124. package/dist/src/events/files/download.js +1 -0
  125. package/dist/src/events/files/download.js.map +1 -1
  126. package/dist/src/events/item/syncDbWithEas.js +1 -0
  127. package/dist/src/events/item/syncDbWithEas.js.map +1 -1
  128. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -1
  129. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  130. package/dist/src/helpers/FileManager/BaseFileManager.js +3 -0
  131. package/dist/src/helpers/FileManager/BaseFileManager.js.map +1 -1
  132. package/dist/src/helpers/db.js +1 -0
  133. package/dist/src/helpers/db.js.map +1 -1
  134. package/dist/src/helpers/environment.js +6 -1
  135. package/dist/src/helpers/environment.js.map +1 -1
  136. package/dist/src/helpers/index.d.ts.map +1 -1
  137. package/dist/src/helpers/index.js.map +1 -1
  138. package/dist/src/interfaces/IItem.d.ts +1 -1
  139. package/dist/src/interfaces/IItem.d.ts.map +1 -1
  140. package/dist/src/node/Item/Item.js +11 -0
  141. package/dist/src/node/Item/Item.js.map +1 -0
  142. package/dist/src/node/ItemProperty/ItemProperty.js +10 -0
  143. package/dist/src/node/ItemProperty/ItemProperty.js.map +1 -0
  144. package/dist/src/node/codegen/drizzle.js +36 -2
  145. package/dist/src/node/codegen/drizzle.js.map +1 -1
  146. package/dist/src/node/db/Db.d.ts.map +1 -1
  147. package/dist/src/node/db/Db.js +64 -0
  148. package/dist/src/node/db/Db.js.map +1 -0
  149. package/dist/src/node/helpers/FileManager.d.ts +1 -0
  150. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  151. package/dist/src/node/helpers/FileManager.js +53 -0
  152. package/dist/src/node/helpers/FileManager.js.map +1 -0
  153. package/dist/src/seedSchema/AppStateSchema.d.ts +2 -1
  154. package/dist/src/seedSchema/AppStateSchema.d.ts.map +1 -1
  155. package/dist/src/seedSchema/AppStateSchema.js.map +1 -1
  156. package/dist/src/seedSchema/ConfigSchema.d.ts +2 -0
  157. package/dist/src/seedSchema/ConfigSchema.d.ts.map +1 -1
  158. package/dist/src/seedSchema/ConfigSchema.js +5 -8
  159. package/dist/src/seedSchema/ConfigSchema.js.map +1 -1
  160. package/dist/src/seedSchema/MetadataSchema.d.ts +2 -1
  161. package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
  162. package/dist/src/seedSchema/MetadataSchema.js.map +1 -1
  163. package/dist/src/seedSchema/ModelSchema.d.ts +3 -2
  164. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  165. package/dist/src/seedSchema/ModelSchema.js.map +1 -1
  166. package/dist/src/seedSchema/SeedSchema.d.ts +2 -1
  167. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  168. package/dist/src/seedSchema/SeedSchema.js.map +1 -1
  169. package/dist/src/seedSchema/VersionSchema.d.ts +2 -1
  170. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  171. package/dist/src/seedSchema/VersionSchema.js.map +1 -1
  172. package/dist/src/seedSchema/index.d.ts +1 -0
  173. package/dist/src/seedSchema/index.d.ts.map +1 -1
  174. package/dist/src/services/allItems/actors/fetchRelatedItems.js +1 -0
  175. package/dist/src/services/allItems/actors/fetchRelatedItems.js.map +1 -1
  176. package/dist/src/services/allItems/actors/initialize.js +1 -0
  177. package/dist/src/services/allItems/actors/initialize.js.map +1 -1
  178. package/dist/src/services/global/actors/addModelsToDb.js +1 -0
  179. package/dist/src/services/global/actors/addModelsToDb.js.map +1 -1
  180. package/dist/src/services/global/actors/initialize.js +1 -0
  181. package/dist/src/services/global/actors/initialize.js.map +1 -1
  182. package/dist/src/services/internal/actors/saveConfig.d.ts.map +1 -1
  183. package/dist/src/services/internal/actors/saveConfig.js +16 -29
  184. package/dist/src/services/internal/actors/saveConfig.js.map +1 -1
  185. package/dist/src/services/internal/helpers.d.ts.map +1 -1
  186. package/dist/src/services/internal/helpers.js +2 -2
  187. package/dist/src/services/internal/helpers.js.map +1 -1
  188. package/dist/src/services/publish/actors/preparePublishRequestData.js +1 -0
  189. package/dist/src/services/publish/actors/preparePublishRequestData.js.map +1 -1
  190. package/dist/src/types/item.d.ts +9 -8
  191. package/dist/src/types/item.d.ts.map +1 -1
  192. package/package.json +8 -2
@@ -0,0 +1,358 @@
1
+ #!/usr/bin/env node
2
+ import path from 'path';
3
+ import grpc from '@grpc/grpc-js';
4
+ import protoLoader from '@grpc/proto-loader';
5
+ import { BaseItem } from './src/Item/BaseItem.js';
6
+ import { getModel, getModelNames } from './src/stores/modelClass.js';
7
+ import { fileURLToPath } from 'url';
8
+
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = path.dirname(__filename);
11
+ // Load protobuf
12
+ const PROTO_PATH = path.resolve(__dirname, './protos/seed.proto');
13
+ const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
14
+ keepCase: true,
15
+ longs: String,
16
+ enums: String,
17
+ defaults: true,
18
+ oneofs: true
19
+ });
20
+ const seedProto = grpc.loadPackageDefinition(packageDefinition).seed;
21
+ // In-memory cache to store BaseItems by model and ID
22
+ const BaseItemsCache = {};
23
+ /**
24
+ * Implements the SeedService gRPC service
25
+ */
26
+ const server = {
27
+ // Model operations
28
+ GetModels: (call, callback) => {
29
+ try {
30
+ const modelNames = getModelNames();
31
+ const models = [];
32
+ for (const modelName of modelNames) {
33
+ const model = getModel(modelName);
34
+ if (!model) {
35
+ continue;
36
+ }
37
+ const props = Object.keys(model.schema).map(propName => {
38
+ const prop = model.schema[propName];
39
+ return {
40
+ name: propName,
41
+ type: prop?.dataType || 'Text',
42
+ relation_model: prop?.refModelId ? getModel(prop.ref) : '',
43
+ is_list: prop?.dataType === 'List'
44
+ };
45
+ });
46
+ models.push({
47
+ name: modelName,
48
+ properties: props
49
+ });
50
+ }
51
+ callback(null, { models });
52
+ }
53
+ catch (error) {
54
+ callback({
55
+ code: grpc.status.INTERNAL,
56
+ message: `Error getting models: ${error.message}`
57
+ });
58
+ }
59
+ },
60
+ GetModel: (call, callback) => {
61
+ try {
62
+ const { model_name } = call.request;
63
+ const model = getModel(model_name);
64
+ if (!model) {
65
+ return callback({
66
+ code: grpc.status.NOT_FOUND,
67
+ message: `Model ${model_name} not found`
68
+ });
69
+ }
70
+ const props = Object.keys(model.prototype).map(propName => {
71
+ const prop = model.prototype[propName];
72
+ return {
73
+ name: propName,
74
+ type: prop.type || 'text',
75
+ relation_model: prop.relationModel || '',
76
+ is_list: prop.isList || false
77
+ };
78
+ });
79
+ callback(null, {
80
+ model: {
81
+ name: model_name,
82
+ properties: props
83
+ }
84
+ });
85
+ }
86
+ catch (error) {
87
+ callback({
88
+ code: grpc.status.INTERNAL,
89
+ message: `Error getting model: ${error.message}`
90
+ });
91
+ }
92
+ },
93
+ // BaseItem operations
94
+ CreateItem: async (call, callback) => {
95
+ try {
96
+ const { model_name, properties } = call.request;
97
+ const ModelClass = getModel(model_name);
98
+ if (!ModelClass) {
99
+ return callback({
100
+ code: grpc.status.NOT_FOUND,
101
+ message: `Model ${model_name} not found`
102
+ });
103
+ }
104
+ // Process properties to handle relations and lists
105
+ const processedProps = {};
106
+ for (const [key, value] of Object.entries(properties)) {
107
+ // Handle relationship properties and lists based on model definition
108
+ const prop = ModelClass.prototype[key];
109
+ if (prop && prop.isList) {
110
+ processedProps[key] = JSON.parse(value);
111
+ }
112
+ else if (prop && prop.relationModel) {
113
+ // Assuming relation is stored as stringified ID
114
+ processedProps[key] = value;
115
+ }
116
+ else {
117
+ processedProps[key] = value;
118
+ }
119
+ }
120
+ const item = await BaseItem.create(processedProps);
121
+ // Cache the BaseItem
122
+ if (!itemsCache[model_name]) {
123
+ BaseItemsCache[model_name] = {};
124
+ }
125
+ BaseItemsCache[model_name][item.id] = BaseItem;
126
+ // Return the created BaseItem
127
+ callback(null, {
128
+ id: BaseItem.id,
129
+ model_name,
130
+ properties: properties
131
+ });
132
+ }
133
+ catch (error) {
134
+ callback({
135
+ code: grpc.status.INTERNAL,
136
+ message: `Error creating BaseItem: ${error.message}`
137
+ });
138
+ }
139
+ },
140
+ GetItem: async (call, callback) => {
141
+ try {
142
+ const { id, model_name } = call.request;
143
+ // Try to get from cache
144
+ const item = await BaseItem.find({
145
+ seedLocalId: id,
146
+ modelName: model_name
147
+ });
148
+ if (!item) {
149
+ return callback({
150
+ code: grpc.status.NOT_FOUND,
151
+ message: `Item ${id} not found`
152
+ });
153
+ }
154
+ // Convert properties to simple strings for gRPC
155
+ const properties = {};
156
+ for (const [key, value] of Object.entries(item)) {
157
+ if (key !== 'id' && key !== 'modelName') {
158
+ if (Array.isArray(value)) {
159
+ properties[key] = JSON.stringify(value);
160
+ }
161
+ else if (typeof value === 'object' && value !== null) {
162
+ properties[key] = JSON.stringify(value);
163
+ }
164
+ else {
165
+ properties[key] = String(value);
166
+ }
167
+ }
168
+ }
169
+ callback(null, {
170
+ id,
171
+ model_name,
172
+ properties
173
+ });
174
+ }
175
+ catch (error) {
176
+ callback({
177
+ code: grpc.status.INTERNAL,
178
+ message: `Error getting BaseItem: ${error.message}`
179
+ });
180
+ }
181
+ },
182
+ UpdateItem: async (call, callback) => {
183
+ try {
184
+ const { id, model_name, properties } = call.request;
185
+ // Try to get from cache
186
+ let item = await BaseItem.find({
187
+ seedLocalId: id,
188
+ modelName: model_name
189
+ });
190
+ if (!item) {
191
+ return callback({
192
+ code: grpc.status.NOT_FOUND,
193
+ message: `Item ${id} not found`
194
+ });
195
+ }
196
+ // Update properties
197
+ for (const [key, value] of Object.entries(properties)) {
198
+ const prop = BaseItem.constructor.prototype[key];
199
+ if (prop && prop.isList) {
200
+ item[key] = JSON.parse(value);
201
+ }
202
+ else if (prop && prop.relationModel) {
203
+ item[key] = value;
204
+ }
205
+ else {
206
+ item[key] = value;
207
+ }
208
+ }
209
+ // Save the updated BaseItem
210
+ await BaseItem.save();
211
+ // Return the updated BaseItem
212
+ callback(null, {
213
+ id,
214
+ model_name,
215
+ properties: properties
216
+ });
217
+ }
218
+ catch (error) {
219
+ callback({
220
+ code: grpc.status.INTERNAL,
221
+ message: `Error updating BaseItem: ${error.message}`
222
+ });
223
+ }
224
+ },
225
+ DeleteItem: async (call, callback) => {
226
+ try {
227
+ const { id, model_name } = call.request;
228
+ // Try to get from cache
229
+ const BaseItem = BaseItemsCache[model_name]?.[id];
230
+ if (!item) {
231
+ return callback({
232
+ code: grpc.status.NOT_FOUND,
233
+ message: `Item ${id} not found`
234
+ });
235
+ }
236
+ // Delete the BaseItem
237
+ await BaseItem.delete();
238
+ // Remove from cache
239
+ delete BaseItemsCache[model_name][id];
240
+ callback(null, {
241
+ success: true,
242
+ message: `Item ${id} deleted successfully`
243
+ });
244
+ }
245
+ catch (error) {
246
+ callback({
247
+ code: grpc.status.INTERNAL,
248
+ message: `Error deleting BaseItem: ${error.message}`
249
+ });
250
+ }
251
+ },
252
+ PublishItem: async (call, callback) => {
253
+ try {
254
+ const { id, model_name } = call.request;
255
+ // Try to get from cache
256
+ const item = await BaseItem.find({
257
+ seedLocalId: id,
258
+ modelName: model_name
259
+ });
260
+ if (!item) {
261
+ return callback({
262
+ code: grpc.status.NOT_FOUND,
263
+ message: `Item ${id} not found`
264
+ });
265
+ }
266
+ // Publish the BaseItem
267
+ await item.publish();
268
+ callback(null, {
269
+ success: true,
270
+ message: `Item ${id} published successfully`
271
+ });
272
+ }
273
+ catch (error) {
274
+ callback({
275
+ code: grpc.status.INTERNAL,
276
+ message: `Error publishing BaseItem: ${error.message}`
277
+ });
278
+ }
279
+ },
280
+ QueryItems: async (call, callback) => {
281
+ try {
282
+ const { model_name, filters, limit, offset } = call.request;
283
+ // Simple in-memory implementation - in production, you'd query the SDK
284
+ // Get all BaseItems for the model
285
+ const modelItems = BaseItemsCache[model_name] || {};
286
+ let items = Object.values(modelItems);
287
+ // Apply filters
288
+ if (filters) {
289
+ items = items.filter(item => {
290
+ return Object.entries(filters).every(([key, value]) => {
291
+ return item[key] === value;
292
+ });
293
+ });
294
+ }
295
+ // Apply pagination
296
+ if (offset) {
297
+ items = items.slice(offset);
298
+ }
299
+ if (limit) {
300
+ items = items.slice(0, limit);
301
+ }
302
+ // Format response
303
+ const responseItems = items.map(item => {
304
+ const properties = {};
305
+ for (const [key, value] of Object.entries(item)) {
306
+ if (key !== 'id' && key !== 'modelName') {
307
+ if (Array.isArray(value)) {
308
+ properties[key] = JSON.stringify(value);
309
+ }
310
+ else if (typeof value === 'object' && value !== null) {
311
+ properties[key] = JSON.stringify(value);
312
+ }
313
+ else {
314
+ properties[key] = String(value);
315
+ }
316
+ }
317
+ }
318
+ return {
319
+ id: item.seedLocalId,
320
+ model_name,
321
+ properties
322
+ };
323
+ });
324
+ callback(null, { items: responseItems });
325
+ }
326
+ catch (error) {
327
+ callback({
328
+ code: grpc.status.INTERNAL,
329
+ message: `Error querying BaseItems: ${error.message}`
330
+ });
331
+ }
332
+ }
333
+ };
334
+ /**
335
+ * Start the gRPC server
336
+ */
337
+ function startServer() {
338
+ const grpcServer = new grpc.Server();
339
+ grpcServer.addService(seedProto.SeedService.service, server);
340
+ grpcServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (err, port) => {
341
+ if (err) {
342
+ console.error('Failed to bind server:', err);
343
+ return;
344
+ }
345
+ console.log(`Server running at http://0.0.0.0:${port}`);
346
+ });
347
+ // Handle graceful shutdown
348
+ process.on('SIGINT', () => {
349
+ console.log('Shutting down gRPC server');
350
+ grpcServer.tryShutdown(() => {
351
+ console.log('Server stopped');
352
+ process.exit(0);
353
+ });
354
+ });
355
+ }
356
+ // Start the server
357
+ startServer();
358
+ //# sourceMappingURL=rpcServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcServer.js","sources":["../../scripts/rpcServer.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport path from 'path';\nimport grpc from '@grpc/grpc-js';\nimport protoLoader from '@grpc/proto-loader';\nimport { BaseItem, } from '@/Item/BaseItem';\nimport { getModels, getModel, getModelNames, } from '@/stores/modelClass';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\n// Load protobuf\nconst PROTO_PATH = path.resolve(__dirname, './protos/seed.proto');\nconst packageDefinition = protoLoader.loadSync(PROTO_PATH, {\n keepCase: true,\n longs: String,\n enums: String,\n defaults: true,\n oneofs: true\n});\n\nconst seedProto = grpc.loadPackageDefinition(packageDefinition).seed;\n\n// In-memory cache to store BaseItems by model and ID\nconst BaseItemsCache = {};\n\n/**\n * Implements the SeedService gRPC service\n */\nconst server = {\n // Model operations\n GetModels: (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const modelNames = getModelNames();\n\n const models = [];\n\n for (const modelName of modelNames) {\n const model = getModel(modelName);\n if (!model) {\n continue;\n }\n const props = Object.keys(model.schema).map(propName => {\n const prop = model.schema[propName];\n return {\n name: propName,\n type: prop?.dataType || 'Text',\n relation_model: prop?.refModelId ? getModel(prop.ref) : '',\n is_list: prop?.dataType === 'List'\n };\n });\n\n models.push({\n name: modelName,\n properties: props\n });\n }\n\n callback(null, { models });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting models: ${error.message}`\n });\n }\n },\n\n GetModel: (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { model_name } = call.request;\n const model = getModel(model_name);\n \n if (!model) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Model ${model_name} not found`\n });\n }\n\n const props = Object.keys(model.prototype).map(propName => {\n const prop = model.prototype[propName];\n return {\n name: propName,\n type: prop.type || 'text',\n relation_model: prop.relationModel || '',\n is_list: prop.isList || false\n };\n });\n\n callback(null, { \n model: {\n name: model_name,\n properties: props\n }\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting model: ${error.message}`\n });\n }\n },\n\n // BaseItem operations\n CreateItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { model_name, properties } = call.request;\n const ModelClass = getModel(model_name);\n \n if (!ModelClass) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Model ${model_name} not found`\n });\n }\n\n // Process properties to handle relations and lists\n const processedProps = {};\n for (const [key, value] of Object.entries(properties)) {\n // Handle relationship properties and lists based on model definition\n const prop = ModelClass.prototype[key];\n if (prop && prop.isList) {\n processedProps[key] = JSON.parse(value);\n } else if (prop && prop.relationModel) {\n // Assuming relation is stored as stringified ID\n processedProps[key] = value;\n } else {\n processedProps[key] = value;\n }\n }\n\n const item = await BaseItem.create(processedProps);\n\n // Cache the BaseItem\n if (!itemsCache[model_name]) {\n BaseItemsCache[model_name] = {};\n }\n \n BaseItemsCache[model_name][item.id] = BaseItem;\n\n // Return the created BaseItem\n callback(null, {\n id: BaseItem.id,\n model_name,\n properties: properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error creating BaseItem: ${error.message}`\n });\n }\n },\n\n GetItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Convert properties to simple strings for gRPC\n const properties = {};\n for (const [key, value] of Object.entries(item)) {\n if (key !== 'id' && key !== 'modelName') {\n if (Array.isArray(value)) {\n properties[key] = JSON.stringify(value);\n } else if (typeof value === 'object' && value !== null) {\n properties[key] = JSON.stringify(value);\n } else {\n properties[key] = String(value);\n }\n }\n }\n\n callback(null, {\n id,\n model_name,\n properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting BaseItem: ${error.message}`\n });\n }\n },\n\n UpdateItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { id, model_name, properties } = call.request;\n \n // Try to get from cache\n let item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Update properties\n for (const [key, value] of Object.entries(properties)) {\n const prop = BaseItem.constructor.prototype[key];\n if (prop && prop.isList) {\n item[key] = JSON.parse(value);\n } else if (prop && prop.relationModel) {\n item[key] = value;\n } else {\n item[key] = value;\n }\n }\n\n // Save the updated BaseItem\n await BaseItem.save();\n\n // Return the updated BaseItem\n callback(null, {\n id,\n model_name,\n properties: properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error updating BaseItem: ${error.message}`\n });\n }\n },\n\n DeleteItem: async (call, callback) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const BaseItem = BaseItemsCache[model_name]?.[id];\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Delete the BaseItem\n await BaseItem.delete();\n \n // Remove from cache\n delete BaseItemsCache[model_name][id];\n\n callback(null, {\n success: true,\n message: `Item ${id} deleted successfully`\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error deleting BaseItem: ${error.message}`\n });\n }\n },\n\n PublishItem: async (call, callback) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Publish the BaseItem\n await item.publish();\n\n callback(null, {\n success: true,\n message: `Item ${id} published successfully`\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error publishing BaseItem: ${error.message}`\n });\n }\n },\n\n QueryItems: async (call, callback) => {\n try {\n const { model_name, filters, limit, offset } = call.request;\n \n // Simple in-memory implementation - in production, you'd query the SDK\n // Get all BaseItems for the model\n const modelItems = BaseItemsCache[model_name] || {};\n let items = Object.values(modelItems);\n \n // Apply filters\n if (filters) {\n items = items.filter(item => {\n return Object.entries(filters).every(([key, value]) => {\n return item[key] === value;\n });\n });\n }\n \n // Apply pagination\n if (offset) {\n items = items.slice(offset);\n }\n \n if (limit) {\n items = items.slice(0, limit);\n }\n \n // Format response\n const responseItems = items.map(item => {\n const properties = {};\n for (const [key, value] of Object.entries(item)) {\n if (key !== 'id' && key !== 'modelName') {\n if (Array.isArray(value)) {\n properties[key] = JSON.stringify(value);\n } else if (typeof value === 'object' && value !== null) {\n properties[key] = JSON.stringify(value);\n } else {\n properties[key] = String(value);\n }\n }\n }\n \n return {\n id: item.seedLocalId,\n model_name,\n properties\n };\n });\n\n callback(null, { items: responseItems });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error querying BaseItems: ${error.message}`\n });\n }\n }\n};\n\n/**\n * Start the gRPC server\n */\nfunction startServer() {\n const grpcServer = new grpc.Server();\n \n grpcServer.addService(seedProto.SeedService.service, server);\n \n grpcServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (err, port) => {\n if (err) {\n console.error('Failed to bind server:', err);\n return;\n }\n \n console.log(`Server running at http://0.0.0.0:${port}`);\n });\n\n // Handle graceful shutdown\n process.on('SIGINT', () => {\n console.log('Shutting down gRPC server');\n grpcServer.tryShutdown(() => {\n console.log('Server stopped');\n process.exit(0);\n });\n });\n}\n\n// Start the server\nstartServer();"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=addModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addModel.d.ts","sourceRoot":"","sources":["../../scripts/addModel.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;AAoHrC,QAAA,MAAM,IAAI,SAAU,MAAM,EAAE,SAyL3B,CAAA;AAeD,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;AA8GrC,QAAA,MAAM,IAAI,SAAU,MAAM,EAAE,SAyL3B,CAAA;AAeD,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rpcServer.cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcServer.cursor.d.ts","sourceRoot":"","sources":["../../scripts/rpcServer.cursor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=rpcServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpcServer.d.ts","sourceRoot":"","sources":["../../scripts/rpcServer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vite.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../../scripts/vite.config.ts"],"names":[],"mappings":";AAGA,wBAaE"}
@@ -1,5 +1,5 @@
1
1
  import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
2
-
2
+ import { InferSelectModel } from 'drizzle-orm'
3
3
  export const appState = sqliteTable('appState', {
4
4
  key: text('key').unique(),
5
5
  value: text('value'),
@@ -7,4 +7,4 @@ export const appState = sqliteTable('appState', {
7
7
  updatedAt: int('updated_at'),
8
8
  })
9
9
 
10
- export type appStateType = appState.$inferSelect
10
+ export type appStateType = InferSelectModel<typeof appState>
@@ -1,15 +1,19 @@
1
- import { blob, int, sqliteTable, text, check, } from 'drizzle-orm/sqlite-core'
2
- import { sql } from 'drizzle-orm'
1
+ import { int, sqliteTable, text, check, blob, } from 'drizzle-orm/sqlite-core'
2
+ import { InferSelectModel, sql } from 'drizzle-orm'
3
3
 
4
- export const config = sqliteTable('config', {
5
- id: int('id').primaryKey({ autoIncrement: true }),
6
- key: text('key').notNull(),
7
- text: text('text'),
8
- json: text('json', {mode: 'json'}),
9
- blob: blob('blob', {mode: 'buffer'}),
10
- }, () => {
11
- return {
12
- // Add a custom check constraint
13
- atLeastOneNotNull: check('hasValue', sql`key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),
14
- }
15
- })
4
+ export const config = sqliteTable(
5
+ 'config',
6
+ {
7
+ id: int('id').primaryKey({ autoIncrement: true }),
8
+ key: text('key').notNull(),
9
+ text: text('text'),
10
+ json: text('json', {mode: 'json'}),
11
+ blob: blob('blob', {mode: 'buffer'}),
12
+ },
13
+ {
14
+ checks: [
15
+ check('hasValue', sql`key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),
16
+ ],
17
+ })
18
+
19
+ export type configType = InferSelectModel<typeof config>
@@ -1,4 +1,5 @@
1
1
  import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
2
+ import { InferSelectModel } from 'drizzle-orm'
2
3
 
3
4
  export const metadata = sqliteTable('metadata', {
4
5
  localId: text('local_id').unique(),
@@ -25,4 +26,4 @@ export const metadata = sqliteTable('metadata', {
25
26
  updatedAt: int('updated_at'),
26
27
  })
27
28
 
28
- export type MetadataType = metadata.$inferSelect
29
+ export type MetadataType = InferSelectModel<typeof metadata>
@@ -1,6 +1,6 @@
1
1
  import { int, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'
2
2
  import { relations } from 'drizzle-orm'
3
-
3
+ import { InferInsertModel, InferSelectModel } from 'drizzle-orm'
4
4
  export const models = sqliteTable('models', {
5
5
  id: int('id').primaryKey({ autoIncrement: true }),
6
6
  name: text('name').notNull(),
@@ -42,5 +42,5 @@ export const propertiesRelations = relations(properties, ({ one }) => ({
42
42
  refModel: one(models),
43
43
  }))
44
44
 
45
- export type NewPropertyRecord = typeof properties.$inferInsert
46
- export type PropertyType = typeof properties.$inferSelect
45
+ export type NewPropertyRecord = InferInsertModel<typeof properties>
46
+ export type PropertyType = InferSelectModel<typeof properties>
@@ -1,3 +1,4 @@
1
+ import { InferSelectModel } from 'drizzle-orm'
1
2
  import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
2
3
 
3
4
  export const seeds = sqliteTable(
@@ -26,4 +27,4 @@ export const seeds = sqliteTable(
26
27
  // },
27
28
  )
28
29
 
29
- export type SeedType = seeds.$inferSelect
30
+ export type SeedType = InferSelectModel<typeof seeds>
@@ -1,4 +1,5 @@
1
1
  import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
2
+ import { InferSelectModel } from 'drizzle-orm'
2
3
 
3
4
  export const versions = sqliteTable('versions', {
4
5
  localId: text('local_id').unique(),
@@ -13,4 +14,4 @@ export const versions = sqliteTable('versions', {
13
14
  attestationRaw: text('attestation_raw'),
14
15
  })
15
16
 
16
- export type VersionsType = versions.$inferSelect
17
+ export type VersionsType = InferSelectModel<typeof versions>
@@ -4,3 +4,4 @@ export * from './MetadataSchema'
4
4
  export * from './AppStateSchema'
5
5
  export * from './ModelSchema'
6
6
  export * from './ModelUidSchema'
7
+ export * from './ConfigSchema'
@@ -1,6 +1,6 @@
1
1
  import { IItem, IItemProperty } from '@/interfaces';
2
2
  import { itemMachineSingle } from '@/Item/service/itemMachineSingle';
3
- import { VersionsType } from '@/seedSchema/VersionSchema';
3
+ import { VersionsType } from '@/seedSchema';
4
4
  import { CreatePropertyInstanceProps, ItemData, ItemFindProps, ModelSchema, ModelValues, NewItemProps, PropertyData } from '@/types';
5
5
  import { immerable } from 'immer';
6
6
  import { BehaviorSubject } from 'rxjs';
@@ -1 +1 @@
1
- {"version":3,"file":"BaseItem.d.ts","sourceRoot":"","sources":["../../../src/Item/BaseItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseItem.d.ts","sourceRoot":"","sources":["../../../src/Item/BaseItem.ts"],"names":[],"mappings":"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"}