@seedprotocol/sdk 0.6.7 → 0.6.9
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.
- package/dist/{BasePathResolver-qV0apdVY.js → BasePathResolver-B6CKqoKw.js} +16 -5
- package/dist/BasePathResolver-B6CKqoKw.js.map +1 -0
- package/dist/{ClientManager-Y5EWQuJj.js → ClientManager-ChcmUL47.js} +619 -264
- package/dist/ClientManager-ChcmUL47.js.map +1 -0
- package/dist/{ModelProperty-DuB5nk6A.js → ModelProperty-D79uV42p.js} +33 -30
- package/dist/ModelProperty-D79uV42p.js.map +1 -0
- package/dist/{Schema-BYM-GNdE.js → Schema-a8uO-hIZ.js} +43 -43
- package/dist/Schema-a8uO-hIZ.js.map +1 -0
- package/dist/{SchemaValidationService-Dr6nmwPm.js → SchemaValidationService-Y49vqast.js} +13 -12
- package/dist/SchemaValidationService-Y49vqast.js.map +1 -0
- package/dist/{backfillMetadataPropertyIds-BzbAB-C5.js → backfillMetadataPropertyIds-CBsf7LnU.js} +5 -3
- package/dist/{backfillMetadataPropertyIds-BzbAB-C5.js.map → backfillMetadataPropertyIds-CBsf7LnU.js.map} +1 -1
- package/dist/cjs/{ModelProperty-CDTOx5zi.js → ModelProperty-D9FGaGuE.js} +21 -17
- package/dist/cjs/ModelProperty-D9FGaGuE.js.map +1 -0
- package/dist/cjs/{Schema-XXcwj3hV.js → Schema-BiJIPLEL.js} +25 -24
- package/dist/cjs/Schema-BiJIPLEL.js.map +1 -0
- package/dist/cjs/{SchemaValidationService-Z7OhtGn5.js → SchemaValidationService-DtYs_CNY.js} +5 -3
- package/dist/cjs/SchemaValidationService-DtYs_CNY.js.map +1 -0
- package/dist/cjs/{backfillMetadataPropertyIds-Bt4fzfIV.js → backfillMetadataPropertyIds-2XaN3b9S.js} +3 -2
- package/dist/cjs/{backfillMetadataPropertyIds-Bt4fzfIV.js.map → backfillMetadataPropertyIds-2XaN3b9S.js.map} +1 -1
- package/dist/cjs/{eas-DdI-4vwl.js → eas-CMNppmGE.js} +4 -3
- package/dist/cjs/{eas-DdI-4vwl.js.map → eas-CMNppmGE.js.map} +1 -1
- package/dist/cjs/{getItem-B_2GeTQf.js → getItem-B6jEINjW.js} +3 -2
- package/dist/cjs/{getItem-B_2GeTQf.js.map → getItem-B6jEINjW.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-Jmgi1RUj.js → getPublishPayload-D5DhLGvN.js} +64 -59
- package/dist/cjs/getPublishPayload-D5DhLGvN.js.map +1 -0
- package/dist/cjs/{getPublishUploads-DNULcrN5.js → getPublishUploads-DMhCCKYF.js} +17 -10
- package/dist/cjs/getPublishUploads-DMhCCKYF.js.map +1 -0
- package/dist/cjs/{getSegmentedItemProperties-DK82kjri.js → getSegmentedItemProperties-CU8rtBAo.js} +3 -51
- package/dist/cjs/getSegmentedItemProperties-CU8rtBAo.js.map +1 -0
- package/dist/cjs/{index-DM1WR83P.js → index-CSNtEnbF.js} +879 -467
- package/dist/cjs/index-CSNtEnbF.js.map +1 -0
- package/dist/cjs/{index-tpO1Nj4v.js → index-DPp9rdRL.js} +6 -3
- package/dist/cjs/index-DPp9rdRL.js.map +1 -0
- package/dist/cjs/{property-DmvgA8FD.js → property-DlKiAWt4.js} +7 -4
- package/dist/cjs/{property-DmvgA8FD.js.map → property-DlKiAWt4.js.map} +1 -1
- package/dist/cjs/{syncDbWithEas-3hOoPdu1.js → syncDbWithEas-C6n34o_Q.js} +11 -6
- package/dist/cjs/syncDbWithEas-C6n34o_Q.js.map +1 -0
- package/dist/{configurePlatform-CCYQruij.js → configurePlatform-CE0Vew17.js} +5 -5
- package/dist/{configurePlatform-CCYQruij.js.map → configurePlatform-CE0Vew17.js.map} +1 -1
- package/dist/db/drizzle/0014_add_error_code_to_publish_processes.sql +1 -0
- package/dist/db/drizzle/meta/0014_snapshot.json +1269 -0
- package/dist/db/drizzle/meta/_journal.json +7 -0
- package/dist/{db-CceyWksv.js → db-WbrzEf7c.js} +254 -35
- package/dist/db-WbrzEf7c.js.map +1 -0
- package/dist/{eas-CH8iFIST.js → eas-CfYCu4IX.js} +6 -6
- package/dist/{eas-CH8iFIST.js.map → eas-CfYCu4IX.js.map} +1 -1
- package/dist/{getItem-C7Mtfz6O.js → getItem-Br-bGNFO.js} +6 -6
- package/dist/{getItem-C7Mtfz6O.js.map → getItem-Br-bGNFO.js.map} +1 -1
- package/dist/{getPublishPayload-2gnnDdMh.js → getPublishPayload-BIrTVUxb.js} +66 -62
- package/dist/getPublishPayload-BIrTVUxb.js.map +1 -0
- package/dist/{getPublishUploads-AKISt3JA.js → getPublishUploads-C6cDeZdz.js} +19 -13
- package/dist/getPublishUploads-C6cDeZdz.js.map +1 -0
- package/dist/{getSegmentedItemProperties-eIjvhCP_.js → getSegmentedItemProperties-BmKE71vU.js} +5 -5
- package/dist/{getSegmentedItemProperties-eIjvhCP_.js.map → getSegmentedItemProperties-BmKE71vU.js.map} +1 -1
- package/dist/{constants-DSqHBPNe.js → index-280bL-n4.js} +32 -257
- package/dist/index-280bL-n4.js.map +1 -0
- package/dist/{index-CHi212ST.js → index-ClSv5pTA.js} +13 -13
- package/dist/index-ClSv5pTA.js.map +1 -0
- package/dist/{index-CsmiM0RI.js → index-Djd3667v.js} +2 -2
- package/dist/index-Djd3667v.js.map +1 -0
- package/dist/{index-BFpbtEsg.js → index-HRHkbVQd.js} +24 -24
- package/dist/{index-BFpbtEsg.js.map → index-HRHkbVQd.js.map} +1 -1
- package/dist/{index.node-CbWB4MDz.js → index.node-DBtQkEfz.js} +8 -6
- package/dist/index.node-DBtQkEfz.js.map +1 -0
- package/dist/main.cjs +6 -1
- package/dist/main.cjs.map +1 -1
- package/dist/main.js +36 -38
- package/dist/main.js.map +1 -1
- package/dist/node.js +15 -14
- package/dist/node.js.map +1 -1
- package/dist/platform.browser.js +108 -46
- package/dist/platform.browser.js.map +1 -1
- package/dist/platform.node.js +4 -3
- package/dist/platform.node.js.map +1 -1
- package/dist/{property-CWKcZ5YZ.js → property-CQjuZ4JW.js} +14 -13
- package/dist/property-CQjuZ4JW.js.map +1 -0
- package/dist/seedSchema/PublishProcessSchema.ts +1 -0
- package/dist/src/Item/Item.d.ts +6 -0
- package/dist/src/Item/Item.d.ts.map +1 -1
- package/dist/src/Item/service/actors/loadOrCreateItem.d.ts.map +1 -1
- package/dist/src/ItemProperty/ItemProperty.d.ts +10 -1
- package/dist/src/ItemProperty/ItemProperty.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
- package/dist/src/ModelProperty/ModelProperty.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/loadOrCreateSchema.d.ts.map +1 -1
- package/dist/src/Schema/service/actors/writeModelsToDb.d.ts.map +1 -1
- package/dist/src/Schema/service/addModelsMachine.d.ts.map +1 -1
- package/dist/src/Schema/service/validation/SchemaValidationService.d.ts.map +1 -1
- package/dist/src/browser/db/drizzleFiles.d.ts +3 -2
- package/dist/src/browser/db/drizzleFiles.d.ts.map +1 -1
- package/dist/src/browser/helpers/ArweaveClient.d.ts.map +1 -1
- package/dist/src/browser/helpers/EasClient.d.ts +2 -1
- package/dist/src/browser/helpers/EasClient.d.ts.map +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/browser/workers/FileDownloader.d.ts +1 -1
- package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
- package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
- package/dist/src/client/actors/platformClassesInit.d.ts.map +1 -1
- package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
- package/dist/src/client/constants.d.ts +4 -0
- package/dist/src/client/constants.d.ts.map +1 -1
- package/dist/src/client/nodeEndpointDefaults.d.ts +8 -0
- package/dist/src/client/nodeEndpointDefaults.d.ts.map +1 -0
- package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
- package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
- package/dist/src/db/read/getRelatedItemsForPublish.d.ts.map +1 -1
- package/dist/src/db/write/createMetadata.d.ts.map +1 -1
- package/dist/src/events/files/download.d.ts.map +1 -1
- package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
- package/dist/src/helpers/ArweaveClient/index.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -2
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/IFileManager.d.ts +4 -0
- package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
- package/dist/src/helpers/constants.d.ts +8 -0
- package/dist/src/helpers/constants.d.ts.map +1 -1
- package/dist/src/helpers/db.d.ts +6 -0
- package/dist/src/helpers/db.d.ts.map +1 -1
- package/dist/src/helpers/gateway/gatewayState.d.ts +1 -1
- package/dist/src/helpers/gateway/gatewayState.d.ts.map +1 -1
- package/dist/src/helpers/localDbChain.d.ts +22 -0
- package/dist/src/helpers/localDbChain.d.ts.map +1 -0
- package/dist/src/helpers/metadataPropertyNames.d.ts +9 -0
- package/dist/src/helpers/metadataPropertyNames.d.ts.map +1 -1
- package/dist/src/helpers/property/index.d.ts +12 -0
- package/dist/src/helpers/property/index.d.ts.map +1 -1
- package/dist/src/helpers/readHtmlBodyForStorageSeed.d.ts.map +1 -1
- package/dist/src/helpers/relationSeedRef.d.ts +8 -0
- package/dist/src/helpers/relationSeedRef.d.ts.map +1 -1
- package/dist/src/index.d.ts +9 -5
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/node/easLodashHook.d.ts +2 -0
- package/dist/src/node/easLodashHook.d.ts.map +1 -0
- package/dist/src/node/easLodashRegister.d.ts +2 -0
- package/dist/src/node/easLodashRegister.d.ts.map +1 -0
- package/dist/src/node/helpers/FileManager.d.ts +2 -1
- package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/node/index.d.ts +2 -1
- package/dist/src/node/index.d.ts.map +1 -1
- package/dist/src/seedSchema/PublishProcessSchema.d.ts +19 -0
- package/dist/src/seedSchema/PublishProcessSchema.d.ts.map +1 -1
- package/dist/src/types/fileManager.d.ts +4 -0
- package/dist/src/types/fileManager.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +15 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/{syncDbWithEas-5kZneTEL.js → syncDbWithEas-CuARXfyN.js} +16 -12
- package/dist/syncDbWithEas-CuARXfyN.js.map +1 -0
- package/dist/{updateSeedRevokedAt-CgfOBtqJ.js → updateSeedRevokedAt-CBcLfHWs.js} +2 -2
- package/dist/{updateSeedRevokedAt-CgfOBtqJ.js.map → updateSeedRevokedAt-CBcLfHWs.js.map} +1 -1
- package/package.json +11 -7
- package/src/node/easLodashHook.js +22 -0
- package/src/node/easLodashRegister.js +13 -0
- package/dist/BasePathResolver-qV0apdVY.js.map +0 -1
- package/dist/ClientManager-Y5EWQuJj.js.map +0 -1
- package/dist/ModelProperty-DuB5nk6A.js.map +0 -1
- package/dist/Schema-BYM-GNdE.js.map +0 -1
- package/dist/SchemaValidationService-Dr6nmwPm.js.map +0 -1
- package/dist/cjs/ModelProperty-CDTOx5zi.js.map +0 -1
- package/dist/cjs/Schema-XXcwj3hV.js.map +0 -1
- package/dist/cjs/SchemaValidationService-Z7OhtGn5.js.map +0 -1
- package/dist/cjs/getPublishPayload-Jmgi1RUj.js.map +0 -1
- package/dist/cjs/getPublishUploads-DNULcrN5.js.map +0 -1
- package/dist/cjs/getSegmentedItemProperties-DK82kjri.js.map +0 -1
- package/dist/cjs/index-DM1WR83P.js.map +0 -1
- package/dist/cjs/index-tpO1Nj4v.js.map +0 -1
- package/dist/cjs/syncDbWithEas-3hOoPdu1.js.map +0 -1
- package/dist/constants-DSqHBPNe.js.map +0 -1
- package/dist/db-CceyWksv.js.map +0 -1
- package/dist/getPublishPayload-2gnnDdMh.js.map +0 -1
- package/dist/getPublishUploads-AKISt3JA.js.map +0 -1
- package/dist/index-CHi212ST.js.map +0 -1
- package/dist/index-CsmiM0RI.js.map +0 -1
- package/dist/index.node-CbWB4MDz.js.map +0 -1
- package/dist/property-CWKcZ5YZ.js.map +0 -1
- package/dist/seedSchema/AppStateSchema.d.ts +0 -82
- package/dist/seedSchema/AppStateSchema.d.ts.map +0 -1
- package/dist/seedSchema/ConfigSchema.d.ts +0 -101
- package/dist/seedSchema/ConfigSchema.d.ts.map +0 -1
- package/dist/seedSchema/MetadataSchema.d.ts +0 -422
- package/dist/seedSchema/MetadataSchema.d.ts.map +0 -1
- package/dist/seedSchema/ModelSchema.d.ts +0 -243
- package/dist/seedSchema/ModelSchema.d.ts.map +0 -1
- package/dist/seedSchema/ModelSchemaSchema.d.ts +0 -61
- package/dist/seedSchema/ModelSchemaSchema.d.ts.map +0 -1
- package/dist/seedSchema/ModelUidSchema.d.ts +0 -64
- package/dist/seedSchema/ModelUidSchema.d.ts.map +0 -1
- package/dist/seedSchema/PropertyUidSchema.d.ts +0 -64
- package/dist/seedSchema/PropertyUidSchema.d.ts.map +0 -1
- package/dist/seedSchema/SchemaSchema.d.ts +0 -169
- package/dist/seedSchema/SchemaSchema.d.ts.map +0 -1
- package/dist/seedSchema/SeedSchema.d.ts +0 -192
- package/dist/seedSchema/SeedSchema.d.ts.map +0 -1
- package/dist/seedSchema/VersionSchema.d.ts +0 -194
- package/dist/seedSchema/VersionSchema.d.ts.map +0 -1
- package/dist/seedSchema/index.d.ts +0 -14
- package/dist/seedSchema/index.d.ts.map +0 -1
- package/dist/syncDbWithEas-5kZneTEL.js.map +0 -1
package/dist/node.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { enableMapSet } from 'immer';
|
|
2
2
|
import 'reflect-metadata';
|
|
3
|
-
export { M as Model } from './index-
|
|
4
|
-
import { M as ModelPropertyDataTypes, P as Property } from './
|
|
5
|
-
export { B as Boolean, a as Date, I as Image, J as Json, L as List, N as Number, R as Relation, j as Text
|
|
3
|
+
export { M as Model } from './index-HRHkbVQd.js';
|
|
4
|
+
import { M as ModelPropertyDataTypes, P as Property, s as addModelsToDb } from './db-WbrzEf7c.js';
|
|
5
|
+
export { B as Boolean, a as Date, I as Image, J as Json, L as List, N as Number, R as Relation, j as Text } from './db-WbrzEf7c.js';
|
|
6
6
|
import 'pluralize';
|
|
7
|
-
import { a as BaseDb } from './BasePathResolver-
|
|
8
|
-
export { t as BasePathResolver, y as INIT_SCRIPT_SUCCESS_MESSAGE, S as SCHEMA_TS, c as appState, e as config, b as metadata, j as modelUids, m as models, r as seeds, v as versions } from './BasePathResolver-
|
|
7
|
+
import { a as BaseDb } from './BasePathResolver-B6CKqoKw.js';
|
|
8
|
+
export { t as BasePathResolver, y as INIT_SCRIPT_SUCCESS_MESSAGE, S as SCHEMA_TS, c as appState, e as config, b as metadata, j as modelUids, m as models, r as seeds, v as versions } from './BasePathResolver-B6CKqoKw.js';
|
|
9
9
|
import 'drizzle-orm';
|
|
10
|
-
export { I as Item, f as ItemProperty, C as client,
|
|
11
|
-
import { c as createPlatformServices } from './index.node-
|
|
12
|
-
export { D as Db, F as FileManager, P as PathResolver, r as resolveSdkDrizzleMigrationsDir } from './index.node-
|
|
10
|
+
export { I as Item, f as ItemProperty, h as ItemPropertySaveValidationError, C as client, i as getRefValueType, j as importJsonSchema, k as loadSchemaFromFile, m as readJsonImportFile, s as syncSchemaFromSource, t as transformImportToSchemaFile } from './ClientManager-ChcmUL47.js';
|
|
11
|
+
import { c as createPlatformServices } from './index.node-DBtQkEfz.js';
|
|
12
|
+
export { D as Db, F as FileManager, P as PathResolver, r as resolveSdkDrizzleMigrationsDir } from './index.node-DBtQkEfz.js';
|
|
13
|
+
export { e as eventEmitter, g as getCorrectId, i as isPublishedSeedRef, n as normalizeRelationPropertyValue, r as resolveSeedIdsFromRefString } from './index-280bL-n4.js';
|
|
13
14
|
import yaml from 'js-yaml';
|
|
14
15
|
import fs__default, { readFileSync } from 'fs';
|
|
15
|
-
import { c as addModelsToDb } from './db-CceyWksv.js';
|
|
16
16
|
import { execSync } from 'child_process';
|
|
17
17
|
import path from 'path';
|
|
18
|
-
import { configurePlatform } from './configurePlatform-
|
|
18
|
+
import { configurePlatform } from './configurePlatform-CE0Vew17.js';
|
|
19
19
|
import 'xstate';
|
|
20
20
|
import 'debug';
|
|
21
21
|
import './generateId-BopUwD8F.js';
|
|
@@ -24,17 +24,18 @@ import 'nanoid-dictionary';
|
|
|
24
24
|
import './model-DGMe-TTm.js';
|
|
25
25
|
import 'drizzle-orm/casing';
|
|
26
26
|
import '@sinclair/typebox';
|
|
27
|
-
import '@seedprotocol/arweave';
|
|
28
|
-
import '@seedprotocol/eas';
|
|
29
|
-
import '@seedprotocol/query';
|
|
30
27
|
import 'lodash-es';
|
|
31
28
|
import 'drizzle-orm/sqlite-core';
|
|
29
|
+
import '@seedprotocol/arweave';
|
|
30
|
+
import '@seedprotocol/eas';
|
|
32
31
|
import '@noble/hashes/sha3';
|
|
33
32
|
import '@noble/hashes/utils';
|
|
33
|
+
import '@seedprotocol/query';
|
|
34
34
|
import 'rxjs';
|
|
35
35
|
import 'fs/promises';
|
|
36
|
+
import 'url';
|
|
36
37
|
import 'node:url';
|
|
37
|
-
import './index-
|
|
38
|
+
import './index-Djd3667v.js';
|
|
38
39
|
import '@libsql/client';
|
|
39
40
|
import 'drizzle-orm/libsql';
|
|
40
41
|
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 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 {\n Model,\n Property,\n Image,\n List,\n Text,\n Json,\n Relation,\n Boolean,\n Number,\n Date,\n} from '../Schema'\n\n// Core classes\nexport { Item } from '../Item/Item'\nexport { ItemProperty } from '../ItemProperty/ItemProperty'\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'\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'\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 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 {\n Model,\n Property,\n Image,\n List,\n Text,\n Json,\n Relation,\n Boolean,\n Number,\n Date,\n} from '../Schema'\n\n// Core classes\nexport { Item } from '../Item/Item'\nexport { ItemProperty, ItemPropertySaveValidationError } from '../ItemProperty/ItemProperty'\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'\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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"}
|
package/dist/platform.browser.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { a as BaseDb, c as appState, t as BasePathResolver, B as BaseFileManager } from './BasePathResolver-
|
|
1
|
+
import { a as BaseDb, c as appState, t as BasePathResolver, B as BaseFileManager } from './BasePathResolver-B6CKqoKw.js';
|
|
2
2
|
import debug from 'debug';
|
|
3
3
|
import { drizzle } from 'drizzle-orm/sqlite-proxy';
|
|
4
4
|
import { sha256 } from '@noble/hashes/sha256';
|
|
5
5
|
import { bytesToHex, utf8ToBytes } from '@noble/hashes/utils';
|
|
6
6
|
import { sql } from 'drizzle-orm';
|
|
7
|
-
import
|
|
8
|
-
import { s as schema } from './index-
|
|
7
|
+
import './index-280bL-n4.js';
|
|
8
|
+
import { s as schema } from './index-Djd3667v.js';
|
|
9
9
|
import { SQLocalDrizzle } from 'sqlocal/drizzle';
|
|
10
10
|
import { Observable, distinctUntilChanged } from 'rxjs';
|
|
11
|
-
import { BaseArweaveClient, GET_TRANSACTION_TAGS } from '@seedprotocol/arweave';
|
|
11
|
+
import { BaseArweaveClient, getPreferredArweaveReadBaseUrls, fetchArweaveRawFromBaseUrl, GET_TRANSACTION_TAGS } from '@seedprotocol/arweave';
|
|
12
12
|
import { GraphQLClient } from 'graphql-request';
|
|
13
13
|
import Arweave from 'arweave';
|
|
14
|
-
import { BaseEasClient, BaseQueryClient } from '@seedprotocol/eas';
|
|
14
|
+
import { getEasEndpoint, BaseEasClient, BaseQueryClient } from '@seedprotocol/eas';
|
|
15
15
|
import { QueryClient } from '@tanstack/react-query';
|
|
16
16
|
import 'drizzle-orm/sqlite-core';
|
|
17
17
|
import 'xstate';
|
|
18
18
|
import 'pluralize';
|
|
19
|
-
import '
|
|
20
|
-
import './db-CceyWksv.js';
|
|
19
|
+
import './db-WbrzEf7c.js';
|
|
21
20
|
import 'drizzle-orm/casing';
|
|
22
21
|
import 'lodash-es';
|
|
22
|
+
import '@sinclair/typebox';
|
|
23
23
|
import 'nanoid';
|
|
24
24
|
import 'nanoid-dictionary';
|
|
25
25
|
import '@seedprotocol/query';
|
|
@@ -202,29 +202,58 @@ var filesDownload = `(
|
|
|
202
202
|
const root = filesRoot.replace(/\/$/, '');
|
|
203
203
|
return [root, ...parts].filter(Boolean).join('/').replace(/\/+/g, '/');
|
|
204
204
|
};
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
205
|
+
const toBaseUrl = (hostOrUrl) => {
|
|
206
|
+
const h = (hostOrUrl || '').trim().replace(/\/$/, '');
|
|
207
|
+
if (!h)
|
|
208
|
+
return '';
|
|
209
|
+
if (h.startsWith('http://') || h.startsWith('https://'))
|
|
210
|
+
return h;
|
|
211
|
+
const protocol = h.startsWith('127.0.0.1') || h.startsWith('localhost') || h.includes(':1984')
|
|
212
|
+
? 'http'
|
|
213
|
+
: 'https';
|
|
214
|
+
return `${protocol}://${h}`;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* GET /raw/{id} from each gateway in order. `networkFailedEverywhere` is true only when no gateway
|
|
218
|
+
* answered at all; a non-2xx (e.g. not yet propagated) is not a reason to exclude the transaction.
|
|
219
|
+
*/
|
|
220
|
+
const fetchRaw = async (baseUrls, transactionId) => {
|
|
221
|
+
let answered = false;
|
|
222
|
+
for (const base of baseUrls) {
|
|
208
223
|
try {
|
|
209
|
-
const response = await fetch(
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return `${protocol}://${h}`;
|
|
218
|
-
})();
|
|
219
|
-
return `${base}/raw/${transactionId}`;
|
|
220
|
-
})());
|
|
221
|
-
arrayBuffer = await response.arrayBuffer();
|
|
224
|
+
const response = await fetch(`${base}/raw/${transactionId}`);
|
|
225
|
+
answered = true;
|
|
226
|
+
if (!response.ok)
|
|
227
|
+
continue;
|
|
228
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
229
|
+
if (arrayBuffer.byteLength > 0) {
|
|
230
|
+
return { arrayBuffer, networkFailedEverywhere: false };
|
|
231
|
+
}
|
|
222
232
|
}
|
|
223
233
|
catch (error) {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
234
|
+
/* next gateway */
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return { networkFailedEverywhere: !answered };
|
|
238
|
+
};
|
|
239
|
+
const downloadFiles = async ({ transactionIds, arweaveHost, arweaveBaseUrls, filesRoot = '/files', }) => {
|
|
240
|
+
// Preferred / resolved gateways first, then the configured host; deduped.
|
|
241
|
+
const baseUrls = [];
|
|
242
|
+
for (const candidate of (arweaveBaseUrls || []).concat([arweaveHost])) {
|
|
243
|
+
const base = toBaseUrl(candidate);
|
|
244
|
+
if (base && baseUrls.indexOf(base) === -1) {
|
|
245
|
+
baseUrls.push(base);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
for (const transactionId of transactionIds) {
|
|
249
|
+
const { arrayBuffer, networkFailedEverywhere } = await fetchRaw(baseUrls, transactionId);
|
|
250
|
+
if (!arrayBuffer) {
|
|
251
|
+
if (networkFailedEverywhere) {
|
|
252
|
+
globalThis.postMessage({
|
|
253
|
+
message: 'excludeTransaction',
|
|
254
|
+
transactionId,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
228
257
|
continue;
|
|
229
258
|
}
|
|
230
259
|
let dataString;
|
|
@@ -280,6 +309,9 @@ var filesDownload = `(
|
|
|
280
309
|
let buffer;
|
|
281
310
|
try {
|
|
282
311
|
const response = await fetch(url);
|
|
312
|
+
if (!response.ok) {
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
283
315
|
buffer = await response.arrayBuffer();
|
|
284
316
|
}
|
|
285
317
|
catch (error) {
|
|
@@ -354,7 +386,7 @@ const logger$5 = debug('seedSdk:browser:workers:FileDownloader');
|
|
|
354
386
|
class FileDownloader {
|
|
355
387
|
constructor() {
|
|
356
388
|
this.workersArchive = [];
|
|
357
|
-
this.downloadAll = async ({ transactionIds, arweaveHost, excludedTransactions }) => {
|
|
389
|
+
this.downloadAll = async ({ transactionIds, arweaveHost, arweaveBaseUrls, excludedTransactions }) => {
|
|
358
390
|
if (this.workersArchive.length > 0) {
|
|
359
391
|
for (let i = 0; i < this.workersArchive.length; i++) {
|
|
360
392
|
this.workersArchive[i].terminate();
|
|
@@ -387,6 +419,7 @@ class FileDownloader {
|
|
|
387
419
|
worker.postMessage({
|
|
388
420
|
transactionIds,
|
|
389
421
|
arweaveHost,
|
|
422
|
+
arweaveBaseUrls,
|
|
390
423
|
debug: logger$5.enabled,
|
|
391
424
|
filesRoot: BaseFileManager.getWorkingDir(),
|
|
392
425
|
});
|
|
@@ -1017,9 +1050,9 @@ class BrowserFileManager {
|
|
|
1017
1050
|
await configureRoot();
|
|
1018
1051
|
}
|
|
1019
1052
|
}
|
|
1020
|
-
async downloadAllFiles({ transactionIds, arweaveHost, excludedTransactions, }) {
|
|
1053
|
+
async downloadAllFiles({ transactionIds, arweaveHost, arweaveBaseUrls, excludedTransactions, }) {
|
|
1021
1054
|
const fileDownloader = new FileDownloader();
|
|
1022
|
-
await fileDownloader.downloadAll({ transactionIds, arweaveHost, excludedTransactions });
|
|
1055
|
+
await fileDownloader.downloadAll({ transactionIds, arweaveHost, arweaveBaseUrls, excludedTransactions });
|
|
1023
1056
|
}
|
|
1024
1057
|
async resizeImage({ filePath, width, height }) {
|
|
1025
1058
|
const imageResizer = new ImageResizer();
|
|
@@ -1653,6 +1686,8 @@ const migrationSql_0013_eas_sync_processes = `CREATE TABLE \`eas_sync_processes\
|
|
|
1653
1686
|
\`updated_at\` integer
|
|
1654
1687
|
);
|
|
1655
1688
|
`;
|
|
1689
|
+
const migrationSql_0014_add_error_code_to_publish_processes = `ALTER TABLE \`publish_processes\` ADD \`error_code\` text;
|
|
1690
|
+
`;
|
|
1656
1691
|
// Journal JSON file
|
|
1657
1692
|
const journalJson = `{
|
|
1658
1693
|
"version": "7",
|
|
@@ -1755,6 +1790,13 @@ const journalJson = `{
|
|
|
1755
1790
|
"when": 1774300000000,
|
|
1756
1791
|
"tag": "0013_eas_sync_processes",
|
|
1757
1792
|
"breakpoints": true
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
"idx": 14,
|
|
1796
|
+
"version": "6",
|
|
1797
|
+
"when": 1774400000000,
|
|
1798
|
+
"tag": "0014_add_error_code_to_publish_processes",
|
|
1799
|
+
"breakpoints": true
|
|
1758
1800
|
}
|
|
1759
1801
|
]
|
|
1760
1802
|
}`;
|
|
@@ -1763,8 +1805,8 @@ const journalJson = `{
|
|
|
1763
1805
|
const snapshotJson = `{
|
|
1764
1806
|
"version": "6",
|
|
1765
1807
|
"dialect": "sqlite",
|
|
1766
|
-
"id": "
|
|
1767
|
-
"prevId": "
|
|
1808
|
+
"id": "14e73eef-092a-4310-a86f-2f815470bdce",
|
|
1809
|
+
"prevId": "a9e8f7d6-c5b4-4321-a0b9-c8d7e6f5a4b3",
|
|
1768
1810
|
"tables": {
|
|
1769
1811
|
"appState": {
|
|
1770
1812
|
"name": "appState",
|
|
@@ -2456,6 +2498,13 @@ const snapshotJson = `{
|
|
|
2456
2498
|
"notNull": false,
|
|
2457
2499
|
"autoincrement": false
|
|
2458
2500
|
},
|
|
2501
|
+
"error_code": {
|
|
2502
|
+
"name": "error_code",
|
|
2503
|
+
"type": "text",
|
|
2504
|
+
"primaryKey": false,
|
|
2505
|
+
"notNull": false,
|
|
2506
|
+
"autoincrement": false
|
|
2507
|
+
},
|
|
2459
2508
|
"persisted_snapshot": {
|
|
2460
2509
|
"name": "persisted_snapshot",
|
|
2461
2510
|
"type": "text",
|
|
@@ -3040,6 +3089,7 @@ var drizzleFiles = /*#__PURE__*/Object.freeze({
|
|
|
3040
3089
|
migrationSql_0011_normalize_placeholder_uids: migrationSql_0011_normalize_placeholder_uids,
|
|
3041
3090
|
migrationSql_0012_html_embedded_image_co_publish: migrationSql_0012_html_embedded_image_co_publish,
|
|
3042
3091
|
migrationSql_0013_eas_sync_processes: migrationSql_0013_eas_sync_processes,
|
|
3092
|
+
migrationSql_0014_add_error_code_to_publish_processes: migrationSql_0014_add_error_code_to_publish_processes,
|
|
3043
3093
|
snapshotJson: snapshotJson
|
|
3044
3094
|
});
|
|
3045
3095
|
|
|
@@ -3234,7 +3284,7 @@ class BrowserDb {
|
|
|
3234
3284
|
await raceSqlocalStartup((async () => {
|
|
3235
3285
|
await this.runMigrations(db);
|
|
3236
3286
|
this.appDb = db;
|
|
3237
|
-
const { backfillMetadataPropertyIds } = await import('./backfillMetadataPropertyIds-
|
|
3287
|
+
const { backfillMetadataPropertyIds } = await import('./backfillMetadataPropertyIds-CBsf7LnU.js');
|
|
3238
3288
|
await backfillMetadataPropertyIds();
|
|
3239
3289
|
})(), workerFailed);
|
|
3240
3290
|
return this.appDb;
|
|
@@ -3445,20 +3495,13 @@ const getArweaveInstance = () => {
|
|
|
3445
3495
|
return _arweaveInstance;
|
|
3446
3496
|
}
|
|
3447
3497
|
_arweaveGatewayKey = gatewayKey;
|
|
3448
|
-
const
|
|
3449
|
-
const protocol = BaseArweaveClient.getProtocol();
|
|
3498
|
+
const apiConfig = BaseArweaveClient.getArweaveJsApiConfig();
|
|
3450
3499
|
// Handle both ES modules and CommonJS exports from arweave package
|
|
3451
3500
|
if ("default" in Arweave && typeof Arweave.default?.init === "function") {
|
|
3452
|
-
_arweaveInstance = Arweave.default.init(
|
|
3453
|
-
host,
|
|
3454
|
-
protocol,
|
|
3455
|
-
});
|
|
3501
|
+
_arweaveInstance = Arweave.default.init(apiConfig);
|
|
3456
3502
|
}
|
|
3457
3503
|
else {
|
|
3458
|
-
_arweaveInstance = Arweave.init(
|
|
3459
|
-
host,
|
|
3460
|
-
protocol,
|
|
3461
|
-
});
|
|
3504
|
+
_arweaveInstance = Arweave.init(apiConfig);
|
|
3462
3505
|
}
|
|
3463
3506
|
return _arweaveInstance;
|
|
3464
3507
|
};
|
|
@@ -3499,6 +3542,23 @@ class BrowserArweaveClient {
|
|
|
3499
3542
|
}
|
|
3500
3543
|
}
|
|
3501
3544
|
async getTransactionData(transactionId, options) {
|
|
3545
|
+
// Preferred gateways (usually the one the item was uploaded through) serve it before L1 does.
|
|
3546
|
+
// `/raw` is already decoded, so skip them when the caller asked for undecoded data.
|
|
3547
|
+
const preferred = options?.decode === false ? [] : getPreferredArweaveReadBaseUrls();
|
|
3548
|
+
for (const base of preferred) {
|
|
3549
|
+
const response = await fetchArweaveRawFromBaseUrl(base, transactionId);
|
|
3550
|
+
if (!response)
|
|
3551
|
+
continue;
|
|
3552
|
+
try {
|
|
3553
|
+
if (options?.string) {
|
|
3554
|
+
return await response.text();
|
|
3555
|
+
}
|
|
3556
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
3557
|
+
}
|
|
3558
|
+
catch (error) {
|
|
3559
|
+
logger("Error reading preferred gateway response:", error);
|
|
3560
|
+
}
|
|
3561
|
+
}
|
|
3502
3562
|
// Path-prefixed proxies (app-server Hyper proxy) are not supported by arweave.init host;
|
|
3503
3563
|
// fetch via getRawUrl so /api/seed-gateway/... works.
|
|
3504
3564
|
if (BaseArweaveClient.getGatewayPath()) {
|
|
@@ -3611,11 +3671,13 @@ class BrowserArweaveClient {
|
|
|
3611
3671
|
BaseArweaveClient.configure(new BrowserArweaveClient());
|
|
3612
3672
|
|
|
3613
3673
|
class BrowserEasClient {
|
|
3674
|
+
/** Reads the endpoint per call so SDK / publish chain config applied after import takes effect. */
|
|
3614
3675
|
getEasClient() {
|
|
3615
|
-
|
|
3616
|
-
|
|
3676
|
+
const url = getEasEndpoint();
|
|
3677
|
+
if (this.easClient?.url !== url) {
|
|
3678
|
+
this.easClient = { url, client: new GraphQLClient(url) };
|
|
3617
3679
|
}
|
|
3618
|
-
return this.easClient;
|
|
3680
|
+
return this.easClient.client;
|
|
3619
3681
|
}
|
|
3620
3682
|
}
|
|
3621
3683
|
BaseEasClient.configure(new BrowserEasClient());
|