@seedprotocol/sdk 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +314 -0
- package/dist/bin.js +369 -0
- package/dist/bin.js.map +1 -0
- package/dist/browser/db/seedSchema/AppStateSchema.ts +10 -0
- package/dist/browser/db/seedSchema/MetadataSchema.ts +26 -0
- package/dist/browser/db/seedSchema/SeedSchema.ts +29 -0
- package/dist/browser/db/seedSchema/VersionSchema.ts +16 -0
- package/dist/browser/db/seedSchema/index.ts +4 -0
- package/dist/index-Dr_ozHON.js +29 -0
- package/dist/index-Dr_ozHON.js.map +1 -0
- package/dist/index-VvchoqaM.js +6948 -0
- package/dist/index-VvchoqaM.js.map +1 -0
- package/dist/main.js +29 -0
- package/dist/main.js.map +1 -0
- package/dist/node/codegen/templates/header.njk +10 -0
- package/dist/node/codegen/templates/index.njk +23 -0
- package/dist/node/codegen/templates/relations.njk +13 -0
- package/dist/node/codegen/templates/schema.njk +11 -0
- package/dist/node/codegen/templates/table.njk +43 -0
- package/dist/package.json +186 -0
- package/dist/seed-C3nzF2oc.js +71 -0
- package/dist/seed-C3nzF2oc.js.map +1 -0
- package/dist/seed-CHE3yKuF.js +28 -0
- package/dist/seed-CHE3yKuF.js.map +1 -0
- package/dist/seed-Nsca4-Wn.js +38 -0
- package/dist/seed-Nsca4-Wn.js.map +1 -0
- package/dist/seed.schema.config-CJPoGRe1.js +76 -0
- package/dist/seed.schema.config-CJPoGRe1.js.map +1 -0
- package/dist/shared/configs/browser.app.db.config.ts +32 -0
- package/dist/shared/configs/browser.seed.db.config.ts +33 -0
- package/dist/shared/configs/sdk.db.config.ts +33 -0
- package/dist/shared/configs/seed.schema.config.ts +25 -0
- package/dist/shared/sdkSchema/configSchema.ts +15 -0
- package/dist/shared/sdkSchema/index.ts +4 -0
- package/dist/shared/sdkSchema/modelSchema.ts +46 -0
- package/dist/shared/sdkSchema/modelUidSchema.ts +16 -0
- package/dist/shared/sdkSchema/propertyUidSchema.ts +16 -0
- package/dist/types/scripts/bin.d.ts +4 -0
- package/dist/types/scripts/bin.d.ts.map +1 -0
- package/dist/types/src/browser/db/index.d.ts +6 -0
- package/dist/types/src/browser/db/index.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getItem.d.ts +17 -0
- package/dist/types/src/browser/db/read/getItem.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getItems.d.ts +3 -0
- package/dist/types/src/browser/db/read/getItems.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getPropertiesForSeed.d.ts +5 -0
- package/dist/types/src/browser/db/read/getPropertiesForSeed.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getSeedData.d.ts +18 -0
- package/dist/types/src/browser/db/read/getSeedData.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getVersionData.d.ts +19 -0
- package/dist/types/src/browser/db/read/getVersionData.d.ts.map +1 -0
- package/dist/types/src/browser/db/read/getVersionsForVersionUids.d.ts +10 -0
- package/dist/types/src/browser/db/read/getVersionsForVersionUids.d.ts.map +1 -0
- package/dist/types/src/browser/db/read.d.ts +17 -0
- package/dist/types/src/browser/db/read.d.ts.map +1 -0
- package/dist/types/src/browser/db/save.d.ts +5 -0
- package/dist/types/src/browser/db/save.d.ts.map +1 -0
- package/dist/types/src/browser/db/seedSchema/AppStateSchema.d.ts +73 -0
- package/dist/types/src/browser/db/seedSchema/AppStateSchema.d.ts.map +1 -0
- package/dist/types/src/browser/db/seedSchema/MetadataSchema.d.ts +329 -0
- package/dist/types/src/browser/db/seedSchema/MetadataSchema.d.ts.map +1 -0
- package/dist/types/src/browser/db/seedSchema/SeedSchema.d.ts +153 -0
- package/dist/types/src/browser/db/seedSchema/SeedSchema.d.ts.map +1 -0
- package/dist/types/src/browser/db/seedSchema/VersionSchema.d.ts +169 -0
- package/dist/types/src/browser/db/seedSchema/VersionSchema.d.ts.map +1 -0
- package/dist/types/src/browser/db/seedSchema/index.d.ts +5 -0
- package/dist/types/src/browser/db/seedSchema/index.d.ts.map +1 -0
- package/dist/types/src/browser/db/write.d.ts +60 -0
- package/dist/types/src/browser/db/write.d.ts.map +1 -0
- package/dist/types/src/browser/eas/actors.d.ts +3 -0
- package/dist/types/src/browser/eas/actors.d.ts.map +1 -0
- package/dist/types/src/browser/eas/helpers.d.ts +5 -0
- package/dist/types/src/browser/eas/helpers.d.ts.map +1 -0
- package/dist/types/src/browser/eas/index.d.ts +113 -0
- package/dist/types/src/browser/eas/index.d.ts.map +1 -0
- package/dist/types/src/browser/eas/seedData.d.ts +1 -0
- package/dist/types/src/browser/eas/seedData.d.ts.map +1 -0
- package/dist/types/src/browser/events/files/download.d.ts +6 -0
- package/dist/types/src/browser/events/files/download.d.ts.map +1 -0
- package/dist/types/src/browser/events/files/index.d.ts +4 -0
- package/dist/types/src/browser/events/files/index.d.ts.map +1 -0
- package/dist/types/src/browser/events/index.d.ts +13 -0
- package/dist/types/src/browser/events/index.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/create.d.ts +2 -0
- package/dist/types/src/browser/events/item/create.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/delete.d.ts +2 -0
- package/dist/types/src/browser/events/item/delete.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/index.d.ts +3 -0
- package/dist/types/src/browser/events/item/index.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/request.d.ts +2 -0
- package/dist/types/src/browser/events/item/request.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/requestAll.d.ts +9 -0
- package/dist/types/src/browser/events/item/requestAll.d.ts.map +1 -0
- package/dist/types/src/browser/events/item/syncDbWithEas.d.ts +3 -0
- package/dist/types/src/browser/events/item/syncDbWithEas.d.ts.map +1 -0
- package/dist/types/src/browser/events/property/index.d.ts +2 -0
- package/dist/types/src/browser/events/property/index.d.ts.map +1 -0
- package/dist/types/src/browser/events/property/save.d.ts +4 -0
- package/dist/types/src/browser/events/property/save.d.ts.map +1 -0
- package/dist/types/src/browser/events/property/saveRelation.d.ts +4 -0
- package/dist/types/src/browser/events/property/saveRelation.d.ts.map +1 -0
- package/dist/types/src/browser/events/services/internal/index.d.ts +1 -0
- package/dist/types/src/browser/events/services/internal/index.d.ts.map +1 -0
- package/dist/types/src/browser/fragments/Attestation.d.ts +2 -0
- package/dist/types/src/browser/fragments/Attestation.d.ts.map +1 -0
- package/dist/types/src/browser/fragments/Schema.d.ts +2 -0
- package/dist/types/src/browser/fragments/Schema.d.ts.map +1 -0
- package/dist/types/src/browser/fragments/index.d.ts +3 -0
- package/dist/types/src/browser/fragments/index.d.ts.map +1 -0
- package/dist/types/src/browser/gql/fragment-masking.d.ts +20 -0
- package/dist/types/src/browser/gql/fragment-masking.d.ts.map +1 -0
- package/dist/types/src/browser/gql/gql.d.ts +126 -0
- package/dist/types/src/browser/gql/gql.d.ts.map +1 -0
- package/dist/types/src/browser/gql/graphql.d.ts +2919 -0
- package/dist/types/src/browser/gql/graphql.d.ts.map +1 -0
- package/dist/types/src/browser/gql/index.d.ts +3 -0
- package/dist/types/src/browser/gql/index.d.ts.map +1 -0
- package/dist/types/src/browser/helpers.d.ts +14 -0
- package/dist/types/src/browser/helpers.d.ts.map +1 -0
- package/dist/types/src/browser/index.d.ts +8 -0
- package/dist/types/src/browser/index.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/fetchDbData.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/fetchDbData.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/fetchRelatedItems.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/fetchRelatedItems.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/fetchSeeds.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/fetchSeeds.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/fetchVersions.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/fetchVersions.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/initialize.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/initialize.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/actors/processItems.d.ts +2 -0
- package/dist/types/src/browser/item/all/actors/processItems.d.ts.map +1 -0
- package/dist/types/src/browser/item/all/itemMachineAll.d.ts +2 -0
- package/dist/types/src/browser/item/all/itemMachineAll.d.ts.map +1 -0
- package/dist/types/src/browser/item/class.d.ts +35 -0
- package/dist/types/src/browser/item/class.d.ts.map +1 -0
- package/dist/types/src/browser/item/create/actors/createItem.d.ts +3 -0
- package/dist/types/src/browser/item/create/actors/createItem.d.ts.map +1 -0
- package/dist/types/src/browser/item/create/createItemMachine.d.ts +3 -0
- package/dist/types/src/browser/item/create/createItemMachine.d.ts.map +1 -0
- package/dist/types/src/browser/item/index.d.ts +5 -0
- package/dist/types/src/browser/item/index.d.ts.map +1 -0
- package/dist/types/src/browser/item/queries.d.ts +24 -0
- package/dist/types/src/browser/item/queries.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/fetchDataFromEas.d.ts +2 -0
- package/dist/types/src/browser/item/single/actors/fetchDataFromEas.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts +2 -0
- package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/hydrateNewItem.d.ts +2 -0
- package/dist/types/src/browser/item/single/actors/hydrateNewItem.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/initialize.d.ts +2 -0
- package/dist/types/src/browser/item/single/actors/initialize.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/saveDataToDb.d.ts +57 -0
- package/dist/types/src/browser/item/single/actors/saveDataToDb.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/actors/waitForDb.d.ts +2 -0
- package/dist/types/src/browser/item/single/actors/waitForDb.d.ts.map +1 -0
- package/dist/types/src/browser/item/single/itemMachineSingle.d.ts +57 -0
- package/dist/types/src/browser/item/single/itemMachineSingle.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/hydrateFromDb.d.ts +2 -0
- package/dist/types/src/browser/property/actors/hydrateFromDb.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/index.d.ts +4 -0
- package/dist/types/src/browser/property/actors/index.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/initialize.d.ts +2 -0
- package/dist/types/src/browser/property/actors/initialize.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/resolveRelatedValue.d.ts +2 -0
- package/dist/types/src/browser/property/actors/resolveRelatedValue.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/resolveRemoteStorage.d.ts +57 -0
- package/dist/types/src/browser/property/actors/resolveRemoteStorage.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/saveValueToDb.d.ts +2 -0
- package/dist/types/src/browser/property/actors/saveValueToDb.d.ts.map +1 -0
- package/dist/types/src/browser/property/actors/waitForDb.d.ts +2 -0
- package/dist/types/src/browser/property/actors/waitForDb.d.ts.map +1 -0
- package/dist/types/src/browser/property/class.d.ts +193 -0
- package/dist/types/src/browser/property/class.d.ts.map +1 -0
- package/dist/types/src/browser/property/index.d.ts +94 -0
- package/dist/types/src/browser/property/index.d.ts.map +1 -0
- package/dist/types/src/browser/property/propertyMachine.d.ts +2 -0
- package/dist/types/src/browser/property/propertyMachine.d.ts.map +1 -0
- package/dist/types/src/browser/react/index.d.ts +57 -0
- package/dist/types/src/browser/react/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/arweave.d.ts +3 -0
- package/dist/types/src/browser/schema/file/arweave.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/download/actors.d.ts +3 -0
- package/dist/types/src/browser/schema/file/download/actors.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/download/index.d.ts +2 -0
- package/dist/types/src/browser/schema/file/download/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/fetchAll/actors.d.ts +3 -0
- package/dist/types/src/browser/schema/file/fetchAll/actors.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/fetchAll/index.d.ts +2 -0
- package/dist/types/src/browser/schema/file/fetchAll/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/index.d.ts +17 -0
- package/dist/types/src/browser/schema/file/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/machine.d.ts +51 -0
- package/dist/types/src/browser/schema/file/machine.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/queries.d.ts +9 -0
- package/dist/types/src/browser/schema/file/queries.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/upload/actors.d.ts +3 -0
- package/dist/types/src/browser/schema/file/upload/actors.d.ts.map +1 -0
- package/dist/types/src/browser/schema/file/upload/index.d.ts +2 -0
- package/dist/types/src/browser/schema/file/upload/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/image/index.d.ts +9 -0
- package/dist/types/src/browser/schema/image/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/image/queries.d.ts +7 -0
- package/dist/types/src/browser/schema/image/queries.d.ts.map +1 -0
- package/dist/types/src/browser/schema/index.d.ts +6 -0
- package/dist/types/src/browser/schema/index.d.ts.map +1 -0
- package/dist/types/src/browser/schema/model/actors.d.ts +1 -0
- package/dist/types/src/browser/schema/model/actors.d.ts.map +1 -0
- package/dist/types/src/browser/schema/model/index.d.ts +47 -0
- package/dist/types/src/browser/schema/model/index.d.ts.map +1 -0
- package/dist/types/src/browser/seed.d.ts +11 -0
- package/dist/types/src/browser/seed.d.ts.map +1 -0
- package/dist/types/src/browser/services/db/actors.d.ts +12 -0
- package/dist/types/src/browser/services/db/actors.d.ts.map +1 -0
- package/dist/types/src/browser/services/db/connectionManager.d.ts +18 -0
- package/dist/types/src/browser/services/db/connectionManager.d.ts.map +1 -0
- package/dist/types/src/browser/services/db/index.d.ts +2 -0
- package/dist/types/src/browser/services/db/index.d.ts.map +1 -0
- package/dist/types/src/browser/services/db/machine.d.ts +3 -0
- package/dist/types/src/browser/services/db/machine.d.ts.map +1 -0
- package/dist/types/src/browser/services/events.d.ts +2 -0
- package/dist/types/src/browser/services/events.d.ts.map +1 -0
- package/dist/types/src/browser/services/global/actors.d.ts +4 -0
- package/dist/types/src/browser/services/global/actors.d.ts.map +1 -0
- package/dist/types/src/browser/services/global/index.d.ts +2 -0
- package/dist/types/src/browser/services/global/index.d.ts.map +1 -0
- package/dist/types/src/browser/services/global/machine.d.ts +7 -0
- package/dist/types/src/browser/services/global/machine.d.ts.map +1 -0
- package/dist/types/src/browser/services/index.d.ts +2 -0
- package/dist/types/src/browser/services/index.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/actors.d.ts +10 -0
- package/dist/types/src/browser/services/internal/actors.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/constants.d.ts +78 -0
- package/dist/types/src/browser/services/internal/constants.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/helpers.d.ts +12 -0
- package/dist/types/src/browser/services/internal/helpers.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/machine.d.ts +3 -0
- package/dist/types/src/browser/services/internal/machine.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/queries.d.ts +4 -0
- package/dist/types/src/browser/services/internal/queries.d.ts.map +1 -0
- package/dist/types/src/browser/services/internal/types.d.ts +12 -0
- package/dist/types/src/browser/services/internal/types.d.ts.map +1 -0
- package/dist/types/src/browser/services/syncDbWithEas/actors.d.ts +2 -0
- package/dist/types/src/browser/services/syncDbWithEas/actors.d.ts.map +1 -0
- package/dist/types/src/browser/services/syncDbWithEas/machine.d.ts +3 -0
- package/dist/types/src/browser/services/syncDbWithEas/machine.d.ts.map +1 -0
- package/dist/types/src/eventBus.d.ts +4 -0
- package/dist/types/src/eventBus.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +23 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/init.d.ts +6 -0
- package/dist/types/src/init.d.ts.map +1 -0
- package/dist/types/src/node/codegen/drizzle.d.ts +2 -0
- package/dist/types/src/node/codegen/drizzle.d.ts.map +1 -0
- package/dist/types/src/node/codegen/index.d.ts +2 -0
- package/dist/types/src/node/codegen/index.d.ts.map +1 -0
- package/dist/types/src/node/codegen/ts-to-proto.d.ts +9 -0
- package/dist/types/src/node/codegen/ts-to-proto.d.ts.map +1 -0
- package/dist/types/src/node/constants.d.ts +21 -0
- package/dist/types/src/node/constants.d.ts.map +1 -0
- package/dist/types/src/node/db/helpers.d.ts +2 -0
- package/dist/types/src/node/db/helpers.d.ts.map +1 -0
- package/dist/types/src/node/db/index.d.ts +5 -0
- package/dist/types/src/node/db/index.d.ts.map +1 -0
- package/dist/types/src/node/db/internal.d.ts +5 -0
- package/dist/types/src/node/db/internal.d.ts.map +1 -0
- package/dist/types/src/node/helpers/index.d.ts +3 -0
- package/dist/types/src/node/helpers/index.d.ts.map +1 -0
- package/dist/types/src/node/index.d.ts +2 -0
- package/dist/types/src/node/index.d.ts.map +1 -0
- package/dist/types/src/node/seed.d.ts +7 -0
- package/dist/types/src/node/seed.d.ts.map +1 -0
- package/dist/types/src/node/webpack/index.d.ts +2 -0
- package/dist/types/src/node/webpack/index.d.ts.map +1 -0
- package/dist/types/src/seed.d.ts +1 -0
- package/dist/types/src/seed.d.ts.map +1 -0
- package/dist/types/src/shared/configs/browser.app.db.config.d.ts +3 -0
- package/dist/types/src/shared/configs/browser.app.db.config.d.ts.map +1 -0
- package/dist/types/src/shared/configs/browser.seed.db.config.d.ts +3 -0
- package/dist/types/src/shared/configs/browser.seed.db.config.d.ts.map +1 -0
- package/dist/types/src/shared/configs/sdk.db.config.d.ts +3 -0
- package/dist/types/src/shared/configs/sdk.db.config.d.ts.map +1 -0
- package/dist/types/src/shared/configs/seed.schema.config.d.ts +19 -0
- package/dist/types/src/shared/configs/seed.schema.config.d.ts.map +1 -0
- package/dist/types/src/shared/environment.d.ts +4 -0
- package/dist/types/src/shared/environment.d.ts.map +1 -0
- package/dist/types/src/shared/fsProxy.d.ts +5 -0
- package/dist/types/src/shared/fsProxy.d.ts.map +1 -0
- package/dist/types/src/shared/helpers/constants.d.ts +27 -0
- package/dist/types/src/shared/helpers/constants.d.ts.map +1 -0
- package/dist/types/src/shared/helpers/db.d.ts +12 -0
- package/dist/types/src/shared/helpers/db.d.ts.map +1 -0
- package/dist/types/src/shared/helpers/files.d.ts +2 -0
- package/dist/types/src/shared/helpers/files.d.ts.map +1 -0
- package/dist/types/src/shared/helpers/index.d.ts +15 -0
- package/dist/types/src/shared/helpers/index.d.ts.map +1 -0
- package/dist/types/src/shared/helpers/logger.d.ts +7 -0
- package/dist/types/src/shared/helpers/logger.d.ts.map +1 -0
- package/dist/types/src/shared/index.d.ts +9 -0
- package/dist/types/src/shared/index.d.ts.map +1 -0
- package/dist/types/src/shared/sdkSchema/configSchema.d.ts +88 -0
- package/dist/types/src/shared/sdkSchema/configSchema.d.ts.map +1 -0
- package/dist/types/src/shared/sdkSchema/index.d.ts +5 -0
- package/dist/types/src/shared/sdkSchema/index.d.ts.map +1 -0
- package/dist/types/src/shared/sdkSchema/modelSchema.d.ts +186 -0
- package/dist/types/src/shared/sdkSchema/modelSchema.d.ts.map +1 -0
- package/dist/types/src/shared/sdkSchema/modelUidSchema.d.ts +59 -0
- package/dist/types/src/shared/sdkSchema/modelUidSchema.d.ts.map +1 -0
- package/dist/types/src/shared/sdkSchema/propertyUidSchema.d.ts +59 -0
- package/dist/types/src/shared/sdkSchema/propertyUidSchema.d.ts.map +1 -0
- package/dist/types/src/shared/seed.d.ts +16 -0
- package/dist/types/src/shared/seed.d.ts.map +1 -0
- package/dist/types/src/sqlite.d.ts +2 -0
- package/dist/types/src/sqlite.d.ts.map +1 -0
- package/dist/types/src/types/browser.d.ts +24 -0
- package/dist/types/src/types/browser.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +64 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/types/item.d.ts +66 -0
- package/dist/types/src/types/item.d.ts.map +1 -0
- package/dist/types/src/types/model.d.ts +40 -0
- package/dist/types/src/types/model.d.ts.map +1 -0
- package/dist/types/src/types/property.d.ts +99 -0
- package/dist/types/src/types/property.d.ts.map +1 -0
- package/package.json +170 -0
package/README.md
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
# [WIP] Seed Protocol SDK
|
|
2
|
+
|
|
3
|
+
This API is a work in progress. It is not yet ready for production use. These docs are for keeping the community
|
|
4
|
+
informed
|
|
5
|
+
and generating feedback.
|
|
6
|
+
|
|
7
|
+
## Current research questions
|
|
8
|
+
|
|
9
|
+
- Can we use TypeORM backed by Sqlite Wasm for more performant and future-proof storage?
|
|
10
|
+
- Track this research here: [TypeORM Sqlite Wasm](https://github.com/JournoDAO/typeorm-sqlite-wasm)
|
|
11
|
+
- What would the tooling look like to allow export of data model as ProtoBuf and/or JSON Schema?
|
|
12
|
+
- Looking at [ts-proto](https://github.com/stephenh/ts-proto) for Typescript
|
|
13
|
+
|
|
14
|
+
## Installing
|
|
15
|
+
|
|
16
|
+
This package is not yet published to npm, but when it is, this will be the command to install it:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
yarn add @seedprotocol/sdk
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Getting Started
|
|
23
|
+
|
|
24
|
+
The first thing to do when integrating Seed SDK is define you data model.
|
|
25
|
+
|
|
26
|
+
For example, let's pretend we're creating a blog that uses Seed Protocol as its content store. We start by defining
|
|
27
|
+
our `Models`, their `Properties`, and what type of data each `Property` is expecting.
|
|
28
|
+
|
|
29
|
+
```typescript=
|
|
30
|
+
import {Model, Property, List, createStore} from '@seedprotocol/sdk'
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
const Image = Model({
|
|
34
|
+
storageTransactionId: Property.String(),
|
|
35
|
+
uri: Property.String(),
|
|
36
|
+
alt: Property.String(),
|
|
37
|
+
},)
|
|
38
|
+
|
|
39
|
+
const Link = Model({
|
|
40
|
+
url: Property.String(),
|
|
41
|
+
text: Property.String(),
|
|
42
|
+
},)
|
|
43
|
+
|
|
44
|
+
const Identity = Model({
|
|
45
|
+
name: Property.String(),
|
|
46
|
+
bio: Property.String(),
|
|
47
|
+
avatarImage: Image,
|
|
48
|
+
},)
|
|
49
|
+
|
|
50
|
+
const Post = Model({
|
|
51
|
+
title: Property.String(),
|
|
52
|
+
summary: Property.String(),
|
|
53
|
+
featureImage: Image,
|
|
54
|
+
html: Property.String(),
|
|
55
|
+
json: Property.String(),
|
|
56
|
+
authors: Property.List(Identity,),
|
|
57
|
+
},)
|
|
58
|
+
|
|
59
|
+
createStore({
|
|
60
|
+
Identity,
|
|
61
|
+
Image,
|
|
62
|
+
Link,
|
|
63
|
+
Post,
|
|
64
|
+
},)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This will create a database locally in the browser with all the tables and fields necessary to support your Models. Feel
|
|
68
|
+
free to check it out for yourself in your browser's Dev Tools.
|
|
69
|
+
|
|
70
|
+
Notice that we create relationships by defining a `Property` that takes its related Model as its type. For one-to-many
|
|
71
|
+
relationships, we use the `List` type and pass in the `Model` type we want.
|
|
72
|
+
|
|
73
|
+
So creating a Post would look like this:
|
|
74
|
+
|
|
75
|
+
```typescript=
|
|
76
|
+
import {Post, Image, Identity} from './seed/models'
|
|
77
|
+
import html from './index.html'
|
|
78
|
+
|
|
79
|
+
const image = await Image.create({
|
|
80
|
+
src: 'https://imgr.com/image.jpg',
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
const author = await Identity.create({
|
|
84
|
+
name: 'Keith Axline',
|
|
85
|
+
profile: 'Developer for Seed Protocol',
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
const authors = [
|
|
89
|
+
author
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
const post = await Post.create({
|
|
93
|
+
title: 'Some title',
|
|
94
|
+
summary: 'My summary',
|
|
95
|
+
featureImage: image,
|
|
96
|
+
authors,
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
await post.publish()
|
|
100
|
+
|
|
101
|
+
// And later when we want to update the post
|
|
102
|
+
post.title = 'Something else'
|
|
103
|
+
|
|
104
|
+
await post.publish()
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Usage
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
import { SeedFile } from '@seedprotocol/sdk'
|
|
112
|
+
|
|
113
|
+
const fileFromUrl = new SeedFile('https://example.com/file.txt')
|
|
114
|
+
|
|
115
|
+
fileFromUrl.subscribe(( event, status ) => {
|
|
116
|
+
console.log(`Event: ${event}, Status: ${status}`)
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
await fileFromUrl.save()
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
const fileFromPath = new SeedFile('path/to/file.txt')
|
|
125
|
+
|
|
126
|
+
const fileFromBlob = new SeedFile(new Blob([ 'Hello, World!' ]))
|
|
127
|
+
|
|
128
|
+
const fileFromBuffer = new SeedFile(Buffer.from('Hello, World!'))
|
|
129
|
+
|
|
130
|
+
const fileFromFile = new SeedFile(new File([ 'Hello, World!' ], 'file.txt'))
|
|
131
|
+
|
|
132
|
+
if ( fileFromPath.isSaved ) {
|
|
133
|
+
console.log('File is saved to Arweave and EAS')
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
import { SeedFileSystem } from '@seedprotocol/sdk'
|
|
139
|
+
|
|
140
|
+
const fs = new SeedFileSystem()
|
|
141
|
+
|
|
142
|
+
fs.subscribe(( event, status ) => {
|
|
143
|
+
console.log(`Event: ${event}, Status: ${status}`)
|
|
144
|
+
if ( event === 'connection.success' && status === 'connected' ) {
|
|
145
|
+
console.log('Connected to user\'s file system')
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if ( event === 'connection.error' ) {
|
|
149
|
+
console.error('Error connecting to user\'s file system', event.error)
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
await fs.connect() // User prompted to connect browser wallet
|
|
154
|
+
|
|
155
|
+
const files = await fs.listFiles('/')
|
|
156
|
+
|
|
157
|
+
files.forEach(file => {
|
|
158
|
+
console.log(file.name)
|
|
159
|
+
console.log(file.size)
|
|
160
|
+
console.log(file.seedPath) // Each wallet address has a virtual root directory with directories and file system paths
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
|
|
167
|
+
import { SeedImage } from '@seedprotocol/sdk'
|
|
168
|
+
|
|
169
|
+
const imgFromUrl = new SeedImage('https://example.com/image.png')
|
|
170
|
+
|
|
171
|
+
const imgFromDataUrl = new SeedImage('data:image/png;base64,iVB....')
|
|
172
|
+
|
|
173
|
+
await imgFromUrl.save()
|
|
174
|
+
|
|
175
|
+
const imgBlob = imgFromUrl.blob()
|
|
176
|
+
const imgBuffer = imgFromUrl.buffer()
|
|
177
|
+
const imgDataUrl = imgFromUrl.dataUrl()
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Note:** Model instances are called Items in the SDK. This is to avoid confusion with the `Model` function that creates
|
|
182
|
+
the data model.
|
|
183
|
+
|
|
184
|
+
```mermaid
|
|
185
|
+
---
|
|
186
|
+
Title: Seed Protocol SDK
|
|
187
|
+
---
|
|
188
|
+
%%{
|
|
189
|
+
init: {
|
|
190
|
+
'theme': 'base',
|
|
191
|
+
'themeVariables': {
|
|
192
|
+
'primaryColor': '#e0f2fe',
|
|
193
|
+
'primaryTextColor': '#0c4a6e',
|
|
194
|
+
'primaryBorderColor': '#38bdf8',
|
|
195
|
+
'lineColor': '#475569',
|
|
196
|
+
'secondaryColor': '#d9f99d',
|
|
197
|
+
'tertiaryColor': '#fff',
|
|
198
|
+
'tertiaryBorderColor': '#7e22ce',
|
|
199
|
+
'tertiaryTextColor': '#7e22ce',
|
|
200
|
+
'clusterBkg': '#fff'
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}%%
|
|
204
|
+
flowchart TD
|
|
205
|
+
A{Developer}
|
|
206
|
+
B{User}
|
|
207
|
+
C{Seed Dev}
|
|
208
|
+
N{SDK}
|
|
209
|
+
Q[App Code]
|
|
210
|
+
D[(sdk_config_db)]
|
|
211
|
+
E[(app_db)]
|
|
212
|
+
L[(seeds_db)]
|
|
213
|
+
G[Schema/Migration files
|
|
214
|
+
browser/db/seedSchema]
|
|
215
|
+
H[Schema/Migration files
|
|
216
|
+
.seed/app/schema]
|
|
217
|
+
R[Schema/Migration files
|
|
218
|
+
node/db/sdkSchema]
|
|
219
|
+
|
|
220
|
+
I[browser.seed.db.config.mjs]
|
|
221
|
+
J[sdk.db.config.mjs]
|
|
222
|
+
K[browser.app.db.config.mjs]
|
|
223
|
+
|
|
224
|
+
O[files.json
|
|
225
|
+
seed/endpoint/list]
|
|
226
|
+
P[Files
|
|
227
|
+
seed/endpoint/files]
|
|
228
|
+
|
|
229
|
+
S[$> seed init]
|
|
230
|
+
T[scripts/bin]
|
|
231
|
+
|
|
232
|
+
subgraph SDK Code
|
|
233
|
+
C--changes Seeds or Versions --> I
|
|
234
|
+
C-- changes Models or Properties --> J
|
|
235
|
+
J-- generates -->R
|
|
236
|
+
I-- generates --> G
|
|
237
|
+
subgraph Package Bundle
|
|
238
|
+
R
|
|
239
|
+
G
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
subgraph App Code
|
|
246
|
+
A-- adds Models and Properties --> K
|
|
247
|
+
subgraph SDK
|
|
248
|
+
D
|
|
249
|
+
H
|
|
250
|
+
end
|
|
251
|
+
A-- runs --> S
|
|
252
|
+
S-- calls --> T
|
|
253
|
+
T-- reads--> K
|
|
254
|
+
T-- generates --> D
|
|
255
|
+
T-- generates --> H
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
subgraph App Server
|
|
259
|
+
H-- served at endpoint --> O
|
|
260
|
+
H-- served at endpoint --> P
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
subgraph Browser
|
|
266
|
+
B-- adds data--> Q
|
|
267
|
+
subgraph App
|
|
268
|
+
Q-- calls SDK--> N
|
|
269
|
+
subgraph SDK
|
|
270
|
+
E-- notifies -->N
|
|
271
|
+
N<-- files . json --> O
|
|
272
|
+
N<-- files --> P
|
|
273
|
+
N-- updates -->E
|
|
274
|
+
N-- updates --> L
|
|
275
|
+
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
A[Versions From EAS]
|
|
284
|
+
B[Seeds From EAS]
|
|
285
|
+
C[List of Items]
|
|
286
|
+
D[List of Properties]
|
|
287
|
+
E{Property Machine}
|
|
288
|
+
F{Item Machine}
|
|
289
|
+
G{Items Machine}
|
|
290
|
+
|
|
291
|
+
```mermaid
|
|
292
|
+
sequenceDiagram
|
|
293
|
+
Items Service ->>+ EAS: Seeds Request
|
|
294
|
+
EAS -->>+ Items Service: Seed Attestations
|
|
295
|
+
loop Each Seed Attestation
|
|
296
|
+
Items Service ->>+ Items Service: Extract Seed Uid
|
|
297
|
+
end
|
|
298
|
+
Note over Items Service: Now we have SeedUid[]
|
|
299
|
+
Items Service ->>+ EAS: Versions Request w/ SeedUid[]
|
|
300
|
+
EAS -->>+ Items Service: Version Attestations
|
|
301
|
+
loop Each SeedUid
|
|
302
|
+
Items Service ->>+ Items Service: Sort Version Uids DESC
|
|
303
|
+
end
|
|
304
|
+
loop Each most recent Version for Seed
|
|
305
|
+
Items Service ->>+ Item Service: Create Item
|
|
306
|
+
end
|
|
307
|
+
Note over Items Service: Now we have VersionUid[] for each SeedUid<br />sorted by `createdAt` DESC
|
|
308
|
+
Item Service ->>+ EAS: Properties Request w/ VersionUid[]
|
|
309
|
+
EAS -->>+ Item Service: Properties Attestations
|
|
310
|
+
loop Each Property Attestation
|
|
311
|
+
Item Service ->>+ Property Service: Create Property Service
|
|
312
|
+
end
|
|
313
|
+
Note over Item Service: Now has all Property Services<br />under this._services
|
|
314
|
+
```
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { n as __awaiter, D as DB_NAME_SDK_CONFIG, o as models, S as SCHEMA_NJK, p as SCHEMA_TS, q as SDK_DB_CONFIG, r as SEED_DB_CONFIG, A as APP_DB_CONFIG, s as addModelsToInternalDb } from './index-VvchoqaM.js';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import { exec as exec$1 } from 'child_process';
|
|
6
|
+
import { promisify } from 'util';
|
|
7
|
+
import { pathToFileURL } from 'url';
|
|
8
|
+
import process$1 from 'node:process';
|
|
9
|
+
import * as tsImport from 'ts-import';
|
|
10
|
+
import { LoadMode } from 'ts-import';
|
|
11
|
+
import 'glob';
|
|
12
|
+
import * as rimraf from 'rimraf';
|
|
13
|
+
import 'dotenv/config';
|
|
14
|
+
import pluralize from 'pluralize';
|
|
15
|
+
import { camelCase, snakeCase } from 'lodash-es';
|
|
16
|
+
import * as nunjucks from 'nunjucks';
|
|
17
|
+
import Database from 'better-sqlite3';
|
|
18
|
+
import { drizzle } from 'drizzle-orm/better-sqlite3';
|
|
19
|
+
import './seed.schema.config-CJPoGRe1.js';
|
|
20
|
+
import { defineConfig } from 'drizzle-kit';
|
|
21
|
+
import dotenv from 'dotenv';
|
|
22
|
+
import 'reflect-metadata';
|
|
23
|
+
import '@sinclair/typebox';
|
|
24
|
+
import 'xstate';
|
|
25
|
+
import '@zenfs/core';
|
|
26
|
+
import 'drizzle-orm';
|
|
27
|
+
import 'drizzle-orm/sqlite-proxy';
|
|
28
|
+
import 'debug';
|
|
29
|
+
import 'dayjs';
|
|
30
|
+
import 'nanoid';
|
|
31
|
+
import 'nanoid-dictionary';
|
|
32
|
+
import 'drizzle-orm/sqlite-core';
|
|
33
|
+
import 'react';
|
|
34
|
+
import 'eventemitter3';
|
|
35
|
+
import 'rxjs';
|
|
36
|
+
import 'immer';
|
|
37
|
+
import '@statelyai/inspect';
|
|
38
|
+
import '@tanstack/react-query';
|
|
39
|
+
import 'graphql-request';
|
|
40
|
+
import '@tanstack/query-sync-storage-persister';
|
|
41
|
+
import '@tanstack/react-query-persist-client';
|
|
42
|
+
import 'arweave';
|
|
43
|
+
import '@zenfs/dom';
|
|
44
|
+
import 'use-immer';
|
|
45
|
+
import '@xstate/react';
|
|
46
|
+
|
|
47
|
+
// export const generateId = (): string => {
|
|
48
|
+
// return customAlphabet(alphanumeric, 10)()
|
|
49
|
+
// }
|
|
50
|
+
const getConfig = (configPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
// Check if the config file exists
|
|
52
|
+
if (!fs.existsSync(configPath)) {
|
|
53
|
+
// TODO: Maybe prompt the developer to create a config file?
|
|
54
|
+
console.error(`Config file not found at ${configPath}`);
|
|
55
|
+
throw new Error(`Config file not found at ${configPath}`);
|
|
56
|
+
}
|
|
57
|
+
console.log('Loading config:', configPath);
|
|
58
|
+
// return {}
|
|
59
|
+
return yield tsImport.load(configPath, {
|
|
60
|
+
mode: LoadMode.Compile,
|
|
61
|
+
compileOptions: {
|
|
62
|
+
compilerOptions: {
|
|
63
|
+
experimentalDecorators: true,
|
|
64
|
+
emitDecoratorMetadata: true,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const currentDir = path.dirname(new URL(import.meta.url).pathname);
|
|
71
|
+
const parentToCheck = path.join(currentDir, '..');
|
|
72
|
+
console.log('parentToCheck:', parentToCheck);
|
|
73
|
+
const isInstalled = path.basename(parentToCheck) === '@seedprotocol';
|
|
74
|
+
let rootWithNodeModules = path.join(currentDir, '..', '..', '..');
|
|
75
|
+
if (!isInstalled) {
|
|
76
|
+
rootWithNodeModules = path.join(parentToCheck, '..');
|
|
77
|
+
}
|
|
78
|
+
let sdkRootDir = path.join(rootWithNodeModules, 'node_modules', '@seedprotocol', 'sdk');
|
|
79
|
+
if (!isInstalled) {
|
|
80
|
+
sdkRootDir = path.join(rootWithNodeModules, 'src');
|
|
81
|
+
}
|
|
82
|
+
let dotSeedDir$1 = path.join(rootWithNodeModules, '.seed');
|
|
83
|
+
if (!isInstalled) {
|
|
84
|
+
dotSeedDir$1 = path.join(process.cwd(), '__tests__', '__mocks__', 'project', '.seed');
|
|
85
|
+
}
|
|
86
|
+
const sdkDir = path.join(dotSeedDir$1, 'sdk');
|
|
87
|
+
const sdkSchemaDir = path.join(sdkDir, 'schema');
|
|
88
|
+
const sdkDbDir = path.join(sdkDir, 'db');
|
|
89
|
+
const sdkDbMetaDir = path.join(sdkDbDir, 'meta');
|
|
90
|
+
path.join(sdkDbMetaDir, '_journal.json');
|
|
91
|
+
const seedDir = path.join(dotSeedDir$1, 'seed');
|
|
92
|
+
const seedSchemaDir = path.join(seedDir, 'schema');
|
|
93
|
+
const seedDbDir = path.join(seedDir, 'db');
|
|
94
|
+
const drizzleKitPath = path.join(rootWithNodeModules, 'node_modules', 'drizzle-kit', 'bin.cjs');
|
|
95
|
+
// App file paths. These are the single source of truth for the SDK user's data model
|
|
96
|
+
const appDir = path.join(dotSeedDir$1, 'app');
|
|
97
|
+
const appSchemaDir = path.join(appDir, 'schema');
|
|
98
|
+
const appDbDir = path.join(appDir, 'db');
|
|
99
|
+
path.join(appDbDir, 'meta');
|
|
100
|
+
const appGeneratedSchemaDir = path.join(appDir, 'schema');
|
|
101
|
+
const templatePath = path.join(sdkRootDir, 'node', 'codegen', 'templates');
|
|
102
|
+
|
|
103
|
+
const getSdkDb = () => {
|
|
104
|
+
const sqlite = new Database(path.join(sdkDbDir, `${DB_NAME_SDK_CONFIG}.sqlite3`));
|
|
105
|
+
return drizzle(sqlite);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
dotenv.config();
|
|
109
|
+
let dotSeedDir = path.join(process$1.cwd(), '.seed');
|
|
110
|
+
if (process$1.env.IS_SEED_DEV) {
|
|
111
|
+
dotSeedDir = path.join(process$1.cwd(), '__tests__', '__mocks__', 'project', '.seed');
|
|
112
|
+
}
|
|
113
|
+
defineConfig({
|
|
114
|
+
schema: [
|
|
115
|
+
`${dotSeedDir}/app/schema/*Schema.ts`,
|
|
116
|
+
`${dotSeedDir}/seed/schema/VersionSchema.ts`,
|
|
117
|
+
`${dotSeedDir}/seed/schema/SeedSchema.ts`,
|
|
118
|
+
`${dotSeedDir}/seed/schema/MetadataSchema.ts`,
|
|
119
|
+
],
|
|
120
|
+
dialect: 'sqlite',
|
|
121
|
+
out: `${dotSeedDir}/app/db`,
|
|
122
|
+
dbCredentials: {
|
|
123
|
+
url: `${dotSeedDir}/app/db/app_db.sqlite3`,
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const TemplateLoader = {
|
|
128
|
+
getSource: (name) => {
|
|
129
|
+
console.log('name:', name);
|
|
130
|
+
console.log('templatePath:', templatePath);
|
|
131
|
+
let templateFilePath;
|
|
132
|
+
if (name.includes(templatePath)) {
|
|
133
|
+
templateFilePath = name;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
templateFilePath = path.join(templatePath, path.basename(name));
|
|
137
|
+
}
|
|
138
|
+
const src = fs.readFileSync(templateFilePath, 'utf-8');
|
|
139
|
+
return {
|
|
140
|
+
path: name,
|
|
141
|
+
src,
|
|
142
|
+
noCache: false,
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
// Configure Nunjucks
|
|
147
|
+
const env = new nunjucks.Environment(TemplateLoader);
|
|
148
|
+
env.addFilter('camelCase', camelCase);
|
|
149
|
+
env.addFilter('snakeCase', snakeCase);
|
|
150
|
+
env.addFilter('pluralize', pluralize);
|
|
151
|
+
const generateDrizzleSchemaCode = (modelName, modelClass) => {
|
|
152
|
+
const listProperties = Object.entries(modelClass.schema).filter(([key, propertyDef]) => (propertyDef === null || propertyDef === void 0 ? void 0 : propertyDef.dataType) === 'List');
|
|
153
|
+
const filePath = path.join(templatePath, SCHEMA_NJK);
|
|
154
|
+
const schemaCode = env.render(filePath, {
|
|
155
|
+
modelName,
|
|
156
|
+
modelClass,
|
|
157
|
+
listProperties,
|
|
158
|
+
});
|
|
159
|
+
return schemaCode;
|
|
160
|
+
};
|
|
161
|
+
const syncDbWithDrizzleSchemaFile = (configPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
|
+
const db = getSdkDb();
|
|
163
|
+
const modelRecords = yield db.select().from(models);
|
|
164
|
+
const indexTemplatePath = path.join(templatePath, 'index.njk');
|
|
165
|
+
const indexFilePath = path.join(appGeneratedSchemaDir, 'index.ts');
|
|
166
|
+
const indexFileContent = env.render(indexTemplatePath, {
|
|
167
|
+
models: modelRecords,
|
|
168
|
+
});
|
|
169
|
+
console.log('indexFilePath:', indexFilePath);
|
|
170
|
+
yield fs.promises
|
|
171
|
+
.writeFile(indexFilePath, indexFileContent)
|
|
172
|
+
.catch((e) => console.error(e));
|
|
173
|
+
console.log('[Seed Protocol] Wrote index file to:', indexFilePath);
|
|
174
|
+
const { models: models$1 } = yield getConfig(configPath);
|
|
175
|
+
console.log('models.length:', Object.entries(models$1).length);
|
|
176
|
+
for (const [modelName, modelClass] of Object.entries(models$1)) {
|
|
177
|
+
const modelRecord = modelRecords.find(({ name }) => name === modelName);
|
|
178
|
+
if (!modelRecord) {
|
|
179
|
+
throw new Error(`Model record not found for ${modelName}`);
|
|
180
|
+
}
|
|
181
|
+
const code = generateDrizzleSchemaCode(modelRecord.name, modelClass);
|
|
182
|
+
if (!fs.existsSync(appGeneratedSchemaDir)) {
|
|
183
|
+
fs.mkdirSync(appGeneratedSchemaDir);
|
|
184
|
+
}
|
|
185
|
+
const filePath = path.join(appGeneratedSchemaDir, `${modelRecord.name.toLowerCase()}Schema.ts`);
|
|
186
|
+
yield fs.promises.writeFile(filePath, code).catch((e) => console.error(e));
|
|
187
|
+
console.log(`[Seed Protocol] Wrote schema file for ${modelRecord.name} to ${filePath}`);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const { rimrafSync } = rimraf;
|
|
192
|
+
const exec = promisify(exec$1);
|
|
193
|
+
let a;
|
|
194
|
+
a = process$1.argv.splice(2);
|
|
195
|
+
// const args = a.split(' ')
|
|
196
|
+
const copyDotSeedFilesToAppFiles = (appFilesDirPath, schemaFilePath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
197
|
+
console.log('[Seed Protocol] Copying dot seed files to app files');
|
|
198
|
+
return new Promise((resolve) => {
|
|
199
|
+
if (!fs.existsSync(path.join(sdkDbDir, `${DB_NAME_SDK_CONFIG}.sqlite3`))) {
|
|
200
|
+
console.log('[Seed Protocol] Waiting for SDK schema files');
|
|
201
|
+
setTimeout(() => {
|
|
202
|
+
console.log('[Seed Protocol] Retrying to copy SDK schema files');
|
|
203
|
+
return copyDotSeedFilesToAppFiles(appFilesDirPath, schemaFilePath);
|
|
204
|
+
}, 1000);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
fs.promises.rm(appFilesDirPath, { recursive: true }).then(() => {
|
|
208
|
+
console.log(`[Seed Protocol] Removed old app files`);
|
|
209
|
+
const targetSeedDir = path.join(appFilesDirPath, 'seed');
|
|
210
|
+
const targetSdkDir = path.join(appFilesDirPath, 'sdk');
|
|
211
|
+
const targetAppDir = path.join(appFilesDirPath, 'app');
|
|
212
|
+
const schemaFileDest = path.join(appFilesDirPath, SCHEMA_TS);
|
|
213
|
+
console.log(`[Seed Protocol] making dir at ${appFilesDirPath}`);
|
|
214
|
+
fs.mkdirSync(appFilesDirPath, { recursive: true });
|
|
215
|
+
console.log('[Seed Protocol] copying seed, sdk, and app files');
|
|
216
|
+
fs.cpSync(seedDir, targetSeedDir, { recursive: true });
|
|
217
|
+
fs.cpSync(sdkDir, targetSdkDir, { recursive: true });
|
|
218
|
+
fs.cpSync(appDir, targetAppDir, { recursive: true });
|
|
219
|
+
console.log('[Seed Protocol] copying schema file');
|
|
220
|
+
fs.copyFileSync(schemaFilePath, schemaFileDest);
|
|
221
|
+
console.log('[Seed Protocol] removing sqlite3 files and index.ts files');
|
|
222
|
+
rimrafSync(`${appFilesDirPath}/**/*.sqlite3`, {
|
|
223
|
+
glob: true,
|
|
224
|
+
});
|
|
225
|
+
rimrafSync(`${appFilesDirPath}/**/index.ts`, {
|
|
226
|
+
glob: true,
|
|
227
|
+
});
|
|
228
|
+
resolve();
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
const init = (args) => {
|
|
234
|
+
console.log('args:', args);
|
|
235
|
+
if (args && args.length && args[0] === 'init') {
|
|
236
|
+
console.log('[Seed Protocol] Running init script');
|
|
237
|
+
let appFilesDirPath = args[2] || undefined;
|
|
238
|
+
let pathToConfigFiles = args[1] || rootWithNodeModules;
|
|
239
|
+
const schemaFilePath = path.join(pathToConfigFiles, SCHEMA_TS);
|
|
240
|
+
// Remove dotSeedDir to start fresh each time
|
|
241
|
+
if (fs.existsSync(dotSeedDir$1)) {
|
|
242
|
+
fs.rmSync(dotSeedDir$1, { recursive: true });
|
|
243
|
+
}
|
|
244
|
+
const configDir = path.join(sdkRootDir, 'shared', 'configs');
|
|
245
|
+
console.log('rootWithNodeModules:', rootWithNodeModules);
|
|
246
|
+
// The DB config files defined by the SDK, not contained in .seed
|
|
247
|
+
const sdkDbConfigPath = path.join(configDir, SDK_DB_CONFIG);
|
|
248
|
+
const drizzleKitCommand = `npx --yes tsx ${drizzleKitPath}`;
|
|
249
|
+
// SeedDb is where the Seed/Version data model is stored. Then it's exported to the browser for the user
|
|
250
|
+
const seedDbConfigPath = path.join(configDir, SEED_DB_CONFIG);
|
|
251
|
+
const seedDbMeta = path.join(dotSeedDir$1, 'seed', 'meta');
|
|
252
|
+
const appDbConfigPath = path.join(configDir, APP_DB_CONFIG);
|
|
253
|
+
const browserAppDbMeta = path.join(appDbDir, 'meta');
|
|
254
|
+
const ensureDirectories = () => {
|
|
255
|
+
try {
|
|
256
|
+
fs.mkdirSync(sdkDbDir, { recursive: true }); // Creates .seed/sdk/db
|
|
257
|
+
fs.mkdirSync(sdkSchemaDir, { recursive: true }); // Creates .seed/sdk/schema
|
|
258
|
+
fs.mkdirSync(appDbDir, { recursive: true }); // Creates .seed/app/db
|
|
259
|
+
fs.mkdirSync(appSchemaDir, { recursive: true }); // Creates .seed/app/schema
|
|
260
|
+
fs.mkdirSync(seedDbDir, { recursive: true }); // Creates .seed/seed/db
|
|
261
|
+
fs.mkdirSync(seedSchemaDir, { recursive: true }); // Creates .seed/seed/schema
|
|
262
|
+
fs.mkdirSync(appGeneratedSchemaDir, { recursive: true }); // Creates .seed/app/schema
|
|
263
|
+
if (appFilesDirPath) {
|
|
264
|
+
fs.mkdirSync(appFilesDirPath, { recursive: true });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
console.error('Failed to ensure directories:', error);
|
|
269
|
+
throw error;
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
const copyFiles = (srcDir, destName) => {
|
|
273
|
+
const destDir = path.join(dotSeedDir$1, destName);
|
|
274
|
+
const destSchemaDir = path.join(destDir, 'schema');
|
|
275
|
+
if (!fs.existsSync(destDir)) {
|
|
276
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
277
|
+
}
|
|
278
|
+
const schemaFiles = fs.readdirSync(srcDir);
|
|
279
|
+
schemaFiles.forEach((file) => {
|
|
280
|
+
console.log(`Copying ${srcDir}/${file} to ${destSchemaDir}`);
|
|
281
|
+
fs.copyFileSync(path.join(srcDir, file), path.join(destSchemaDir, file));
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
const copySchemaFilesToDotSeed = () => {
|
|
285
|
+
const dest = path.join(dotSeedDir$1, SCHEMA_TS);
|
|
286
|
+
fs.copyFileSync(schemaFilePath, dest);
|
|
287
|
+
const sdkSrc = path.join(sdkRootDir, 'shared', 'sdkSchema');
|
|
288
|
+
copyFiles(sdkSrc, 'sdk');
|
|
289
|
+
const seedSchemaDir = path.join(sdkRootDir, 'browser', 'db', 'seedSchema');
|
|
290
|
+
copyFiles(seedSchemaDir, 'seed');
|
|
291
|
+
};
|
|
292
|
+
const runCommand = (command) => __awaiter(void 0, void 0, void 0, function* () {
|
|
293
|
+
const { stdout, stderr } = yield exec(command);
|
|
294
|
+
if (stderr) {
|
|
295
|
+
console.error(stderr);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
console.log(stdout);
|
|
299
|
+
});
|
|
300
|
+
const addModelsFromConfig = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
301
|
+
// Developer created file with model definitions
|
|
302
|
+
const { models } = yield getConfig(schemaFilePath);
|
|
303
|
+
// console.log('[Seed Protocol] models:', models)
|
|
304
|
+
const db = getSdkDb();
|
|
305
|
+
yield addModelsToInternalDb(db, models);
|
|
306
|
+
console.log('[Seed Protocol] Added models to internal database');
|
|
307
|
+
});
|
|
308
|
+
const addSeedModels = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
309
|
+
// const seedSchemaConfigPath = path.join(configDir, SEED_SCHEMA_CONFIG)
|
|
310
|
+
// const { models: SeedModels } = await getConfig(seedSchemaConfigPath)
|
|
311
|
+
//
|
|
312
|
+
// const db = getSdkDb()
|
|
313
|
+
//
|
|
314
|
+
// console.log(
|
|
315
|
+
// '[Seed Protocol] Adding Seed models to internal database',
|
|
316
|
+
// SeedModels,
|
|
317
|
+
// )
|
|
318
|
+
//
|
|
319
|
+
// await addModelsToInternalDb(db, SeedModels)
|
|
320
|
+
//
|
|
321
|
+
// console.log('[Seed Protocol] Added Seed models to internal database')
|
|
322
|
+
});
|
|
323
|
+
const updateSchema = (pathToConfig, pathToMeta) => __awaiter(void 0, void 0, void 0, function* () {
|
|
324
|
+
if (!fs.existsSync(pathToMeta)) {
|
|
325
|
+
yield runCommand(`${drizzleKitCommand} generate --config=${pathToConfig}`);
|
|
326
|
+
}
|
|
327
|
+
yield runCommand(`${drizzleKitCommand} migrate --config=${pathToConfig}`);
|
|
328
|
+
});
|
|
329
|
+
const runCommands = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
330
|
+
// Here we setup the internal db that stores the developer's schema
|
|
331
|
+
yield updateSchema(sdkDbConfigPath, sdkDbMetaDir);
|
|
332
|
+
// This is SeedDb which is managed by the SDK but exports to the user's browser
|
|
333
|
+
yield updateSchema(seedDbConfigPath, seedDbMeta);
|
|
334
|
+
// Now we're building the schema defined by the developer
|
|
335
|
+
yield addModelsFromConfig();
|
|
336
|
+
// Here we generate the Drizzle schema files for the developer's models
|
|
337
|
+
yield syncDbWithDrizzleSchemaFile(schemaFilePath);
|
|
338
|
+
// Now we create the database made from the developer's schema
|
|
339
|
+
yield updateSchema(appDbConfigPath, browserAppDbMeta);
|
|
340
|
+
// Add Seed and Version models after any codegen has been done. Their
|
|
341
|
+
// code has already been added to the templates
|
|
342
|
+
yield addSeedModels();
|
|
343
|
+
});
|
|
344
|
+
ensureDirectories();
|
|
345
|
+
copySchemaFilesToDotSeed();
|
|
346
|
+
runCommands()
|
|
347
|
+
.then(() => {
|
|
348
|
+
if (!appFilesDirPath) {
|
|
349
|
+
console.log('[Seed Protocol] Finished running init script');
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
return copyDotSeedFilesToAppFiles(appFilesDirPath, schemaFilePath);
|
|
353
|
+
}
|
|
354
|
+
})
|
|
355
|
+
.then(() => {
|
|
356
|
+
console.log('[Seed Protocol] Finished running init script');
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
const calledFrom = pathToFileURL(process$1.argv[1]).href;
|
|
361
|
+
if (calledFrom.endsWith('node_modules/.bin/seed') ||
|
|
362
|
+
import.meta.url.endsWith('@seedprotocol/sdk/node/bin.js') ||
|
|
363
|
+
import.meta.url.endsWith('scripts/bin.ts')) {
|
|
364
|
+
// module was not imported but called directly
|
|
365
|
+
init(a);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export { init };
|
|
369
|
+
//# sourceMappingURL=bin.js.map
|