@seedprotocol/sdk 0.7.3 → 0.7.4-next.784.g879c6a3

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 (127) hide show
  1. package/dist/{BasePathResolver-Cm4apKRb.js → BasePathResolver-DxdS0wJ0.js} +43 -8
  2. package/dist/BasePathResolver-DxdS0wJ0.js.map +1 -0
  3. package/dist/{ClientManager-i3nJASkg.js → ClientManager-De-vKHGe.js} +37 -38
  4. package/dist/ClientManager-De-vKHGe.js.map +1 -0
  5. package/dist/{Item-DBFchXpC.js → Item-cq9VcsAY.js} +365 -191
  6. package/dist/Item-cq9VcsAY.js.map +1 -0
  7. package/dist/{ModelProperty-BS49g01Y.js → ModelProperty-DuuoFXaC.js} +45 -37
  8. package/dist/ModelProperty-DuuoFXaC.js.map +1 -0
  9. package/dist/{Schema-CpMNEnUO.js → Schema-Dc5EA8Yb.js} +246 -68
  10. package/dist/Schema-Dc5EA8Yb.js.map +1 -0
  11. package/dist/{SchemaValidationService-DieV4KL-.js → SchemaValidationService-DViJ056F.js} +49 -36
  12. package/dist/SchemaValidationService-DViJ056F.js.map +1 -0
  13. package/dist/{backfillMetadataPropertyIds-DSoOoTnX.js → backfillMetadataPropertyIds-DacVthS5.js} +3 -3
  14. package/dist/{backfillMetadataPropertyIds-DSoOoTnX.js.map → backfillMetadataPropertyIds-DacVthS5.js.map} +1 -1
  15. package/dist/{configurePlatform-D0lQGAMQ.js → configurePlatform-DlZ23w7e.js} +2 -2
  16. package/dist/{configurePlatform-D0lQGAMQ.js.map → configurePlatform-DlZ23w7e.js.map} +1 -1
  17. package/dist/{detachRowsBeforeDelete-S0q-DJPT.js → detachRowsBeforeDelete-YRSZY6dO.js} +2 -2
  18. package/dist/{detachRowsBeforeDelete-S0q-DJPT.js.map → detachRowsBeforeDelete-YRSZY6dO.js.map} +1 -1
  19. package/dist/{eas-6pjU-OuX.js → eas-D_6ptL_F.js} +4 -4
  20. package/dist/{eas-6pjU-OuX.js.map → eas-D_6ptL_F.js.map} +1 -1
  21. package/dist/{index-8O3Uow-Y.js → errors-Cl8rbtKR.js} +192 -48
  22. package/dist/errors-Cl8rbtKR.js.map +1 -0
  23. package/dist/{getItem-CxBNZ-WL.js → getItem-BcmJcUZB.js} +5 -5
  24. package/dist/{getItem-CxBNZ-WL.js.map → getItem-BcmJcUZB.js.map} +1 -1
  25. package/dist/{getPublishPayload-CTCvRUoU.js → getPublishPayload-C278kK9P.js} +15 -15
  26. package/dist/{getPublishPayload-CTCvRUoU.js.map → getPublishPayload-C278kK9P.js.map} +1 -1
  27. package/dist/{getPublishUploads-SFHCbf_y.js → getPublishUploads-DJ1UPh7i.js} +9 -9
  28. package/dist/{getPublishUploads-SFHCbf_y.js.map → getPublishUploads-DJ1UPh7i.js.map} +1 -1
  29. package/dist/{index-Cvt5UBz4.js → index-CqnU-5i0.js} +9 -9
  30. package/dist/index-CqnU-5i0.js.map +1 -0
  31. package/dist/{index-AVFTVp1m.js → index-DAl9U4rn.js} +2 -2
  32. package/dist/index-DAl9U4rn.js.map +1 -0
  33. package/dist/{index.browser-DBhxRoe8.js → index.browser-J6QZ9smP.js} +10 -10
  34. package/dist/{index.browser-DBhxRoe8.js.map → index.browser-J6QZ9smP.js.map} +1 -1
  35. package/dist/{index.node-CJhlcNHM.js → index.node-C9VB9NlX.js} +9 -9
  36. package/dist/index.node-C9VB9NlX.js.map +1 -0
  37. package/dist/main.js +24 -24
  38. package/dist/{model-DGMe-TTm.js → model-oHA3YhOd.js} +5 -1
  39. package/dist/model-oHA3YhOd.js.map +1 -0
  40. package/dist/node.js +11 -11
  41. package/dist/node.js.map +1 -1
  42. package/dist/platform.browser.js +5 -5
  43. package/dist/platform.node.js +4 -4
  44. package/dist/{property-DwPD283A.js → property-Brgr5RdT.js} +11 -11
  45. package/dist/{property-DwPD283A.js.map → property-Brgr5RdT.js.map} +1 -1
  46. package/dist/propertyValidationRules-CDRitiiK.js +51 -0
  47. package/dist/propertyValidationRules-CDRitiiK.js.map +1 -0
  48. package/dist/{publishDraftGraph-BOn3_Occ.js → publishDraftGraph-C37ibxb5.js} +6 -6
  49. package/dist/{publishDraftGraph-BOn3_Occ.js.map → publishDraftGraph-C37ibxb5.js.map} +1 -1
  50. package/dist/{resetAmbiguousLegacyItemData-BkYmBeJc.js → resetAmbiguousLegacyItemData-CcLFRREE.js} +2 -2
  51. package/dist/{resetAmbiguousLegacyItemData-BkYmBeJc.js.map → resetAmbiguousLegacyItemData-CcLFRREE.js.map} +1 -1
  52. package/dist/{resolveModelForSyncedSeed-BL24nLa7.js → resolveModelForSyncedSeed-BTAeCOJE.js} +2 -2
  53. package/dist/{resolveModelForSyncedSeed-BL24nLa7.js.map → resolveModelForSyncedSeed-BTAeCOJE.js.map} +1 -1
  54. package/dist/src/Item/Item.d.ts +6 -2
  55. package/dist/src/Item/Item.d.ts.map +1 -1
  56. package/dist/src/Item/errors.d.ts +23 -0
  57. package/dist/src/Item/errors.d.ts.map +1 -0
  58. package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
  59. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  60. package/dist/src/ItemProperty/service/actors/loadOrCreateProperty.d.ts.map +1 -1
  61. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +1 -1
  62. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts +19 -0
  63. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveFile.d.ts.map +1 -1
  64. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
  65. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  66. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  67. package/dist/src/Model/Model.d.ts +2 -0
  68. package/dist/src/Model/Model.d.ts.map +1 -1
  69. package/dist/src/Model/service/actors/createModelProperties.d.ts.map +1 -1
  70. package/dist/src/ModelProperty/ModelProperty.d.ts +2 -0
  71. package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
  72. package/dist/src/Schema/Schema.d.ts +11 -2
  73. package/dist/src/Schema/Schema.d.ts.map +1 -1
  74. package/dist/src/Schema/service/actors/checkExistingSchema.d.ts.map +1 -1
  75. package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
  76. package/dist/src/Schema/service/schemaMachine.d.ts.map +1 -1
  77. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts +4 -1
  78. package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
  79. package/dist/src/db/Db/BaseDb.d.ts +5 -2
  80. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  81. package/dist/src/db/write/updateItemPropertyValue.d.ts.map +1 -1
  82. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  83. package/dist/src/helpers/db.d.ts.map +1 -1
  84. package/dist/src/helpers/entity/draftSaveErrors.d.ts +4 -0
  85. package/dist/src/helpers/entity/draftSaveErrors.d.ts.map +1 -0
  86. package/dist/src/helpers/entity/entityUnload.d.ts +2 -1
  87. package/dist/src/helpers/entity/entityUnload.d.ts.map +1 -1
  88. package/dist/src/helpers/entity/evictionEpoch.d.ts +27 -2
  89. package/dist/src/helpers/entity/evictionEpoch.d.ts.map +1 -1
  90. package/dist/src/helpers/isSqliteUniqueConstraintError.d.ts.map +1 -1
  91. package/dist/src/helpers/model.d.ts.map +1 -1
  92. package/dist/src/helpers/propertyValidationRules.d.ts +12 -0
  93. package/dist/src/helpers/propertyValidationRules.d.ts.map +1 -0
  94. package/dist/src/helpers/propertyWriteQueue.d.ts +15 -0
  95. package/dist/src/helpers/propertyWriteQueue.d.ts.map +1 -0
  96. package/dist/src/helpers/schema.d.ts.map +1 -1
  97. package/dist/src/helpers/storageFileName.d.ts +7 -0
  98. package/dist/src/helpers/storageFileName.d.ts.map +1 -0
  99. package/dist/src/index.d.ts +1 -0
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/node/db/Db.d.ts +1 -1
  102. package/dist/src/node/db/Db.d.ts.map +1 -1
  103. package/dist/src/node/index.d.ts +1 -0
  104. package/dist/src/node/index.d.ts.map +1 -1
  105. package/dist/src/types/index.d.ts +12 -0
  106. package/dist/src/types/index.d.ts.map +1 -1
  107. package/dist/{syncDbWithEas-Bv2Fe38J.js → syncDbWithEas-B-Ho0IOB.js} +50 -27
  108. package/dist/syncDbWithEas-B-Ho0IOB.js.map +1 -0
  109. package/dist/{tabEvents-9s2WCYw-.js → tabEvents-BTzckWrN.js} +4 -4
  110. package/dist/{tabEvents-9s2WCYw-.js.map → tabEvents-BTzckWrN.js.map} +1 -1
  111. package/dist/{tolerantWebAccess-iUu80pAP.js → tolerantWebAccess-DOm2Xv-f.js} +6 -6
  112. package/dist/{tolerantWebAccess-iUu80pAP.js.map → tolerantWebAccess-DOm2Xv-f.js.map} +1 -1
  113. package/dist/{updateSeedRevokedAt-zBfi931j.js → updateSeedRevokedAt-IHXnJI-i.js} +3 -3
  114. package/dist/{updateSeedRevokedAt-zBfi931j.js.map → updateSeedRevokedAt-IHXnJI-i.js.map} +1 -1
  115. package/package.json +5 -5
  116. package/dist/BasePathResolver-Cm4apKRb.js.map +0 -1
  117. package/dist/ClientManager-i3nJASkg.js.map +0 -1
  118. package/dist/Item-DBFchXpC.js.map +0 -1
  119. package/dist/ModelProperty-BS49g01Y.js.map +0 -1
  120. package/dist/Schema-CpMNEnUO.js.map +0 -1
  121. package/dist/SchemaValidationService-DieV4KL-.js.map +0 -1
  122. package/dist/index-8O3Uow-Y.js.map +0 -1
  123. package/dist/index-AVFTVp1m.js.map +0 -1
  124. package/dist/index-Cvt5UBz4.js.map +0 -1
  125. package/dist/index.node-CJhlcNHM.js.map +0 -1
  126. package/dist/model-DGMe-TTm.js.map +0 -1
  127. package/dist/syncDbWithEas-Bv2Fe38J.js.map +0 -1
@@ -1,19 +1,19 @@
1
1
  import path from 'path';
2
2
  import * as fs from 'fs';
3
3
  import fs__default from 'fs';
4
- import { J as BaseFileManager, h as appState, I as BasePathResolver, E as BaseDb, a6 as SEED_CONFIG_FILE, a7 as SEED_CONFIG_FALLBACKS } from './BasePathResolver-Cm4apKRb.js';
4
+ import { J as BaseFileManager, h as appState, I as BasePathResolver, E as BaseDb, a6 as SEED_CONFIG_FILE, a7 as SEED_CONFIG_FALLBACKS } from './BasePathResolver-DxdS0wJ0.js';
5
5
  import debug from 'debug';
