@seedprotocol/sdk 0.6.1 → 0.6.2
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-DWY_hb8w.js → BasePathResolver-0IHnXxtL.js} +5 -1
- package/dist/BasePathResolver-0IHnXxtL.js.map +1 -0
- package/dist/{ModelProperty-CHIxRLfS.js → ModelProperty-DMjKVphl.js} +39 -29
- package/dist/ModelProperty-DMjKVphl.js.map +1 -0
- package/dist/{Schema-BaVOWeUb.js → Schema-cK2z7wet.js} +42 -38
- package/dist/{Schema-BaVOWeUb.js.map → Schema-cK2z7wet.js.map} +1 -1
- package/dist/{SchemaValidationService-BX4GcEKY.js → SchemaValidationService-B3pQ_q-9.js} +5 -5
- package/dist/{SchemaValidationService-BX4GcEKY.js.map → SchemaValidationService-B3pQ_q-9.js.map} +1 -1
- package/dist/{backfillMetadataPropertyIds-6kBwLScb.js → backfillMetadataPropertyIds-C-YLFeI2.js} +3 -3
- package/dist/{backfillMetadataPropertyIds-6kBwLScb.js.map → backfillMetadataPropertyIds-C-YLFeI2.js.map} +1 -1
- package/dist/cjs/{ModelProperty-BphJm1e3.js → ModelProperty-CCwtTuvi.js} +17 -17
- package/dist/cjs/{ModelProperty-BphJm1e3.js.map → ModelProperty-CCwtTuvi.js.map} +1 -1
- package/dist/cjs/{Schema-z1fBr4Rv.js → Schema-DU28JWKv.js} +20 -20
- package/dist/cjs/{Schema-z1fBr4Rv.js.map → Schema-DU28JWKv.js.map} +1 -1
- package/dist/cjs/{SchemaValidationService-DWmIhQqz.js → SchemaValidationService-BOYI1syg.js} +2 -2
- package/dist/cjs/{SchemaValidationService-DWmIhQqz.js.map → SchemaValidationService-BOYI1syg.js.map} +1 -1
- package/dist/cjs/{backfillMetadataPropertyIds--9WN2zaG.js → backfillMetadataPropertyIds-CrvyL7Xq.js} +2 -2
- package/dist/cjs/{backfillMetadataPropertyIds--9WN2zaG.js.map → backfillMetadataPropertyIds-CrvyL7Xq.js.map} +1 -1
- package/dist/cjs/{eas-YuOI6X_v.js → eas-D-Casv2P.js} +3 -3
- package/dist/cjs/{eas-YuOI6X_v.js.map → eas-D-Casv2P.js.map} +1 -1
- package/dist/cjs/{getItem-CKDdJztx.js → getItem-BPAs0Jxp.js} +2 -2
- package/dist/cjs/{getItem-CKDdJztx.js.map → getItem-BPAs0Jxp.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-DXHDgXU3.js → getPublishPayload-BeoNRCLY.js} +11 -11
- package/dist/cjs/{getPublishPayload-DXHDgXU3.js.map → getPublishPayload-BeoNRCLY.js.map} +1 -1
- package/dist/cjs/{getPublishUploads-yFW9CKSW.js → getPublishUploads-C75vy7nb.js} +4 -4
- package/dist/cjs/{getPublishUploads-yFW9CKSW.js.map → getPublishUploads-C75vy7nb.js.map} +1 -1
- package/dist/cjs/{getSegmentedItemProperties-BLdMFDBt.js → getSegmentedItemProperties-CDmkM9Yc.js} +3 -3
- package/dist/cjs/{getSegmentedItemProperties-BLdMFDBt.js.map → getSegmentedItemProperties-CDmkM9Yc.js.map} +1 -1
- package/dist/cjs/{index-WOQkKWSU.js → index-BbfxH7OY.js} +321 -189
- package/dist/cjs/index-BbfxH7OY.js.map +1 -0
- package/dist/cjs/{index-Bp16LrkZ.js → index-CA6kGjZH.js} +3 -3
- package/dist/cjs/index-CA6kGjZH.js.map +1 -0
- package/dist/cjs/{property-DSh60oEw.js → property-aeBSv5CF.js} +4 -4
- package/dist/cjs/{property-DSh60oEw.js.map → property-aeBSv5CF.js.map} +1 -1
- package/dist/cjs/{syncDbWithEas-pVjTHk3y.js → syncDbWithEas-ChvunkwQ.js} +17 -10
- package/dist/cjs/syncDbWithEas-ChvunkwQ.js.map +1 -0
- package/dist/{configurePlatform-CXQCT7N8.js → configurePlatform-Df4BlXwQ.js} +3 -3
- package/dist/{configurePlatform-CXQCT7N8.js.map → configurePlatform-Df4BlXwQ.js.map} +1 -1
- package/dist/{constants-B7aNfB_1.js → constants-CROrIRd-.js} +2 -2
- package/dist/{constants-B7aNfB_1.js.map → constants-CROrIRd-.js.map} +1 -1
- package/dist/{db-CMQ3TG6N.js → db-BwVuO1tO.js} +121 -56
- package/dist/db-BwVuO1tO.js.map +1 -0
- package/dist/{eas-BG3zRyHC.js → eas-C0H0EbDo.js} +5 -5
- package/dist/{eas-BG3zRyHC.js.map → eas-C0H0EbDo.js.map} +1 -1
- package/dist/{getItem-BFDi98NG.js → getItem-Cxa-rKqh.js} +5 -5
- package/dist/{getItem-BFDi98NG.js.map → getItem-Cxa-rKqh.js.map} +1 -1
- package/dist/{getPublishPayload-B2D-72EC.js → getPublishPayload-DmOu0I29.js} +16 -16
- package/dist/{getPublishPayload-B2D-72EC.js.map → getPublishPayload-DmOu0I29.js.map} +1 -1
- package/dist/{getPublishUploads-D-fMspZI.js → getPublishUploads-gWv4tDyT.js} +7 -7
- package/dist/{getPublishUploads-D-fMspZI.js.map → getPublishUploads-gWv4tDyT.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-DzjK6JE5.js → getSegmentedItemProperties-BfIBZbR7.js} +5 -5
- package/dist/{getSegmentedItemProperties-DzjK6JE5.js.map → getSegmentedItemProperties-BfIBZbR7.js.map} +1 -1
- package/dist/{index-Dx0RL3Tx.js → index-C1pktvdj.js} +293 -214
- package/dist/index-C1pktvdj.js.map +1 -0
- package/dist/{index-BaPbRFSy.js → index-DAwvrNga.js} +7 -7
- package/dist/index-DAwvrNga.js.map +1 -0
- package/dist/{index-DrEkRiuK.js → index-xNWgPtlN.js} +2 -2
- package/dist/index-xNWgPtlN.js.map +1 -0
- package/dist/{index.node-hhs7zosf.js → index.node-DqC_o5EN.js} +13 -4
- package/dist/index.node-DqC_o5EN.js.map +1 -0
- package/dist/main.cjs +1 -1
- package/dist/main.js +299 -23
- package/dist/main.js.map +1 -1
- package/dist/node.js +10 -10
- package/dist/platform.browser.js +14 -4
- package/dist/platform.browser.js.map +1 -1
- package/dist/platform.node.js +3 -3
- package/dist/{property-B2xdCZz_.js → property-eMrSbAWU.js} +8 -8
- package/dist/{property-B2xdCZz_.js.map → property-eMrSbAWU.js.map} +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts +1 -0
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/client/ClientManager.d.ts +12 -0
- package/dist/src/client/ClientManager.d.ts.map +1 -1
- package/dist/src/client/actors/saveConfig.d.ts.map +1 -1
- package/dist/src/db/read/getItems.d.ts.map +1 -1
- package/dist/src/db/read/summarizePublishWork.d.ts +24 -0
- package/dist/src/db/read/summarizePublishWork.d.ts.map +1 -0
- package/dist/src/db/write/claimUnpublishedDrafts.d.ts +11 -0
- package/dist/src/db/write/claimUnpublishedDrafts.d.ts.map +1 -0
- package/dist/src/db/write/createMetadata.d.ts.map +1 -1
- package/dist/src/db/write/createSeed.d.ts.map +1 -1
- package/dist/src/db/write/createSeeds.d.ts.map +1 -1
- package/dist/src/db/write/createVersion.d.ts.map +1 -1
- package/dist/src/db/write/updateMetadata.d.ts.map +1 -1
- package/dist/src/db/write/updateSeedUid.d.ts.map +1 -1
- package/dist/src/db/write/updateVersionUid.d.ts.map +1 -1
- package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -0
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/IFileManager.d.ts +2 -0
- package/dist/src/helpers/FileManager/IFileManager.d.ts.map +1 -1
- package/dist/src/helpers/addresses.d.ts +14 -0
- package/dist/src/helpers/addresses.d.ts.map +1 -1
- package/dist/src/helpers/db.d.ts +2 -2
- package/dist/src/helpers/db.d.ts.map +1 -1
- package/dist/src/helpers/ownership.d.ts +36 -8
- package/dist/src/helpers/ownership.d.ts.map +1 -1
- package/dist/src/helpers/publishConfig.d.ts +4 -3
- package/dist/src/helpers/publishConfig.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/node/helpers/FileManager.d.ts +1 -0
- package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +6 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/{syncDbWithEas-B9Riqty1.js → syncDbWithEas-c9Xe17zq.js} +24 -17
- package/dist/syncDbWithEas-c9Xe17zq.js.map +1 -0
- package/dist/{updateSeedRevokedAt-CtRjZiyh.js → updateSeedRevokedAt-F0ZDvwOO.js} +2 -2
- package/dist/{updateSeedRevokedAt-CtRjZiyh.js.map → updateSeedRevokedAt-F0ZDvwOO.js.map} +1 -1
- package/package.json +5 -5
- package/dist/BasePathResolver-DWY_hb8w.js.map +0 -1
- package/dist/ModelProperty-CHIxRLfS.js.map +0 -1
- package/dist/cjs/index-Bp16LrkZ.js.map +0 -1
- package/dist/cjs/index-WOQkKWSU.js.map +0 -1
- package/dist/cjs/syncDbWithEas-pVjTHk3y.js.map +0 -1
- package/dist/db-CMQ3TG6N.js.map +0 -1
- package/dist/index-BaPbRFSy.js.map +0 -1
- package/dist/index-DrEkRiuK.js.map +0 -1
- package/dist/index-Dx0RL3Tx.js.map +0 -1
- package/dist/index.node-hhs7zosf.js.map +0 -1
- package/dist/syncDbWithEas-B9Riqty1.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-B7aNfB_1.js","sources":["../../src/Schema/validation.ts","../../src/helpers/property/index.ts","../../src/helpers/relationSeedRef.ts","../../src/db/read/getStorageTransactionIdForSeedUid.ts","../../src/helpers/mediaRef.ts","../../src/helpers/index.ts","../../src/client/constants.ts"],"sourcesContent":["import { Type, TSchema } from '@sinclair/typebox'\nimport { ModelPropertyDataTypes } from '@/helpers/property'\n\n/** Default maximum length for Text properties when not explicitly set. Html holds arbitrary-length content and does not use this limit. */\nexport const DEFAULT_TEXT_MAX_LENGTH = 255\n\n/**\n * Validation rules that can be applied to properties\n * Matches the ValidationRules definition in protocol/schema.json\n */\nexport type ValidationRules = {\n pattern?: string\n minLength?: number\n maxLength?: number\n enum?: any[]\n custom?: string\n [key: string]: any\n}\n\n/**\n * TypeBox schema for ValidationRules\n */\nexport const TValidationRules = Type.Object({\n pattern: Type.Optional(Type.String()),\n minLength: Type.Optional(Type.Integer({ minimum: 0 })),\n maxLength: Type.Optional(Type.Integer({ minimum: 1 })),\n enum: Type.Optional(Type.Array(Type.Any())),\n custom: Type.Optional(Type.String()),\n}, { additionalProperties: true })\n\n/**\n * Validation error structure\n */\nexport type ValidationError = {\n field: string\n message: string\n code: string\n severity: 'error' | 'warning'\n}\n\n/**\n * Validation result\n */\nexport type ValidationResult = {\n isValid: boolean\n errors: ValidationError[]\n warnings?: ValidationError[]\n}\n\n","import { Static, Type } from '@sinclair/typebox'\nimport { PropertyDataType, PropertyDefs, StorageType } from '@/types'\nimport { TValidationRules } from '@/Schema/validation'\n\n/**\n * Enum for all property data types\n */\nexport enum ModelPropertyDataTypes {\n Text = 'Text',\n Number = 'Number',\n List = 'List',\n Relation = 'Relation',\n Image = 'Image',\n Json = 'Json',\n File = 'File',\n Boolean = 'Boolean',\n Date = 'Date',\n Html = 'Html',\n}\n\n/** Known data types in lowercase for normalization */\nconst DATA_TYPE_LOWER_MAP: Record<string, string> = {\n text: 'Text',\n string: 'Text', // JSON Schema convention\n number: 'Number',\n list: 'List',\n relation: 'Relation',\n image: 'Image',\n json: 'Json',\n file: 'File',\n boolean: 'Boolean',\n date: 'Date',\n html: 'Html',\n blob: 'Blob',\n}\n\n/**\n * Normalize dataType to canonical PascalCase form.\n * Accepts lowercase (e.g. 'text') or mixed case and returns 'Text'.\n * Use when ingesting dataType from JSON schema files.\n */\nexport function normalizeDataType(value: string | undefined): string {\n if (!value || typeof value !== 'string') return value ?? ''\n const lower = value.toLowerCase().trim()\n return DATA_TYPE_LOWER_MAP[lower] ?? value.charAt(0).toUpperCase() + value.slice(1).toLowerCase()\n}\n\nexport const TPropertyDataType = Type.Union([\n Type.Literal(ModelPropertyDataTypes.Text),\n Type.Literal(ModelPropertyDataTypes.Number),\n Type.Literal(ModelPropertyDataTypes.List),\n Type.Literal(ModelPropertyDataTypes.Relation),\n Type.Literal(ModelPropertyDataTypes.Image),\n Type.Literal(ModelPropertyDataTypes.Json),\n Type.Literal(ModelPropertyDataTypes.File),\n Type.Literal(ModelPropertyDataTypes.Boolean),\n Type.Literal(ModelPropertyDataTypes.Date),\n Type.Literal(ModelPropertyDataTypes.Html),\n])\n\nexport const TStorageType = Type.Union([\n Type.Literal('ItemStorage'), // Looks for a storageTransactionId property on the item\n Type.Literal('PropertyStorage'), // Looks for a storageTransactionId value on the property\n])\n\n/** How publish handles `data:image/*` URIs inside Html storage. Only applies when `dataType === 'Html'`. */\nexport const THtmlEmbeddedDataUriPolicy = Type.Union([\n Type.Literal('materialize'),\n Type.Literal('preserve'),\n])\nexport type HtmlEmbeddedDataUriPolicy = Static<typeof THtmlEmbeddedDataUriPolicy>\n\nexport const TProperty = Type.Object({\n id: Type.Optional(Type.String()), // schemaFileId (string) - public ID\n _dbId: Type.Optional(Type.Number()), // Database integer ID - internal only\n name: Type.Optional(Type.String()),\n dataType: TPropertyDataType,\n ref: Type.Optional(Type.String()),\n // modelId: string (modelFileId) in code; number only for DB foreign keys when resolved\n modelId: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n modelName: Type.Optional(Type.String()),\n refModelId: Type.Optional(Type.Number()),\n refModelName: Type.Optional(Type.String()),\n refValueType: Type.Optional(TPropertyDataType),\n storageType: Type.Optional(TStorageType),\n localStorageDir: Type.Optional(Type.String()),\n filenameSuffix: Type.Optional(Type.String()),\n validation: Type.Optional(TValidationRules),\n required: Type.Optional(Type.Boolean()),\n /** When set on an Html property: `materialize` uploads embedded images as Image seeds and rewrites src; `preserve` leaves data URIs. */\n htmlEmbeddedDataUriPolicy: Type.Optional(THtmlEmbeddedDataUriPolicy),\n})\n\nexport const TPropertyConstructor = Type.Function(\n [\n Type.Optional(Type.Union([Type.String(), TStorageType, Type.Undefined()])),\n Type.Optional(Type.Union([Type.String(), TPropertyDataType])),\n Type.Optional(Type.Union([Type.String(), Type.Boolean()])),\n ],\n TProperty,\n)\n\nexport const TPropertyDefs = Type.Record(\n TPropertyDataType,\n TPropertyConstructor,\n)\n\nfunction htmlPropertyFactory(opts?: { htmlEmbeddedDataUriPolicy?: HtmlEmbeddedDataUriPolicy }) {\n return {\n dataType: ModelPropertyDataTypes.Html,\n ...(opts?.htmlEmbeddedDataUriPolicy\n ? { htmlEmbeddedDataUriPolicy: opts.htmlEmbeddedDataUriPolicy }\n : {}),\n } satisfies Static<typeof TProperty>\n}\n\nexport const Property = {\n Text: (\n storageType?: StorageType,\n localStorageDir?: string,\n filenameSuffix?: string,\n ) => ({\n dataType: ModelPropertyDataTypes.Text,\n storageType,\n localStorageDir,\n filenameSuffix,\n TObject: Type.String(),\n }),\n Json: () => ({ dataType: ModelPropertyDataTypes.Json }),\n File: () => ({ dataType: ModelPropertyDataTypes.File }),\n Number: () => ({ dataType: ModelPropertyDataTypes.Number }),\n /**\n * Create a List property. refValueType is required; ref is required only for list of relations.\n * @param refValueType - Element type: 'Text', 'Number', 'Relation', etc.\n * @param ref - Model name when refValueType is 'Relation' (optional for primitives)\n * @example List('Text') - list of strings\n * @example List('Relation', 'Tag') - list of relations to Tag model\n */\n List: (refValueType: PropertyDataType, ref?: string) => ({\n dataType: ModelPropertyDataTypes.List,\n ref,\n refValueType,\n }),\n Relation: (ref?: string, refValueType?: PropertyDataType, required?: boolean) => ({\n dataType: ModelPropertyDataTypes.Relation,\n ref,\n refValueType,\n required,\n }),\n Image: () => ({ dataType: ModelPropertyDataTypes.Image }),\n Boolean: () => ({ dataType: ModelPropertyDataTypes.Boolean }),\n Date: () => ({ dataType: ModelPropertyDataTypes.Date }),\n Html: htmlPropertyFactory,\n /** `Html` opts are not representable in `TPropertyConstructor`; keep runtime shape via double assert. */\n} as unknown as PropertyDefs\n\nexport const PropertyMetadataKey = Symbol('property')\n\nexport const PropertyConstructor = (propertyType: Static<typeof TProperty>) => {\n return function (parentClassPrototype: any, propertyKey: string) {\n const existingProperties =\n Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype) || []\n\n existingProperties.push({ propertyKey, propertyType })\n Reflect.defineMetadata(\n PropertyMetadataKey,\n existingProperties,\n parentClassPrototype,\n )\n }\n}\n\nexport const Text = (\n storageType?: StorageType,\n srcDir?: string,\n filenameSuffix?: string,\n) => PropertyConstructor(Property.Text(storageType, srcDir, filenameSuffix))\nexport const Number = () => PropertyConstructor(Property.Number())\nexport const Json = () => PropertyConstructor(Property.Json())\nexport const File = () => PropertyConstructor(Property.File())\nexport const Image = () => PropertyConstructor(Property.Image())\nexport const Relation = (ref: string, refValueType?: PropertyDataType, required?: boolean) =>\n PropertyConstructor(Property.Relation(ref, refValueType, required)) // Adjust for actual relation type\nexport const List = (refValueType: PropertyDataType, ref?: string) =>\n PropertyConstructor(Property.List(refValueType, ref))\nexport const Boolean = () => PropertyConstructor(Property.Boolean())\nexport const Date = () => PropertyConstructor(Property.Date())\nexport const Html = (opts?: { htmlEmbeddedDataUriPolicy?: HtmlEmbeddedDataUriPolicy }) =>\n PropertyConstructor(htmlPropertyFactory(opts))\n","/** Same rules as getCorrectId in helpers/index (avoid barrel circular import). */\nfunction parseLocalIdOrUid(localIdOrUid: string): { localId?: string; uid?: string } {\n const id = { localId: undefined as string | undefined, uid: undefined as string | undefined }\n if (!localIdOrUid) return id\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\n/** Relation/image refs may be string ids or `{ seedLocalId?, seedUid? }`. */\nexport function normalizeRelationPropertyValue(value: unknown): string | undefined {\n if (value == null) return undefined\n if (typeof value === 'string') {\n const t = value.trim()\n return t !== '' ? t : undefined\n }\n if (typeof value === 'object' && value !== null) {\n const o = value as { seedLocalId?: string; seedUid?: string }\n if (typeof o.seedLocalId === 'string' && o.seedLocalId.trim() !== '') {\n return o.seedLocalId.trim()\n }\n if (typeof o.seedUid === 'string' && o.seedUid.trim() !== '') {\n return o.seedUid.trim()\n }\n }\n return undefined\n}\n\n/** getCorrectId only accepts 10-char local ids and 0x66 uids; local seed refs can be up to 21 chars. */\nconst LOCAL_SEED_REF = /^[a-zA-Z0-9_-]{10,21}$/\n\n/** Resolve seed ids from a single string (context propertyValue or DB row). */\nexport function resolveSeedIdsFromRefString(s: string): { seedLocalId?: string; seedUid?: string } {\n const fromCorrect = parseLocalIdOrUid(s)\n if (fromCorrect.localId || fromCorrect.uid) {\n return { seedLocalId: fromCorrect.localId, seedUid: fromCorrect.uid }\n }\n if (LOCAL_SEED_REF.test(s) && !s.startsWith('0x')) {\n return { seedLocalId: s }\n }\n return {}\n}\n","import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} ","import debug from 'debug'\nimport { isEasAttestationExplorerUrl } from '@seedprotocol/arweave'\n\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getStorageTransactionIdForSeedUid } from '@/db/read/getStorageTransactionIdForSeedUid'\nimport { BaseArweaveClient } from './ArweaveClient/BaseArweaveClient'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nimport {\n normalizeRelationPropertyValue,\n resolveSeedIdsFromRefString,\n} from './relationSeedRef'\n\nconst logger = debug('seedSdk:helpers:mediaRef')\n\n/** Roles for feed/XML field manifests (shared with @seedprotocol/feed and @seedprotocol/react). */\nexport type FeedFieldRole = 'image' | 'audio' | 'video' | 'file' | 'html' | 'text'\n\nexport type FeedFieldDescriptor = {\n role: FeedFieldRole\n /** When heuristics are wrong, force how `classifyMediaRef` interprets the raw string. */\n treatAs?: 'arweaveTx' | 'seedUid' | 'url'\n}\n\nexport type FeedFieldManifest = Record<string, FeedFieldDescriptor>\n\nexport type ClassifyMediaRefOptions = {\n treatAs?: FeedFieldDescriptor['treatAs']\n}\n\nexport type MediaRefClassification =\n | { kind: 'empty' }\n | { kind: 'url'; href: string }\n | { kind: 'nonMediaUrl'; href: string }\n | { kind: 'seedUid'; uid: string }\n | { kind: 'seedLocalId'; localId: string }\n | { kind: 'arweaveTxId'; txId: string }\n | { kind: 'unknown'; raw: string }\n\nexport type ResolveMediaRefResult =\n | { status: 'ready'; href: string; source: 'direct' | 'gateway' | 'localBlob' }\n | { status: 'empty' }\n | {\n status: 'unresolved'\n reason: string\n classification: MediaRefClassification\n }\n\nexport type ResolveMediaRefOptions = ClassifyMediaRefOptions\n\n/** Typical Arweave transaction id: 43 URL-safe base64 characters. */\nconst ARWEAVE_TX_ID = /^[a-zA-Z0-9_-]{43}$/\n\nfunction trimOrEmpty(raw: string | undefined | null): string {\n if (raw == null) return ''\n return typeof raw === 'string' ? raw.trim() : String(raw).trim()\n}\n\nfunction coalesceStringField(item: Record<string, unknown>, key: string): string {\n const v = item[key]\n if (v == null) return ''\n if (typeof v === 'string') return v.trim()\n if (typeof v === 'number' || typeof v === 'boolean') return String(v)\n return ''\n}\n\n/**\n * Try JSON relation payloads and plain relation id strings.\n */\nfunction unwrapRelationString(raw: string): string {\n const t = raw.trim()\n if (!t) return t\n try {\n const parsed = JSON.parse(t) as unknown\n const fromObj = normalizeRelationPropertyValue(parsed)\n if (fromObj) return fromObj\n } catch {\n // not JSON\n }\n return t\n}\n\n/**\n * Pure, sync classification of a media-related string from feeds or XML.\n */\nexport function classifyMediaRef(\n raw: string,\n options?: ClassifyMediaRefOptions,\n): MediaRefClassification {\n const s = trimOrEmpty(raw)\n if (!s) {\n return { kind: 'empty' }\n }\n\n const treatAs = options?.treatAs\n if (treatAs === 'url') {\n return { kind: 'url', href: s }\n }\n if (treatAs === 'arweaveTx') {\n return { kind: 'arweaveTxId', txId: s }\n }\n if (treatAs === 'seedUid') {\n if (s.startsWith('0x') && s.length === 66) {\n return { kind: 'seedUid', uid: s }\n }\n return { kind: 'unknown', raw: s }\n }\n\n if (s.startsWith('http://') || s.startsWith('https://') || s.startsWith('blob:') || s.startsWith('data:')) {\n if (isEasAttestationExplorerUrl(s)) {\n return { kind: 'nonMediaUrl', href: s }\n }\n return { kind: 'url', href: s }\n }\n\n const unwrapped = unwrapRelationString(s)\n const ids = resolveSeedIdsFromRefString(unwrapped)\n if (ids.seedUid) {\n return { kind: 'seedUid', uid: ids.seedUid }\n }\n if (ids.seedLocalId) {\n return { kind: 'seedLocalId', localId: ids.seedLocalId }\n }\n\n if (unwrapped.startsWith('0x') && unwrapped.length === 66) {\n return { kind: 'seedUid', uid: unwrapped }\n }\n\n if (ARWEAVE_TX_ID.test(unwrapped) && !unwrapped.startsWith('0x')) {\n return { kind: 'arweaveTxId', txId: unwrapped }\n }\n\n return { kind: 'unknown', raw: s }\n}\n\n/**\n * Same as convertTxIdToImage but local to this module to avoid circular imports with helpers/index.\n */\nasync function tryLocalBlobUrlFromTxId(txId: string): Promise<string | undefined> {\n const imageFilePath = BaseFileManager.getFilesPath('images', txId)\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[tryLocalBlobUrlFromTxId] ${imageFilePath} does not exist`)\n return undefined\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n let arrayBuffer: ArrayBuffer\n if (buffer instanceof Blob) {\n arrayBuffer = await buffer.arrayBuffer()\n } else if (buffer instanceof ArrayBuffer) {\n arrayBuffer = buffer\n } else {\n const sliced = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n if (sliced instanceof SharedArrayBuffer) {\n const uint8Array = new Uint8Array(sliced)\n arrayBuffer = uint8Array.buffer.slice(0) as unknown as ArrayBuffer\n } else {\n arrayBuffer = sliced as ArrayBuffer\n }\n }\n\n const uint = new Uint8Array(arrayBuffer)\n const imageBlob = new Blob([uint])\n return URL.createObjectURL(imageBlob)\n}\n\nasync function resolveTxId(txId: string): Promise<ResolveMediaRefResult> {\n const local = await tryLocalBlobUrlFromTxId(txId)\n if (local) {\n return { status: 'ready', href: local, source: 'localBlob' }\n }\n return {\n status: 'ready',\n href: BaseArweaveClient.getRawUrl(txId),\n source: 'gateway',\n }\n}\n\n/**\n * Resolve a classified media reference to a display URL (https/blob/data), using local files when present.\n */\nexport async function resolveMediaRef(\n raw: string,\n options?: ResolveMediaRefOptions,\n): Promise<ResolveMediaRefResult> {\n const classification = classifyMediaRef(raw, options)\n\n switch (classification.kind) {\n case 'empty':\n return { status: 'empty' }\n case 'url':\n return {\n status: 'ready',\n href: classification.href,\n source: 'direct',\n }\n case 'nonMediaUrl':\n return {\n status: 'unresolved',\n reason: 'non_media_url',\n classification,\n }\n case 'seedLocalId':\n return {\n status: 'unresolved',\n reason: 'seed_local_id_not_portable',\n classification,\n }\n case 'unknown':\n return {\n status: 'unresolved',\n reason: 'unknown_ref',\n classification,\n }\n case 'arweaveTxId':\n return resolveTxId(classification.txId)\n case 'seedUid': {\n const appDb = BaseDb.getAppDb()\n if (!appDb) {\n return {\n status: 'unresolved',\n reason: 'seed_uid_requires_app_db',\n classification,\n }\n }\n const storageTransactionId = await getStorageTransactionIdForSeedUid(classification.uid)\n if (!storageTransactionId) {\n return {\n status: 'unresolved',\n reason: 'seed_uid_no_storage_transaction',\n classification,\n }\n }\n return resolveTxId(storageTransactionId)\n }\n default:\n return {\n status: 'unresolved',\n reason: 'unknown_ref',\n classification,\n }\n }\n}\n\nexport type NormalizedMediaField = {\n role: 'image' | 'audio' | 'video' | 'file'\n raw: string\n classification: MediaRefClassification\n}\n\nexport type NormalizedHtmlField = {\n role: 'html'\n raw: string\n}\n\nexport type NormalizedTextField = {\n role: 'text'\n raw: string\n}\n\nexport type NormalizedFeedFieldValue =\n | NormalizedMediaField\n | NormalizedHtmlField\n | NormalizedTextField\n\n/**\n * Read a string field from a parsed item, trying camelCase and snake_case keys.\n */\nexport function getFeedItemStringField(item: Record<string, unknown>, key: string): string {\n const direct = coalesceStringField(item, key)\n if (direct) return direct\n const snake = key.replace(/[A-Z]/g, (l) => `_${l.toLowerCase()}`)\n if (snake !== key) {\n const alt = coalesceStringField(item, snake)\n if (alt) return alt\n }\n const parts = key.split('_')\n if (parts.length > 1) {\n const camel = parts[0] + parts.slice(1).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('')\n const alt2 = coalesceStringField(item, camel)\n if (alt2) return alt2\n }\n return ''\n}\n\n/**\n * Apply a field manifest to a plain feed item: classify media/file fields; pass through html/text.\n */\nexport function normalizeFeedItemFields(\n item: Record<string, unknown>,\n manifest: FeedFieldManifest,\n): Record<string, NormalizedFeedFieldValue | undefined> {\n const out: Record<string, NormalizedFeedFieldValue | undefined> = {}\n for (const [fieldKey, descriptor] of Object.entries(manifest)) {\n const raw = getFeedItemStringField(item, fieldKey)\n if (!raw) {\n out[fieldKey] = undefined\n continue\n }\n if (descriptor.role === 'html') {\n out[fieldKey] = { role: 'html', raw }\n continue\n }\n if (descriptor.role === 'text') {\n out[fieldKey] = { role: 'text', raw }\n continue\n }\n const classification = classifyMediaRef(raw, { treatAs: descriptor.treatAs })\n out[fieldKey] = {\n role: descriptor.role,\n raw,\n classification,\n }\n }\n return out\n}\n","import debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nimport {\n BaseArweaveClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n} from '@seedprotocol/arweave'\nimport { BaseEasClient, BaseQueryClient } from '@seedprotocol/eas'\n\nexport {\n BaseArweaveClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n BaseEasClient,\n BaseQueryClient,\n}\n\n// Exported object keeps external facade bindings live for Rollup. Dynamic\n// `await import('@/helpers')` otherwise emits a frozen module-namespace that\n// can reference tree-shaken imports → ReferenceError in the browser.\nexport const __rollupExternalFacadeInterop = {\n BaseArweaveClient,\n BaseEasClient,\n BaseQueryClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n} as const\n\nexport * from './FileManager/BaseFileManager'\nexport { waitForEntityIdle } from './waitForEntityIdle'\nexport * from './publishConfig'\nexport * from './metadataPropertyNames'\nexport * from './relationSeedRef'\nexport * from './mediaRef'\nexport { generateId } from './generateId'\nconst logger = debug('seedSdk:shared:helpers')\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Blob URLs are fetchable but session-scoped; recognize them as url type\n if (data.startsWith('blob:')) {\n return 'url'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImage = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = BaseFileManager.getFilesPath('images', txId)\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImage] ${imageFilePath} does not exist`)\n return\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n // Convert Blob to ArrayBuffer if needed, or use Buffer directly\n let arrayBuffer: ArrayBuffer\n if (buffer instanceof Blob) {\n arrayBuffer = await buffer.arrayBuffer()\n } else if (buffer instanceof ArrayBuffer) {\n arrayBuffer = buffer\n } else {\n // Node.js Buffer\n const sliced = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n // Handle SharedArrayBuffer case by creating a new ArrayBuffer\n if (sliced instanceof SharedArrayBuffer) {\n const uint8Array = new Uint8Array(sliced)\n arrayBuffer = uint8Array.buffer.slice(0) as unknown as ArrayBuffer\n } else {\n arrayBuffer = sliced as ArrayBuffer\n }\n }\n\n const uint = new Uint8Array(arrayBuffer)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\n/**\n * Constructs an Arweave URL for a storage transaction ID\n * @param storageTransactionId - The Arweave transaction ID\n * @returns The full URL to access the transaction data on Arweave (e.g., https://arweave.net/raw/{transactionId})\n * @deprecated Use BaseArweaveClient.getRawUrl() instead for better consistency and testability\n */\nexport const getArweaveUrlForTransaction = (storageTransactionId: string): string => {\n return BaseArweaveClient.getRawUrl(storageTransactionId)\n}\n\nexport const getExecutionTime = async (task: (...args: any[]) => Promise<any>, args: any[]) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport {\n parseEasRelationPropertyName,\n type ParsedEasRelationPropertyName,\n} from '@seedprotocol/query'\n\n\nexport const isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n","const ENV = (typeof process !== 'undefined' && process.env) \n ? process.env \n : (typeof window !== 'undefined' && (window as any).env) \n ? (window as any).env \n : {};\n\nconst MACHINE_ID_SCOPE = '@seedSdk'\n\nexport enum MachineIds {\n CLIENT_MANAGER = `${MACHINE_ID_SCOPE}/clientManager`,\n EAS_SYNC_MANAGER = `${MACHINE_ID_SCOPE}/easSyncManager`,\n GLOBAL = `${MACHINE_ID_SCOPE}/global`,\n INTERNAL = `${MACHINE_ID_SCOPE}/internal`,\n EAS = `${MACHINE_ID_SCOPE}/eas`,\n ITEM = `${MACHINE_ID_SCOPE}/item`,\n ALL_ITEMS = `${MACHINE_ID_SCOPE}/allItems`,\n MODEL = `${MACHINE_ID_SCOPE}/model`,\n FILE_SYSTEM = `${MACHINE_ID_SCOPE}/fileSystem`,\n}\n\nconst { INTERNAL, GLOBAL, EAS, MODEL } = MachineIds\n\nexport enum ClientManagerState {\n UNINITIALIZED = 'uninitialized',\n PLATFORM_CLASSES_INIT = 'platformClassesInit',\n FILE_SYSTEM_INIT = 'fileSystemInit',\n DB_INIT = 'dbInit',\n SAVE_CONFIG = 'saveConfig',\n ADD_MODELS_TO_STORE = 'addModelsToStore',\n ADD_MODELS_TO_DB = 'addModelsToDb',\n PROCESS_SCHEMA_FILES = 'processSchemaFiles',\n IDLE = 'idle',\n}\n\nexport enum ClientManagerEvents {\n UPDATE_CONTEXT = 'updateContext',\n PLATFORM_CLASSES_READY = 'platformClassesReady',\n FILE_SYSTEM_READY = 'fileSystemReady',\n DB_READY = 'dbReady',\n SAVE_CONFIG_SUCCESS = 'saveConfigSuccess',\n SAVE_APP_STATE_SUCCESS = 'saveAppStateSuccess',\n SET_ADDRESSES = 'setAddresses',\n ADD_MODELS_TO_STORE_SUCCESS = 'addModelsToStoreSuccess',\n ADD_MODELS_TO_DB_SUCCESS = 'addModelsToDbSuccess',\n PROCESS_SCHEMA_FILES_SUCCESS = 'processSchemaFilesSuccess',\n}\n\nexport enum GlobalState {\n UNINITIALIZED = 'uninitialized',\n INITIALIZING = 'initializing',\n INITIALIZED = 'initialized',\n PUBLISHING_ITEM = 'publishingItem',\n ADDING_MODELS_TO_DB = 'addingModelsToDb',\n}\n\nconst {\n UNINITIALIZED: GLOBAL_UNINITIALIZED,\n INITIALIZING,\n INITIALIZED,\n PUBLISHING_ITEM,\n ADDING_MODELS_TO_DB,\n } = GlobalState\n\nexport enum InternalState {\n IDLE = 'idle',\n INITIALIZING = 'initializing',\n VALIDATING_INPUT = 'validatingInput',\n CONFIGURING_FS = 'configuringFs',\n LOADING_SEED_DB = 'loadingSeedDb',\n SAVING_CONFIG = 'savingConfig',\n LOADING_APP_DB = 'loadingAppDb',\n LOADING_SDK_DB = 'loadingSdkDb',\n}\n\nconst { VALIDATING_INPUT, CONFIGURING_FS, LOADING_SEED_DB, LOADING_APP_DB } =\n InternalState\n\nexport enum PublishMachineStates {\n VALIDATING_ITEM_DATA = 'validatingItemData',\n CREATING_PUBLISH_ATTEMPT = 'creatingPublishAttempt',\n UPLOADING = 'uploading',\n PREPARING_PUBLISH_REQUEST_DATA = 'preparingPublishRequestData',\n PUBLISHING = 'publishing',\n IDLE = 'idle',\n}\n\nexport const INTERNAL_VALIDATING_INPUT_SUCCESS = `${INTERNAL}.${VALIDATING_INPUT}.success`\n\nexport const INTERNAL_CONFIGURING_FS_SUCCESS = `${INTERNAL}.${CONFIGURING_FS}.success`\nexport const INTERNAL_CONFIGURING_FS_FAILURE = `${INTERNAL}.${CONFIGURING_FS}.failure`\n\nexport const INTERNAL_LOADING_SEED_DB_SUCCESS = `${INTERNAL}.${LOADING_SEED_DB}.success`\nexport const INTERNAL_LOADING_SEED_DB_FAILURE = `${INTERNAL}.${LOADING_SEED_DB}.failure`\n\nexport const INTERNAL_LOADING_APP_DB_SUCCESS = `${INTERNAL}.${LOADING_APP_DB}.success`\nexport const INTERNAL_LOADING_APP_DB_FAILURE = `${INTERNAL}.${LOADING_APP_DB}.failure`\n\nexport const INTERNAL_SAVING_CONFIG_SUCCESS = `${INTERNAL}.savingConfig.success`\nexport const INTERNAL_SAVING_CONFIG_FAILURE = `${INTERNAL}.savingConfig.failure`\n\nexport const GLOBAL_GETTING_SEED_CLASS_SUCCESS = `${GLOBAL}.${PUBLISHING_ITEM}.success`\nexport const GLOBAL_INITIALIZING_SEND_CONFIG = `${GLOBAL}.${INITIALIZING}.sendConfig`\nexport const GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY = `${GLOBAL}.${INITIALIZING}.internalServiceReady`\nexport const GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES = `${GLOBAL}.${INITIALIZING}.createAllItemsServices`\nexport const GLOBAL_ADDING_MODELS_TO_DB_SUCCESS = `${GLOBAL}.${ADDING_MODELS_TO_DB}.success`\n\nexport const CHILD_SNAPSHOT = 'childSnapshot'\n\nexport const INTERNAL_SERVICE_SNAPSHOT = 'internalServiceSnapshot'\n\nexport const BROWSER_FS_TOP_DIR = 'app-files'\n\nexport const EAS_ENDPOINT =\n ENV.NEXT_PUBLIC_EAS_ENDPOINT ||\n ENV.EAS_ENDPOINT ||\n 'https://optimism-sepolia.easscan.org/graphql'\n\n/**\n * @deprecated Use BaseArweaveClient.getHost() instead.\n * This constant is kept for backward compatibility but will be removed in a future version.\n * Migration: import { BaseArweaveClient } from '@/helpers' and use BaseArweaveClient.getHost()\n */\nexport const ARWEAVE_HOST =\n ENV.NEXT_PUBLIC_ARWEAVE_HOST || 'ar.seedprotocol.io'\n\n/**\n * @deprecated Use BaseArweaveClient.getEndpoint() instead.\n * This constant is kept for backward compatibility but will be removed in a future version.\n * Migration: import { BaseArweaveClient } from '@/helpers' and use BaseArweaveClient.getEndpoint()\n */\nexport const ARWEAVE_ENDPOINT = `https://${ARWEAVE_HOST}/graphql`\n\n"],"names":["Date","logger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants-CROrIRd-.js","sources":["../../src/Schema/validation.ts","../../src/helpers/property/index.ts","../../src/helpers/relationSeedRef.ts","../../src/db/read/getStorageTransactionIdForSeedUid.ts","../../src/helpers/mediaRef.ts","../../src/helpers/index.ts","../../src/client/constants.ts"],"sourcesContent":["import { Type, TSchema } from '@sinclair/typebox'\nimport { ModelPropertyDataTypes } from '@/helpers/property'\n\n/** Default maximum length for Text properties when not explicitly set. Html holds arbitrary-length content and does not use this limit. */\nexport const DEFAULT_TEXT_MAX_LENGTH = 255\n\n/**\n * Validation rules that can be applied to properties\n * Matches the ValidationRules definition in protocol/schema.json\n */\nexport type ValidationRules = {\n pattern?: string\n minLength?: number\n maxLength?: number\n enum?: any[]\n custom?: string\n [key: string]: any\n}\n\n/**\n * TypeBox schema for ValidationRules\n */\nexport const TValidationRules = Type.Object({\n pattern: Type.Optional(Type.String()),\n minLength: Type.Optional(Type.Integer({ minimum: 0 })),\n maxLength: Type.Optional(Type.Integer({ minimum: 1 })),\n enum: Type.Optional(Type.Array(Type.Any())),\n custom: Type.Optional(Type.String()),\n}, { additionalProperties: true })\n\n/**\n * Validation error structure\n */\nexport type ValidationError = {\n field: string\n message: string\n code: string\n severity: 'error' | 'warning'\n}\n\n/**\n * Validation result\n */\nexport type ValidationResult = {\n isValid: boolean\n errors: ValidationError[]\n warnings?: ValidationError[]\n}\n\n","import { Static, Type } from '@sinclair/typebox'\nimport { PropertyDataType, PropertyDefs, StorageType } from '@/types'\nimport { TValidationRules } from '@/Schema/validation'\n\n/**\n * Enum for all property data types\n */\nexport enum ModelPropertyDataTypes {\n Text = 'Text',\n Number = 'Number',\n List = 'List',\n Relation = 'Relation',\n Image = 'Image',\n Json = 'Json',\n File = 'File',\n Boolean = 'Boolean',\n Date = 'Date',\n Html = 'Html',\n}\n\n/** Known data types in lowercase for normalization */\nconst DATA_TYPE_LOWER_MAP: Record<string, string> = {\n text: 'Text',\n string: 'Text', // JSON Schema convention\n number: 'Number',\n list: 'List',\n relation: 'Relation',\n image: 'Image',\n json: 'Json',\n file: 'File',\n boolean: 'Boolean',\n date: 'Date',\n html: 'Html',\n blob: 'Blob',\n}\n\n/**\n * Normalize dataType to canonical PascalCase form.\n * Accepts lowercase (e.g. 'text') or mixed case and returns 'Text'.\n * Use when ingesting dataType from JSON schema files.\n */\nexport function normalizeDataType(value: string | undefined): string {\n if (!value || typeof value !== 'string') return value ?? ''\n const lower = value.toLowerCase().trim()\n return DATA_TYPE_LOWER_MAP[lower] ?? value.charAt(0).toUpperCase() + value.slice(1).toLowerCase()\n}\n\nexport const TPropertyDataType = Type.Union([\n Type.Literal(ModelPropertyDataTypes.Text),\n Type.Literal(ModelPropertyDataTypes.Number),\n Type.Literal(ModelPropertyDataTypes.List),\n Type.Literal(ModelPropertyDataTypes.Relation),\n Type.Literal(ModelPropertyDataTypes.Image),\n Type.Literal(ModelPropertyDataTypes.Json),\n Type.Literal(ModelPropertyDataTypes.File),\n Type.Literal(ModelPropertyDataTypes.Boolean),\n Type.Literal(ModelPropertyDataTypes.Date),\n Type.Literal(ModelPropertyDataTypes.Html),\n])\n\nexport const TStorageType = Type.Union([\n Type.Literal('ItemStorage'), // Looks for a storageTransactionId property on the item\n Type.Literal('PropertyStorage'), // Looks for a storageTransactionId value on the property\n])\n\n/** How publish handles `data:image/*` URIs inside Html storage. Only applies when `dataType === 'Html'`. */\nexport const THtmlEmbeddedDataUriPolicy = Type.Union([\n Type.Literal('materialize'),\n Type.Literal('preserve'),\n])\nexport type HtmlEmbeddedDataUriPolicy = Static<typeof THtmlEmbeddedDataUriPolicy>\n\nexport const TProperty = Type.Object({\n id: Type.Optional(Type.String()), // schemaFileId (string) - public ID\n _dbId: Type.Optional(Type.Number()), // Database integer ID - internal only\n name: Type.Optional(Type.String()),\n dataType: TPropertyDataType,\n ref: Type.Optional(Type.String()),\n // modelId: string (modelFileId) in code; number only for DB foreign keys when resolved\n modelId: Type.Optional(Type.Union([Type.Number(), Type.String()])),\n modelName: Type.Optional(Type.String()),\n refModelId: Type.Optional(Type.Number()),\n refModelName: Type.Optional(Type.String()),\n refValueType: Type.Optional(TPropertyDataType),\n storageType: Type.Optional(TStorageType),\n localStorageDir: Type.Optional(Type.String()),\n filenameSuffix: Type.Optional(Type.String()),\n validation: Type.Optional(TValidationRules),\n required: Type.Optional(Type.Boolean()),\n /** When set on an Html property: `materialize` uploads embedded images as Image seeds and rewrites src; `preserve` leaves data URIs. */\n htmlEmbeddedDataUriPolicy: Type.Optional(THtmlEmbeddedDataUriPolicy),\n})\n\nexport const TPropertyConstructor = Type.Function(\n [\n Type.Optional(Type.Union([Type.String(), TStorageType, Type.Undefined()])),\n Type.Optional(Type.Union([Type.String(), TPropertyDataType])),\n Type.Optional(Type.Union([Type.String(), Type.Boolean()])),\n ],\n TProperty,\n)\n\nexport const TPropertyDefs = Type.Record(\n TPropertyDataType,\n TPropertyConstructor,\n)\n\nfunction htmlPropertyFactory(opts?: { htmlEmbeddedDataUriPolicy?: HtmlEmbeddedDataUriPolicy }) {\n return {\n dataType: ModelPropertyDataTypes.Html,\n ...(opts?.htmlEmbeddedDataUriPolicy\n ? { htmlEmbeddedDataUriPolicy: opts.htmlEmbeddedDataUriPolicy }\n : {}),\n } satisfies Static<typeof TProperty>\n}\n\nexport const Property = {\n Text: (\n storageType?: StorageType,\n localStorageDir?: string,\n filenameSuffix?: string,\n ) => ({\n dataType: ModelPropertyDataTypes.Text,\n storageType,\n localStorageDir,\n filenameSuffix,\n TObject: Type.String(),\n }),\n Json: () => ({ dataType: ModelPropertyDataTypes.Json }),\n File: () => ({ dataType: ModelPropertyDataTypes.File }),\n Number: () => ({ dataType: ModelPropertyDataTypes.Number }),\n /**\n * Create a List property. refValueType is required; ref is required only for list of relations.\n * @param refValueType - Element type: 'Text', 'Number', 'Relation', etc.\n * @param ref - Model name when refValueType is 'Relation' (optional for primitives)\n * @example List('Text') - list of strings\n * @example List('Relation', 'Tag') - list of relations to Tag model\n */\n List: (refValueType: PropertyDataType, ref?: string) => ({\n dataType: ModelPropertyDataTypes.List,\n ref,\n refValueType,\n }),\n Relation: (ref?: string, refValueType?: PropertyDataType, required?: boolean) => ({\n dataType: ModelPropertyDataTypes.Relation,\n ref,\n refValueType,\n required,\n }),\n Image: () => ({ dataType: ModelPropertyDataTypes.Image }),\n Boolean: () => ({ dataType: ModelPropertyDataTypes.Boolean }),\n Date: () => ({ dataType: ModelPropertyDataTypes.Date }),\n Html: htmlPropertyFactory,\n /** `Html` opts are not representable in `TPropertyConstructor`; keep runtime shape via double assert. */\n} as unknown as PropertyDefs\n\nexport const PropertyMetadataKey = Symbol('property')\n\nexport const PropertyConstructor = (propertyType: Static<typeof TProperty>) => {\n return function (parentClassPrototype: any, propertyKey: string) {\n const existingProperties =\n Reflect.getMetadata(PropertyMetadataKey, parentClassPrototype) || []\n\n existingProperties.push({ propertyKey, propertyType })\n Reflect.defineMetadata(\n PropertyMetadataKey,\n existingProperties,\n parentClassPrototype,\n )\n }\n}\n\nexport const Text = (\n storageType?: StorageType,\n srcDir?: string,\n filenameSuffix?: string,\n) => PropertyConstructor(Property.Text(storageType, srcDir, filenameSuffix))\nexport const Number = () => PropertyConstructor(Property.Number())\nexport const Json = () => PropertyConstructor(Property.Json())\nexport const File = () => PropertyConstructor(Property.File())\nexport const Image = () => PropertyConstructor(Property.Image())\nexport const Relation = (ref: string, refValueType?: PropertyDataType, required?: boolean) =>\n PropertyConstructor(Property.Relation(ref, refValueType, required)) // Adjust for actual relation type\nexport const List = (refValueType: PropertyDataType, ref?: string) =>\n PropertyConstructor(Property.List(refValueType, ref))\nexport const Boolean = () => PropertyConstructor(Property.Boolean())\nexport const Date = () => PropertyConstructor(Property.Date())\nexport const Html = (opts?: { htmlEmbeddedDataUriPolicy?: HtmlEmbeddedDataUriPolicy }) =>\n PropertyConstructor(htmlPropertyFactory(opts))\n","/** Same rules as getCorrectId in helpers/index (avoid barrel circular import). */\nfunction parseLocalIdOrUid(localIdOrUid: string): { localId?: string; uid?: string } {\n const id = { localId: undefined as string | undefined, uid: undefined as string | undefined }\n if (!localIdOrUid) return id\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\n/** Relation/image refs may be string ids or `{ seedLocalId?, seedUid? }`. */\nexport function normalizeRelationPropertyValue(value: unknown): string | undefined {\n if (value == null) return undefined\n if (typeof value === 'string') {\n const t = value.trim()\n return t !== '' ? t : undefined\n }\n if (typeof value === 'object' && value !== null) {\n const o = value as { seedLocalId?: string; seedUid?: string }\n if (typeof o.seedLocalId === 'string' && o.seedLocalId.trim() !== '') {\n return o.seedLocalId.trim()\n }\n if (typeof o.seedUid === 'string' && o.seedUid.trim() !== '') {\n return o.seedUid.trim()\n }\n }\n return undefined\n}\n\n/** getCorrectId only accepts 10-char local ids and 0x66 uids; local seed refs can be up to 21 chars. */\nconst LOCAL_SEED_REF = /^[a-zA-Z0-9_-]{10,21}$/\n\n/** Resolve seed ids from a single string (context propertyValue or DB row). */\nexport function resolveSeedIdsFromRefString(s: string): { seedLocalId?: string; seedUid?: string } {\n const fromCorrect = parseLocalIdOrUid(s)\n if (fromCorrect.localId || fromCorrect.uid) {\n return { seedLocalId: fromCorrect.localId, seedUid: fromCorrect.uid }\n }\n if (LOCAL_SEED_REF.test(s) && !s.startsWith('0x')) {\n return { seedLocalId: s }\n }\n return {}\n}\n","import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} ","import debug from 'debug'\nimport { isEasAttestationExplorerUrl } from '@seedprotocol/arweave'\n\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getStorageTransactionIdForSeedUid } from '@/db/read/getStorageTransactionIdForSeedUid'\nimport { BaseArweaveClient } from './ArweaveClient/BaseArweaveClient'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nimport {\n normalizeRelationPropertyValue,\n resolveSeedIdsFromRefString,\n} from './relationSeedRef'\n\nconst logger = debug('seedSdk:helpers:mediaRef')\n\n/** Roles for feed/XML field manifests (shared with @seedprotocol/feed and @seedprotocol/react). */\nexport type FeedFieldRole = 'image' | 'audio' | 'video' | 'file' | 'html' | 'text'\n\nexport type FeedFieldDescriptor = {\n role: FeedFieldRole\n /** When heuristics are wrong, force how `classifyMediaRef` interprets the raw string. */\n treatAs?: 'arweaveTx' | 'seedUid' | 'url'\n}\n\nexport type FeedFieldManifest = Record<string, FeedFieldDescriptor>\n\nexport type ClassifyMediaRefOptions = {\n treatAs?: FeedFieldDescriptor['treatAs']\n}\n\nexport type MediaRefClassification =\n | { kind: 'empty' }\n | { kind: 'url'; href: string }\n | { kind: 'nonMediaUrl'; href: string }\n | { kind: 'seedUid'; uid: string }\n | { kind: 'seedLocalId'; localId: string }\n | { kind: 'arweaveTxId'; txId: string }\n | { kind: 'unknown'; raw: string }\n\nexport type ResolveMediaRefResult =\n | { status: 'ready'; href: string; source: 'direct' | 'gateway' | 'localBlob' }\n | { status: 'empty' }\n | {\n status: 'unresolved'\n reason: string\n classification: MediaRefClassification\n }\n\nexport type ResolveMediaRefOptions = ClassifyMediaRefOptions\n\n/** Typical Arweave transaction id: 43 URL-safe base64 characters. */\nconst ARWEAVE_TX_ID = /^[a-zA-Z0-9_-]{43}$/\n\nfunction trimOrEmpty(raw: string | undefined | null): string {\n if (raw == null) return ''\n return typeof raw === 'string' ? raw.trim() : String(raw).trim()\n}\n\nfunction coalesceStringField(item: Record<string, unknown>, key: string): string {\n const v = item[key]\n if (v == null) return ''\n if (typeof v === 'string') return v.trim()\n if (typeof v === 'number' || typeof v === 'boolean') return String(v)\n return ''\n}\n\n/**\n * Try JSON relation payloads and plain relation id strings.\n */\nfunction unwrapRelationString(raw: string): string {\n const t = raw.trim()\n if (!t) return t\n try {\n const parsed = JSON.parse(t) as unknown\n const fromObj = normalizeRelationPropertyValue(parsed)\n if (fromObj) return fromObj\n } catch {\n // not JSON\n }\n return t\n}\n\n/**\n * Pure, sync classification of a media-related string from feeds or XML.\n */\nexport function classifyMediaRef(\n raw: string,\n options?: ClassifyMediaRefOptions,\n): MediaRefClassification {\n const s = trimOrEmpty(raw)\n if (!s) {\n return { kind: 'empty' }\n }\n\n const treatAs = options?.treatAs\n if (treatAs === 'url') {\n return { kind: 'url', href: s }\n }\n if (treatAs === 'arweaveTx') {\n return { kind: 'arweaveTxId', txId: s }\n }\n if (treatAs === 'seedUid') {\n if (s.startsWith('0x') && s.length === 66) {\n return { kind: 'seedUid', uid: s }\n }\n return { kind: 'unknown', raw: s }\n }\n\n if (s.startsWith('http://') || s.startsWith('https://') || s.startsWith('blob:') || s.startsWith('data:')) {\n if (isEasAttestationExplorerUrl(s)) {\n return { kind: 'nonMediaUrl', href: s }\n }\n return { kind: 'url', href: s }\n }\n\n const unwrapped = unwrapRelationString(s)\n const ids = resolveSeedIdsFromRefString(unwrapped)\n if (ids.seedUid) {\n return { kind: 'seedUid', uid: ids.seedUid }\n }\n if (ids.seedLocalId) {\n return { kind: 'seedLocalId', localId: ids.seedLocalId }\n }\n\n if (unwrapped.startsWith('0x') && unwrapped.length === 66) {\n return { kind: 'seedUid', uid: unwrapped }\n }\n\n if (ARWEAVE_TX_ID.test(unwrapped) && !unwrapped.startsWith('0x')) {\n return { kind: 'arweaveTxId', txId: unwrapped }\n }\n\n return { kind: 'unknown', raw: s }\n}\n\n/**\n * Same as convertTxIdToImage but local to this module to avoid circular imports with helpers/index.\n */\nasync function tryLocalBlobUrlFromTxId(txId: string): Promise<string | undefined> {\n const imageFilePath = BaseFileManager.getFilesPath('images', txId)\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[tryLocalBlobUrlFromTxId] ${imageFilePath} does not exist`)\n return undefined\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n let arrayBuffer: ArrayBuffer\n if (buffer instanceof Blob) {\n arrayBuffer = await buffer.arrayBuffer()\n } else if (buffer instanceof ArrayBuffer) {\n arrayBuffer = buffer\n } else {\n const sliced = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n if (sliced instanceof SharedArrayBuffer) {\n const uint8Array = new Uint8Array(sliced)\n arrayBuffer = uint8Array.buffer.slice(0) as unknown as ArrayBuffer\n } else {\n arrayBuffer = sliced as ArrayBuffer\n }\n }\n\n const uint = new Uint8Array(arrayBuffer)\n const imageBlob = new Blob([uint])\n return URL.createObjectURL(imageBlob)\n}\n\nasync function resolveTxId(txId: string): Promise<ResolveMediaRefResult> {\n const local = await tryLocalBlobUrlFromTxId(txId)\n if (local) {\n return { status: 'ready', href: local, source: 'localBlob' }\n }\n return {\n status: 'ready',\n href: BaseArweaveClient.getRawUrl(txId),\n source: 'gateway',\n }\n}\n\n/**\n * Resolve a classified media reference to a display URL (https/blob/data), using local files when present.\n */\nexport async function resolveMediaRef(\n raw: string,\n options?: ResolveMediaRefOptions,\n): Promise<ResolveMediaRefResult> {\n const classification = classifyMediaRef(raw, options)\n\n switch (classification.kind) {\n case 'empty':\n return { status: 'empty' }\n case 'url':\n return {\n status: 'ready',\n href: classification.href,\n source: 'direct',\n }\n case 'nonMediaUrl':\n return {\n status: 'unresolved',\n reason: 'non_media_url',\n classification,\n }\n case 'seedLocalId':\n return {\n status: 'unresolved',\n reason: 'seed_local_id_not_portable',\n classification,\n }\n case 'unknown':\n return {\n status: 'unresolved',\n reason: 'unknown_ref',\n classification,\n }\n case 'arweaveTxId':\n return resolveTxId(classification.txId)\n case 'seedUid': {\n const appDb = BaseDb.getAppDb()\n if (!appDb) {\n return {\n status: 'unresolved',\n reason: 'seed_uid_requires_app_db',\n classification,\n }\n }\n const storageTransactionId = await getStorageTransactionIdForSeedUid(classification.uid)\n if (!storageTransactionId) {\n return {\n status: 'unresolved',\n reason: 'seed_uid_no_storage_transaction',\n classification,\n }\n }\n return resolveTxId(storageTransactionId)\n }\n default:\n return {\n status: 'unresolved',\n reason: 'unknown_ref',\n classification,\n }\n }\n}\n\nexport type NormalizedMediaField = {\n role: 'image' | 'audio' | 'video' | 'file'\n raw: string\n classification: MediaRefClassification\n}\n\nexport type NormalizedHtmlField = {\n role: 'html'\n raw: string\n}\n\nexport type NormalizedTextField = {\n role: 'text'\n raw: string\n}\n\nexport type NormalizedFeedFieldValue =\n | NormalizedMediaField\n | NormalizedHtmlField\n | NormalizedTextField\n\n/**\n * Read a string field from a parsed item, trying camelCase and snake_case keys.\n */\nexport function getFeedItemStringField(item: Record<string, unknown>, key: string): string {\n const direct = coalesceStringField(item, key)\n if (direct) return direct\n const snake = key.replace(/[A-Z]/g, (l) => `_${l.toLowerCase()}`)\n if (snake !== key) {\n const alt = coalesceStringField(item, snake)\n if (alt) return alt\n }\n const parts = key.split('_')\n if (parts.length > 1) {\n const camel = parts[0] + parts.slice(1).map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join('')\n const alt2 = coalesceStringField(item, camel)\n if (alt2) return alt2\n }\n return ''\n}\n\n/**\n * Apply a field manifest to a plain feed item: classify media/file fields; pass through html/text.\n */\nexport function normalizeFeedItemFields(\n item: Record<string, unknown>,\n manifest: FeedFieldManifest,\n): Record<string, NormalizedFeedFieldValue | undefined> {\n const out: Record<string, NormalizedFeedFieldValue | undefined> = {}\n for (const [fieldKey, descriptor] of Object.entries(manifest)) {\n const raw = getFeedItemStringField(item, fieldKey)\n if (!raw) {\n out[fieldKey] = undefined\n continue\n }\n if (descriptor.role === 'html') {\n out[fieldKey] = { role: 'html', raw }\n continue\n }\n if (descriptor.role === 'text') {\n out[fieldKey] = { role: 'text', raw }\n continue\n }\n const classification = classifyMediaRef(raw, { treatAs: descriptor.treatAs })\n out[fieldKey] = {\n role: descriptor.role,\n raw,\n classification,\n }\n }\n return out\n}\n","import debug from 'debug'\nimport { GetCorrectId } from '@/types/helpers'\nimport { GetCorrectIdReturn } from '@/types/helpers'\nimport { BaseFileManager } from './FileManager/BaseFileManager'\nimport {\n BaseArweaveClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n} from '@seedprotocol/arweave'\nimport { BaseEasClient, BaseQueryClient } from '@seedprotocol/eas'\n\nexport {\n BaseArweaveClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n BaseEasClient,\n BaseQueryClient,\n}\n\n// Exported object keeps external facade bindings live for Rollup. Dynamic\n// `await import('@/helpers')` otherwise emits a frozen module-namespace that\n// can reference tree-shaken imports → ReferenceError in the browser.\nexport const __rollupExternalFacadeInterop = {\n BaseArweaveClient,\n BaseEasClient,\n BaseQueryClient,\n ensureReadGatewaySelected,\n resolveSeedGatewayEndpoints,\n getReadGatewayHostsForConfig,\n seedGatewayConfigFromSeedConfig,\n getResolvedSeedGatewayEndpoints,\n setResolvedSeedGatewayEndpoints,\n} as const\n\nexport * from './FileManager/BaseFileManager'\nexport { waitForEntityIdle } from './waitForEntityIdle'\nexport * from './publishConfig'\nexport * from './metadataPropertyNames'\nexport * from './relationSeedRef'\nexport * from './mediaRef'\nexport { generateId } from './generateId'\nconst logger = debug('seedSdk:shared:helpers')\n\nexport const toSnakeCase = (str: string) => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase()\n}\n\nexport const identifyString = (str: string) => {\n try {\n JSON.parse(str)\n return 'json'\n } catch (e) {\n // Not JSON\n }\n\n if (!str) {\n return\n }\n\n if (str.trim().startsWith('<') && str.trim().endsWith('>')) {\n return 'html'\n }\n\n // Simple markdown checks (very naive)\n if (/^#{1,6}\\s|^-{3,}|\\*{3,}|^-{1,2}\\s|\\*\\s/.test(str)) {\n return 'markdown'\n }\n\n if (/^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/.test(str)) {\n return 'base64'\n }\n\n // Default to plain text if unsure\n return 'text'\n}\n\nexport const getMimeType = (base64: string) => {\n if (!base64) {\n return null\n }\n const result = base64.match(/^data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,/)\n\n if (result && result.length > 1) {\n return result[1]\n } else {\n return null // MIME type could not be determined\n }\n}\n\nexport const getCorrectId: GetCorrectId = (localIdOrUid: string) => {\n const id: GetCorrectIdReturn = {\n localId: undefined,\n uid: undefined,\n }\n if (!localIdOrUid) {\n return id\n }\n if (localIdOrUid.length === 10) {\n id.localId = localIdOrUid\n }\n if (localIdOrUid.startsWith('0x') && localIdOrUid.length === 66) {\n id.uid = localIdOrUid\n }\n return id\n}\n\nexport const getDataTypeFromString = (\n data: string,\n): 'imageBase64' | 'base64' | 'url' | null => {\n const nonImageBase64Regex =\n /^(?!data:image\\/(?:jpeg|png|gif|bmp|webp);base64,)[A-Za-z0-9+/=]+$/\n\n if (nonImageBase64Regex.test(data)) {\n return 'base64'\n }\n\n // Regular expression for base64 (simple version, checking for base64 format)\n const imageBase64Regex = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/]+={0,2}$/\n\n if (imageBase64Regex.test(data)) {\n return 'imageBase64'\n }\n\n // Blob URLs are fetchable but session-scoped; recognize them as url type\n if (data.startsWith('blob:')) {\n return 'url'\n }\n\n // Regular expression for URL (simple version, checking for common URL format)\n const urlRegex =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n if (urlRegex.test(data)) {\n return 'url'\n }\n\n return null\n}\n\nexport const convertTxIdToImage = async (\n txId: string,\n): Promise<string | undefined> => {\n const imageFilePath = BaseFileManager.getFilesPath('images', txId)\n const fileExists = await BaseFileManager.pathExists(imageFilePath)\n if (!fileExists) {\n logger(`[ItemView] [updateImage] ${imageFilePath} does not exist`)\n return\n }\n const buffer = await BaseFileManager.readFileAsBuffer(imageFilePath)\n\n // Convert Blob to ArrayBuffer if needed, or use Buffer directly\n let arrayBuffer: ArrayBuffer\n if (buffer instanceof Blob) {\n arrayBuffer = await buffer.arrayBuffer()\n } else if (buffer instanceof ArrayBuffer) {\n arrayBuffer = buffer\n } else {\n // Node.js Buffer\n const sliced = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n // Handle SharedArrayBuffer case by creating a new ArrayBuffer\n if (sliced instanceof SharedArrayBuffer) {\n const uint8Array = new Uint8Array(sliced)\n arrayBuffer = uint8Array.buffer.slice(0) as unknown as ArrayBuffer\n } else {\n arrayBuffer = sliced as ArrayBuffer\n }\n }\n\n const uint = new Uint8Array(arrayBuffer)\n\n const imageBlob = new Blob([uint])\n\n return URL.createObjectURL(imageBlob)\n}\n\n/**\n * Constructs an Arweave URL for a storage transaction ID\n * @param storageTransactionId - The Arweave transaction ID\n * @returns The full URL to access the transaction data on Arweave (e.g., https://arweave.net/raw/{transactionId})\n * @deprecated Use BaseArweaveClient.getRawUrl() instead for better consistency and testability\n */\nexport const getArweaveUrlForTransaction = (storageTransactionId: string): string => {\n return BaseArweaveClient.getRawUrl(storageTransactionId)\n}\n\nexport const getExecutionTime = async (task: (...args: any[]) => Promise<any>, args: any[]) => {\n const start = Date.now()\n await task(...args)\n return Date.now() - start\n}\n\nexport const capitalizeFirstLetter = (string: string) =>\n string.charAt(0).toUpperCase() + string.slice(1)\n\nexport {\n parseEasRelationPropertyName,\n type ParsedEasRelationPropertyName,\n} from '@seedprotocol/query'\n\n\nexport const isBinary = (arrayBuffer: ArrayBuffer): boolean => {\n const view = new Uint8Array(arrayBuffer);\n\n let nonTextCount = 0;\n const threshold = 0.2; // Adjust as needed (e.g., 20% non-text implies binary)\n\n for (let i = 0; i < view.length; i++) {\n const byte = view[i];\n\n // ASCII printable characters (32-126) and common whitespace (9, 10, 13)\n if (\n (byte >= 32 && byte <= 126) || // Printable ASCII\n byte === 9 || byte === 10 || byte === 13 // Tab, LF, CR\n ) {\n continue;\n }\n\n nonTextCount++;\n if (nonTextCount / view.length > threshold) {\n return true; // More than threshold are non-text bytes\n }\n }\n\n return false; // Fewer than threshold are non-text bytes\n}\n","const ENV = (typeof process !== 'undefined' && process.env) \n ? process.env \n : (typeof window !== 'undefined' && (window as any).env) \n ? (window as any).env \n : {};\n\nconst MACHINE_ID_SCOPE = '@seedSdk'\n\nexport enum MachineIds {\n CLIENT_MANAGER = `${MACHINE_ID_SCOPE}/clientManager`,\n EAS_SYNC_MANAGER = `${MACHINE_ID_SCOPE}/easSyncManager`,\n GLOBAL = `${MACHINE_ID_SCOPE}/global`,\n INTERNAL = `${MACHINE_ID_SCOPE}/internal`,\n EAS = `${MACHINE_ID_SCOPE}/eas`,\n ITEM = `${MACHINE_ID_SCOPE}/item`,\n ALL_ITEMS = `${MACHINE_ID_SCOPE}/allItems`,\n MODEL = `${MACHINE_ID_SCOPE}/model`,\n FILE_SYSTEM = `${MACHINE_ID_SCOPE}/fileSystem`,\n}\n\nconst { INTERNAL, GLOBAL, EAS, MODEL } = MachineIds\n\nexport enum ClientManagerState {\n UNINITIALIZED = 'uninitialized',\n PLATFORM_CLASSES_INIT = 'platformClassesInit',\n FILE_SYSTEM_INIT = 'fileSystemInit',\n DB_INIT = 'dbInit',\n SAVE_CONFIG = 'saveConfig',\n ADD_MODELS_TO_STORE = 'addModelsToStore',\n ADD_MODELS_TO_DB = 'addModelsToDb',\n PROCESS_SCHEMA_FILES = 'processSchemaFiles',\n IDLE = 'idle',\n}\n\nexport enum ClientManagerEvents {\n UPDATE_CONTEXT = 'updateContext',\n PLATFORM_CLASSES_READY = 'platformClassesReady',\n FILE_SYSTEM_READY = 'fileSystemReady',\n DB_READY = 'dbReady',\n SAVE_CONFIG_SUCCESS = 'saveConfigSuccess',\n SAVE_APP_STATE_SUCCESS = 'saveAppStateSuccess',\n SET_ADDRESSES = 'setAddresses',\n ADD_MODELS_TO_STORE_SUCCESS = 'addModelsToStoreSuccess',\n ADD_MODELS_TO_DB_SUCCESS = 'addModelsToDbSuccess',\n PROCESS_SCHEMA_FILES_SUCCESS = 'processSchemaFilesSuccess',\n}\n\nexport enum GlobalState {\n UNINITIALIZED = 'uninitialized',\n INITIALIZING = 'initializing',\n INITIALIZED = 'initialized',\n PUBLISHING_ITEM = 'publishingItem',\n ADDING_MODELS_TO_DB = 'addingModelsToDb',\n}\n\nconst {\n UNINITIALIZED: GLOBAL_UNINITIALIZED,\n INITIALIZING,\n INITIALIZED,\n PUBLISHING_ITEM,\n ADDING_MODELS_TO_DB,\n } = GlobalState\n\nexport enum InternalState {\n IDLE = 'idle',\n INITIALIZING = 'initializing',\n VALIDATING_INPUT = 'validatingInput',\n CONFIGURING_FS = 'configuringFs',\n LOADING_SEED_DB = 'loadingSeedDb',\n SAVING_CONFIG = 'savingConfig',\n LOADING_APP_DB = 'loadingAppDb',\n LOADING_SDK_DB = 'loadingSdkDb',\n}\n\nconst { VALIDATING_INPUT, CONFIGURING_FS, LOADING_SEED_DB, LOADING_APP_DB } =\n InternalState\n\nexport enum PublishMachineStates {\n VALIDATING_ITEM_DATA = 'validatingItemData',\n CREATING_PUBLISH_ATTEMPT = 'creatingPublishAttempt',\n UPLOADING = 'uploading',\n PREPARING_PUBLISH_REQUEST_DATA = 'preparingPublishRequestData',\n PUBLISHING = 'publishing',\n IDLE = 'idle',\n}\n\nexport const INTERNAL_VALIDATING_INPUT_SUCCESS = `${INTERNAL}.${VALIDATING_INPUT}.success`\n\nexport const INTERNAL_CONFIGURING_FS_SUCCESS = `${INTERNAL}.${CONFIGURING_FS}.success`\nexport const INTERNAL_CONFIGURING_FS_FAILURE = `${INTERNAL}.${CONFIGURING_FS}.failure`\n\nexport const INTERNAL_LOADING_SEED_DB_SUCCESS = `${INTERNAL}.${LOADING_SEED_DB}.success`\nexport const INTERNAL_LOADING_SEED_DB_FAILURE = `${INTERNAL}.${LOADING_SEED_DB}.failure`\n\nexport const INTERNAL_LOADING_APP_DB_SUCCESS = `${INTERNAL}.${LOADING_APP_DB}.success`\nexport const INTERNAL_LOADING_APP_DB_FAILURE = `${INTERNAL}.${LOADING_APP_DB}.failure`\n\nexport const INTERNAL_SAVING_CONFIG_SUCCESS = `${INTERNAL}.savingConfig.success`\nexport const INTERNAL_SAVING_CONFIG_FAILURE = `${INTERNAL}.savingConfig.failure`\n\nexport const GLOBAL_GETTING_SEED_CLASS_SUCCESS = `${GLOBAL}.${PUBLISHING_ITEM}.success`\nexport const GLOBAL_INITIALIZING_SEND_CONFIG = `${GLOBAL}.${INITIALIZING}.sendConfig`\nexport const GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY = `${GLOBAL}.${INITIALIZING}.internalServiceReady`\nexport const GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES = `${GLOBAL}.${INITIALIZING}.createAllItemsServices`\nexport const GLOBAL_ADDING_MODELS_TO_DB_SUCCESS = `${GLOBAL}.${ADDING_MODELS_TO_DB}.success`\n\nexport const CHILD_SNAPSHOT = 'childSnapshot'\n\nexport const INTERNAL_SERVICE_SNAPSHOT = 'internalServiceSnapshot'\n\nexport const BROWSER_FS_TOP_DIR = 'app-files'\n\nexport const EAS_ENDPOINT =\n ENV.NEXT_PUBLIC_EAS_ENDPOINT ||\n ENV.EAS_ENDPOINT ||\n 'https://optimism-sepolia.easscan.org/graphql'\n\n/**\n * @deprecated Use BaseArweaveClient.getHost() instead.\n * This constant is kept for backward compatibility but will be removed in a future version.\n * Migration: import { BaseArweaveClient } from '@/helpers' and use BaseArweaveClient.getHost()\n */\nexport const ARWEAVE_HOST =\n ENV.NEXT_PUBLIC_ARWEAVE_HOST || 'ar.seedprotocol.io'\n\n/**\n * @deprecated Use BaseArweaveClient.getEndpoint() instead.\n * This constant is kept for backward compatibility but will be removed in a future version.\n * Migration: import { BaseArweaveClient } from '@/helpers' and use BaseArweaveClient.getEndpoint()\n */\nexport const ARWEAVE_ENDPOINT = `https://${ARWEAVE_HOST}/graphql`\n\n"],"names":["Date","logger"],"mappings":"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"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { a as BaseDb, m as models, i as modelSchemas, s as schemas, p as properties, c as appState, b as metadata } from './BasePathResolver-
|
|
1
|
+
import { a as BaseDb, m as models, i as modelSchemas, s as schemas, p as properties, c as appState, b as metadata } from './BasePathResolver-0IHnXxtL.js';
|
|
2
2
|
import { toSnakeCase } from 'drizzle-orm/casing';
|
|
3
3
|
import { eq, and, isNull } from 'drizzle-orm';
|
|
4
4
|
import { upperFirst, camelCase } from 'lodash-es';
|
|
5
5
|
import debug from 'debug';
|
|
6
|
-
import 'drizzle-orm/sqlite-core';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* Detect SQLite UNIQUE constraint failures across better-sqlite3 and drizzle/wasm wrappers.
|
|
@@ -55,6 +54,60 @@ function matchesUniqueConstraintText(text) {
|
|
|
55
54
|
(text.includes('2067') && lower.includes('constraint')));
|
|
56
55
|
}
|
|
57
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Lowercase + trim an address for persist and compare.
|
|
59
|
+
* Does not checksum or validate — test and placeholder addresses must keep working.
|
|
60
|
+
*/
|
|
61
|
+
function normalizeHexAddress(addr) {
|
|
62
|
+
return addr.trim().toLowerCase();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Lowercase, drop empties, and dedupe (first-seen order).
|
|
66
|
+
*/
|
|
67
|
+
function normalizeAddressList(addrs) {
|
|
68
|
+
if (!addrs?.length)
|
|
69
|
+
return [];
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const addr of addrs) {
|
|
73
|
+
if (addr == null || addr === '')
|
|
74
|
+
continue;
|
|
75
|
+
const normalized = normalizeHexAddress(String(addr));
|
|
76
|
+
if (!normalized || seen.has(normalized))
|
|
77
|
+
continue;
|
|
78
|
+
seen.add(normalized);
|
|
79
|
+
out.push(normalized);
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Lowercase a publisher stamp. Empty / null → undefined (omit on write).
|
|
85
|
+
*/
|
|
86
|
+
function normalizePublisher(publisher) {
|
|
87
|
+
if (publisher == null || publisher === '')
|
|
88
|
+
return undefined;
|
|
89
|
+
const normalized = normalizeHexAddress(publisher);
|
|
90
|
+
return normalized || undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Normalizes AddressConfiguration to { owned, watched }.
|
|
94
|
+
* - string[] -> { owned: addresses, watched: [] }
|
|
95
|
+
* - { owned, watched? } -> { owned, watched: watched ?? [] }
|
|
96
|
+
* Addresses are lowercased and deduped.
|
|
97
|
+
*/
|
|
98
|
+
function normalizeAddressConfig(addresses) {
|
|
99
|
+
if (!addresses) {
|
|
100
|
+
return { owned: [], watched: [] };
|
|
101
|
+
}
|
|
102
|
+
if (Array.isArray(addresses)) {
|
|
103
|
+
return { owned: normalizeAddressList(addresses), watched: [] };
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
owned: normalizeAddressList(addresses.owned),
|
|
107
|
+
watched: normalizeAddressList(addresses.watched),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
58
111
|
const logger = debug('seedSdk:helpers:db');
|
|
59
112
|
/**
|
|
60
113
|
* Resolve property_id from model name/type and property name.
|
|
@@ -600,7 +653,7 @@ const renameModelInDb = async (oldName, newName, schemaNameOrId) => {
|
|
|
600
653
|
if (!db) {
|
|
601
654
|
throw new Error('Database not found');
|
|
602
655
|
}
|
|
603
|
-
const _mod_0 = await import('./BasePathResolver-
|
|
656
|
+
const _mod_0 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
604
657
|
const _ns_0 = _mod_0.S;
|
|
605
658
|
const { schemas: schemasTable } = _ns_0;
|
|
606
659
|
// Find the model by old name, optionally scoped by schema
|
|
@@ -884,8 +937,8 @@ const addModelsToDb = async (models$1, schema, modelRenames, schemaFileData) =>
|
|
|
884
937
|
schema = pendingProperties;
|
|
885
938
|
}
|
|
886
939
|
else {
|
|
887
|
-
const _mod_1 = await import('./index-
|
|
888
|
-
const _ns_1 = _mod_1.
|
|
940
|
+
const _mod_1 = await import('./index-C1pktvdj.js');
|
|
941
|
+
const _ns_1 = _mod_1.ao;
|
|
889
942
|
const modelHelpersMod = _ns_1;
|
|
890
943
|
const { modelPropertiesToObject } = modelHelpersMod;
|
|
891
944
|
const modelProperties = modelClass.properties || [];
|
|
@@ -905,8 +958,8 @@ const addModelsToDb = async (models$1, schema, modelRenames, schemaFileData) =>
|
|
|
905
958
|
// If no propertyFileId from map, generate a random ID
|
|
906
959
|
// IDs should be generated in the import process before calling addModelsToDb
|
|
907
960
|
if (!propertyFileId) {
|
|
908
|
-
const _mod_2 = await import('./index-
|
|
909
|
-
const _ns_2 = _mod_2.
|
|
961
|
+
const _mod_2 = await import('./index-C1pktvdj.js');
|
|
962
|
+
const _ns_2 = _mod_2.an;
|
|
910
963
|
const { generateId } = _ns_2;
|
|
911
964
|
propertyFileId = generateId();
|
|
912
965
|
logger(`Generated propertyFileId "${propertyFileId}" for property "${modelName}:${propertyName}" (not found in propertyFileIds map)`);
|
|
@@ -1403,13 +1456,13 @@ function parseAddressConfig(value) {
|
|
|
1403
1456
|
try {
|
|
1404
1457
|
const parsed = JSON.parse(value);
|
|
1405
1458
|
if (Array.isArray(parsed)) {
|
|
1406
|
-
return
|
|
1459
|
+
return normalizeAddressConfig(parsed);
|
|
1407
1460
|
}
|
|
1408
1461
|
if (parsed && typeof parsed === 'object' && Array.isArray(parsed.owned)) {
|
|
1409
|
-
return {
|
|
1462
|
+
return normalizeAddressConfig({
|
|
1410
1463
|
owned: parsed.owned,
|
|
1411
1464
|
watched: Array.isArray(parsed.watched) ? parsed.watched : [],
|
|
1412
|
-
};
|
|
1465
|
+
});
|
|
1413
1466
|
}
|
|
1414
1467
|
return null;
|
|
1415
1468
|
}
|
|
@@ -1426,29 +1479,12 @@ const getWatchedAddressesFromDb = async () => {
|
|
|
1426
1479
|
return config?.watched ?? [];
|
|
1427
1480
|
};
|
|
1428
1481
|
/**
|
|
1429
|
-
* Returns addresses for
|
|
1430
|
-
*
|
|
1482
|
+
* Returns persisted owned or watched addresses for list filters.
|
|
1483
|
+
* Does not include `getAdditionalSyncAddresses` (those are extra EAS indexers).
|
|
1431
1484
|
*/
|
|
1432
1485
|
const getAddressesForItemsFilter = async (addressFilter) => {
|
|
1433
1486
|
if (addressFilter === 'owned') {
|
|
1434
|
-
|
|
1435
|
-
const _ns_3 = _mod_3.ah;
|
|
1436
|
-
const { getGetAdditionalSyncAddresses } = _ns_3;
|
|
1437
|
-
let ownedAddresses = await getOwnedAddressesFromDb();
|
|
1438
|
-
const additionalGetter = getGetAdditionalSyncAddresses();
|
|
1439
|
-
if (additionalGetter) {
|
|
1440
|
-
const additional = await additionalGetter();
|
|
1441
|
-
if (additional?.length) {
|
|
1442
|
-
const seen = new Set(ownedAddresses.map((a) => a.toLowerCase()));
|
|
1443
|
-
for (const addr of additional) {
|
|
1444
|
-
if (addr && !seen.has(addr.toLowerCase())) {
|
|
1445
|
-
seen.add(addr.toLowerCase());
|
|
1446
|
-
ownedAddresses = [...ownedAddresses, addr];
|
|
1447
|
-
}
|
|
1448
|
-
}
|
|
1449
|
-
}
|
|
1450
|
-
}
|
|
1451
|
-
return ownedAddresses;
|
|
1487
|
+
return getOwnedAddressesFromDb();
|
|
1452
1488
|
}
|
|
1453
1489
|
return getWatchedAddressesFromDb();
|
|
1454
1490
|
};
|
|
@@ -1601,9 +1637,9 @@ async function writeModelToDb(modelFileId, data) {
|
|
|
1601
1637
|
throw new Error(`Model with id ${modelId} does not exist in database. Cannot create join record.`);
|
|
1602
1638
|
}
|
|
1603
1639
|
// Verify schemaId exists and get name/fileId for invalidation broadcast
|
|
1604
|
-
const
|
|
1605
|
-
const
|
|
1606
|
-
const schemaSchemaMod =
|
|
1640
|
+
const _mod_3 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1641
|
+
const _ns_3 = _mod_3.S;
|
|
1642
|
+
const schemaSchemaMod = _ns_3;
|
|
1607
1643
|
const { schemas: schemasTable } = schemaSchemaMod;
|
|
1608
1644
|
const schemaCheck = await db
|
|
1609
1645
|
.select({
|
|
@@ -1670,9 +1706,9 @@ async function writeModelToDb(modelFileId, data) {
|
|
|
1670
1706
|
else {
|
|
1671
1707
|
// Generate random propertyFileId
|
|
1672
1708
|
// IDs should be generated in the import process before calling writeModelToDb
|
|
1673
|
-
const
|
|
1674
|
-
const
|
|
1675
|
-
const { generateId } =
|
|
1709
|
+
const _mod_4 = await import('./index-C1pktvdj.js');
|
|
1710
|
+
const _ns_4 = _mod_4.an;
|
|
1711
|
+
const { generateId } = _ns_4;
|
|
1676
1712
|
propertyFileId = generateId();
|
|
1677
1713
|
logger(`Generated propertyFileId "${propertyFileId}" for property "${data.modelName}:${propName}"`);
|
|
1678
1714
|
}
|
|
@@ -1813,9 +1849,9 @@ async function getSchemaId(schemaNameOrFileId) {
|
|
|
1813
1849
|
if (!db) {
|
|
1814
1850
|
throw new Error('Database not available');
|
|
1815
1851
|
}
|
|
1816
|
-
const
|
|
1817
|
-
const
|
|
1818
|
-
const schemaSchemaMod =
|
|
1852
|
+
const _mod_5 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1853
|
+
const _ns_5 = _mod_5.S;
|
|
1854
|
+
const schemaSchemaMod = _ns_5;
|
|
1819
1855
|
const { schemas: schemasTable } = schemaSchemaMod;
|
|
1820
1856
|
const drizzleMod = await import('drizzle-orm');
|
|
1821
1857
|
const { eq, desc } = drizzleMod;
|
|
@@ -1851,9 +1887,9 @@ async function getSchemaIdByFileId(schemaFileId) {
|
|
|
1851
1887
|
if (!db) {
|
|
1852
1888
|
throw new Error('Database not available');
|
|
1853
1889
|
}
|
|
1854
|
-
const
|
|
1855
|
-
const
|
|
1856
|
-
const schemaSchemaMod =
|
|
1890
|
+
const _mod_6 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1891
|
+
const _ns_6 = _mod_6.S;
|
|
1892
|
+
const schemaSchemaMod = _ns_6;
|
|
1857
1893
|
const { schemas: schemasTable } = schemaSchemaMod;
|
|
1858
1894
|
const drizzleMod = await import('drizzle-orm');
|
|
1859
1895
|
const { eq, desc } = drizzleMod;
|
|
@@ -1880,9 +1916,9 @@ async function getModelId(modelNameOrFileId, schemaNameOrId) {
|
|
|
1880
1916
|
if (!db) {
|
|
1881
1917
|
throw new Error('Database not available');
|
|
1882
1918
|
}
|
|
1883
|
-
const
|
|
1884
|
-
const
|
|
1885
|
-
const modelSchemaMod =
|
|
1919
|
+
const _mod_7 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1920
|
+
const _ns_7 = _mod_7.M;
|
|
1921
|
+
const modelSchemaMod = _ns_7;
|
|
1886
1922
|
const { models: modelsTable } = modelSchemaMod;
|
|
1887
1923
|
const drizzleMod = await import('drizzle-orm');
|
|
1888
1924
|
const { eq, and, or } = drizzleMod;
|
|
@@ -1897,13 +1933,13 @@ async function getModelId(modelNameOrFileId, schemaNameOrId) {
|
|
|
1897
1933
|
[eq(modelsTable.name, modelNameOrFileId)];
|
|
1898
1934
|
// If schema is provided, narrow the search
|
|
1899
1935
|
if (schemaNameOrId !== undefined) {
|
|
1900
|
-
const
|
|
1901
|
-
const
|
|
1902
|
-
const modelSchemaSchemaMod =
|
|
1936
|
+
const _mod_8 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1937
|
+
const _ns_8 = _mod_8.x;
|
|
1938
|
+
const modelSchemaSchemaMod = _ns_8;
|
|
1903
1939
|
const { modelSchemas } = modelSchemaSchemaMod;
|
|
1904
|
-
const
|
|
1905
|
-
const
|
|
1906
|
-
const schemaSchemaMod =
|
|
1940
|
+
const _mod_9 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1941
|
+
const _ns_9 = _mod_9.S;
|
|
1942
|
+
const schemaSchemaMod = _ns_9;
|
|
1907
1943
|
const { schemas: schemasTable } = schemaSchemaMod;
|
|
1908
1944
|
if (typeof schemaNameOrId === 'number') {
|
|
1909
1945
|
// schemaNameOrId is schemaId
|
|
@@ -1951,9 +1987,9 @@ async function getModelIdByFileId(modelFileId) {
|
|
|
1951
1987
|
if (!db) {
|
|
1952
1988
|
throw new Error('Database not available');
|
|
1953
1989
|
}
|
|
1954
|
-
const
|
|
1955
|
-
const
|
|
1956
|
-
const modelSchemaMod =
|
|
1990
|
+
const _mod_10 = await import('./BasePathResolver-0IHnXxtL.js');
|
|
1991
|
+
const _ns_10 = _mod_10.M;
|
|
1992
|
+
const modelSchemaMod = _ns_10;
|
|
1957
1993
|
const { models: modelsTable } = modelSchemaMod;
|
|
1958
1994
|
const drizzleMod = await import('drizzle-orm');
|
|
1959
1995
|
const { eq } = drizzleMod;
|
|
@@ -1968,5 +2004,34 @@ async function getModelIdByFileId(modelFileId) {
|
|
|
1968
2004
|
return records[0].id;
|
|
1969
2005
|
}
|
|
1970
2006
|
|
|
1971
|
-
|
|
1972
|
-
|
|
2007
|
+
var db = /*#__PURE__*/Object.freeze({
|
|
2008
|
+
__proto__: null,
|
|
2009
|
+
addModelsToDb: addModelsToDb,
|
|
2010
|
+
addSchemaToDb: addSchemaToDb,
|
|
2011
|
+
createOrUpdate: createOrUpdate,
|
|
2012
|
+
escapeSqliteString: escapeSqliteString,
|
|
2013
|
+
getAddressesForItemsFilter: getAddressesForItemsFilter,
|
|
2014
|
+
getAddressesFromDb: getAddressesFromDb,
|
|
2015
|
+
getAddressesFromDbOptional: getAddressesFromDbOptional,
|
|
2016
|
+
getAllAddressesFromDb: getAllAddressesFromDb,
|
|
2017
|
+
getModelId: getModelId,
|
|
2018
|
+
getModelIdByFileId: getModelIdByFileId,
|
|
2019
|
+
getModelNameByModelId: getModelNameByModelId,
|
|
2020
|
+
getObjectForRow: getObjectForRow,
|
|
2021
|
+
getOwnedAddressesFromDb: getOwnedAddressesFromDb,
|
|
2022
|
+
getPropertyIdForModelAndName: getPropertyIdForModelAndName,
|
|
2023
|
+
getPropertyModelNameAndDataType: getPropertyModelNameAndDataType,
|
|
2024
|
+
getSchemaId: getSchemaId,
|
|
2025
|
+
getSchemaIdByFileId: getSchemaIdByFileId,
|
|
2026
|
+
getSqlResultObject: getSqlResultObject,
|
|
2027
|
+
getWatchedAddressesFromDb: getWatchedAddressesFromDb,
|
|
2028
|
+
loadModelsFromDbForSchema: loadModelsFromDbForSchema,
|
|
2029
|
+
migrateMetadataForPropertyRename: migrateMetadataForPropertyRename,
|
|
2030
|
+
renameModelInDb: renameModelInDb,
|
|
2031
|
+
savePropertyToDb: savePropertyToDb,
|
|
2032
|
+
writeModelToDb: writeModelToDb,
|
|
2033
|
+
writePropertyToDb: writePropertyToDb
|
|
2034
|
+
});
|
|
2035
|
+
|
|
2036
|
+
export { getAllAddressesFromDb as a, normalizeHexAddress as b, addModelsToDb as c, getModelIdByFileId as d, escapeSqliteString as e, getModelId as f, getPropertyIdForModelAndName as g, getAddressesForItemsFilter as h, normalizeAddressConfig as i, normalizeAddressList as j, addSchemaToDb as k, loadModelsFromDbForSchema as l, writePropertyToDb as m, normalizePublisher as n, getOwnedAddressesFromDb as o, getWatchedAddressesFromDb as p, db as q, renameModelInDb as r, writeModelToDb as w };
|
|
2037
|
+
//# sourceMappingURL=db-BwVuO1tO.js.map
|