@seedprotocol/sdk 0.3.9 → 0.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/bin.js +182 -111
  2. package/dist/bin.js.map +1 -1
  3. package/dist/main.js +3 -2
  4. package/dist/main.js.map +1 -1
  5. package/dist/node/db/node.app.db.config.ts +7 -26
  6. package/dist/scripts/bin.d.ts +4 -4
  7. package/dist/scripts/bin.d.ts.map +1 -1
  8. package/dist/seedData.json +23 -0
  9. package/dist/src/Item/BaseItem.js +3 -3
  10. package/dist/src/Item/BaseItem.js.map +1 -1
  11. package/dist/src/ItemProperty/BaseItemProperty.d.ts +4 -1
  12. package/dist/src/ItemProperty/BaseItemProperty.d.ts.map +1 -1
  13. package/dist/src/ItemProperty/BaseItemProperty.js +65 -21
  14. package/dist/src/ItemProperty/BaseItemProperty.js.map +1 -1
  15. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  16. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +27 -17
  17. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
  18. package/dist/src/ItemProperty/service/actors/initialize.d.ts.map +1 -1
  19. package/dist/src/ItemProperty/service/actors/initialize.js +25 -20
  20. package/dist/src/ItemProperty/service/actors/initialize.js.map +1 -1
  21. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +1 -1
  22. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +1 -1
  23. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -1
  24. package/dist/src/ItemProperty/service/propertyMachine.d.ts +11 -11
  25. package/dist/src/browser/Item/Item.js +0 -1
  26. package/dist/src/browser/Item/Item.js.map +1 -1
  27. package/dist/src/browser/ItemProperty/ItemProperty.d.ts.map +1 -1
  28. package/dist/src/browser/ItemProperty/ItemProperty.js +0 -1
  29. package/dist/src/browser/ItemProperty/ItemProperty.js.map +1 -1
  30. package/dist/src/browser/db/Db.d.ts.map +1 -1
  31. package/dist/src/browser/db/Db.js +0 -2
  32. package/dist/src/browser/db/Db.js.map +1 -1
  33. package/dist/src/browser/helpers/FileManager.d.ts +1 -1
  34. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  35. package/dist/src/browser/helpers/FileManager.js +4 -4
  36. package/dist/src/browser/helpers/FileManager.js.map +1 -1
  37. package/dist/src/browser/helpers/eas.d.ts +20 -0
  38. package/dist/src/browser/helpers/eas.d.ts.map +1 -0
  39. package/dist/src/browser/helpers/eas.js +89 -0
  40. package/dist/src/browser/helpers/eas.js.map +1 -0
  41. package/dist/src/browser/react/SeedImage.d.ts +11 -0
  42. package/dist/src/browser/react/SeedImage.d.ts.map +1 -0
  43. package/dist/src/browser/react/SeedImage.js +105 -0
  44. package/dist/src/browser/react/SeedImage.js.map +1 -0
  45. package/dist/src/browser/react/item.d.ts +8 -8
  46. package/dist/src/browser/react/item.d.ts.map +1 -1
  47. package/dist/src/browser/react/item.js +9 -53
  48. package/dist/src/browser/react/item.js.map +1 -1
  49. package/dist/src/browser/react/property.d.ts +3 -3
  50. package/dist/src/browser/react/property.d.ts.map +1 -1
  51. package/dist/src/browser/react/property.js.map +1 -1
  52. package/dist/src/browser/react/services.d.ts.map +1 -1
  53. package/dist/src/browser/react/services.js +5 -0
  54. package/dist/src/browser/react/services.js.map +1 -1
  55. package/dist/src/browser/workers/FileDownloader.d.ts.map +1 -1
  56. package/dist/src/browser/workers/FileDownloader.js +1 -0
  57. package/dist/src/browser/workers/FileDownloader.js.map +1 -1
  58. package/dist/src/browser/workers/ImageResizer.d.ts.map +1 -1
  59. package/dist/src/browser/workers/ImageResizer.js +1 -0
  60. package/dist/src/browser/workers/ImageResizer.js.map +1 -1
  61. package/dist/src/browser/workers/filesDownload.d.ts.map +1 -1
  62. package/dist/src/browser/workers/filesDownload.js +4 -0
  63. package/dist/src/browser/workers/filesDownload.js.map +1 -1
  64. package/dist/src/browser/workers/imageResize.d.ts.map +1 -1
  65. package/dist/src/browser/workers/imageResize.js +4 -1
  66. package/dist/src/browser/workers/imageResize.js.map +1 -1
  67. package/dist/src/client/BaseClientManager.d.ts.map +1 -1
  68. package/dist/src/client/ClientManager.d.ts +173 -20
  69. package/dist/src/client/ClientManager.d.ts.map +1 -1
  70. package/dist/src/client/ClientManager.js +8 -0
  71. package/dist/src/client/ClientManager.js.map +1 -1
  72. package/dist/src/client/actors/initialize.d.ts +2 -2
  73. package/dist/src/client/actors/initialize.d.ts.map +1 -1
  74. package/dist/src/client/actors/initialize.js +9 -0
  75. package/dist/src/client/actors/initialize.js.map +1 -1
  76. package/dist/src/client/actors/saveAppState.d.ts.map +1 -1
  77. package/dist/src/client/actors/saveAppState.js +3 -2
  78. package/dist/src/client/actors/saveAppState.js.map +1 -1
  79. package/dist/src/client/clientManagerMachine.d.ts +86 -10
  80. package/dist/src/client/clientManagerMachine.d.ts.map +1 -1
  81. package/dist/src/client/clientManagerMachine.js +3 -1
  82. package/dist/src/client/clientManagerMachine.js.map +1 -1
  83. package/dist/src/db/read/getModelSchemas.d.ts +1 -2
  84. package/dist/src/db/read/getModelSchemas.d.ts.map +1 -1
  85. package/dist/src/db/read/getModelSchemas.js +1 -21
  86. package/dist/src/db/read/getModelSchemas.js.map +1 -1
  87. package/dist/src/db/read/getModels.d.ts +4 -1
  88. package/dist/src/db/read/getModels.d.ts.map +1 -1
  89. package/dist/src/db/read/getModels.js +16 -0
  90. package/dist/src/db/read/getModels.js.map +1 -0
  91. package/dist/src/db/read/getPublishPayload.d.ts.map +1 -1
  92. package/dist/src/db/read/getPublishPayload.js +52 -14
  93. package/dist/src/db/read/getPublishPayload.js.map +1 -1
  94. package/dist/src/db/read/getPublishUploads.d.ts.map +1 -1
  95. package/dist/src/db/read/getPublishUploads.js +34 -3
  96. package/dist/src/db/read/getPublishUploads.js.map +1 -1
  97. package/dist/src/events/item/syncDbWithEas.d.ts.map +1 -1
  98. package/dist/src/events/item/syncDbWithEas.js +9 -28
  99. package/dist/src/events/item/syncDbWithEas.js.map +1 -1
  100. package/dist/src/helpers/constants.d.ts +2 -2
  101. package/dist/src/helpers/constants.d.ts.map +1 -1
  102. package/dist/src/helpers/constants.js +14 -6
  103. package/dist/src/helpers/constants.js.map +1 -1
  104. package/dist/src/helpers/getSegmentedItemProperties.d.ts +1 -0
  105. package/dist/src/helpers/getSegmentedItemProperties.d.ts.map +1 -1
  106. package/dist/src/helpers/getSegmentedItemProperties.js +6 -2
  107. package/dist/src/helpers/getSegmentedItemProperties.js.map +1 -1
  108. package/dist/src/helpers/index.d.ts +2 -1
  109. package/dist/src/helpers/index.d.ts.map +1 -1
  110. package/dist/src/helpers/index.js +4 -10
  111. package/dist/src/helpers/index.js.map +1 -1
  112. package/dist/src/helpers/scripts.d.ts +2 -0
  113. package/dist/src/helpers/scripts.d.ts.map +1 -0
  114. package/dist/src/helpers/scripts.js +14 -0
  115. package/dist/src/helpers/scripts.js.map +1 -0
  116. package/dist/src/index.d.ts +4 -2
  117. package/dist/src/index.d.ts.map +1 -1
  118. package/dist/src/interfaces/IItemProperty.d.ts +7 -0
  119. package/dist/src/interfaces/IItemProperty.d.ts.map +1 -1
  120. package/dist/src/node/PathResolver.d.ts +39 -0
  121. package/dist/src/node/PathResolver.d.ts.map +1 -0
  122. package/dist/src/node/PathResolver.js +150 -0
  123. package/dist/src/node/PathResolver.js.map +1 -0
  124. package/dist/src/node/codegen/drizzle.d.ts.map +1 -1
  125. package/dist/src/node/codegen/drizzle.js +25 -4
  126. package/dist/src/node/codegen/drizzle.js.map +1 -1
  127. package/dist/src/node/constants.d.ts +0 -11
  128. package/dist/src/node/constants.d.ts.map +1 -1
  129. package/dist/src/node/constants.js +1 -32
  130. package/dist/src/node/constants.js.map +1 -1
  131. package/dist/src/node/db/node.app.db.config.d.ts.map +1 -1
  132. package/dist/src/schema/image/model.d.ts +8 -0
  133. package/dist/src/schema/image/model.d.ts.map +1 -0
  134. package/dist/src/schema/image/model.js +29 -0
  135. package/dist/src/schema/image/model.js.map +1 -0
  136. package/dist/src/schema/model/index.d.ts +8 -8
  137. package/dist/src/schema/property/index.d.ts +33 -45
  138. package/dist/src/schema/property/index.d.ts.map +1 -1
  139. package/dist/src/schema/property/index.js +0 -1
  140. package/dist/src/schema/property/index.js.map +1 -1
  141. package/dist/src/seedSchema/ConfigSchema.js +18 -0
  142. package/dist/src/seedSchema/ConfigSchema.js.map +1 -0
  143. package/dist/src/services/db/actors/migrate.js +1 -1
  144. package/dist/src/services/db/actors/migrate.js.map +1 -1
  145. package/dist/src/services/global/globalMachine.d.ts +90 -90
  146. package/dist/src/stores/eas.d.ts +12 -5
  147. package/dist/src/stores/eas.d.ts.map +1 -1
  148. package/dist/src/stores/eas.js +13 -8
  149. package/dist/src/stores/eas.js.map +1 -1
  150. package/dist/src/stores/modelClass.d.ts.map +1 -1
  151. package/dist/src/stores/modelClass.js.map +1 -1
  152. package/package.json +2 -1
  153. package/dist/src/Item/index.d.ts +0 -5
  154. package/dist/src/Item/index.d.ts.map +0 -1
  155. package/dist/src/Item/index.js +0 -4
  156. package/dist/src/Item/index.js.map +0 -1
  157. package/dist/src/ItemProperty/index.d.ts +0 -5
  158. package/dist/src/ItemProperty/index.d.ts.map +0 -1
  159. package/dist/src/ItemProperty/index.js +0 -4
  160. package/dist/src/ItemProperty/index.js.map +0 -1
  161. package/dist/src/ItemProperty/service/actors/index.d.ts +0 -4
  162. package/dist/src/ItemProperty/service/actors/index.d.ts.map +0 -1
  163. package/dist/src/browser/Item/index.d.ts +0 -2
  164. package/dist/src/browser/Item/index.d.ts.map +0 -1
  165. package/dist/src/browser/Item/index.js +0 -2
  166. package/dist/src/browser/Item/index.js.map +0 -1
  167. package/dist/src/browser/ItemProperty/index.d.ts +0 -2
  168. package/dist/src/browser/ItemProperty/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BaseItem.js","sources":["../../../../src/Item/BaseItem.ts"],"sourcesContent":["import { IItem, IItemProperty } from '@/interfaces'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport { VersionsType } from '@/seedSchema/VersionSchema'\nimport { getModel } from '@/stores/modelClass'\n\nimport {\n CreatePropertyInstanceProps,\n ItemData,\n ItemFindProps,\n ModelSchema,\n ModelValues,\n NewItemProps,\n PropertyData\n} from '@/types'\n\nimport { immerable } from 'immer'\nimport { BehaviorSubject } from 'rxjs'\nimport { ActorRefFrom, Subscription, createActor } from 'xstate'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { orderBy, startCase } from 'lodash-es'\nimport { waitForEvent } from '@/events'\nimport { getItemData } from '@/db/read/getItemData'\nimport { getItemsData } from '@/db/read/getItems'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\nimport { getItemProperties } from '@/db/read/getItemProperties'\nimport { getPublishUploads } from '@/db/read/getPublishUploads'\nimport { getPublishPayload } from '@/db/read/getPublishPayload'\nimport { createNewItem } from '@/db/write/createNewItem'\n\n\nexport abstract class BaseItem<T extends ModelValues<ModelSchema>> implements IItem<T> {\n\n protected static instanceCache: Map<string, { instance: BaseItem<any>; refCount: number }> = new Map();\n protected _subscription: Subscription | undefined;\n protected readonly _storageTransactionId: string | undefined;\n [immerable] = true;\n protected _propertiesSubject: BehaviorSubject<Record<string, IItemProperty<any>>> = new BehaviorSubject({});\n protected readonly _service: ActorRefFrom<typeof itemMachineSingle>;\n\n constructor(initialValues: NewItemProps<T>) {\n\n const {\n modelName,\n seedUid,\n schemaUid,\n seedLocalId,\n latestVersionLocalId,\n latestVersionUid,\n } = initialValues\n\n const ModelClass = getModel(modelName)\n\n if (\n ModelClass &&\n Object.keys(ModelClass?.schema).includes('storageTransactionId') &&\n initialValues.storageTransactionId\n ) {\n this._storageTransactionId = initialValues.storageTransactionId\n }\n\n this._service = createActor(itemMachineSingle, {\n input: {\n seedLocalId,\n seedUid,\n schemaUid,\n ModelClass,\n latestVersionLocalId,\n latestVersionUid,\n storageTransactionId: this._storageTransactionId,\n },\n })\n\n this._subscription = this._service.subscribe((snapshot) => {\n const { context } = snapshot\n\n if (\n !context ||\n !context.propertyInstances ||\n context.propertyInstances.size === 0\n ) {\n return\n }\n\n const propertiesObj: Record<string, IItemProperty<any>> = {}\n\n for (const [key, propertyInstance] of context.propertyInstances) {\n if (typeof key !== 'string' || internalPropertyNames.includes(key)) {\n propertiesObj[key.toString()] = propertyInstance\n continue\n }\n\n let transformedKey: string = key as string\n\n if (propertyInstance.alias) {\n transformedKey = propertyInstance.alias\n }\n\n if (!propertyInstance.alias && key.endsWith('Ids')) {\n transformedKey = key.slice(0, -3) // Remove 'Ids'\n transformedKey = pluralize(transformedKey)\n }\n\n if (!propertyInstance.alias && key.endsWith('Id')) {\n transformedKey = key.slice(0, -2) // Remove 'Id'\n }\n\n propertiesObj[transformedKey] = propertyInstance\n }\n\n this._propertiesSubject.next(propertiesObj)\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n })\n\n this._service.start()\n\n const definedKeys: string[] = ['ModelClass']\n\n const itemPropertyBase: Partial<CreatePropertyInstanceProps> = {\n seedLocalId,\n seedUid,\n versionLocalId: latestVersionLocalId,\n versionUid: latestVersionUid,\n modelName: modelName,\n }\n\n if (ModelClass && ModelClass.schema) {\n const schema = ModelClass.schema\n\n for (const [propertyName, propertyRecordSchema] of Object.entries(\n schema,\n )) {\n if (!propertyRecordSchema) {\n throw new Error(`Property ${propertyName} has no definition`)\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName,\n propertyValue: initialValues[propertyName as keyof T],\n })\n\n definedKeys.push(propertyName)\n\n if (\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyName.endsWith('Id')\n ) {\n definedKeys.push(`${propertyName}Id`)\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n !propertyName.endsWith('Ids')\n ) {\n const singularPropertyName = pluralize.singular(propertyName)\n const propertyNameForSchema = `${singularPropertyName}${propertyRecordSchema.ref}Ids`\n definedKeys.push(propertyNameForSchema)\n }\n }\n }\n\n ; (Object.keys(initialValues) as Array<string & keyof Partial<T>>).forEach(\n (key) => {\n // If we already defined it, that means it was in the schema\n if (definedKeys.includes(key)) {\n return\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName: key,\n propertyValue: initialValues[key],\n })\n },\n )\n }\n\n static PlatformClass: typeof BaseItem\n\n static setPlatformClass(platformClass: typeof BaseItem) {\n this.PlatformClass = platformClass\n }\n\n static async create<T extends ModelValues<ModelSchema>>(\n props: Partial<ItemData>,\n ): Promise<BaseItem<any>> {\n if (!props.modelName && props.type) {\n props.modelName = startCase(props.type)\n }\n if (props.seedUid || props.seedLocalId) {\n const seedId = (props.seedUid || props.seedLocalId) as string\n if (this.instanceCache.has(seedId)) {\n const { instance, refCount } = this.instanceCache.get(seedId)!\n this.instanceCache.set(seedId, {\n instance,\n refCount: refCount + 1,\n })\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n const propertyInstances = instance.getService().getSnapshot()\n .context.propertyInstances\n if (!propertyInstances || !propertyInstances.has(propertyName)) {\n continue\n }\n const propertyInstance = propertyInstances.get(propertyName)\n if (!propertyInstance) {\n continue\n }\n propertyInstance.getService().send({\n type: 'updateContext',\n propertyValue,\n })\n }\n return instance\n }\n if (!this.instanceCache.has(seedId)) {\n const newInstance = new this(props)\n this.instanceCache.set(seedId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (!props.modelName) {\n throw new Error('Model name is required to create an item')\n }\n const { seedLocalId, versionLocalId, } = await createNewItem({\n modelName: props.modelName,\n ...props,\n })\n props.seedLocalId = seedLocalId\n props.latestVersionLocalId = versionLocalId\n const newInstance = new this(props)\n this.instanceCache.set(newInstance.seedUid || newInstance.seedLocalId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n\n static async find({\n modelName,\n seedLocalId,\n seedUid,\n }: ItemFindProps): Promise<IItem<any> | undefined> {\n if (!seedLocalId && !seedUid) {\n return\n }\n const itemData = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemData) {\n console.error('No item data found', { modelName, seedLocalId, seedUid })\n return\n }\n\n return BaseItem.create({\n ...itemData,\n modelName,\n })\n }\n\n static async all(\n modelName?: string,\n deleted?: boolean,\n ): Promise<BaseItem<any>[]> {\n const itemsData = await getItemsData({ modelName, deleted })\n const itemInstances: BaseItem<any>[] = []\n for (const itemData of itemsData) {\n itemInstances.push(\n await BaseItem.create({\n ...itemData,\n modelName,\n }),\n )\n }\n\n return orderBy(itemInstances, ['createdAt'], ['desc'])\n }\n\n protected _createPropertyInstance(props: Partial<CreatePropertyInstanceProps>) {\n if (this._storageTransactionId) {\n props.storageTransactionId = this._storageTransactionId\n }\n\n const propertyInstance = BaseItemProperty.create(props)\n\n if (!propertyInstance || !props.propertyName) {\n return\n }\n\n this._service.send({\n type: 'addPropertyInstance',\n propertyName: props.propertyName,\n propertyInstance,\n })\n\n Object.defineProperty(this, props.propertyName, {\n get: () => propertyInstance.value,\n set: (value) => (propertyInstance.value = value),\n enumerable: true,\n })\n }\n\n\n static async publish(item: IItem<any>): Promise<void> {\n await waitForEvent({\n req: {\n eventLabel: `item.${item.seedLocalId}.publish.request`,\n data: {\n seedLocalId: item.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${item.seedLocalId}.publish.success`,\n },\n })\n }\n\n subscribe = (callback: (itemProps: any) => void): Subscription => {\n return this._service.subscribe((snapshot) => {\n callback(snapshot.context)\n })\n }\n\n getService = (): ActorRefFrom<typeof itemMachineSingle> => {\n return this._service\n }\n\n getEditedProperties = async (): Promise<PropertyData[]> => {\n return await getItemProperties({\n seedLocalId: this.seedLocalId,\n edited: true,\n })\n }\n\n publish = async (): Promise<void> => {\n await waitForEvent({\n req: {\n eventLabel: `item.publish.request`,\n data: {\n seedLocalId: this.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${this.seedLocalId}.publish.success`,\n },\n })\n }\n\n getPublishUploads = async () => {\n return await getPublishUploads(this)\n }\n\n getPublishPayload = async (uploadedTransactions: any[]) => {\n return await getPublishPayload(this, uploadedTransactions)\n }\n\n get serviceContext() {\n const snapshot = this._service.getSnapshot()\n return (snapshot as any).context || {}\n }\n\n get seedLocalId(): string {\n return this.serviceContext.seedLocalId as string\n }\n\n get seedUid(): string | undefined {\n return this.serviceContext.seedUid\n }\n\n get schemaUid(): string {\n return this.serviceContext.schemaUid as string\n }\n\n get latestVersionUid(): VersionsType {\n return this.serviceContext.latestVersionUid as VersionsType\n }\n\n get latestVersionLocalId(): string {\n return this.serviceContext.latestVersionLocalId as string\n }\n\n get modelName(): string {\n return this.serviceContext.modelName as string\n }\n\n get properties(): Record<string, IItemProperty<any>> {\n return this._propertiesSubject.value\n }\n\n get attestationCreatedAt(): number {\n return this.serviceContext.attestationCreatedAt as number\n }\n\n get versionsCount(): number {\n return this.serviceContext.versionsCount as number\n }\n\n get lastVersionPublishedAt(): number {\n return this.serviceContext.lastVersionPublishedAt as number\n }\n\n unload(): void {\n this._subscription?.unsubscribe()\n this._service.stop()\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;MAgCsB,QAAQ,CAAA;AAS5B,IAAA,WAAA,CAAY,aAA8B,EAAA;QAJ1C,IAAW,CAAA,EAAA,CAAA,GAAG,IAAI;AACR,QAAA,IAAA,CAAA,kBAAkB,GAAwD,IAAI,eAAe,CAAC,EAAE,CAAC;AA8R3G,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,QAAkC,KAAkB;YAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AAC1C,gBAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,aAAC,CAAC;AACJ,SAAC;QAED,IAAU,CAAA,UAAA,GAAG,MAA6C;YACxD,OAAO,IAAI,CAAC,QAAQ;AACtB,SAAC;QAED,IAAmB,CAAA,mBAAA,GAAG,YAAoC;YACxD,OAAO,MAAM,iBAAiB,CAAC;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;AACJ,SAAC;QAED,IAAO,CAAA,OAAA,GAAG,YAA0B;AAClC,YAAA,MAAM,YAAY,CAAC;AACjB,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAsB,oBAAA,CAAA;AAClC,oBAAA,IAAI,EAAE;wBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,qBAAA;AACF,iBAAA;AACD,gBAAA,GAAG,EAAE;AACH,oBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACvD,iBAAA;AACF,aAAA,CAAC;AACJ,SAAC;QAED,IAAiB,CAAA,iBAAA,GAAG,YAAW;AAC7B,YAAA,OAAO,MAAM,iBAAiB,CAAC,IAAI,CAAC;AACtC,SAAC;AAED,QAAA,IAAA,CAAA,iBAAiB,GAAG,OAAO,oBAA2B,KAAI;AACxD,YAAA,OAAO,MAAM,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,CAAC;AAC5D,SAAC;AA9TC,QAAA,MAAM,EACJ,SAAS,EACT,OAAO,EACP,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,gBAAgB,GACjB,GAAG,aAAa;AAEjB,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,QAAA,IACE,UAAU;YACV,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAChE,aAAa,CAAC,oBAAoB,EAClC;AACA,YAAA,IAAI,CAAC,qBAAqB,GAAG,aAAa,CAAC,oBAAoB;;AAGjE,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,iBAAiB,EAAE;AAC7C,YAAA,KAAK,EAAE;gBACL,WAAW;gBACX,OAAO;gBACP,SAAS;gBACT,UAAU;gBACV,oBAAoB;gBACpB,gBAAgB;gBAChB,oBAAoB,EAAE,IAAI,CAAC,qBAAqB;AACjD,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACxD,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ;AAE5B,YAAA,IACE,CAAC,OAAO;gBACR,CAAC,OAAO,CAAC,iBAAiB;AAC1B,gBAAA,OAAO,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,EACpC;gBACA;;YAGF,MAAM,aAAa,GAAuC,EAAE;YAE5D,KAAK,MAAM,CAAC,GAAG,EAAE,gBAAgB,CAAC,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC/D,gBAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClE,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,gBAAgB;oBAChD;;gBAGF,IAAI,cAAc,GAAW,GAAa;AAE1C,gBAAA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC1B,oBAAA,cAAc,GAAG,gBAAgB,CAAC,KAAK;;AAGzC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClD,oBAAA,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACjC,oBAAA,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;;AAG5C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjD,oBAAA,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;;AAGnC,gBAAA,aAAa,CAAC,cAAc,CAAC,GAAG,gBAAgB;;AAGlD,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;;AAE7C,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAErB,QAAA,MAAM,WAAW,GAAa,CAAC,YAAY,CAAC;AAE5C,QAAA,MAAM,gBAAgB,GAAyC;YAC7D,WAAW;YACX,OAAO;AACP,YAAA,cAAc,EAAE,oBAAoB;AACpC,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,SAAS,EAAE,SAAS;SACrB;AAED,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;AACnC,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM;AAEhC,YAAA,KAAK,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/D,MAAM,CACP,EAAE;gBACD,IAAI,CAAC,oBAAoB,EAAE;AACzB,oBAAA,MAAM,IAAI,KAAK,CAAC,YAAY,YAAY,CAAA,kBAAA,CAAoB,CAAC;;gBAG/D,IAAI,CAAC,uBAAuB,CAAC;AAC3B,oBAAA,GAAG,gBAAgB;oBACnB,YAAY;AACZ,oBAAA,aAAa,EAAE,aAAa,CAAC,YAAuB,CAAC;AACtD,iBAAA,CAAC;AAEF,gBAAA,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;AAE9B,gBAAA,IACE,oBAAoB,CAAC,QAAQ,KAAK,UAAU;AAC5C,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC5B;AACA,oBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAA,EAAA,CAAI,CAAC;;AAGvC,gBAAA,IACE,oBAAoB,CAAC,QAAQ,KAAK,MAAM;AACxC,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B;oBACA,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC7D,MAAM,qBAAqB,GAAG,CAAG,EAAA,oBAAoB,GAAG,oBAAoB,CAAC,GAAG,CAAA,GAAA,CAAK;AACrF,oBAAA,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC;;;;QAK1C,MAAM,CAAC,IAAI,CAAC,aAAa,CAAsC,CAAC,OAAO,CACxE,CAAC,GAAG,KAAI;;AAEN,YAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC7B;;YAGF,IAAI,CAAC,uBAAuB,CAAC;AAC3B,gBAAA,GAAG,gBAAgB;AACnB,gBAAA,YAAY,EAAE,GAAG;AACjB,gBAAA,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC;AAClC,aAAA,CAAC;AACJ,SAAC,CACF;;IAKH,OAAO,gBAAgB,CAAC,aAA8B,EAAA;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;;AAGpC,IAAA,aAAa,MAAM,CACjB,KAAwB,EAAA;QAExB,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;YAClC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;;QAEzC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE;YACtC,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,CAAW;YAC7D,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAClC,gBAAA,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAE;AAC9D,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE;oBAC7B,QAAQ;oBACR,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACvB,iBAAA,CAAC;AACF,gBAAA,KAAK,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACjE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW;yBACxD,OAAO,CAAC,iBAAiB;oBAC5B,IAAI,CAAC,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;wBAC9D;;oBAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAC5D,IAAI,CAAC,gBAAgB,EAAE;wBACrB;;AAEF,oBAAA,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;AACjC,wBAAA,IAAI,EAAE,eAAe;wBACrB,aAAa;AACd,qBAAA,CAAC;;AAEJ,gBAAA,OAAO,QAAQ;;YAEjB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACnC,gBAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE;AAC7B,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,CAAC;AACZ,iBAAA,CAAC;AACF,gBAAA,OAAO,WAAW;;;AAGtB,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;;QAE7D,MAAM,EAAE,WAAW,EAAE,cAAc,GAAG,GAAG,MAAM,aAAa,CAAC;YAC3D,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,YAAA,GAAG,KAAK;AACT,SAAA,CAAC;AACF,QAAA,KAAK,CAAC,WAAW,GAAG,WAAW;AAC/B,QAAA,KAAK,CAAC,oBAAoB,GAAG,cAAc;AAC3C,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,WAAW,EAAE;AACrE,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,QAAQ,EAAE,CAAC;AACZ,SAAA,CAAC;AACF,QAAA,OAAO,WAAW;;IAGpB,aAAa,IAAI,CAAC,EAChB,SAAS,EACT,WAAW,EACX,OAAO,GACO,EAAA;AACd,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE;YAC5B;;AAEF,QAAA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;YACjC,SAAS;YACT,WAAW;YACX,OAAO;AACR,SAAA,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;YACxE;;QAGF,OAAO,QAAQ,CAAC,MAAM,CAAC;AACrB,YAAA,GAAG,QAAQ;YACX,SAAS;AACV,SAAA,CAAC;;AAGJ,IAAA,aAAa,GAAG,CACd,SAAkB,EAClB,OAAiB,EAAA;QAEjB,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;QAC5D,MAAM,aAAa,GAAoB,EAAE;AACzC,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AAChC,YAAA,aAAa,CAAC,IAAI,CAChB,MAAM,QAAQ,CAAC,MAAM,CAAC;AACpB,gBAAA,GAAG,QAAQ;gBACX,SAAS;AACV,aAAA,CAAC,CACH;;AAGH,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAG9C,IAAA,uBAAuB,CAAC,KAA2C,EAAA;AAC3E,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB;;QAGzD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;QAEvD,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YAC5C;;AAGF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,qBAAqB;YAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,gBAAgB;AACjB,SAAA,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE;AAC9C,YAAA,GAAG,EAAE,MAAM,gBAAgB,CAAC,KAAK;AACjC,YAAA,GAAG,EAAE,CAAC,KAAK,MAAM,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC;AAChD,YAAA,UAAU,EAAE,IAAI;AACjB,SAAA,CAAC;;AAIJ,IAAA,aAAa,OAAO,CAAC,IAAgB,EAAA;AACnC,QAAA,MAAM,YAAY,CAAC;AACjB,YAAA,GAAG,EAAE;AACH,gBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACtD,gBAAA,IAAI,EAAE;oBACJ,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,iBAAA;AACF,aAAA;AACD,YAAA,GAAG,EAAE;AACH,gBAAA,UAAU,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAC,WAAW,CAAkB,gBAAA,CAAA;AACvD,aAAA;AACF,SAAA,CAAC;;AA0CJ,IAAA,IAAI,cAAc,GAAA;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC5C,QAAA,OAAQ,QAAgB,CAAC,OAAO,IAAI,EAAE;;AAGxC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,WAAqB;;AAGlD,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO;;AAGpC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAmB;;AAGhD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgC;;AAG7D,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,oBAA8B;;AAG3D,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,SAAmB;;AAGhD,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;;AAGtC,IAAA,IAAI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,oBAA8B;;AAG3D,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,aAAuB;;AAGpD,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,sBAAgC;;IAG7D,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;;;KArXrB,SAAS;AAHO,QAAA,CAAA,aAAa,GAA+D,IAAI,GAAG,EAAE;;;;"}
1
+ {"version":3,"file":"BaseItem.js","sources":["../../../../src/Item/BaseItem.ts"],"sourcesContent":["import { IItem, IItemProperty } from '@/interfaces'\nimport { itemMachineSingle } from '@/Item/service/itemMachineSingle'\nimport { INTERNAL_PROPERTY_NAMES } from '@/helpers/constants'\nimport { VersionsType } from '@/seedSchema/VersionSchema'\nimport { getModel } from '@/stores/modelClass'\n\nimport {\n CreatePropertyInstanceProps,\n ItemData,\n ItemFindProps,\n ModelSchema,\n ModelValues,\n NewItemProps,\n PropertyData\n} from '@/types'\n\nimport { immerable } from 'immer'\nimport { BehaviorSubject } from 'rxjs'\nimport { ActorRefFrom, Subscription, createActor } from 'xstate'\nimport { eventEmitter } from '@/eventBus'\nimport pluralize from 'pluralize'\nimport { orderBy, startCase } from 'lodash-es'\nimport { waitForEvent } from '@/events'\nimport { getItemData } from '@/db/read/getItemData'\nimport { getItemsData } from '@/db/read/getItems'\nimport { BaseItemProperty } from '@/ItemProperty/BaseItemProperty'\nimport { getItemProperties } from '@/db/read/getItemProperties'\nimport { getPublishUploads } from '@/db/read/getPublishUploads'\nimport { getPublishPayload } from '@/db/read/getPublishPayload'\nimport { createNewItem } from '@/db/write/createNewItem'\n\n\nexport abstract class BaseItem<T extends ModelValues<ModelSchema>> implements IItem<T> {\n\n protected static instanceCache: Map<string, { instance: BaseItem<any>; refCount: number }> = new Map();\n protected _subscription: Subscription | undefined;\n protected readonly _storageTransactionId: string | undefined;\n [immerable] = true;\n protected _propertiesSubject: BehaviorSubject<Record<string, IItemProperty<any>>> = new BehaviorSubject({});\n protected readonly _service: ActorRefFrom<typeof itemMachineSingle>;\n\n constructor(initialValues: NewItemProps<T>) {\n\n const {\n modelName,\n seedUid,\n schemaUid,\n seedLocalId,\n latestVersionLocalId,\n latestVersionUid,\n } = initialValues\n\n const ModelClass = getModel(modelName)\n\n if (\n ModelClass &&\n Object.keys(ModelClass?.schema).includes('storageTransactionId') &&\n initialValues.storageTransactionId\n ) {\n this._storageTransactionId = initialValues.storageTransactionId\n }\n\n this._service = createActor(itemMachineSingle, {\n input: {\n seedLocalId,\n seedUid,\n schemaUid,\n ModelClass,\n latestVersionLocalId,\n latestVersionUid,\n storageTransactionId: this._storageTransactionId,\n },\n })\n\n this._subscription = this._service.subscribe((snapshot) => {\n const { context } = snapshot\n\n if (\n !context ||\n !context.propertyInstances ||\n context.propertyInstances.size === 0\n ) {\n return\n }\n\n const propertiesObj: Record<string, IItemProperty<any>> = {}\n\n for (const [key, propertyInstance] of context.propertyInstances) {\n if (typeof key !== 'string' || INTERNAL_PROPERTY_NAMES.includes(key)) {\n propertiesObj[key.toString()] = propertyInstance\n continue\n }\n\n let transformedKey: string = key as string\n\n if (propertyInstance.alias) {\n transformedKey = propertyInstance.alias\n }\n\n if (!propertyInstance.alias && key.endsWith('Ids')) {\n transformedKey = key.slice(0, -3) // Remove 'Ids'\n transformedKey = pluralize(transformedKey)\n }\n\n if (!propertyInstance.alias && key.endsWith('Id')) {\n transformedKey = key.slice(0, -2) // Remove 'Id'\n }\n\n propertiesObj[transformedKey] = propertyInstance\n }\n\n this._propertiesSubject.next(propertiesObj)\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n })\n\n this._service.start()\n\n const definedKeys: string[] = ['ModelClass']\n\n const itemPropertyBase: Partial<CreatePropertyInstanceProps> = {\n seedLocalId,\n seedUid,\n versionLocalId: latestVersionLocalId,\n versionUid: latestVersionUid,\n modelName,\n }\n\n if (ModelClass && ModelClass.schema) {\n const schema = ModelClass.schema\n\n for (const [propertyName, propertyRecordSchema] of Object.entries(\n schema,\n )) {\n if (!propertyRecordSchema) {\n throw new Error(`Property ${propertyName} has no definition`)\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName,\n propertyValue: initialValues[propertyName as keyof T],\n })\n\n definedKeys.push(propertyName)\n\n if (\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyName.endsWith('Id')\n ) {\n definedKeys.push(`${propertyName}Id`)\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n !propertyName.endsWith('Ids')\n ) {\n const singularPropertyName = pluralize.singular(propertyName)\n const propertyNameForSchema = `${singularPropertyName}${propertyRecordSchema.ref}Ids`\n definedKeys.push(propertyNameForSchema)\n }\n }\n }\n\n ; (Object.keys(initialValues) as Array<string & keyof Partial<T>>).forEach(\n (key) => {\n // If we already defined it, that means it was in the schema\n if (definedKeys.includes(key)) {\n return\n }\n\n this._createPropertyInstance({\n ...itemPropertyBase,\n propertyName: key,\n propertyValue: initialValues[key],\n })\n },\n )\n }\n\n static PlatformClass: typeof BaseItem\n\n static setPlatformClass(platformClass: typeof BaseItem) {\n this.PlatformClass = platformClass\n }\n\n static async create<T extends ModelValues<ModelSchema>>(\n props: Partial<ItemData>,\n ): Promise<BaseItem<any>> {\n if (!props.modelName && props.type) {\n props.modelName = startCase(props.type)\n }\n if (props.seedUid || props.seedLocalId) {\n const seedId = (props.seedUid || props.seedLocalId) as string\n if (this.instanceCache.has(seedId)) {\n const { instance, refCount } = this.instanceCache.get(seedId)!\n this.instanceCache.set(seedId, {\n instance,\n refCount: refCount + 1,\n })\n for (const [propertyName, propertyValue] of Object.entries(props)) {\n const propertyInstances = instance.getService().getSnapshot()\n .context.propertyInstances\n if (!propertyInstances || !propertyInstances.has(propertyName)) {\n continue\n }\n const propertyInstance = propertyInstances.get(propertyName)\n if (!propertyInstance) {\n continue\n }\n propertyInstance.getService().send({\n type: 'updateContext',\n propertyValue,\n })\n }\n return instance\n }\n if (!this.instanceCache.has(seedId)) {\n const newInstance = new this(props)\n this.instanceCache.set(seedId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (!props.modelName) {\n throw new Error('Model name is required to create an item')\n }\n const { seedLocalId, versionLocalId, } = await createNewItem({\n modelName: props.modelName,\n ...props,\n })\n props.seedLocalId = seedLocalId\n props.latestVersionLocalId = versionLocalId\n const newInstance = new this(props)\n this.instanceCache.set(newInstance.seedUid || newInstance.seedLocalId, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n\n static async find({\n modelName,\n seedLocalId,\n seedUid,\n }: ItemFindProps): Promise<IItem<any> | undefined> {\n if (!seedLocalId && !seedUid) {\n return\n }\n const itemData = await getItemData({\n modelName,\n seedLocalId,\n seedUid,\n })\n\n if (!itemData) {\n console.error('No item data found', { modelName, seedLocalId, seedUid })\n return\n }\n\n return BaseItem.create({\n ...itemData,\n modelName,\n })\n }\n\n static async all(\n modelName?: string,\n deleted?: boolean,\n ): Promise<BaseItem<any>[]> {\n const itemsData = await getItemsData({ modelName, deleted })\n const itemInstances: BaseItem<any>[] = []\n for (const itemData of itemsData) {\n itemInstances.push(\n await BaseItem.create({\n ...itemData,\n modelName,\n }),\n )\n }\n\n return orderBy(itemInstances, ['createdAt'], ['desc'])\n }\n\n protected _createPropertyInstance(props: Partial<CreatePropertyInstanceProps>) {\n if (this._storageTransactionId) {\n props.storageTransactionId = this._storageTransactionId\n }\n\n const propertyInstance = BaseItemProperty.create(props)\n\n if (!propertyInstance || !props.propertyName) {\n return\n }\n\n this._service.send({\n type: 'addPropertyInstance',\n propertyName: props.propertyName,\n propertyInstance,\n })\n\n Object.defineProperty(this, props.propertyName, {\n get: () => propertyInstance.value,\n set: (value) => (propertyInstance.value = value),\n enumerable: true,\n })\n }\n\n\n static async publish(item: IItem<any>): Promise<void> {\n await waitForEvent({\n req: {\n eventLabel: `item.${item.seedLocalId}.publish.request`,\n data: {\n seedLocalId: item.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${item.seedLocalId}.publish.success`,\n },\n })\n }\n\n subscribe = (callback: (itemProps: any) => void): Subscription => {\n return this._service.subscribe((snapshot) => {\n callback(snapshot.context)\n })\n }\n\n getService = (): ActorRefFrom<typeof itemMachineSingle> => {\n return this._service\n }\n\n getEditedProperties = async (): Promise<PropertyData[]> => {\n return await getItemProperties({\n seedLocalId: this.seedLocalId,\n edited: true,\n })\n }\n\n publish = async (): Promise<void> => {\n await waitForEvent({\n req: {\n eventLabel: `item.publish.request`,\n data: {\n seedLocalId: this.seedLocalId,\n },\n },\n res: {\n eventLabel: `item.${this.seedLocalId}.publish.success`,\n },\n })\n }\n\n getPublishUploads = async () => {\n return await getPublishUploads(this)\n }\n\n getPublishPayload = async (uploadedTransactions: any[]) => {\n return await getPublishPayload(this, uploadedTransactions)\n }\n\n get serviceContext() {\n const snapshot = this._service.getSnapshot()\n return (snapshot as any).context || {}\n }\n\n get seedLocalId(): string {\n return this.serviceContext.seedLocalId as string\n }\n\n get seedUid(): string | undefined {\n return this.serviceContext.seedUid\n }\n\n get schemaUid(): string {\n return this.serviceContext.schemaUid as string\n }\n\n get latestVersionUid(): VersionsType {\n return this.serviceContext.latestVersionUid as VersionsType\n }\n\n get latestVersionLocalId(): string {\n return this.serviceContext.latestVersionLocalId as string\n }\n\n get modelName(): string {\n return this.serviceContext.modelName as string\n }\n\n get properties(): Record<string, IItemProperty<any>> {\n return this._propertiesSubject.value\n }\n\n get attestationCreatedAt(): number {\n return this.serviceContext.attestationCreatedAt as number\n }\n\n get versionsCount(): number {\n return this.serviceContext.versionsCount as number\n }\n\n get lastVersionPublishedAt(): number {\n return this.serviceContext.lastVersionPublishedAt as number\n }\n\n unload(): void {\n this._subscription?.unsubscribe()\n this._service.stop()\n }\n}\n"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ export declare abstract class BaseItemProperty<PropertyType> implements IItemPro
34
34
  static find({ propertyName, seedLocalId, seedUid, }: ItemPropertyFindProps): Promise<IItemProperty<any> | undefined>;
35
35
  static cacheKey(seedLocalIdOrUid: string, propertyName: string): string;
36
36
  getService(): import("xstate").ActorRef<import("xstate").MachineSnapshot<any, import("xstate").AnyEventObject, {
37
- [x: string]: import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any, import("xstate").EventObject>, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any>, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any, import("@/types").SaveValueToDbEvent>, import("xstate").EventObject>> | undefined;
37
+ [x: string]: import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any, import("@/types").SaveValueToDbEvent>, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any>, import("xstate").EventObject>> | import("xstate").ActorRefFromLogic<import("xstate").CallbackActorLogic<import("xstate").EventObject, import("@/types").FromCallbackInput<any, import("xstate").EventObject>, import("xstate").EventObject>> | undefined;
38
38
  }, "initializing" | "idle" | "waitingForDb" | "hydratingFromDb" | "resolvingRelatedValue" | "resolvingRemoteStorage" | {
39
39
  saving: "analyzingInput" | "doneSaving" | "savingImage" | "savingRelation" | "savingItemStorage";
40
40
  }, string, import("xstate").NonReducibleUnknown, import("xstate").MetaObject, {
@@ -218,6 +218,7 @@ export declare abstract class BaseItemProperty<PropertyType> implements IItemPro
218
218
  };
219
219
  }>, import("xstate").AnyEventObject, import("xstate").EventObject>;
220
220
  private _getSnapshot;
221
+ private _getSnapshotContext;
221
222
  get localId(): any;
222
223
  get uid(): any;
223
224
  get seedLocalId(): any;
@@ -226,6 +227,8 @@ export declare abstract class BaseItemProperty<PropertyType> implements IItemPro
226
227
  get propertyName(): any;
227
228
  get modelName(): any;
228
229
  get propertyDef(): Static<typeof TProperty> | undefined;
230
+ get localStorageDir(): string | void;
231
+ get refResolvedValue(): string | undefined;
229
232
  get localStoragePath(): string | void;
230
233
  get versionLocalId(): string | undefined;
231
234
  get status(): "initializing" | "idle" | "waitingForDb" | "hydratingFromDb" | "resolvingRelatedValue" | "resolvingRemoteStorage" | {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseItemProperty.d.ts","sourceRoot":"","sources":["../../../src/ItemProperty/BaseItemProperty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseItemProperty.d.ts","sourceRoot":"","sources":["../../../src/ItemProperty/BaseItemProperty.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { BehaviorSubject } from 'rxjs';
3
3
  import { immerable } from 'immer';
4
4
  import { getModel } from '../stores/modelClass.js';
5
5
  import { propertyMachine } from './service/propertyMachine.js';
6
- import { internalPropertyNames } from '../helpers/constants.js';
6
+ import { INTERNAL_PROPERTY_NAMES } from '../helpers/constants.js';
7
7
  import debug from 'debug';
8
8
  import pluralize from 'pluralize';
9
9
  import { getPropertyData } from '../db/read/getPropertyData.js';
@@ -35,14 +35,21 @@ class BaseItemProperty {
35
35
  seedUid,
36
36
  versionLocalId,
37
37
  versionUid,
38
- modelName: modelName,
38
+ modelName,
39
39
  storageTransactionId,
40
40
  propertyRecordSchema: ModelClass.schema[propertyName],
41
41
  schemaUid,
42
42
  };
43
- if (!internalPropertyNames.includes(propertyName)) {
43
+ if (!INTERNAL_PROPERTY_NAMES.includes(propertyName)) {
44
44
  let propertyNameWithoutId;
45
- const propertyRecordSchema = ModelClass.schema[propertyName];
45
+ if (propertyName.endsWith('Id')) {
46
+ propertyNameWithoutId = propertyName.slice(0, -2);
47
+ }
48
+ if (propertyName.endsWith('Ids')) {
49
+ propertyNameWithoutId = propertyName.slice(0, -3);
50
+ propertyNameWithoutId = pluralize(propertyNameWithoutId);
51
+ }
52
+ const propertyRecordSchema = ModelClass.schema[propertyNameWithoutId || propertyName];
46
53
  if (propertyRecordSchema) {
47
54
  this._dataType = propertyRecordSchema.dataType;
48
55
  serviceInput.propertyRecordSchema = propertyRecordSchema;
@@ -65,7 +72,9 @@ class BaseItemProperty {
65
72
  this._alias = propertyName;
66
73
  serviceInput.propertyName = `${propertyNameSingular}${propertyRecordSchema.ref}Ids`;
67
74
  }
68
- if (!this._alias && propertyNameWithoutId) ;
75
+ if (!this._alias && propertyNameWithoutId) {
76
+ this._alias = propertyNameWithoutId;
77
+ }
69
78
  }
70
79
  }
71
80
  serviceInput.isRelation = this._isRelation;
@@ -89,15 +98,36 @@ class BaseItemProperty {
89
98
  }
90
99
  }
91
100
  let renderValue;
92
- if (propertyRecordSchema &&
101
+ const isImage = propertyRecordSchema &&
102
+ propertyRecordSchema.dataType === 'Image';
103
+ const isFile = propertyRecordSchema &&
104
+ propertyRecordSchema.dataType === 'File';
105
+ const isItemStorage = propertyRecordSchema &&
93
106
  propertyRecordSchema.storageType &&
94
107
  propertyRecordSchema.storageType === 'ItemStorage' &&
95
108
  context.refResolvedValue &&
96
- context.localStorageDir) {
109
+ context.localStorageDir;
110
+ if (!this._schemaUid && context.schemaUid) {
111
+ this._schemaUid = context.schemaUid;
112
+ }
113
+ if (isImage ||
114
+ isFile ||
115
+ isItemStorage) {
97
116
  const filePath = `/files/${context.localStorageDir}/${context.refResolvedValue}`;
98
117
  try {
99
118
  const exists = await BaseFileManager.pathExists(filePath);
100
- if (exists) {
119
+ if (exists && isItemStorage) {
120
+ renderValue = await BaseFileManager.readFileAsString(filePath);
121
+ }
122
+ if (exists && isImage) {
123
+ if (context.refResolvedDisplayValue) {
124
+ renderValue = context.refResolvedDisplayValue;
125
+ }
126
+ if (!context.refResolvedDisplayValue) {
127
+ renderValue = await BaseFileManager.getContentUrlFromPath(filePath);
128
+ }
129
+ }
130
+ if (exists && isFile) {
101
131
  renderValue = await BaseFileManager.readFileAsString(filePath);
102
132
  }
103
133
  if (!exists) {
@@ -113,7 +143,7 @@ class BaseItemProperty {
113
143
  renderValue = context.renderValue || context.propertyValue;
114
144
  }
115
145
  let transformedPropertyName = propertyName;
116
- const skipTransform = internalPropertyNames.includes(propertyName) || !!this._alias;
146
+ const skipTransform = INTERNAL_PROPERTY_NAMES.includes(propertyName) || !!this._alias;
117
147
  if (!skipTransform && transformedPropertyName.endsWith('Id')) {
118
148
  transformedPropertyName = transformedPropertyName.slice(0, -2);
119
149
  }
@@ -213,43 +243,54 @@ class BaseItemProperty {
213
243
  _getSnapshot() {
214
244
  return this._service.getSnapshot();
215
245
  }
246
+ _getSnapshotContext() {
247
+ return this._getSnapshot().context;
248
+ }
216
249
  get localId() {
217
- return this._getSnapshot().context.localId;
250
+ return this._getSnapshotContext().localId;
218
251
  }
219
252
  get uid() {
220
- return this._getSnapshot().context.uid;
253
+ return this._getSnapshotContext().uid;
221
254
  }
222
255
  get seedLocalId() {
223
- return this._getSnapshot().context.seedLocalId;
256
+ return this._getSnapshotContext().seedLocalId;
224
257
  }
225
258
  get seedUid() {
226
- return this._getSnapshot().context.seedUid;
259
+ return this._getSnapshotContext().seedUid;
227
260
  }
228
261
  get schemaUid() {
229
- return this._getSnapshot().context.schemaUid;
262
+ return this._getSnapshotContext().schemaUid;
230
263
  }
231
264
  get propertyName() {
232
265
  if (this._alias) {
233
266
  return this._alias;
234
267
  }
235
- return this._getSnapshot().context.propertyName;
268
+ return this._getSnapshotContext().propertyName;
236
269
  }
237
270
  get modelName() {
238
- return this._getSnapshot().context.modelName;
271
+ return this._getSnapshotContext().modelName;
239
272
  }
240
273
  get propertyDef() {
241
- return this._getSnapshot().context.propertyRecordSchema;
274
+ return this._getSnapshotContext().propertyRecordSchema;
242
275
  }
243
- get localStoragePath() {
276
+ get localStorageDir() {
244
277
  if (this.propertyDef && this.propertyDef.localStorageDir) {
245
- return `/files${this.propertyDef.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`;
278
+ return this.propertyDef.localStorageDir;
246
279
  }
247
280
  if (this._getSnapshot().context.localStorageDir) {
248
- return `/files${this._getSnapshot().context.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`;
281
+ return this._getSnapshot().context.localStorageDir;
282
+ }
283
+ }
284
+ get refResolvedValue() {
285
+ return this._getSnapshotContext().refResolvedValue;
286
+ }
287
+ get localStoragePath() {
288
+ if (this.localStorageDir) {
289
+ return `/files${this.localStorageDir}/${this.refResolvedValue}`;
249
290
  }
250
291
  }
251
292
  get versionLocalId() {
252
- return this._getSnapshot().context.versionLocalId;
293
+ return this._getSnapshotContext().versionLocalId;
253
294
  }
254
295
  get status() {
255
296
  return this._getSnapshot().value;
@@ -261,6 +302,9 @@ class BaseItemProperty {
261
302
  // logger(
262
303
  // `[XXXXXXXXXX] [value] [get] subjectValue: ${this._subject.value} serviceValue: ${this._service.getSnapshot().context.renderValue}`,
263
304
  // )
305
+ if (this._dataType === 'Image') {
306
+ return this._getSnapshot().context.refResolvedValue;
307
+ }
264
308
  return this._subject.value;
265
309
  }
266
310
  set value(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseItemProperty.js","sources":["../../../../src/ItemProperty/BaseItemProperty.ts"],"sourcesContent":["import { ActorRefFrom, createActor, SnapshotFrom, Subscription, waitFor } from 'xstate'\nimport { BehaviorSubject, Subscriber } from 'rxjs'\nimport { Static } from '@sinclair/typebox'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { immerable } from 'immer'\nimport { CreatePropertyInstanceProps, PropertyMachineContext } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { propertyMachine } from './service/propertyMachine'\nimport { internalPropertyNames } from '@/helpers/constants'\nimport debug from 'debug'\nimport pluralize from 'pluralize'\nimport { getPropertyData } from '@/db/read/getPropertyData'\nimport { BaseFileManager, getCorrectId } from '@/helpers'\nimport { TProperty } from '@/schema'\n\n\nconst logger = debug('seedSdk:property:class')\n\ntype ItemPropertyService = ActorRefFrom<typeof propertyMachine>\ntype ItemPropertySnapshot = SnapshotFrom<typeof propertyMachine>\n\ntype ItemPropertyFindProps = {\n propertyName: string\n propertyLocalId?: string\n seedLocalId?: string\n seedUid?: string\n}\n\nexport abstract class BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n protected static instanceCache: Map<\n string,\n { instance: BaseItemProperty<any>; refCount: number }\n > = new Map()\n protected readonly _service: ItemPropertyService\n protected _subject: BehaviorSubject<any>\n protected readonly _isRelation: boolean = false\n protected readonly _isList: boolean = false\n protected readonly _alias: string | undefined\n protected _subscription: Subscription\n protected _dataType: string | undefined\n protected _schemaUid: string | undefined\n [immerable] = true\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n const { modelName, propertyName, propertyValue, seedLocalId, seedUid, versionLocalId, versionUid, storageTransactionId, schemaUid } = initialValues\n\n if (!modelName) {\n throw new Error('Model name is required')\n }\n\n const ModelClass = getModel(modelName)\n\n if (!ModelClass) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n if (!propertyName) {\n throw new Error(`Property name not provided`)\n }\n\n const serviceInput: Partial<PropertyMachineContext> = {\n propertyValue,\n propertyName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName: modelName,\n storageTransactionId,\n propertyRecordSchema: ModelClass.schema[propertyName],\n schemaUid,\n }\n\n\n\n if (!internalPropertyNames.includes(propertyName)) {\n let propertyNameWithoutId\n\n const propertyRecordSchema =\n ModelClass.schema[propertyNameWithoutId || propertyName]\n if (propertyRecordSchema) {\n this._dataType = propertyRecordSchema.dataType\n\n serviceInput.propertyRecordSchema = propertyRecordSchema\n\n if (propertyRecordSchema.dataType === 'Relation') {\n this._isRelation = true\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref\n ) {\n this._isList = true\n this._isRelation = true\n\n if (propertyValue) {\n try {\n serviceInput.propertyValue = JSON.parse(propertyValue)\n } catch (e) {\n logger('List property value is not JSON', e)\n }\n }\n\n const propertyNameSingular = pluralize(propertyName!, 1)\n\n this._alias = propertyName\n\n serviceInput.propertyName = `${propertyNameSingular}${propertyRecordSchema.ref}Ids`\n }\n\n if (!this._alias && propertyNameWithoutId) {\n this._alias = propertyNameWithoutId\n }\n }\n }\n\n serviceInput.isRelation = this._isRelation\n\n this._subject = new BehaviorSubject(propertyValue)\n this._service = createActor(propertyMachine, {\n input: serviceInput,\n })\n\n this._subscription = this._service.subscribe(\n async (snapshot: ItemPropertySnapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n\n const { context } = snapshot\n const { propertyRecordSchema } = context\n\n if (context.seedLocalId) {\n const cacheKey = BaseItemProperty.cacheKey(\n context.seedLocalId,\n context.propertyName,\n )\n if (!BaseItemProperty.instanceCache.has(cacheKey)) {\n BaseItemProperty.instanceCache.set(cacheKey, {\n instance: this,\n refCount: 1,\n })\n }\n }\n\n let renderValue\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage' &&\n context.refResolvedValue &&\n context.localStorageDir\n ) {\n const filePath = `/files/${context.localStorageDir}/${context.refResolvedValue}`\n try {\n const exists = await BaseFileManager.pathExists(filePath)\n if (exists) {\n renderValue = await BaseFileManager.readFileAsString(filePath,)\n }\n if (!exists) {\n renderValue = 'No file found'\n }\n } catch (e) {\n logger(\n `[ItemProperty] [${context.seedLocalId}] [${context.propertyName}] [storageType] error`,\n e,\n )\n renderValue = 'No file found'\n }\n }\n\n if (!renderValue) {\n renderValue = context.renderValue || context.propertyValue\n }\n\n let transformedPropertyName = propertyName\n\n const skipTransform =\n internalPropertyNames.includes(propertyName) || !!this._alias\n\n if (!skipTransform && transformedPropertyName.endsWith('Id')) {\n transformedPropertyName = transformedPropertyName.slice(0, -2)\n }\n\n if (!skipTransform && transformedPropertyName.endsWith('Ids')) {\n transformedPropertyName = transformedPropertyName.slice(0, -3)\n }\n\n if (skipTransform && this._alias) {\n transformedPropertyName = this._alias\n }\n\n if (skipTransform && !this._alias) {\n }\n\n if (this._subject.value === renderValue) {\n return\n }\n\n this._subject.next(renderValue)\n // TODO: Maybe have this only update the property?\n // if (context.seedLocalId || context.seedUid) {\n // eventEmitter.emit(`property.${context.seedUid || context.seedLocalId}.${propertyName}.update`)\n // }\n // if (context.seedUid) {\n // eventEmitter.emit(`item.${modelName}.${context.seedUid}.update`)\n // }\n },\n )\n\n this._service.start()\n }\n\n static PlatformClass: typeof BaseItemProperty\n\n static setPlatformClass(platformClass: typeof BaseItemProperty) {\n this.PlatformClass = platformClass\n }\n\n static create(\n props: Partial<CreatePropertyInstanceProps>,\n ): BaseItemProperty<any> | undefined {\n const { propertyName, seedLocalId, seedUid, versionLocalId, versionUid } =\n props\n if (!propertyName || (!seedLocalId && !seedUid)) {\n return\n }\n const cacheKey = this.cacheKey(\n (seedUid || seedLocalId) as string,\n propertyName,\n )\n if (seedLocalId && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (seedUid && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, { instance, refCount: refCount + 1 })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, { instance: newInstance, refCount: 1 })\n return newInstance\n }\n }\n return new this(props)\n }\n\n static async find({\n propertyName,\n seedLocalId,\n seedUid,\n }: ItemPropertyFindProps): Promise<IItemProperty<any> | undefined> {\n if ((!seedLocalId && !seedUid) || !propertyName) {\n return\n }\n const cacheKeyId = seedUid || seedLocalId\n const cacheKey = BaseItemProperty.cacheKey(cacheKeyId!, propertyName)\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n const propertyData = await getPropertyData({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!propertyData) {\n return\n }\n return BaseItemProperty.create(propertyData)\n }\n\n static cacheKey(seedLocalIdOrUid: string, propertyName: string): string {\n const { uid, localId } = getCorrectId(seedLocalIdOrUid)\n return `Item_${uid || localId}_${propertyName}`\n }\n\n getService() {\n return this._service\n }\n\n private _getSnapshot(): ItemPropertySnapshot {\n return this._service.getSnapshot() as ItemPropertySnapshot\n }\n\n get localId() {\n return this._getSnapshot().context.localId\n }\n\n get uid() {\n return this._getSnapshot().context.uid\n }\n\n get seedLocalId() {\n return this._getSnapshot().context.seedLocalId\n }\n\n get seedUid() {\n return this._getSnapshot().context.seedUid\n }\n\n get schemaUid() {\n return this._getSnapshot().context.schemaUid\n }\n\n get propertyName() {\n if (this._alias) {\n return this._alias\n }\n return this._getSnapshot().context.propertyName\n }\n\n get modelName() {\n return this._getSnapshot().context.modelName\n }\n\n get propertyDef(): Static<typeof TProperty> | undefined {\n return this._getSnapshot().context.propertyRecordSchema\n }\n\n get localStoragePath(): string | void {\n if (this.propertyDef && this.propertyDef.localStorageDir) {\n return `/files${this.propertyDef.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n if (this._getSnapshot().context.localStorageDir) {\n return `/files${this._getSnapshot().context.localStorageDir}/${this._getSnapshot().context.refResolvedValue}`\n }\n }\n\n get versionLocalId(): string | undefined {\n return this._getSnapshot().context.versionLocalId\n }\n\n get status() {\n return this._getSnapshot().value\n }\n\n get alias() {\n return this._alias\n }\n\n get value() {\n // logger(\n // `[XXXXXXXXXX] [value] [get] subjectValue: ${this._subject.value} serviceValue: ${this._service.getSnapshot().context.renderValue}`,\n // )\n return this._subject.value\n }\n\n set value(value: any) {\n if (this._subject.value === value) {\n return\n }\n const context = this._service.getSnapshot().context\n if (!context.propertyRecordSchema) {\n this._subject.next(value)\n }\n this._service.send({\n type: 'save',\n newValue: value,\n })\n }\n\n get published(): boolean {\n return !!this._getSnapshot().context.uid\n }\n\n subscribe(callback: Partial<Subscriber<any>>) {\n return this._subject.subscribe(callback)\n }\n\n async save(): Promise<void> {\n await waitFor(\n this._service,\n (snapshot) => !snapshot.context.isSaving && snapshot.value === 'idle',\n {\n timeout: 10_000,\n },\n )\n // return new Promise((resolve) => {\n // const saveSub = this._service.subscribe((snapshot) => {\n // if (!snapshot.context.isSaving) {\n // saveSub.unsubscribe()\n // resolve()\n // }\n // })\n // })\n }\n\n unload() {\n this._service.stop()\n }\n} "],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseItemProperty.js","sources":["../../../../src/ItemProperty/BaseItemProperty.ts"],"sourcesContent":["import { ActorRefFrom, createActor, SnapshotFrom, Subscription, waitFor } from 'xstate'\nimport { BehaviorSubject, Subscriber } from 'rxjs'\nimport { Static } from '@sinclair/typebox'\nimport { IItemProperty } from '@/interfaces/IItemProperty'\nimport { immerable } from 'immer'\nimport { CreatePropertyInstanceProps, PropertyMachineContext } from '@/types'\nimport { getModel } from '@/stores/modelClass'\nimport { propertyMachine } from './service/propertyMachine'\nimport { INTERNAL_PROPERTY_NAMES } from '@/helpers/constants'\nimport debug from 'debug'\nimport pluralize from 'pluralize'\nimport { getPropertyData } from '@/db/read/getPropertyData'\nimport { BaseFileManager, getCorrectId } from '@/helpers'\nimport { TProperty } from '@/schema'\nimport { eventEmitter } from '@/eventBus'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\n\n\nconst logger = debug('seedSdk:property:class')\n\ntype ItemPropertyService = ActorRefFrom<typeof propertyMachine>\ntype ItemPropertySnapshot = SnapshotFrom<typeof propertyMachine>\n\ntype ItemPropertyFindProps = {\n propertyName: string\n propertyLocalId?: string\n seedLocalId?: string\n seedUid?: string\n}\n\nexport abstract class BaseItemProperty<PropertyType> implements IItemProperty<PropertyType> {\n protected static instanceCache: Map<\n string,\n { instance: BaseItemProperty<any>; refCount: number }\n > = new Map()\n protected readonly _service: ItemPropertyService\n protected _subject: BehaviorSubject<any>\n protected readonly _isRelation: boolean = false\n protected readonly _isList: boolean = false\n protected readonly _alias: string | undefined\n protected _subscription: Subscription\n protected _dataType: string | undefined\n protected _schemaUid: string | undefined\n [immerable] = true\n\n constructor(initialValues: Partial<CreatePropertyInstanceProps>) {\n const { modelName, propertyName, propertyValue, seedLocalId, seedUid, versionLocalId, versionUid, storageTransactionId, schemaUid } = initialValues\n\n if (!modelName) {\n throw new Error('Model name is required')\n }\n\n const ModelClass = getModel(modelName)\n\n if (!ModelClass) {\n throw new Error(`Model ${modelName} not found`)\n }\n\n if (!propertyName) {\n throw new Error(`Property name not provided`)\n }\n\n const serviceInput: Partial<PropertyMachineContext> = {\n propertyValue,\n propertyName,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n modelName,\n storageTransactionId,\n propertyRecordSchema: ModelClass.schema[propertyName],\n schemaUid,\n }\n\n\n\n if (!INTERNAL_PROPERTY_NAMES.includes(propertyName)) {\n let propertyNameWithoutId\n\n if (propertyName.endsWith('Id')) {\n propertyNameWithoutId = propertyName.slice(0, -2)\n }\n\n if (propertyName.endsWith('Ids')) {\n propertyNameWithoutId = propertyName.slice(0, -3)\n propertyNameWithoutId = pluralize(propertyNameWithoutId)\n }\n\n const propertyRecordSchema =\n ModelClass.schema[propertyNameWithoutId || propertyName]\n if (propertyRecordSchema) {\n this._dataType = propertyRecordSchema.dataType\n\n serviceInput.propertyRecordSchema = propertyRecordSchema\n\n if (propertyRecordSchema.dataType === 'Relation') {\n this._isRelation = true\n }\n\n if (\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref\n ) {\n this._isList = true\n this._isRelation = true\n\n if (propertyValue) {\n try {\n serviceInput.propertyValue = JSON.parse(propertyValue)\n } catch (e) {\n logger('List property value is not JSON', e)\n }\n }\n\n const propertyNameSingular = pluralize(propertyName!, 1)\n\n this._alias = propertyName\n\n serviceInput.propertyName = `${propertyNameSingular}${propertyRecordSchema.ref}Ids`\n }\n\n if (!this._alias && propertyNameWithoutId) {\n this._alias = propertyNameWithoutId\n }\n }\n }\n\n serviceInput.isRelation = this._isRelation\n\n this._subject = new BehaviorSubject(propertyValue)\n this._service = createActor(propertyMachine, {\n input: serviceInput,\n })\n\n this._subscription = this._service.subscribe(\n async (snapshot: ItemPropertySnapshot) => {\n if (!snapshot || !snapshot.context) {\n return\n }\n\n const { context } = snapshot\n const { propertyRecordSchema } = context\n\n if (context.seedLocalId) {\n const cacheKey = BaseItemProperty.cacheKey(\n context.seedLocalId,\n context.propertyName,\n )\n if (!BaseItemProperty.instanceCache.has(cacheKey)) {\n BaseItemProperty.instanceCache.set(cacheKey, {\n instance: this,\n refCount: 1,\n })\n }\n }\n\n let renderValue\n\n const isImage =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'Image'\n\n const isFile =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'File'\n\n const isItemStorage = \n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage' &&\n context.refResolvedValue &&\n context.localStorageDir\n\n if (!this._schemaUid && context.schemaUid) {\n this._schemaUid = context.schemaUid\n }\n\n if (\n isImage ||\n isFile ||\n isItemStorage\n ) {\n const filePath = `/files/${context.localStorageDir}/${context.refResolvedValue}`\n try {\n const exists = await BaseFileManager.pathExists(filePath)\n if (exists && isItemStorage) {\n renderValue = await BaseFileManager.readFileAsString(filePath,)\n }\n if (exists && isImage) {\n if (context.refResolvedDisplayValue) {\n renderValue = context.refResolvedDisplayValue\n } \n if (!context.refResolvedDisplayValue) {\n renderValue = await BaseFileManager.getContentUrlFromPath(filePath)\n }\n }\n if (exists && isFile) {\n renderValue = await BaseFileManager.readFileAsString(filePath,)\n }\n if (!exists) {\n renderValue = 'No file found'\n }\n } catch (e) {\n logger(\n `[ItemProperty] [${context.seedLocalId}] [${context.propertyName}] [storageType] error`,\n e,\n )\n renderValue = 'No file found'\n }\n }\n\n if (!renderValue) {\n renderValue = context.renderValue || context.propertyValue\n }\n\n let transformedPropertyName = propertyName\n\n const skipTransform =\n INTERNAL_PROPERTY_NAMES.includes(propertyName) || !!this._alias\n\n if (!skipTransform && transformedPropertyName.endsWith('Id')) {\n transformedPropertyName = transformedPropertyName.slice(0, -2)\n }\n\n if (!skipTransform && transformedPropertyName.endsWith('Ids')) {\n transformedPropertyName = transformedPropertyName.slice(0, -3)\n }\n\n if (skipTransform && this._alias) {\n transformedPropertyName = this._alias\n }\n\n if (skipTransform && !this._alias) {\n }\n\n if (this._subject.value === renderValue) {\n return\n }\n\n this._subject.next(renderValue)\n // TODO: Maybe have this only update the property?\n // if (context.seedLocalId || context.seedUid) {\n // eventEmitter.emit(`property.${context.seedUid || context.seedLocalId}.${propertyName}.update`)\n // }\n // if (context.seedUid) {\n // eventEmitter.emit(`item.${modelName}.${context.seedUid}.update`)\n // }\n },\n )\n\n this._service.start()\n }\n\n static PlatformClass: typeof BaseItemProperty\n\n static setPlatformClass(platformClass: typeof BaseItemProperty) {\n this.PlatformClass = platformClass\n }\n\n static create(\n props: Partial<CreatePropertyInstanceProps>,\n ): BaseItemProperty<any> | undefined {\n const { propertyName, seedLocalId, seedUid, versionLocalId, versionUid } =\n props\n if (!propertyName || (!seedLocalId && !seedUid)) {\n return\n }\n const cacheKey = this.cacheKey(\n (seedUid || seedLocalId) as string,\n propertyName,\n )\n if (seedLocalId && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, {\n instance: newInstance,\n refCount: 1,\n })\n return newInstance\n }\n }\n if (seedUid && propertyName) {\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, { instance, refCount: refCount + 1 })\n return instance\n }\n if (!this.instanceCache.has(cacheKey)) {\n const newInstance = new this(props)\n this.instanceCache.set(cacheKey, { instance: newInstance, refCount: 1 })\n return newInstance\n }\n }\n return new this(props)\n }\n\n static async find({\n propertyName,\n seedLocalId,\n seedUid,\n }: ItemPropertyFindProps): Promise<IItemProperty<any> | undefined> {\n if ((!seedLocalId && !seedUid) || !propertyName) {\n return\n }\n const cacheKeyId = seedUid || seedLocalId\n const cacheKey = BaseItemProperty.cacheKey(cacheKeyId!, propertyName)\n if (this.instanceCache.has(cacheKey)) {\n const { instance, refCount } = this.instanceCache.get(cacheKey)!\n this.instanceCache.set(cacheKey, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n const propertyData = await getPropertyData({\n propertyName,\n seedLocalId,\n seedUid,\n })\n if (!propertyData) {\n return\n }\n return BaseItemProperty.create(propertyData)\n }\n\n static cacheKey(seedLocalIdOrUid: string, propertyName: string): string {\n const { uid, localId } = getCorrectId(seedLocalIdOrUid)\n return `Item_${uid || localId}_${propertyName}`\n }\n\n getService() {\n return this._service\n }\n\n private _getSnapshot(): ItemPropertySnapshot {\n return this._service.getSnapshot() as ItemPropertySnapshot\n }\n\n private _getSnapshotContext(): PropertyMachineContext {\n return this._getSnapshot().context\n }\n\n get localId() {\n return this._getSnapshotContext().localId\n }\n\n get uid() {\n return this._getSnapshotContext().uid\n }\n\n get seedLocalId() {\n return this._getSnapshotContext().seedLocalId\n }\n\n get seedUid() {\n return this._getSnapshotContext().seedUid\n }\n\n get schemaUid() {\n return this._getSnapshotContext().schemaUid\n }\n\n get propertyName() {\n if (this._alias) {\n return this._alias\n }\n return this._getSnapshotContext().propertyName\n }\n\n get modelName() {\n return this._getSnapshotContext().modelName\n }\n\n get propertyDef(): Static<typeof TProperty> | undefined {\n return this._getSnapshotContext().propertyRecordSchema\n }\n\n get localStorageDir(): string | void {\n if (this.propertyDef && this.propertyDef.localStorageDir) {\n return this.propertyDef.localStorageDir\n }\n if (this._getSnapshot().context.localStorageDir) {\n return this._getSnapshot().context.localStorageDir\n }\n }\n\n get refResolvedValue(): string | undefined {\n return this._getSnapshotContext().refResolvedValue\n }\n\n get localStoragePath(): string | void {\n if (this.localStorageDir) {\n return `/files${this.localStorageDir}/${this.refResolvedValue}`\n }\n }\n\n get versionLocalId(): string | undefined {\n return this._getSnapshotContext().versionLocalId\n }\n\n get status() {\n return this._getSnapshot().value\n }\n\n get alias() {\n return this._alias\n }\n\n get value() {\n // logger(\n // `[XXXXXXXXXX] [value] [get] subjectValue: ${this._subject.value} serviceValue: ${this._service.getSnapshot().context.renderValue}`,\n // )\n if (this._dataType === 'Image') {\n return this._getSnapshot().context.refResolvedValue\n }\n return this._subject.value\n }\n\n set value(value: any) {\n if (this._subject.value === value) {\n return\n }\n const context = this._service.getSnapshot().context\n if (!context.propertyRecordSchema) {\n this._subject.next(value)\n }\n this._service.send({\n type: 'save',\n newValue: value,\n })\n }\n\n get published(): boolean {\n return !!this._getSnapshot().context.uid\n }\n\n subscribe(callback: Partial<Subscriber<any>>) {\n return this._subject.subscribe(callback)\n }\n\n async save(): Promise<void> {\n await waitFor(\n this._service,\n (snapshot) => !snapshot.context.isSaving && snapshot.value === 'idle',\n {\n timeout: 10_000,\n },\n )\n // return new Promise((resolve) => {\n // const saveSub = this._service.subscribe((snapshot) => {\n // if (!snapshot.context.isSaving) {\n // saveSub.unsubscribe()\n // resolve()\n // }\n // })\n // })\n }\n\n unload() {\n this._service.stop()\n }\n} "],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hydrateFromDb.d.ts","sourceRoot":"","sources":["../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAMlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAOpD,eAAO,MAAM,aAAa,oGAgQxB,CAAA"}
1
+ {"version":3,"file":"hydrateFromDb.d.ts","sourceRoot":"","sources":["../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAMlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAOpD,eAAO,MAAM,aAAa,oGA+QxB,CAAA"}
@@ -17,9 +17,16 @@ debug('seedSdk:property:actors:hydrateFromDb');
17
17
  const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
18
18
  const { seedUid, seedLocalId, propertyName: propertyNameRaw, propertyRecordSchema, modelName, } = context;
19
19
  let propertyName = propertyNameRaw;
20
- if (propertyRecordSchema &&
20
+ const isRelation = propertyRecordSchema &&
21
21
  propertyRecordSchema.ref &&
22
- propertyRecordSchema.dataType === 'Relation' &&
22
+ propertyRecordSchema.dataType === 'Relation';
23
+ const isImage = propertyRecordSchema &&
24
+ propertyRecordSchema.dataType === 'Image';
25
+ const isFile = propertyRecordSchema &&
26
+ propertyRecordSchema.dataType === 'File';
27
+ if ((isRelation ||
28
+ isImage ||
29
+ isFile) &&
23
30
  !propertyNameRaw.endsWith('Id')) {
24
31
  propertyName = propertyNameRaw + 'Id';
25
32
  }
@@ -31,11 +38,8 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
31
38
  }
32
39
  const _hydrateFromDb = async () => {
33
40
  const appDb = BaseDb.getAppDb();
34
- const isRelation = propertyRecordSchema &&
35
- propertyRecordSchema.ref &&
36
- propertyRecordSchema.dataType === 'Relation';
37
41
  const whereClauses = [];
38
- if (isRelation) {
42
+ if (isRelation || isImage || isFile) {
39
43
  let missingPropertyNameVariant;
40
44
  if (propertyName.endsWith('Id')) {
41
45
  missingPropertyNameVariant = propertyName.slice(0, -2);
@@ -68,11 +72,10 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
68
72
  return;
69
73
  }
70
74
  const firstRow = rows[0];
71
- const { localId, uid, propertyName: propertyNameFromDb, propertyValue: propertyValueFromDb, seedLocalId: seedLocalIdFromDb, seedUid: seedUidFromDb, schemaUid: schemaUidFromDb, versionLocalId: versionLocalIdFromDb, versionUid: versionUidFromDb, refValueType, localStorageDir, } = firstRow;
72
- let { refResolvedDisplayValue, refResolvedValue } = firstRow;
75
+ const { localId, uid, propertyName: propertyNameFromDb, propertyValue: propertyValueFromDb, seedLocalId: seedLocalIdFromDb, seedUid: seedUidFromDb, schemaUid: schemaUidFromDb, versionLocalId: versionLocalIdFromDb, versionUid: versionUidFromDb, refValueType, } = firstRow;
76
+ let { refResolvedDisplayValue, refResolvedValue, localStorageDir } = firstRow;
73
77
  let propertyValueProcessed = propertyValueFromDb;
74
- if (propertyRecordSchema &&
75
- propertyRecordSchema.refValueType === 'Image') {
78
+ if (isImage) {
76
79
  let shouldReadFromFile = true;
77
80
  if (refResolvedValue &&
78
81
  refResolvedDisplayValue &&
@@ -80,9 +83,15 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
80
83
  try {
81
84
  const response = await fetch(refResolvedDisplayValue, {
82
85
  method: 'HEAD',
86
+ }).catch((error) => {
87
+ // No-op
88
+ shouldReadFromFile = true;
83
89
  });
90
+ if (!response || !response.ok) {
91
+ shouldReadFromFile = true;
92
+ }
84
93
  // Check if the status is in the 200-299 range
85
- if (response.ok) {
94
+ if (response && response.ok) {
86
95
  shouldReadFromFile = false;
87
96
  }
88
97
  }
@@ -93,13 +102,11 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
93
102
  if (shouldReadFromFile) {
94
103
  let dir = localStorageDir;
95
104
  if (!dir &&
96
- propertyRecordSchema &&
97
- propertyRecordSchema.refValueType === 'Image') {
105
+ isImage) {
98
106
  dir = 'images';
99
107
  }
100
108
  dir = dir.replace(/^\//, '');
101
- if (!refResolvedValue &&
102
- propertyValueFromDb &&
109
+ if (propertyValueFromDb &&
103
110
  propertyValueFromDb.length === 66) {
104
111
  // Here the storageTransactionId is stored on a different record and
105
112
  // we want to add it as the refResolvedValue
@@ -133,12 +140,15 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
133
140
  filename = matchingFiles[0];
134
141
  filePath = `/files/${dir}/${filename}`;
135
142
  }
143
+ localStorageDir = `/${dir}`;
136
144
  if (fileExists && filename && filePath) {
137
145
  const file = await BaseFileManager.readFile(filePath);
138
146
  refResolvedDisplayValue = URL.createObjectURL(file);
139
147
  await updateMetadata({
140
148
  localId,
141
149
  refResolvedValue: filename,
150
+ refResolvedDisplayValue: refResolvedDisplayValue,
151
+ localStorageDir,
142
152
  });
143
153
  }
144
154
  }
@@ -169,8 +179,8 @@ const hydrateFromDb = fromCallback(({ sendBack, input: { context } }) => {
169
179
  if (propertyRecordSchema &&
170
180
  propertyRecordSchema.storageType &&
171
181
  propertyRecordSchema.storageType === 'ItemStorage') {
172
- const { Item } = await import('../../../browser/Item/index.js');
173
- const item = await Item.find({
182
+ const { BaseItem } = await import('../../../Item/BaseItem.js');
183
+ const item = await BaseItem.find({
174
184
  seedLocalId,
175
185
  modelName,
176
186
  });
@@ -1 +1 @@
1
- {"version":3,"file":"hydrateFromDb.js","sources":["../../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport path from 'path'\nimport { BaseFileManager } from '@/helpers'\n\nconst logger = debug('seedSdk:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation' &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const whereClauses = []\n\n if (isRelation) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n localStorageDir,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'Image'\n ) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n })\n\n // Check if the status is in the 200-299 range\n if (response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n propertyRecordSchema &&\n propertyRecordSchema.refValueType === 'Image'\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n !refResolvedValue &&\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n or(\n eq(metadata.propertyName, 'storageTransactionId'),\n eq(metadata.propertyName, 'transactionId'),\n ),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const fs = await BaseFileManager.getFs()\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n if (fileExists && filename && filePath) {\n const file = await BaseFileManager.readFile(filePath)\n refResolvedDisplayValue = URL.createObjectURL(file)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n })\n }\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { Item } = await import(`@/browser/Item`)\n const item = await Item.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await BaseFileManager.pathExists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await BaseFileManager.readFileAsString(filePath)\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hydrateFromDb.js","sources":["../../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport path from 'path'\nimport { BaseFileManager } from '@/helpers'\n\nconst logger = debug('seedSdk:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const isImage =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'Image'\n\n const isFile =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'File'\n\n if (\n (\n isRelation || \n isImage ||\n isFile\n ) &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (isRelation || isImage || isFile) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue, localStorageDir } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (isImage) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n }).catch((error) => {\n // No-op\n shouldReadFromFile = true\n })\n\n if (!response || !response.ok) {\n shouldReadFromFile = true\n }\n\n // Check if the status is in the 200-299 range\n if (response && response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n isImage\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n or(\n eq(metadata.propertyName, 'storageTransactionId'),\n eq(metadata.propertyName, 'transactionId'),\n ),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const fs = await BaseFileManager.getFs()\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file: string) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n localStorageDir = `/${dir}`\n if (fileExists && filename && filePath) {\n const file = await BaseFileManager.readFile(filePath)\n refResolvedDisplayValue = URL.createObjectURL(file)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n refResolvedDisplayValue: refResolvedDisplayValue,\n localStorageDir,\n })\n }\n\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { BaseItem } = await import(`@/Item/BaseItem`)\n const item = await BaseItem.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await BaseFileManager.pathExists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await BaseFileManager.readFileAsString(filePath)\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../../src/ItemProperty/service/actors/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAKpD,eAAO,MAAM,UAAU,oGA8DrB,CAAA"}
1
+ {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../../../../../src/ItemProperty/service/actors/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAOpD,eAAO,MAAM,UAAU,oGA4ErB,CAAA"}