6
6
  import * as fsAsync from 'fs/promises';
7
7
  import { pathToFileURL } from 'url';
8
8
  import { fileURLToPath } from 'node:url';
9
- import { s as schema } from './index-AVFTVp1m.js';
9
+ import { s as schema } from './index-DAl9U4rn.js';
10
10
  import { createClient } from '@libsql/client';
11
11
  import { drizzle } from 'drizzle-orm/libsql';
12
12
  import { migrate } from 'drizzle-orm/libsql/migrator';
13
13
  import { interval, startWith, switchMap, distinctUntilChanged } from 'rxjs';
14
14
  import { NodeArweaveClient } from '@seedprotocol/arweave/node';
15
15
  import { NodeQueryClient, NodeEasClient } from '@seedprotocol/eas/node';
16
- import './configurePlatform-D0lQGAMQ.js';
16
+ import './configurePlatform-DlZ23w7e.js';
17
17
 
18
18
  class NodeFileManager {
19
19
  async getFs() {
@@ -239,8 +239,8 @@ class NodeDb {
239
239
  /**
240
240
  * Copy prebuilt SQL migrations into the app db directory (overwrite to stay current).
241
241
  */
242
- copyDrizzleFiles(filesDir, migrationsSourceDir) {
243
- const { outDir } = resolveDbPaths(filesDir);
242
+ copyDrizzleFiles(filesDir, migrationsSourceDir, config) {
243
+ const { outDir } = resolveDbPaths(filesDir, config);
244
244
  const source = migrationsSourceDir || resolveSdkDrizzleMigrationsDir();
245
245
  logger$1('[Db.copyDrizzleFiles] copying from %s to %s', source, outDir);
246
246
  copyDirRecursive(source, outDir);
@@ -256,7 +256,7 @@ class NodeDb {
256
256
  fs__default.mkdirSync(outDir, { recursive: true });
257
257
  }
258
258
  // Install SDK migration SQL next to the DB (same source of truth as browser)
259
- this.copyDrizzleFiles(resolvedFilesDir);
259
+ this.copyDrizzleFiles(resolvedFilesDir, undefined, config);
260
260
  const dbUrl = config?.dbUrl
261
261
  ? (config.dbUrl.startsWith('file:') ? config.dbUrl : `file:${path.resolve(config.dbUrl)}`)
262
262
  : `file:${path.resolve(dbPath)}`;
@@ -265,10 +265,10 @@ class NodeDb {
265
265
  logger$1('[Db.prepareDb] running migrations from %s', outDir);
266
266
  await migrate(db, { migrationsFolder: outDir });
267
267
  this.db = db;
268
- const { backfillMetadataPropertyIds } = await import('./backfillMetadataPropertyIds-DSoOoTnX.js');
268
+ const { backfillMetadataPropertyIds } = await import('./backfillMetadataPropertyIds-DacVthS5.js');
269
269
  await backfillMetadataPropertyIds();
270
270
  // One-time: clear item data whose model can't be determined (seeds.model_file_id, migration 0015)
271
- const { resetAmbiguousLegacyItemData } = await import('./resetAmbiguousLegacyItemData-BkYmBeJc.js');
271
+ const { resetAmbiguousLegacyItemData } = await import('./resetAmbiguousLegacyItemData-CcLFRREE.js');
272
272
  await resetAmbiguousLegacyItemData();
273
273
  return this.db;
274
274
  }
@@ -527,4 +527,4 @@ function createPlatformServices() {
527
527
  }
528
528
 
529
529
  export { Db as D, FileManager as F, PathResolver as P, createPlatformServices as c, resolveSdkDrizzleMigrationsDir as r };
530
- //# sourceMappingURL=index.node-CJhlcNHM.js.map
530
+ //# sourceMappingURL=index.node-C9VB9NlX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.node-C9VB9NlX.js","sources":["../../src/node/helpers/FileManager.ts","../../src/node/db/Db.ts","../../src/node/helpers/PathResolver.ts","../../src/platform/index.node.ts"],"sourcesContent":["import * as fsAsync from 'fs/promises'\nimport * as fs from 'fs'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\nimport type { IFileManager } from '@/helpers/FileManager/IFileManager'\nimport path from 'path'\nimport { pathToFileURL } from 'url'\n\nexport class NodeFileManager implements IFileManager {\n async getFs() {\n return fs\n }\n\n getFsSync() {\n return fs\n }\n\n /** Node has no blob URLs; a file:// URL keeps refResolvedDisplayValue meaningful for server callers. */\n async getContentUrlFromPath(filePath: string): Promise<string | undefined> {\n return pathToFileURL(path.resolve(filePath)).href\n }\n\n async initializeFileSystem(_workingDir?: string): Promise<void> {\n return // No need to initialize file system in node\n }\n\n async downloadAllFiles(): Promise<void> {\n throw new Error('Not implemented')\n }\n\n async resizeImage(): Promise<void> {\n throw new Error('Not implemented')\n }\n\n async resizeAllImages(): Promise<void> {\n throw new Error('Not implemented')\n }\n\n async pathExists(filePath: string): Promise<boolean> {\n return await fsAsync.access(filePath).then(() => true).catch(() => false)\n }\n\n /** Node reads the real file system; nothing is cached. */\n async invalidateCachedPaths(): Promise<void> {}\n\n async getFileSize(filePath: string): Promise<number | null> {\n try {\n const stat = await fsAsync.stat(filePath)\n return stat.size\n } catch {\n return null\n }\n }\n\n async listImageFiles(): Promise<string[]> {\n return this.listFiles('images')\n }\n\n async listFiles(dir: string): Promise<string[]> {\n const targetDir = BaseFileManager.getFilesPath(dir)\n const exists = await this.pathExists(targetDir)\n if (!exists) {\n return []\n }\n const entries = await fsAsync.readdir(targetDir, { withFileTypes: true })\n return entries.filter((entry) => entry.isFile()).map((entry) => entry.name)\n }\n\n async createDirIfNotExists(filePath: string): Promise<void> {\n await fsAsync.mkdir(filePath, { recursive: true })\n }\n\n async waitForFile(filePath: string, interval: number = 1000, timeout: number = 60000): Promise<boolean> {\n const pathExists = await this.pathExists(filePath)\n if (pathExists) {\n return true\n }\n\n return new Promise((resolve, reject) => {\n const startTime = Date.now()\n let isBusy = false\n\n const checkInterval = setInterval(async () => {\n if (isBusy) {\n return\n }\n isBusy = true\n\n try {\n const exists = await this.pathExists(filePath)\n if (exists) {\n clearInterval(checkInterval)\n resolve(true)\n return\n }\n\n if (Date.now() - startTime >= timeout) {\n clearInterval(checkInterval)\n reject(new Error('Timeout exceeded while waiting for file'))\n return\n }\n } catch (error) {\n clearInterval(checkInterval)\n reject(error)\n return\n } finally {\n isBusy = false\n }\n }, interval)\n })\n }\n\n async waitForFileWithContent(filePath: string, interval: number = 100, timeout: number = 5000): Promise<boolean> {\n return this.waitForFile(filePath, interval, timeout)\n }\n\n async saveFile(filePath: string, content: string | Blob | ArrayBuffer): Promise<void> {\n const dir = path.dirname(filePath)\n await fsAsync.mkdir(dir, { recursive: true })\n\n if (typeof content === 'string') {\n await fsAsync.writeFile(filePath, content, 'utf-8')\n } else if (content instanceof Blob) {\n const arrayBuffer = await content.arrayBuffer()\n await fsAsync.writeFile(filePath, new Uint8Array(arrayBuffer))\n } else if (content instanceof ArrayBuffer) {\n await fsAsync.writeFile(filePath, new Uint8Array(content))\n } else {\n throw new Error('Unsupported content type')\n }\n }\n\n saveFileSync(filePath: string, content: string | Blob | ArrayBuffer): void {\n const dir = path.dirname(filePath)\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true })\n }\n\n if (typeof content === 'string') {\n fs.writeFileSync(filePath, content, 'utf-8')\n } else if (content instanceof Blob) {\n throw new Error('Blob content not supported in saveFileSync. Use saveFile() instead or convert to ArrayBuffer first.')\n } else if (content instanceof ArrayBuffer) {\n fs.writeFileSync(filePath, new Uint8Array(content))\n } else {\n throw new Error('Unsupported content type')\n }\n }\n\n async readFileAsBuffer(filePath: string): Promise<Buffer> {\n return await fsAsync.readFile(filePath)\n }\n\n async readFileAsString(filePath: string): Promise<string> {\n return await fsAsync.readFile(filePath, 'utf-8')\n }\n\n async readFile(filePath: string): Promise<File> {\n return new File([await fsAsync.readFile(filePath)], filePath)\n }\n\n readFileSync(filePath: string): File {\n return new File([fs.readFileSync(filePath)], filePath)\n }\n\n getParentDirPath(filePath: string): string {\n return path.dirname(filePath)\n }\n\n getFilenameFromPath(filePath: string): string {\n return path.basename(filePath)\n }\n\n getPathModule(): any {\n return path\n }\n}\n\n/** @deprecated Prefer NodeFileManager */\nexport const FileManager = NodeFileManager\n\nBaseFileManager.configure(new NodeFileManager())\n\nconst _check: IFileManager = new NodeFileManager()\nvoid _check\n","import { BaseDb } from '@/db/Db/BaseDb'\nimport type { IDb } from '@/interfaces/IDb'\nimport path from 'path'\nimport { fileURLToPath } from 'node:url'\nimport debug from 'debug'\nimport { appState } from '@/seedSchema'\nimport fs from 'fs'\nimport { createClient } from '@libsql/client'\nimport { drizzle } from 'drizzle-orm/libsql'\nimport { migrate } from 'drizzle-orm/libsql/migrator'\nimport * as schema from '@/seedSchema'\nimport { Observable, interval, switchMap, distinctUntilChanged, startWith } from 'rxjs'\nimport { BasePathResolver } from '@/helpers/PathResolver/BasePathResolver'\n\nconst logger = debug('seedSdk:node:db:Db')\n\nexport interface DbConfig {\n dbUrl?: string\n /** @deprecated Unused — schema is the static SDK seedSchema + prebuilt SQL migrations */\n schemaDir?: string\n outDir?: string\n}\n\nfunction resolveDbPaths(filesDir: string, config?: DbConfig) {\n const outDir = config?.outDir || path.join(filesDir, 'db')\n const dbPath = config?.dbUrl\n ? (config.dbUrl.startsWith('file:') ? config.dbUrl.replace(/^file:/, '') : config.dbUrl)\n : path.join(outDir, 'seed.db')\n return { outDir, dbPath }\n}\n\n/**\n * Locate prebuilt drizzle migration SQL shipped with the SDK\n * (same files the browser embeds via drizzleFiles.ts).\n */\nexport function resolveSdkDrizzleMigrationsDir(sdkRootDir?: string): string {\n const root =\n sdkRootDir ||\n (() => {\n try {\n return BasePathResolver.getSdkRootDir()\n } catch {\n return process.cwd()\n }\n })()\n\n // Look next to this module first, so the SDK always runs its own migrations\n // whatever the working directory (monorepos, packaged Electron apps, scripts\n // run from elsewhere). Rollup bundles this file into a chunk directly under\n // dist/, next to the copied dist/db/drizzle.\n const moduleDir = path.dirname(fileURLToPath(import.meta.url))\n\n const candidates = [\n path.join(moduleDir, 'db', 'drizzle'), // bundled: dist/<chunk>.js -> dist/db/drizzle\n path.join(moduleDir, '..', '..', 'db', 'drizzle'), // source: src/node/db -> src/db/drizzle\n path.join(moduleDir, '..', 'db', 'drizzle'), // dist layout variants\n path.join(moduleDir, '..', '..', '..', 'src', 'db', 'drizzle'), // dist/node -> src\n path.join(root, 'db', 'drizzle'), // production: sdkRoot is dist/\n path.join(root, 'dist', 'db', 'drizzle'), // sdk package root with built dist\n path.join(root, 'src', 'db', 'drizzle'), // monorepo / sdk-dev\n path.join(root, 'packages', 'sdk', 'src', 'db', 'drizzle'), // monorepo root as cwd\n path.join(root, 'packages', 'sdk', 'dist', 'db', 'drizzle'),\n ]\n\n for (const candidate of candidates) {\n if (fs.existsSync(path.join(candidate, 'meta', '_journal.json'))) {\n return candidate\n }\n }\n\n throw new Error(\n `Could not find SDK drizzle migrations (meta/_journal.json). Searched under: ${candidates.join(', ')}`,\n )\n}\n\nfunction copyDirRecursive(sourceDir: string, targetDir: string) {\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true })\n }\n for (const entry of fs.readdirSync(sourceDir)) {\n const sourcePath = path.join(sourceDir, entry)\n const targetPath = path.join(targetDir, entry)\n const stats = fs.statSync(sourcePath)\n if (stats.isDirectory()) {\n copyDirRecursive(sourcePath, targetPath)\n } else {\n fs.copyFileSync(sourcePath, targetPath)\n }\n }\n}\n\nexport class NodeDb implements IDb {\n db: any\n\n\n getAppDb() {\n return this.db\n }\n\n isAppDbReady() {\n return true\n }\n\n /**\n * Copy prebuilt SQL migrations into the app db directory (overwrite to stay current).\n */\n copyDrizzleFiles(filesDir: string, migrationsSourceDir?: string, config?: DbConfig): string {\n const { outDir } = resolveDbPaths(filesDir, config)\n const source = migrationsSourceDir || resolveSdkDrizzleMigrationsDir()\n logger('[Db.copyDrizzleFiles] copying from %s to %s', source, outDir)\n copyDirRecursive(source, outDir)\n return outDir\n }\n\n async prepareDb(filesDir: string, config?: DbConfig) {\n const resolvedFilesDir = path.resolve(filesDir)\n\n if (!fs.existsSync(resolvedFilesDir)) {\n fs.mkdirSync(resolvedFilesDir, { recursive: true })\n }\n\n const { outDir, dbPath } = resolveDbPaths(resolvedFilesDir, config)\n\n if (!fs.existsSync(outDir)) {\n fs.mkdirSync(outDir, { recursive: true })\n }\n\n // Install SDK migration SQL next to the DB (same source of truth as browser)\n this.copyDrizzleFiles(resolvedFilesDir, undefined, config)\n\n const dbUrl = config?.dbUrl\n ? (config.dbUrl.startsWith('file:') ? config.dbUrl : `file:${path.resolve(config.dbUrl)}`)\n : `file:${path.resolve(dbPath)}`\n\n const client = createClient({ url: dbUrl })\n const db = drizzle(client, { schema })\n\n logger('[Db.prepareDb] running migrations from %s', outDir)\n await migrate(db, { migrationsFolder: outDir })\n\n this.db = db\n\n const { backfillMetadataPropertyIds } = await import('@/db/backfillMetadataPropertyIds')\n await backfillMetadataPropertyIds()\n\n // One-time: clear item data whose model can't be determined (seeds.model_file_id, migration 0015)\n const { resetAmbiguousLegacyItemData } = await import('@/db/resetAmbiguousLegacyItemData')\n await resetAmbiguousLegacyItemData()\n\n return this.db\n }\n\n async connectToDb(_pathToDir: string) {\n return {\n id: this.db ? this.db.constructor.name : '',\n }\n }\n\n async migrate(pathToDbDir: string, _dbName: string, _dbId: string) {\n try {\n if (!this.db) {\n throw new Error('Database not initialized. Call prepareDb first.')\n }\n\n await migrate(this.db, { migrationsFolder: pathToDbDir })\n const queryResult = await this.db.select().from(appState)\n logger('queryResult', queryResult)\n } catch (error: any) {\n const errorMessage = error.message || String(error) || ''\n const errorString = String(error)\n const isMigrationError =\n errorMessage.includes(\"Can't find meta/_journal.json\") ||\n errorMessage.includes('_journal.json') ||\n errorMessage.includes(\"Cannot read properties of undefined\") ||\n errorMessage.includes(\"reading 'dialect'\") ||\n errorMessage.includes('undefined is not an object') ||\n errorString.includes('dialect') ||\n errorString.includes('undefined is not an object')\n\n if (isMigrationError) {\n if (process.env.NODE_ENV === 'test' || process.env.IS_SEED_DEV) {\n logger(\n 'Warning: Migration failed, but continuing in test environment:',\n errorMessage || errorString,\n )\n return this.db\n }\n }\n throw error\n }\n\n return this.db\n }\n\n /**\n * Polling-based liveQuery stub for Node. Prefer browser reactive queries in UI apps.\n */\n liveQuery<T>(query: ((sql: any) => any) | any): Observable<T[]> {\n if (!this.db) {\n throw new Error('Database not initialized. Call prepareDb first.')\n }\n\n const pollInterval = 1000\n\n if (typeof query === 'function') {\n throw new Error(\n 'SQL tag functions are not supported in node liveQuery stub implementation. Use Drizzle query builders instead.',\n )\n }\n\n const queryBuilder = query\n\n return interval(pollInterval).pipe(\n startWith(0),\n switchMap(async () => {\n try {\n const result = await Promise.resolve(queryBuilder)\n return result as T[]\n } catch (error) {\n logger('[Db.liveQuery] Error executing query:', error)\n throw error\n }\n }),\n distinctUntilChanged((prev, curr) => {\n return JSON.stringify(prev) === JSON.stringify(curr)\n }),\n )\n }\n}\n\n/** @deprecated Prefer NodeDb */\nexport const Db = NodeDb\n\nBaseDb.configure(new NodeDb())\n\nconst _check: IDb = new NodeDb()\nvoid _check\n","import path from 'path'\nimport fs from 'fs'\nimport { SEED_CONFIG_FILE, SEED_CONFIG_FALLBACKS } from '@/helpers/constants'\nimport type { IPathResolver } from '@/helpers/PathResolver/IPathResolver'\nimport { BasePathResolver } from '@/helpers/PathResolver/BasePathResolver'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:node:helpers:PathResolver')\n\nexport class NodePathResolver implements IPathResolver {\n /** @deprecated Prefer BasePathResolver static methods or configure(). */\n static getInstance(): IPathResolver {\n return BasePathResolver.getInstance()\n }\n\n /**\n * Detects the current environment based on filesystem structure and package.json\n */\n private detectEnvironment(): 'sdk-dev' | 'linked-sdk' | 'production' | 'test' {\n // Check if we're in the SDK repo itself\n if (process.env.NODE_ENV !== 'test' && this.isInSdkRepo()) {\n return 'sdk-dev'\n }\n\n // Check if we're running tests\n if (process.env.NODE_ENV === 'test') {\n return 'test'\n }\n\n // Check if we're using a linked version of the SDK\n if (this.isUsingLinkedSdk()) {\n return 'linked-sdk'\n }\n\n // Default to production environment\n return 'production'\n }\n\n private isInSdkRepo(): boolean {\n try {\n const currentDir = process.cwd()\n // Check when running from packages/sdk (SDK package root)\n if (fs.existsSync(path.join(currentDir, 'src', 'node')) &&\n fs.existsSync(path.join(currentDir, 'package.json')) &&\n JSON.parse(fs.readFileSync(path.join(currentDir, 'package.json'), 'utf8')).name === '@seedprotocol/sdk') {\n return true\n }\n // Check when running from monorepo root\n if (fs.existsSync(path.join(currentDir, 'packages', 'sdk', 'src', 'node')) &&\n fs.existsSync(path.join(currentDir, 'packages', 'sdk', 'package.json')) &&\n JSON.parse(fs.readFileSync(path.join(currentDir, 'packages', 'sdk', 'package.json'), 'utf8')).name === '@seedprotocol/sdk') {\n return true\n }\n return false\n } catch {\n return false\n }\n }\n\n private isUsingLinkedSdk(): boolean {\n try {\n const pkgPath = path.join(process.cwd(), 'package.json')\n if (!fs.existsSync(pkgPath)) return false\n \n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))\n const sdkDep = pkg.dependencies?.['@seedprotocol/sdk']\n \n return sdkDep && (sdkDep.startsWith('link:') || sdkDep.startsWith('portal:'))\n } catch {\n return false\n }\n }\n\n /**\n * Gets the root directory containing node_modules\n */\n getRootWithNodeModules(): string {\n const processCwd = process.cwd()\n\n const calledFromMocks = processCwd.includes('__mocks__')\n\n if (calledFromMocks) {\n return path.join(processCwd, '..', '..', '..', '..',)\n }\n\n return processCwd\n }\n\n /**\n * Gets the SDK root directory\n */\n getSdkRootDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n const processCwd = process.cwd()\n\n // For test environment, always return the SDK root directory\n if (env === 'test') {\n return rootWithNodeModules\n }\n\n if (env === 'linked-sdk') {\n // For linked packages, find the package directory\n const pkgJson = JSON.parse(fs.readFileSync(path.join(processCwd, 'package.json'), 'utf8'))\n const sdkPath = pkgJson.dependencies?.['@seedprotocol/sdk'] || pkgJson.devDependencies?.['@seedprotocol/sdk']\n if (sdkPath === 'link:@seedprotocol/sdk') {\n return path.join(processCwd, 'node_modules', '@seedprotocol', 'sdk',)\n }\n return path.resolve(processCwd, sdkPath.replace(/^(link:|portal:)/, ''))\n }\n\n // After early returns, env can only be 'sdk-dev' or 'production'\n if (env === 'sdk-dev') {\n // When running from monorepo root, SDK root is packages/sdk\n if (fs.existsSync(path.join(rootWithNodeModules, 'packages', 'sdk', 'package.json'))) {\n return path.join(rootWithNodeModules, 'packages', 'sdk')\n }\n // When running from packages/sdk directly\n return rootWithNodeModules\n }\n \n // Production: {sdk package}/dist. Resolve the installed package rather than\n // assuming it sits under the working directory: hoisted monorepos, packaged\n // Electron apps and scripts run from another directory all differ.\n try {\n const { createRequire } = process.getBuiltinModule('node:module')\n const pkgJson = createRequire(import.meta.url).resolve('@seedprotocol/sdk/package.json')\n return path.join(path.dirname(pkgJson), 'dist')\n } catch {\n return path.join(rootWithNodeModules, 'node_modules', '@seedprotocol', 'sdk', 'dist')\n }\n }\n\n getNodeModulesDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n\n let nodeModulesDir = path.join(rootWithNodeModules, 'node_modules')\n\n if (env !== 'linked-sdk' && env !== 'sdk-dev' && nodeModulesDir.includes('__tests__')) {\n nodeModulesDir = path.join(process.cwd(), '..', '..', '..', '..', 'node_modules',)\n }\n\n return nodeModulesDir\n }\n\n /**\n * Gets the .seed directory path\n */\n getDotSeedDir(schemaFileDir?: string): string {\n if (!schemaFileDir && process.env.SEED_SDK_TEST_PROJECT_TYPE && !process.cwd().includes('__mocks__')) {\n return path.join(process.cwd(), '__tests__', '__mocks__', process.env.SEED_SDK_TEST_PROJECT_TYPE, 'project', '.seed')\n }\n return path.join(schemaFileDir || process.cwd(), '.seed')\n }\n\n /**\n * Finds the Seed Protocol config file in the given directory\n * @param searchDir - Directory to search for the config file\n * @returns The path to the found config file, or null if not found\n */\n findConfigFile(searchDir: string = process.cwd()): string | null {\n // First try the primary config file name\n const primaryPath = path.join(searchDir, SEED_CONFIG_FILE)\n if (fs.existsSync(primaryPath)) {\n return primaryPath\n }\n\n // Then try fallback names in order\n for (const fallbackName of SEED_CONFIG_FALLBACKS) {\n const fallbackPath = path.join(searchDir, fallbackName)\n if (fs.existsSync(fallbackPath)) {\n return fallbackPath\n }\n }\n\n return null\n }\n\n /**\n * Gets paths for app-specific directories\n */\n getAppPaths(schemaFileDir?: string | undefined) {\n const env = this.detectEnvironment()\n const dotSeedDir = this.getDotSeedDir(schemaFileDir)\n const nodeModulesDir = this.getNodeModulesDir()\n\n logger('env', env)\n\n logger('getAppPaths', {\n sdkRootDir: this.getSdkRootDir(),\n dotSeedDir,\n nodeModulesDir,\n appSchemaDir: path.join(dotSeedDir, 'schema'),\n appDbDir: path.join(dotSeedDir, 'db'),\n appMetaDir: path.join(dotSeedDir, 'db', 'meta'),\n })\n\n return {\n sdkRootDir: this.getSdkRootDir(),\n dotSeedDir,\n nodeModulesDir,\n appSchemaDir: path.join(dotSeedDir, 'schema'),\n appDbDir: path.join(dotSeedDir, 'db'),\n appMetaDir: path.join(dotSeedDir, 'db', 'meta'),\n }\n }\n}\n\n/** @deprecated Prefer NodePathResolver; kept for CLI / node entry exports. */\nexport const PathResolver = NodePathResolver\n\nBasePathResolver.configure(new NodePathResolver())\n\nconst _check: IPathResolver = new NodePathResolver()\nvoid _check\n","import { NodePathResolver } from '@/node/helpers/PathResolver'\nimport { NodeFileManager } from '@/node/helpers/FileManager'\nimport { NodeDb } from '@/node/db/Db'\nimport { NodeArweaveClient } from '@/node/helpers/ArweaveClient'\nimport { NodeEasClient } from '@/node/helpers/EasClient'\nimport { NodeQueryClient } from '@/node/helpers/QueryClient'\nimport type { PlatformServices } from './types'\n\nexport function createPlatformServices(): PlatformServices {\n return {\n pathResolver: new NodePathResolver(),\n fileManager: new NodeFileManager(),\n db: new NodeDb(),\n arweaveClient: new NodeArweaveClient(),\n easClient: new NodeEasClient(),\n queryClient: new NodeQueryClient(),\n }\n}\n\nexport { configurePlatform } from './configurePlatform'\nexport type { PlatformServices } from './types'\n"],"names":["logger","fs"],"mappings":"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"}
package/dist/main.js CHANGED
@@ -1,32 +1,32 @@
1
- export { C as ConflictError, M as Model } from './index-8O3Uow-Y.js';
2
- import { E as BaseDb, C as versions, X as normalizePublisher, A as seeds, $ as generateId, m as metadata, O as normalizeRelationPropertyValue, N as resolveSeedIdsFromRefString, i as isDataType, M as ModelPropertyDataTypes, o as htmlEmbeddedImageCoPublish, J as BaseFileManager, al as getArweaveUrlForTransaction, am as INTERNAL_STORAGE_MODEL_FILE_IDS, ad as INTERNAL_PROPERTY_NAMES, a9 as ZERO_BYTES32, n as normalizeDataType, R as getStorageDirForDataType } from './BasePathResolver-Cm4apKRb.js';
3
- export { F as AmbiguousModelError, an as CONTENT_SHA256_TAG, ao as CONTENT_TYPE_TAG, _ as EAS_SEED_DATA_SYNCED_TO_DB_EVENT, ag as INTERNAL_DATA_TYPES, ap as ImageSize, aq as SEED_PROTOCOL_SCHEMA_NAME, ar as SeedModels, as as VERSION_SCHEMA_DEF, ac as VERSION_SCHEMA_UID, at as VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA, h as appState, j as arweaveL1FinalizeJobs, U as buildArweaveContentTags, au as classifyMediaRef, av as closestImageSize, aw as contentSha256TagMatches, l as easSyncProcesses, ax as ensureImageLocal, G as eventEmitter, ay as getAddressesForItemsFilter, S as getContentSha256, a5 as getCorrectId, az as getFeedItemStringField, Q as isPublishedSeedRef, q as modelSchemas, r as modelUids, s as models, aA as normalizeAddressConfig, aB as normalizeAddressList, aC as normalizeArweaveTxIdForEnsure, aD as normalizeFeedItemFields, a0 as normalizeHexAddress, u as properties, x as propertyUids, y as publishProcesses, aE as resolveMediaRef, z as schemas, B as uploadProcesses } from './BasePathResolver-Cm4apKRb.js';
4
- export { getPropertySchema } from './property-DwPD283A.js';
5
- export { A as ADDRESSES_PERSISTED_EVENT, F as FILES_CHANGED_EVENT, L as LOCAL_COPIES_REMOVED_EVENT, T as TabLockTimeoutError, i as isLeaderTab, p as parseAddressesPersistedPayload, w as whenLeaderTab } from './tabEvents-9s2WCYw-.js';
6
- import { d as getContentHash } from './ClientManager-i3nJASkg.js';
7
- export { E as EAS_CHAIN_ID_APP_STATE_KEY, I as INIT_CONFIG_CONFLICT_MESSAGE, a as assertLocalDbChain, e as claimUnpublishedDrafts, C as client, f as createLocalQueryDataSource, h as createSchema, j as easSyncActor, k as getClient, m as getPublishedSeedRecord, n as getSchemaNameFromId, b as importJsonSchema, o as isSeedQueryLocalSourceRegistered, p as listSchemas, q as loadAllSchemasFromDb, u as mergeEasSyncRequestIntents, r as readJsonImportFile, v as readSchema, x as registerSeedQueryLocalSource, y as requestEasSyncFromAddressChange, z as requestEasSyncFromEventBus, A as requestEasSyncFromModelsInit, B as sendEasSyncClientRequest, D as startEasSyncActor, s as syncSchemaFromSource, t as transformImportToSchemaFile, F as unregisterSeedQueryLocalSource } from './ClientManager-i3nJASkg.js';
8
- import { m as isVersionRevoked, c as compareMetadataRowsLatestFirst, v as isPublishedMetadataRow, k as getLatestPublishedVersionRow, p as parseListPropertyValueFromStorage, I as Item, n as waitForEntityIdle } from './Item-DBFchXpC.js';
9
- export { C as ClientManagerState, e as ItemProperty, f as ItemPropertySaveValidationError, M as METADATA_LATEST_FIRST_ORDER_SQL, x as MachineIds, O as OwnershipError, P as PUBLISH_NOT_CONFIGURED_MESSAGE, h as assertItemOwned, y as createNewItem, z as getEasSchemaForItemProperty, d as getGetAdditionalSyncAddresses, A as getGetPublisherForNewSeeds, B as getMetadataLatest, E as getPublishExecutor, F as getRevokeExecutor, G as getUploadExecutor, H as getVersionData, i as isItemOwned, J as isLocalUnsealedDraft, K as isSeedRowOwned, l as listRelationEasPropertyName, L as localUnsealedDraftSql, N as ownedPublisherSql, Q as ownedSeedsSql, R as pickLatestMetadataRowPerProperty, S as placeholderUidSql, T as propertyMachine, U as publisherInAddressListSql, V as publisherIsInOwnedSet, W as setAdditionalSyncAddresses, X as setGetPublisherForNewSeeds, Y as setPublishExecutor, Z as setRevokeExecutor, _ as setUploadExecutor } from './Item-DBFchXpC.js';
1
+ export { C as ConflictError, I as ItemCreateValidationError, M as Model, U as UnknownModelError } from './errors-Cl8rbtKR.js';
2
+ import { E as BaseDb, C as versions, X as normalizePublisher, A as seeds, $ as generateId, m as metadata, O as normalizeRelationPropertyValue, N as resolveSeedIdsFromRefString, i as isDataType, M as ModelPropertyDataTypes, o as htmlEmbeddedImageCoPublish, J as BaseFileManager, al as getArweaveUrlForTransaction, am as INTERNAL_STORAGE_MODEL_FILE_IDS, ad as INTERNAL_PROPERTY_NAMES, a9 as ZERO_BYTES32, n as normalizeDataType, R as getStorageDirForDataType } from './BasePathResolver-DxdS0wJ0.js';
3
+ export { F as AmbiguousModelError, an as CONTENT_SHA256_TAG, ao as CONTENT_TYPE_TAG, _ as EAS_SEED_DATA_SYNCED_TO_DB_EVENT, ag as INTERNAL_DATA_TYPES, ap as ImageSize, aq as SEED_PROTOCOL_SCHEMA_NAME, ar as SeedModels, as as VERSION_SCHEMA_DEF, ac as VERSION_SCHEMA_UID, at as VERSION_SCHEMA_UID_OPTIMISM_SEPOLIA, h as appState, j as arweaveL1FinalizeJobs, U as buildArweaveContentTags, au as classifyMediaRef, av as closestImageSize, aw as contentSha256TagMatches, l as easSyncProcesses, ax as ensureImageLocal, G as eventEmitter, ay as getAddressesForItemsFilter, S as getContentSha256, a5 as getCorrectId, az as getFeedItemStringField, Q as isPublishedSeedRef, q as modelSchemas, r as modelUids, s as models, aA as normalizeAddressConfig, aB as normalizeAddressList, aC as normalizeArweaveTxIdForEnsure, aD as normalizeFeedItemFields, a0 as normalizeHexAddress, u as properties, x as propertyUids, y as publishProcesses, aE as resolveMediaRef, z as schemas, B as uploadProcesses } from './BasePathResolver-DxdS0wJ0.js';
4
+ export { getPropertySchema } from './property-Brgr5RdT.js';
5
+ export { A as ADDRESSES_PERSISTED_EVENT, F as FILES_CHANGED_EVENT, L as LOCAL_COPIES_REMOVED_EVENT, T as TabLockTimeoutError, i as isLeaderTab, p as parseAddressesPersistedPayload, w as whenLeaderTab } from './tabEvents-BTzckWrN.js';
6
+ import { d as getContentHash } from './ClientManager-De-vKHGe.js';
7
+ export { E as EAS_CHAIN_ID_APP_STATE_KEY, I as INIT_CONFIG_CONFLICT_MESSAGE, a as assertLocalDbChain, e as claimUnpublishedDrafts, C as client, f as createLocalQueryDataSource, h as createSchema, j as easSyncActor, k as getClient, m as getPublishedSeedRecord, n as getSchemaNameFromId, b as importJsonSchema, o as isSeedQueryLocalSourceRegistered, p as listSchemas, q as loadAllSchemasFromDb, u as mergeEasSyncRequestIntents, r as readJsonImportFile, v as readSchema, x as registerSeedQueryLocalSource, y as requestEasSyncFromAddressChange, z as requestEasSyncFromEventBus, A as requestEasSyncFromModelsInit, B as sendEasSyncClientRequest, D as startEasSyncActor, s as syncSchemaFromSource, t as transformImportToSchemaFile, F as unregisterSeedQueryLocalSource } from './ClientManager-De-vKHGe.js';
8
+ import { m as isVersionRevoked, c as compareMetadataRowsLatestFirst, v as isPublishedMetadataRow, k as getLatestPublishedVersionRow, p as parseListPropertyValueFromStorage, I as Item, n as waitForEntityIdle } from './Item-cq9VcsAY.js';
9
+ export { C as ClientManagerState, e as ItemProperty, f as ItemPropertySaveValidationError, M as METADATA_LATEST_FIRST_ORDER_SQL, x as MachineIds, O as OwnershipError, P as PUBLISH_NOT_CONFIGURED_MESSAGE, h as assertItemOwned, y as createNewItem, z as getEasSchemaForItemProperty, d as getGetAdditionalSyncAddresses, A as getGetPublisherForNewSeeds, B as getMetadataLatest, E as getPublishExecutor, F as getRevokeExecutor, G as getUploadExecutor, H as getVersionData, i as isItemOwned, J as isLocalUnsealedDraft, K as isSeedRowOwned, l as listRelationEasPropertyName, L as localUnsealedDraftSql, N as ownedPublisherSql, Q as ownedSeedsSql, R as pickLatestMetadataRowPerProperty, S as placeholderUidSql, T as propertyMachine, U as publisherInAddressListSql, V as publisherIsInOwnedSet, W as setAdditionalSyncAddresses, X as setGetPublisherForNewSeeds, Y as setPublishExecutor, Z as setRevokeExecutor, _ as setUploadExecutor } from './Item-cq9VcsAY.js';
10
10
  import { eq, desc, and, or, isNotNull, ne } from 'drizzle-orm';
11
11
  import { isPlaceholderUid, isValidEasAttestationUid, normalizeBytes32Hex } from '@seedprotocol/eas';
12
12
  export { EAS_CHAIN_DEPLOYMENTS, BaseEasClient as EasClient, getCanonicalItemPropertiesFromEas, getEasChainDeployment, getEasEndpoint, getEasReadChainId, getEasSchemaUidBySchemaName, getItemPropertiesFromEas, getItemVersionsFromEas, getSeedsBySchemaName, getSeedsFromSchemaUids, isPlaceholderUid, isValidEasAttestationUid, normalizeBytes32Hex, pickLatestPropertyAttestationsByRefAndSchema, setSchemaUidForModel, setSchemaUidForSchemaDefinition, withExcludeRevokedFilter } from '@seedprotocol/eas';
13
- export { S as Schema, d as deleteModelFromSchema, a as deletePropertyFromModel, r as renameModelProperty, s as schemaMachine, u as updateModelProperties } from './Schema-CpMNEnUO.js';
13
+ export { S as Schema, d as deleteModelFromSchema, a as deletePropertyFromModel, r as renameModelProperty, s as schemaMachine, u as updateModelProperties } from './Schema-Dc5EA8Yb.js';
14
14
  export { F as FileSystemLockedError } from './errors-CrBxGWah.js';
15
- export { M as MODEL_AMBIGUOUS_EVENT } from './resolveModelForSyncedSeed-BL24nLa7.js';
16
- export { ModelProperty } from './ModelProperty-BS49g01Y.js';
17
- export { getModelSchemasFromEas } from './eas-6pjU-OuX.js';
15
+ export { M as MODEL_AMBIGUOUS_EVENT } from './resolveModelForSyncedSeed-BTAeCOJE.js';
16
+ export { ModelProperty } from './ModelProperty-DuuoFXaC.js';
17
+ export { getModelSchemasFromEas } from './eas-D_6ptL_F.js';
18
18
  export { BaseArweaveClient, DEFAULT_ARWEAVE_GATEWAYS, DEFAULT_ARWEAVE_GRAPHQL_URL, DEFAULT_ARWEAVE_HOST, DEFAULT_GATEWAY_SIDECAR_HOST, DEFAULT_GATEWAY_SIDECAR_PORT, DEFAULT_SEED_FEED_HYPER_KEY, DEFAULT_SEED_GATEWAY_HYPER_KEY, SEED_RSS_IMAGE_RELATION_FIELD_KEYS, ensureReadGatewaySelected, fetchArweaveRawFromBaseUrl, fetchArweaveRawTextAcrossGateways, getArweaveReadBaseUrls, getArweaveUploadStatus, getDefaultArweaveReadGatewayHostsOrdered, getLastHealthyReadGatewayHost, getPreferredArweaveReadBaseUrls, getReadGatewayHostsForConfig, getResolvedArweaveReadBaseUrls, getResolvedSeedGatewayEndpoints, getUploadApiArweaveDataUrl, getUploadApiArweaveStatusUrl, getUploadPipelineTransactionStatus, hasArweaveContentReadTransform, invalidateReadGatewayCache, invalidateSidecarProbeCache, isArweaveL1AnchoringComplete, isEasAttestationExplorerUrl, isGatewayHostCircuitOpen, isKnownArweaveGatewayHostname, isReadGatewayKnownHealthy, mergePrimaryHostWithDefaults, normalizeGatewayHostKey, normalizeUploadApiBaseUrl, queryArweaveGatewayTransaction, queryArweaveGatewayTransactionWithFallback, readArweaveContentResponse, recordGatewayHostFailure, recordGatewayHostSuccess, resetArweaveReadGatewayForTests, resolveSeedGatewayEndpoints, resolveSeedRssImageRelationFromItem, resolveSeedRssImageRelationRef, seedGatewayConfigFromClientContext, seedGatewayConfigFromSeedConfig, setArweaveContentReadTransform, setPreferredArweaveReadBaseUrls, setResolvedSeedGatewayEndpoints, transformArweaveContent } from '@seedprotocol/arweave';
19
- export { u as updateSeedRevokedAt } from './updateSeedRevokedAt-zBfi931j.js';
20
- import { a as getSegmentedItemProperties, g as getPublishDraftGraph, i as isSeedRevoked, f as findRelatedSeedRow, b as isUnpublishedSeed, h as htmlPropertyNameForHtmlSeed, r as relatedModelNameFromDef } from './publishDraftGraph-BOn3_Occ.js';
21
- export { P as PublishValidationFailedError, R as RELATED_ITEM_UNPUBLISHED_CODE, a as RelatedItemUnpublishedError, r as resolvePublishPayloadValues, v as validateItemForPublish } from './getPublishPayload-CTCvRUoU.js';
19
+ export { u as updateSeedRevokedAt } from './updateSeedRevokedAt-IHXnJI-i.js';
20
+ import { a as getSegmentedItemProperties, g as getPublishDraftGraph, i as isSeedRevoked, f as findRelatedSeedRow, b as isUnpublishedSeed, h as htmlPropertyNameForHtmlSeed, r as relatedModelNameFromDef } from './publishDraftGraph-C37ibxb5.js';
21
+ export { P as PublishValidationFailedError, R as RELATED_ITEM_UNPUBLISHED_CODE, a as RelatedItemUnpublishedError, r as resolvePublishPayloadValues, v as validateItemForPublish } from './getPublishPayload-C278kK9P.js';
22
22
  import 'pluralize';
23
- export { getPublishUploadData, itemHasPublishUploadCandidates } from './getPublishUploads-SFHCbf_y.js';
23
+ export { getPublishUploadData, itemHasPublishUploadCandidates } from './getPublishUploads-DJ1UPh7i.js';
24
24
  import { parseFragment } from 'parse5';
25
25
  import 'js-yaml';
26
26
  import 'fs';
27
27
  import 'xstate';
28
28
  import 'debug';
29
- import './model-DGMe-TTm.js';
29
+ import './model-oHA3YhOd.js';
30
30
  import 'drizzle-orm/casing';
31
31
  import '@sinclair/typebox';
32
32
  import 'drizzle-orm/sqlite-core';
@@ -38,7 +38,7 @@ import '@noble/hashes/sha256';
38
38
  import '@noble/hashes/sha3';
39
39
  import '@noble/hashes/utils';
40
40
  import 'rxjs';
41
- import './SchemaValidationService-DieV4KL-.js';
41
+ import './SchemaValidationService-DViJ056F.js';
42
42
  import '@sinclair/typebox/value';
43
43
  import './mimeTypes-DHAHC4eZ.js';
44
44
 
@@ -526,7 +526,7 @@ async function getRelatedItemsForPublish(item, visited = new Set()) {
526
526
  visited.add(seedLocalId);
527
527
  const result = [];
528
528
  const { itemRelationProperties, itemImageProperties, itemListProperties } = await getSegmentedItemProperties(item);
529
- const getItemMod = await import('./getItem-CxBNZ-WL.js');
529
+ const getItemMod = await import('./getItem-BcmJcUZB.js');
530
530
  const { getItem } = getItemMod;
531
531
  const processRelationOrImage = async (prop) => {
532
532
  const snapshot = prop.getService().getSnapshot();
@@ -545,7 +545,7 @@ async function getRelatedItemsForPublish(item, visited = new Set()) {
545
545
  if (!value && prop.propertyName && isStorageSeed) {
546
546
  const ctx = context;
547
547
  if (ctx.seedLocalId || ctx.seedUid) {
548
- const _mod_0 = await import('./Item-DBFchXpC.js');
548
+ const _mod_0 = await import('./Item-cq9VcsAY.js');
549
549
  const _ns_0 = _mod_0.a7;
550
550
  const { getPropertyData } = _ns_0;
551
551
  const meta = await getPropertyData({
@@ -897,7 +897,7 @@ async function prepareHtmlEmbeddedImagesForPublish(item, publishPolicy) {
897
897
  * (publishDraftGraph.ts). Html-embedded images of these items are co-published with `item` like its own.
898
898
  */
899
899
  async function getRelatedDraftsCoPublishedWith(item) {
900
- const _mod_1 = await import('./publishDraftGraph-BOn3_Occ.js');
900
+ const _mod_1 = await import('./publishDraftGraph-C37ibxb5.js');
901
901
  const _ns_1 = _mod_1.p;
902
902
  const { getPublishDraftGraph } = _ns_1;
903
903
  const { drafts } = await getPublishDraftGraph(item);
@@ -1202,7 +1202,7 @@ async function loadRelatedItem(value) {
1202
1202
  const { seedLocalId, seedUid } = resolveSeedIdsFromRefString(normalized);
1203
1203
  if (!seedLocalId && !seedUid)
1204
1204
  return undefined;
1205
- const { getItem } = await import('./getItem-CxBNZ-WL.js');
1205
+ const { getItem } = await import('./getItem-BcmJcUZB.js');
1206
1206
  try {
1207
1207
  return await getItem({ seedLocalId, seedUid });
1208
1208
  }
@@ -1298,7 +1298,7 @@ async function appendCoPublishImages(item, acc, seen, visited, forceFullSnapshot
1298
1298
  .from(htmlEmbeddedImageCoPublish)
1299
1299
  .where(eq(htmlEmbeddedImageCoPublish.parentSeedLocalId, item.seedLocalId));
1300
1300
  for (const row of rows) {
1301
- const _mod_2 = await import('./Item-DBFchXpC.js');
1301
+ const _mod_2 = await import('./Item-cq9VcsAY.js');
1302
1302
  const _ns_2 = _mod_2.a8;
1303
1303
  const { Item } = _ns_2;
1304
1304
  const imageItem = await Item.find({
@@ -15,6 +15,10 @@ function modelPropertiesToObject(properties) {
15
15
  localStorageDir: propContext.localStorageDir,
16
16
  filenameSuffix: propContext.filenameSuffix,
17
17
  required: propContext.required,
18
+ ...(propContext.validation ? { validation: propContext.validation } : {}),
19
+ ...(propContext.htmlEmbeddedDataUriPolicy
20
+ ? { htmlEmbeddedDataUriPolicy: propContext.htmlEmbeddedDataUriPolicy }
21
+ : {}),
18
22
  };
19
23
  }
20
24
  }
@@ -22,4 +26,4 @@ function modelPropertiesToObject(properties) {
22
26
  }
23
27
 
24
28
  export { modelPropertiesToObject };
25
- //# sourceMappingURL=model-DGMe-TTm.js.map
29
+ //# sourceMappingURL=model-oHA3YhOd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-oHA3YhOd.js","sources":["../../src/helpers/model.ts"],"sourcesContent":["import { ModelProperty } from '@/ModelProperty/ModelProperty'\n\n/**\n * Convert Model.properties array to object format (for backward compatibility)\n * This replaces the old model.schema getter\n */\nexport function modelPropertiesToObject(properties: ModelProperty[]): { [propertyName: string]: any } {\n const schemaObj: { [propertyName: string]: any } = {}\n \n for (const property of properties) {\n const propContext = property._getSnapshotContext()\n if (propContext.name) {\n schemaObj[propContext.name] = {\n dataType: propContext.dataType,\n ref: propContext.refModelName || propContext.ref,\n refValueType: propContext.refValueType,\n storageType: propContext.storageType,\n localStorageDir: propContext.localStorageDir,\n filenameSuffix: propContext.filenameSuffix,\n required: propContext.required,\n ...(propContext.validation ? { validation: propContext.validation } : {}),\n ...(propContext.htmlEmbeddedDataUriPolicy\n ? { htmlEmbeddedDataUriPolicy: propContext.htmlEmbeddedDataUriPolicy }\n : {}),\n }\n }\n }\n \n return schemaObj\n}\n\n"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,uBAAuB,CAAC,UAA2B,EAAA;IACjE,MAAM,SAAS,GAAoC,EAAE;AAErD,IAAA,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE;AACjC,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,mBAAmB,EAAE;AAClD,QAAA,IAAI,WAAW,CAAC,IAAI,EAAE;AACpB,YAAA,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;gBAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,gBAAA,GAAG,EAAE,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,GAAG;gBAChD,YAAY,EAAE,WAAW,CAAC,YAAY;gBACtC,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,eAAe,EAAE,WAAW,CAAC,eAAe;gBAC5C,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,QAAQ,EAAE,WAAW,CAAC,QAAQ;AAC9B,gBAAA,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC;gBACzE,IAAI,WAAW,CAAC;AACd,sBAAE,EAAE,yBAAyB,EAAE,WAAW,CAAC,yBAAyB;sBAClE,EAAE,CAAC;aACR;QACH;IACF;AAEA,IAAA,OAAO,SAAS;AAClB;;"}
package/dist/node.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import { enableMapSet } from 'immer';
2
- export { C as ConflictError, M as Model } from './index-8O3Uow-Y.js';
3
- import { M as ModelPropertyDataTypes, P as Property, a2 as addModelsToDb, E as BaseDb } from './BasePathResolver-Cm4apKRb.js';
4
- export { F as AmbiguousModelError, I as BasePathResolver, a3 as INIT_SCRIPT_SUCCESS_MESSAGE, a4 as SCHEMA_TS, h as appState, k as config, G as eventEmitter, a5 as getCorrectId, Q as isPublishedSeedRef, m as metadata, r as modelUids, s as models, O as normalizeRelationPropertyValue, N as resolveSeedIdsFromRefString, A as seeds, C as versions } from './BasePathResolver-Cm4apKRb.js';
2
+ export { C as ConflictError, I as ItemCreateValidationError, M as Model, U as UnknownModelError } from './errors-Cl8rbtKR.js';
3
+ import { M as ModelPropertyDataTypes, P as Property, a2 as addModelsToDb, E as BaseDb } from './BasePathResolver-DxdS0wJ0.js';
4
+ export { F as AmbiguousModelError, I as BasePathResolver, a3 as INIT_SCRIPT_SUCCESS_MESSAGE, a4 as SCHEMA_TS, h as appState, k as config, G as eventEmitter, a5 as getCorrectId, Q as isPublishedSeedRef, m as metadata, r as modelUids, s as models, O as normalizeRelationPropertyValue, N as resolveSeedIdsFromRefString, A as seeds, C as versions } from './BasePathResolver-DxdS0wJ0.js';
5
5
  import 'pluralize';
6
6
  import 'drizzle-orm';
7
- export { I as Item, e as ItemProperty, f as ItemPropertySaveValidationError, O as OwnershipError, h as assertItemOwned, i as isItemOwned } from './Item-DBFchXpC.js';
8
- import { c as createPlatformServices } from './index.node-CJhlcNHM.js';
9
- export { D as Db, F as FileManager, P as PathResolver, r as resolveSdkDrizzleMigrationsDir } from './index.node-CJhlcNHM.js';
7
+ export { I as Item, e as ItemProperty, f as ItemPropertySaveValidationError, O as OwnershipError, h as assertItemOwned, i as isItemOwned } from './Item-cq9VcsAY.js';
8
+ import { c as createPlatformServices } from './index.node-C9VB9NlX.js';
9
+ export { D as Db, F as FileManager, P as PathResolver, r as resolveSdkDrizzleMigrationsDir } from './index.node-C9VB9NlX.js';
10
10
  import yaml from 'js-yaml';
11
11
  import fs__default, { readFileSync } from 'fs';
12
- export { C as client, g as getRefValueType, b as importJsonSchema, l as loadSchemaFromFile, r as readJsonImportFile, s as syncSchemaFromSource, t as transformImportToSchemaFile } from './ClientManager-i3nJASkg.js';
12
+ export { C as client, g as getRefValueType, b as importJsonSchema, l as loadSchemaFromFile, r as readJsonImportFile, s as syncSchemaFromSource, t as transformImportToSchemaFile } from './ClientManager-De-vKHGe.js';
13
13
  import { execSync } from 'child_process';
14
14
  import path from 'path';
15
- import { configurePlatform } from './configurePlatform-D0lQGAMQ.js';
15
+ import { configurePlatform } from './configurePlatform-DlZ23w7e.js';
16
16
  import 'xstate';
17
17
  import 'debug';
18
- import './model-DGMe-TTm.js';
18
+ import './model-oHA3YhOd.js';
19
19
  import 'drizzle-orm/casing';
20
20
  import '@sinclair/typebox';
21
21
  import '@seedprotocol/arweave';
@@ -29,11 +29,11 @@ import '@noble/hashes/sha256';
29
29
  import '@noble/hashes/sha3';
30
30
  import '@noble/hashes/utils';
31
31
  import 'rxjs';
32
- import './tabEvents-9s2WCYw-.js';
32
+ import './tabEvents-BTzckWrN.js';
33
33
  import 'fs/promises';
34
34
  import 'url';
35
35
  import 'node:url';
36
- import './index-AVFTVp1m.js';
36
+ import './index-DAl9U4rn.js';
37
37
  import '@libsql/client';
38
38
  import 'drizzle-orm/libsql';
39
39
  import 'drizzle-orm/libsql/migrator';
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sources":["../../src/imports/markdown.ts","../../src/node/webpack/index.ts","../../src/node/helpers/scripts.ts","../../src/node/index.ts"],"sourcesContent":["import yaml from 'js-yaml'\nimport { readFileSync } from 'fs'\nimport { Property, ModelPropertyDataTypes } from '@/Schema'\nimport { ModelDefinitions } from '@/types'\nimport { addModelsToDb } from '../helpers/db'\nimport type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3'\nimport { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy'\nimport type { Model } from '@/Model/Model'\n\n/**\n * Configuration structure expected in markdown frontmatter\n */\ntype SeedConfig = {\n seed: {\n model: string\n properties: {\n [propertyName: string]: {\n type: string\n target?: string\n /** For List: element type when primitive (e.g. 'Text', 'Number'). Use target for list of relations. */\n itemsType?: string\n }\n }\n }\n}\n\n/**\n * Parses markdown frontmatter from a file\n * @param filePath Path to the markdown file\n * @returns The parsed frontmatter as an object, or null if no frontmatter found\n */\nexport const parseMarkdownFrontmatter = (\n filePath: string,\n): Record<string, any> | null => {\n const content = readFileSync(filePath, 'utf-8')\n \n // Check for frontmatter delimiters (more flexible regex)\n // Matches --- at start, optional whitespace, content, ---, optional whitespace\n const frontmatterRegex = /^---\\s*\\n([\\s\\S]*?)\\n---(\\s*\\n|$)/\n const match = content.match(frontmatterRegex)\n \n if (!match) {\n return null\n }\n \n const frontmatterYaml = match[1]\n \n try {\n const frontmatter = yaml.load(frontmatterYaml) as Record<string, any>\n return frontmatter\n } catch (error) {\n throw new Error(\n `Failed to parse YAML frontmatter in ${filePath}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n}\n\n/**\n * Converts a seed config from frontmatter to ModelDefinitions format\n * @param config The seed configuration from frontmatter\n * @returns ModelDefinitions object ready to be saved to database\n */\nexport const processSeedConfig = (config: SeedConfig): ModelDefinitions => {\n if (!config.seed) {\n throw new Error('No seed configuration found in frontmatter')\n }\n \n const { model: modelName, properties: propertiesConfig } = config.seed\n \n if (!modelName) {\n throw new Error('Model name is required in seed configuration')\n }\n \n if (!propertiesConfig || Object.keys(propertiesConfig).length === 0) {\n throw new Error('Properties are required in seed configuration')\n }\n \n // Convert property configs to Property definitions\n const schema: Record<string, any> = {}\n \n for (const [propertyName, propertyConfig] of Object.entries(propertiesConfig)) {\n const { type, target, itemsType } = propertyConfig\n \n if (!type) {\n throw new Error(`Property type is required for ${propertyName}`)\n }\n \n // Map the type to Property constructor\n switch (type) {\n case ModelPropertyDataTypes.Text:\n schema[propertyName] = Property.Text()\n break\n case ModelPropertyDataTypes.Number:\n schema[propertyName] = Property.Number()\n break\n case ModelPropertyDataTypes.Boolean:\n schema[propertyName] = Property.Boolean()\n break\n case ModelPropertyDataTypes.Date:\n schema[propertyName] = Property.Date()\n break\n case ModelPropertyDataTypes.Image:\n schema[propertyName] = Property.Image()\n break\n case ModelPropertyDataTypes.Json:\n schema[propertyName] = Property.Json()\n break\n case ModelPropertyDataTypes.File:\n schema[propertyName] = Property.File()\n break\n case ModelPropertyDataTypes.Relation:\n if (!target) {\n throw new Error(\n `Target model is required for Relation property ${propertyName}`,\n )\n }\n schema[propertyName] = Property.Relation(target)\n break\n case ModelPropertyDataTypes.List:\n if (itemsType) {\n // List of primitives: itemsType = 'Text', 'Number', etc.\n if (itemsType === ModelPropertyDataTypes.Relation && target) {\n schema[propertyName] = Property.List('Relation', target)\n } else if (itemsType !== ModelPropertyDataTypes.Relation) {\n schema[propertyName] = Property.List(itemsType as any)\n } else {\n throw new Error(\n `List of relations requires target model for property ${propertyName}`,\n )\n }\n } else if (target) {\n // Backward compat: target = model name for list of relations\n schema[propertyName] = Property.List('Relation', target)\n } else {\n throw new Error(\n `List property ${propertyName} requires either itemsType (e.g. 'Text') or target (model name for list of relations)`,\n )\n }\n break\n default:\n throw new Error(\n `Unknown property type: ${type} for property ${propertyName}`,\n )\n }\n }\n \n // Create a mock ModelClass structure that matches ModelDefinitions\n // This is a simplified version that works with addModelsToInternalDb\n const modelClass = {\n schema,\n // addModelsToDb reads property definitions from the model's snapshot context, not from `schema`;\n // without this it saves the model with no properties (and no Relation/List ref models).\n _getSnapshotContext: () => ({ properties: schema }),\n create: async () => {\n throw new Error('Model.create() should not be called directly')\n },\n originalConstructor: class {},\n }\n \n return {\n [modelName]: modelClass as any as Model,\n }\n}\n\n/**\n * Reads a markdown file, parses frontmatter, and saves models/properties to database\n * @param filePath Path to the markdown file\n * @param db Database instance (BetterSQLite3Database or SqliteRemoteDatabase)\n * @returns The created ModelDefinitions\n */\nexport const saveModelsFromMarkdown = async (\n filePath: string,\n db: BetterSQLite3Database<any> | SqliteRemoteDatabase<any>,\n): Promise<ModelDefinitions> => {\n // Parse frontmatter\n const frontmatter = parseMarkdownFrontmatter(filePath)\n \n if (!frontmatter) {\n throw new Error(`No frontmatter found in ${filePath}`)\n }\n \n // Validate and process seed config\n const seedConfig = frontmatter as SeedConfig\n const modelDefinitions = processSeedConfig(seedConfig)\n \n // Save to database\n await addModelsToDb(modelDefinitions, undefined, undefined, undefined)\n \n return modelDefinitions\n}\n","/**\n * Webpack / Next.js config helper for Seed Protocol apps.\n */\nexport const withSeed = (config: any, webpack: any, isServer: boolean) => {\n config.plugins.push(\n new webpack.NormalModuleReplacementPlugin(/node:/, (resource: { request: string }) => {\n resource.request = resource.request.replace(/^node:/, '')\n }),\n )\n\n if (!isServer) {\n config.resolve.alias['fs'] = '@zenfs/core'\n config.resolve.alias['node:fs'] = '@zenfs/core'\n config.resolve.alias['node:path'] = 'path-browserify'\n config.resolve.alias['path'] = 'path-browserify'\n }\n\n if (isServer) {\n config.externals.push('@sqlite.org/sqlite-wasm')\n config.externals.push('chokidar')\n config.externals.push('arweave')\n }\n\n return config\n}\n","import { execSync } from 'child_process'\nimport path from 'path'\nimport fs from 'fs'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const commandExists = (command: string): boolean => {\n try {\n execSync(`which ${command}`, { stdio: 'ignore' })\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Finds the seed binary path, trying multiple locations\n * @returns The path to the seed binary, or null if not found\n */\nexport const findSeedBinary = (): string | null => {\n const cwd = process.cwd()\n\n const possiblePaths = [\n path.join(cwd, 'node_modules', '.bin', 'seed'),\n path.join(cwd, 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n path.join(cwd, '..', 'node_modules', '.bin', 'seed'),\n path.join(cwd, '..', 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n path.join(cwd, '..', '..', 'node_modules', '.bin', 'seed'),\n path.join(cwd, '..', '..', 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n ]\n\n for (const binPath of possiblePaths) {\n if (fs.existsSync(binPath)) {\n return binPath\n }\n }\n\n return null\n}\n\n/**\n * Ensures the Node app DB exists and SDK migrations are applied.\n * (Formerly `runSeedInit`; CLI spawn / npx fallbacks archived under docs/archive/commented/.)\n */\nexport const ensureNodeDbSchema = async (\n _schemaFileDir?: string,\n appFilesDirPath?: string\n): Promise<void> => {\n if (!appFilesDirPath) {\n throw new Error('ensureNodeDbSchema requires appFilesDirPath')\n }\n\n await BaseDb.prepareDb(appFilesDirPath)\n}\n\n/** @deprecated Use ensureNodeDbSchema */\nexport const runSeedInit = ensureNodeDbSchema\n","import { enableMapSet } from 'immer'\n\n// Core schema exports\nexport { Model, Property } from '../Schema'\n\n// Core classes\nexport { Item } from '../Item/Item'\nexport { ItemProperty, ItemPropertySaveValidationError } from '../ItemProperty/ItemProperty'\nexport type { IItem, IItemProperty } from '../interfaces'\n\n// Errors\nexport { AmbiguousModelError } from '../Model/errors'\nexport { ConflictError, type ConflictResult } from '../Schema/errors'\nexport { OwnershipError, assertItemOwned, isItemOwned } from '../helpers/ownership'\n\n// Node.js specific exports\nexport { FileManager } from './helpers/FileManager'\nexport { Db, resolveSdkDrizzleMigrationsDir } from './db/Db'\n\n// Schema exports\nexport { models, versions, seeds, metadata, appState, config, modelUids } from '../seedSchema'\n\n// Model access - use Model static methods instead\n// Models are accessible via Model.all(), Model.getById(), Model.getByName(), etc.\n\n// Helper exports\nexport { getCorrectId } from '../helpers'\nexport {\n isPublishedSeedRef,\n normalizeRelationPropertyValue,\n resolveSeedIdsFromRefString,\n} from '../helpers/relationSeedRef'\n\n// Import exports\nexport * from '../imports'\n\n// Event bus\nexport { eventEmitter } from '../eventBus'\n\n// Webpack helper\nexport { withSeed } from './webpack'\n\n// Types\n// Note: PublishUpload type is available from '../db/read/getPublishUploads'\n// Type-only exports cause issues with Rollup's parser. Import directly if needed:\n// import type { PublishUpload } from '@seedprotocol/sdk/db/read/getPublishUploads'\n\n// Client\nexport { client } from '../client'\n\n// All types\nexport * from '../types'\nexport type { MultiTabMode } from '../helpers/tabCoordinator'\nexport type { SyncFromEasOptions } from '../events/item/syncDbWithEas'\nexport type { HtmlEmbeddedDataUriPolicy } from '../helpers/property'\n\n// CLI exports\nexport { PathResolver } from './helpers/PathResolver'\nexport { BasePathResolver } from '../helpers/PathResolver/BasePathResolver'\nexport {\n commandExists,\n ensureNodeDbSchema,\n runSeedInit,\n findSeedBinary,\n} from './helpers/scripts'\nexport { INIT_SCRIPT_SUCCESS_MESSAGE, SCHEMA_TS } from '../helpers/constants'\n\n// Side effect imports for CLI — register platform services\nimport { createPlatformServices } from '../platform/index.node'\nimport { configurePlatform } from '../platform/configurePlatform'\nconfigurePlatform(createPlatformServices())\n\nenableMapSet() "],"names":["fs"],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sources":["../../src/imports/markdown.ts","../../src/node/webpack/index.ts","../../src/node/helpers/scripts.ts","../../src/node/index.ts"],"sourcesContent":["import yaml from 'js-yaml'\nimport { readFileSync } from 'fs'\nimport { Property, ModelPropertyDataTypes } from '@/Schema'\nimport { ModelDefinitions } from '@/types'\nimport { addModelsToDb } from '../helpers/db'\nimport type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3'\nimport { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy'\nimport type { Model } from '@/Model/Model'\n\n/**\n * Configuration structure expected in markdown frontmatter\n */\ntype SeedConfig = {\n seed: {\n model: string\n properties: {\n [propertyName: string]: {\n type: string\n target?: string\n /** For List: element type when primitive (e.g. 'Text', 'Number'). Use target for list of relations. */\n itemsType?: string\n }\n }\n }\n}\n\n/**\n * Parses markdown frontmatter from a file\n * @param filePath Path to the markdown file\n * @returns The parsed frontmatter as an object, or null if no frontmatter found\n */\nexport const parseMarkdownFrontmatter = (\n filePath: string,\n): Record<string, any> | null => {\n const content = readFileSync(filePath, 'utf-8')\n \n // Check for frontmatter delimiters (more flexible regex)\n // Matches --- at start, optional whitespace, content, ---, optional whitespace\n const frontmatterRegex = /^---\\s*\\n([\\s\\S]*?)\\n---(\\s*\\n|$)/\n const match = content.match(frontmatterRegex)\n \n if (!match) {\n return null\n }\n \n const frontmatterYaml = match[1]\n \n try {\n const frontmatter = yaml.load(frontmatterYaml) as Record<string, any>\n return frontmatter\n } catch (error) {\n throw new Error(\n `Failed to parse YAML frontmatter in ${filePath}: ${error instanceof Error ? error.message : String(error)}`,\n )\n }\n}\n\n/**\n * Converts a seed config from frontmatter to ModelDefinitions format\n * @param config The seed configuration from frontmatter\n * @returns ModelDefinitions object ready to be saved to database\n */\nexport const processSeedConfig = (config: SeedConfig): ModelDefinitions => {\n if (!config.seed) {\n throw new Error('No seed configuration found in frontmatter')\n }\n \n const { model: modelName, properties: propertiesConfig } = config.seed\n \n if (!modelName) {\n throw new Error('Model name is required in seed configuration')\n }\n \n if (!propertiesConfig || Object.keys(propertiesConfig).length === 0) {\n throw new Error('Properties are required in seed configuration')\n }\n \n // Convert property configs to Property definitions\n const schema: Record<string, any> = {}\n \n for (const [propertyName, propertyConfig] of Object.entries(propertiesConfig)) {\n const { type, target, itemsType } = propertyConfig\n \n if (!type) {\n throw new Error(`Property type is required for ${propertyName}`)\n }\n \n // Map the type to Property constructor\n switch (type) {\n case ModelPropertyDataTypes.Text:\n schema[propertyName] = Property.Text()\n break\n case ModelPropertyDataTypes.Number:\n schema[propertyName] = Property.Number()\n break\n case ModelPropertyDataTypes.Boolean:\n schema[propertyName] = Property.Boolean()\n break\n case ModelPropertyDataTypes.Date:\n schema[propertyName] = Property.Date()\n break\n case ModelPropertyDataTypes.Image:\n schema[propertyName] = Property.Image()\n break\n case ModelPropertyDataTypes.Json:\n schema[propertyName] = Property.Json()\n break\n case ModelPropertyDataTypes.File:\n schema[propertyName] = Property.File()\n break\n case ModelPropertyDataTypes.Relation:\n if (!target) {\n throw new Error(\n `Target model is required for Relation property ${propertyName}`,\n )\n }\n schema[propertyName] = Property.Relation(target)\n break\n case ModelPropertyDataTypes.List:\n if (itemsType) {\n // List of primitives: itemsType = 'Text', 'Number', etc.\n if (itemsType === ModelPropertyDataTypes.Relation && target) {\n schema[propertyName] = Property.List('Relation', target)\n } else if (itemsType !== ModelPropertyDataTypes.Relation) {\n schema[propertyName] = Property.List(itemsType as any)\n } else {\n throw new Error(\n `List of relations requires target model for property ${propertyName}`,\n )\n }\n } else if (target) {\n // Backward compat: target = model name for list of relations\n schema[propertyName] = Property.List('Relation', target)\n } else {\n throw new Error(\n `List property ${propertyName} requires either itemsType (e.g. 'Text') or target (model name for list of relations)`,\n )\n }\n break\n default:\n throw new Error(\n `Unknown property type: ${type} for property ${propertyName}`,\n )\n }\n }\n \n // Create a mock ModelClass structure that matches ModelDefinitions\n // This is a simplified version that works with addModelsToInternalDb\n const modelClass = {\n schema,\n // addModelsToDb reads property definitions from the model's snapshot context, not from `schema`;\n // without this it saves the model with no properties (and no Relation/List ref models).\n _getSnapshotContext: () => ({ properties: schema }),\n create: async () => {\n throw new Error('Model.create() should not be called directly')\n },\n originalConstructor: class {},\n }\n \n return {\n [modelName]: modelClass as any as Model,\n }\n}\n\n/**\n * Reads a markdown file, parses frontmatter, and saves models/properties to database\n * @param filePath Path to the markdown file\n * @param db Database instance (BetterSQLite3Database or SqliteRemoteDatabase)\n * @returns The created ModelDefinitions\n */\nexport const saveModelsFromMarkdown = async (\n filePath: string,\n db: BetterSQLite3Database<any> | SqliteRemoteDatabase<any>,\n): Promise<ModelDefinitions> => {\n // Parse frontmatter\n const frontmatter = parseMarkdownFrontmatter(filePath)\n \n if (!frontmatter) {\n throw new Error(`No frontmatter found in ${filePath}`)\n }\n \n // Validate and process seed config\n const seedConfig = frontmatter as SeedConfig\n const modelDefinitions = processSeedConfig(seedConfig)\n \n // Save to database\n await addModelsToDb(modelDefinitions, undefined, undefined, undefined)\n \n return modelDefinitions\n}\n","/**\n * Webpack / Next.js config helper for Seed Protocol apps.\n */\nexport const withSeed = (config: any, webpack: any, isServer: boolean) => {\n config.plugins.push(\n new webpack.NormalModuleReplacementPlugin(/node:/, (resource: { request: string }) => {\n resource.request = resource.request.replace(/^node:/, '')\n }),\n )\n\n if (!isServer) {\n config.resolve.alias['fs'] = '@zenfs/core'\n config.resolve.alias['node:fs'] = '@zenfs/core'\n config.resolve.alias['node:path'] = 'path-browserify'\n config.resolve.alias['path'] = 'path-browserify'\n }\n\n if (isServer) {\n config.externals.push('@sqlite.org/sqlite-wasm')\n config.externals.push('chokidar')\n config.externals.push('arweave')\n }\n\n return config\n}\n","import { execSync } from 'child_process'\nimport path from 'path'\nimport fs from 'fs'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const commandExists = (command: string): boolean => {\n try {\n execSync(`which ${command}`, { stdio: 'ignore' })\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Finds the seed binary path, trying multiple locations\n * @returns The path to the seed binary, or null if not found\n */\nexport const findSeedBinary = (): string | null => {\n const cwd = process.cwd()\n\n const possiblePaths = [\n path.join(cwd, 'node_modules', '.bin', 'seed'),\n path.join(cwd, 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n path.join(cwd, '..', 'node_modules', '.bin', 'seed'),\n path.join(cwd, '..', 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n path.join(cwd, '..', '..', 'node_modules', '.bin', 'seed'),\n path.join(cwd, '..', '..', 'node_modules', '@seedprotocol', 'cli', 'dist', 'bin.js'),\n ]\n\n for (const binPath of possiblePaths) {\n if (fs.existsSync(binPath)) {\n return binPath\n }\n }\n\n return null\n}\n\n/**\n * Ensures the Node app DB exists and SDK migrations are applied.\n * (Formerly `runSeedInit`; CLI spawn / npx fallbacks archived under docs/archive/commented/.)\n */\nexport const ensureNodeDbSchema = async (\n _schemaFileDir?: string,\n appFilesDirPath?: string\n): Promise<void> => {\n if (!appFilesDirPath) {\n throw new Error('ensureNodeDbSchema requires appFilesDirPath')\n }\n\n await BaseDb.prepareDb(appFilesDirPath)\n}\n\n/** @deprecated Use ensureNodeDbSchema */\nexport const runSeedInit = ensureNodeDbSchema\n","import { enableMapSet } from 'immer'\n\n// Core schema exports\nexport { Model, Property } from '../Schema'\n\n// Core classes\nexport { Item } from '../Item/Item'\nexport { ItemProperty, ItemPropertySaveValidationError } from '../ItemProperty/ItemProperty'\nexport type { IItem, IItemProperty } from '../interfaces'\n\n// Errors\nexport { AmbiguousModelError } from '../Model/errors'\nexport { ItemCreateValidationError, UnknownModelError, type ItemCreateProblem } from '../Item/errors'\nexport { ConflictError, type ConflictResult } from '../Schema/errors'\nexport { OwnershipError, assertItemOwned, isItemOwned } from '../helpers/ownership'\n\n// Node.js specific exports\nexport { FileManager } from './helpers/FileManager'\nexport { Db, resolveSdkDrizzleMigrationsDir } from './db/Db'\n\n// Schema exports\nexport { models, versions, seeds, metadata, appState, config, modelUids } from '../seedSchema'\n\n// Model access - use Model static methods instead\n// Models are accessible via Model.all(), Model.getById(), Model.getByName(), etc.\n\n// Helper exports\nexport { getCorrectId } from '../helpers'\nexport {\n isPublishedSeedRef,\n normalizeRelationPropertyValue,\n resolveSeedIdsFromRefString,\n} from '../helpers/relationSeedRef'\n\n// Import exports\nexport * from '../imports'\n\n// Event bus\nexport { eventEmitter } from '../eventBus'\n\n// Webpack helper\nexport { withSeed } from './webpack'\n\n// Types\n// Note: PublishUpload type is available from '../db/read/getPublishUploads'\n// Type-only exports cause issues with Rollup's parser. Import directly if needed:\n// import type { PublishUpload } from '@seedprotocol/sdk/db/read/getPublishUploads'\n\n// Client\nexport { client } from '../client'\n\n// All types\nexport * from '../types'\nexport type { MultiTabMode } from '../helpers/tabCoordinator'\nexport type { SyncFromEasOptions } from '../events/item/syncDbWithEas'\nexport type { HtmlEmbeddedDataUriPolicy } from '../helpers/property'\n\n// CLI exports\nexport { PathResolver } from './helpers/PathResolver'\nexport { BasePathResolver } from '../helpers/PathResolver/BasePathResolver'\nexport {\n commandExists,\n ensureNodeDbSchema,\n runSeedInit,\n findSeedBinary,\n} from './helpers/scripts'\nexport { INIT_SCRIPT_SUCCESS_MESSAGE, SCHEMA_TS } from '../helpers/constants'\n\n// Side effect imports for CLI — register platform services\nimport { createPlatformServices } from '../platform/index.node'\nimport { configurePlatform } from '../platform/configurePlatform'\nconfigurePlatform(createPlatformServices())\n\nenableMapSet() "],"names":["fs"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- export { c as createPlatformServices } from './index.browser-DBhxRoe8.js';
2
- export { configurePlatform } from './configurePlatform-D0lQGAMQ.js';
3
- import './BasePathResolver-Cm4apKRb.js';
1
+ export { c as createPlatformServices } from './index.browser-J6QZ9smP.js';
2
+ export { configurePlatform } from './configurePlatform-DlZ23w7e.js';
3
+ import './BasePathResolver-DxdS0wJ0.js';
4
4
  import 'debug';
5
5
  import '@seedprotocol/arweave';
6
6
  import '@seedprotocol/eas';
@@ -17,11 +17,11 @@ import '@seedprotocol/query';
17
17
  import '@noble/hashes/sha256';
18
18
  import '@noble/hashes/sha3';
19
19
  import '@noble/hashes/utils';
20
- import './tabEvents-9s2WCYw-.js';
20
+ import './tabEvents-BTzckWrN.js';
21
21
  import './mimeTypes-DHAHC4eZ.js';
22
22
  import './errors-CrBxGWah.js';
23
23
  import 'drizzle-orm/sqlite-proxy';
24
- import './index-AVFTVp1m.js';
24
+ import './index-DAl9U4rn.js';
25
25
  import 'sqlocal/drizzle';
26
26
  import 'rxjs';
27
27
  import 'graphql-request';
@@ -1,10 +1,10 @@
1
- export { c as createPlatformServices } from './index.node-CJhlcNHM.js';
1
+ export { c as createPlatformServices } from './index.node-C9VB9NlX.js';
2
2
  import '@seedprotocol/arweave/node';
3
3
  import '@seedprotocol/eas/node';
4
- export { configurePlatform } from './configurePlatform-D0lQGAMQ.js';
4
+ export { configurePlatform } from './configurePlatform-DlZ23w7e.js';
5
5
  import 'path';
6
6
  import 'fs';
7
- import './BasePathResolver-Cm4apKRb.js';
7
+ import './BasePathResolver-DxdS0wJ0.js';
8
8
  import 'debug';
9
9
  import '@seedprotocol/arweave';
10
10
  import '@seedprotocol/eas';
@@ -24,7 +24,7 @@ import '@noble/hashes/utils';
24
24
  import 'fs/promises';
25
25
  import 'url';
26
26
  import 'node:url';
27
- import './index-AVFTVp1m.js';
27
+ import './index-DAl9U4rn.js';
28
28
  import '@libsql/client';
29
29
  import 'drizzle-orm/libsql';
30
30
  import 'drizzle-orm/libsql/migrator';
@@ -1,9 +1,9 @@
1
1
  import pluralize from 'pluralize';
2
- import { r as resolveStorageNameToSchemaName } from './Item-DBFchXpC.js';
3
- import { E as BaseDb, u as properties, s as models, g as normalizePropertyRecordSchema } from './BasePathResolver-Cm4apKRb.js';
4
- export { M as ModelPropertyDataTypes, P as Property, T as THtmlEmbeddedDataUriPolicy, a as TProperty, b as TPropertyConstructor, c as TPropertyDataType, d as TPropertyDefs, e as TStorageType, i as isDataType, n as normalizeDataType } from './BasePathResolver-Cm4apKRb.js';
2
+ import { r as resolveStorageNameToSchemaName } from './Item-cq9VcsAY.js';
3
+ import { E as BaseDb, u as properties, s as models, g as normalizePropertyRecordSchema } from './BasePathResolver-DxdS0wJ0.js';
4
+ export { M as ModelPropertyDataTypes, P as Property, T as THtmlEmbeddedDataUriPolicy, a as TProperty, b as TPropertyConstructor, c as TPropertyDataType, d as TPropertyDefs, e as TStorageType, i as isDataType, n as normalizeDataType } from './BasePathResolver-DxdS0wJ0.js';
5
5
  import { and, eq } from 'drizzle-orm';
6
- import { modelPropertiesToObject } from './model-DGMe-TTm.js';
6
+ import { modelPropertiesToObject } from './model-oHA3YhOd.js';
7
7
  import 'xstate';
8
8
  import 'debug';
9
9
  import 'rxjs';
@@ -11,7 +11,7 @@ import 'lodash-es';
11
11
  import 'drizzle-orm/casing';
12
12
  import '@seedprotocol/eas';
13
13
  import '@seedprotocol/arweave';
14
- import './tabEvents-9s2WCYw-.js';
14
+ import './tabEvents-BTzckWrN.js';
15
15
  import '@sinclair/typebox';
16
16
  import 'drizzle-orm/sqlite-core';
17
17
  import 'nanoid';
@@ -59,16 +59,16 @@ const getPropertySchema = async (modelName, propertyName,
59
59
  /** Which model is meant when several schemas define one named modelName (Model.id and/or schema). */
60
60
  scope = {}) => {
61
61
  // Dynamic import to break circular dependency
62
- const _mod_0 = await import('./index-8O3Uow-Y.js');
63
- const _ns_0 = _mod_0.f;
62
+ const _mod_0 = await import('./errors-Cl8rbtKR.js');
63
+ const _ns_0 = _mod_0.h;
64
64
  const modelMod = _ns_0;
65
65
  const { Model } = modelMod;
66
- const _mod_1 = await import('./Schema-CpMNEnUO.js');
66
+ const _mod_1 = await import('./Schema-Dc5EA8Yb.js');
67
67
  const _ns_1 = _mod_1.b;
68
68
  const schemaMod = _ns_1;
69
69
  const { Schema } = schemaMod;
70
- const _mod_2 = await import('./BasePathResolver-Cm4apKRb.js');
71
- const _ns_2 = _mod_2.b1;
70
+ const _mod_2 = await import('./BasePathResolver-DxdS0wJ0.js');
71
+ const _ns_2 = _mod_2.b2;
72
72
  const { resolveModelRecord } = _ns_2;
73
73
  const model = await Model.resolveAsync(modelName, scope);
74
74
  if (!model) {
@@ -293,4 +293,4 @@ scope = {}) => {
293
293
  };
294
294
 
295
295
  export { getPropertySchema, normalizePropertyRecordSchema };
296
- //# sourceMappingURL=property-DwPD283A.js.map
296
+ //# sourceMappingURL=property-Brgr5RdT.js.map