@seedprotocol/sdk 0.3.23 → 0.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +74 -37
- package/dist/bin.js.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/scripts/bin.d.ts.map +1 -1
- package/dist/seedSchema/ConfigSchema.ts +7 -11
- package/dist/seedSchema/ModelSchema.ts +5 -5
- package/dist/seedSchema/index.ts +1 -0
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +1 -0
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js +1 -0
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js.map +1 -1
- package/dist/src/browser/react/services.js +1 -0
- package/dist/src/browser/react/services.js.map +1 -1
- package/dist/src/client/ClientManager.js +1 -0
- package/dist/src/client/ClientManager.js.map +1 -1
- package/dist/src/client/actors/saveAppState.js +1 -0
- package/dist/src/client/actors/saveAppState.js.map +1 -1
- package/dist/src/db/read/getExistingItem.js +1 -0
- package/dist/src/db/read/getExistingItem.js.map +1 -1
- package/dist/src/db/read/getItemData.js +1 -0
- package/dist/src/db/read/getItemData.js.map +1 -1
- package/dist/src/db/read/getItemProperties.js +1 -0
- package/dist/src/db/read/getItemProperties.js.map +1 -1
- package/dist/src/db/read/getItemProperty.js +1 -0
- package/dist/src/db/read/getItemProperty.js.map +1 -1
- package/dist/src/db/read/getItems.js +1 -0
- package/dist/src/db/read/getItems.js.map +1 -1
- package/dist/src/db/read/getMetadata.js +1 -0
- package/dist/src/db/read/getMetadata.js.map +1 -1
- package/dist/src/db/read/getModelSchemas.js +1 -0
- package/dist/src/db/read/getModelSchemas.js.map +1 -1
- package/dist/src/db/read/getModels.js +1 -0
- package/dist/src/db/read/getModels.js.map +1 -1
- package/dist/src/db/read/getPropertyData.js +1 -0
- package/dist/src/db/read/getPropertyData.js.map +1 -1
- package/dist/src/db/read/getRelationValueData.js +1 -0
- package/dist/src/db/read/getRelationValueData.js.map +1 -1
- package/dist/src/db/read/getSeedData.js +1 -0
- package/dist/src/db/read/getSeedData.js.map +1 -1
- package/dist/src/db/read/getStorageTransactionIdForSeedUid.js +1 -0
- package/dist/src/db/read/getStorageTransactionIdForSeedUid.js.map +1 -1
- package/dist/src/db/read/getVersionData.js +1 -0
- package/dist/src/db/read/getVersionData.js.map +1 -1
- package/dist/src/db/read/subqueries/metadataLatest.js +1 -0
- package/dist/src/db/read/subqueries/metadataLatest.js.map +1 -1
- package/dist/src/db/read/subqueries/versionData.js +1 -0
- package/dist/src/db/read/subqueries/versionData.js.map +1 -1
- package/dist/src/db/write/createMetadata.js +1 -0
- package/dist/src/db/write/createMetadata.js.map +1 -1
- package/dist/src/db/write/createSeed.js +1 -0
- package/dist/src/db/write/createSeed.js.map +1 -1
- package/dist/src/db/write/createSeeds.js +1 -0
- package/dist/src/db/write/createSeeds.js.map +1 -1
- package/dist/src/db/write/createVersion.js +1 -0
- package/dist/src/db/write/createVersion.js.map +1 -1
- package/dist/src/db/write/deleteItem.js +1 -0
- package/dist/src/db/write/deleteItem.js.map +1 -1
- package/dist/src/db/write/saveAppState.js +1 -0
- package/dist/src/db/write/saveAppState.js.map +1 -1
- package/dist/src/db/write/saveMetadata.js +1 -0
- package/dist/src/db/write/saveMetadata.js.map +1 -1
- package/dist/src/db/write/updateItemPropertyValue.js +1 -0
- package/dist/src/db/write/updateItemPropertyValue.js.map +1 -1
- package/dist/src/db/write/updateMetadata.js +1 -0
- package/dist/src/db/write/updateMetadata.js.map +1 -1
- package/dist/src/events/files/download.js +1 -0
- package/dist/src/events/files/download.js.map +1 -1
- package/dist/src/events/item/syncDbWithEas.js +1 -0
- package/dist/src/events/item/syncDbWithEas.js.map +1 -1
- package/dist/src/helpers/db.js +1 -0
- package/dist/src/helpers/db.js.map +1 -1
- package/dist/src/node/PathResolver.d.ts.map +1 -1
- package/dist/src/node/PathResolver.js +19 -8
- package/dist/src/node/PathResolver.js.map +1 -1
- package/dist/src/node/codegen/drizzle.js +1 -1
- package/dist/src/node/codegen/drizzle.js.map +1 -1
- package/dist/src/node/db/Db.js +1 -0
- package/dist/src/node/db/Db.js.map +1 -1
- package/dist/src/seedSchema/ConfigSchema.d.ts +10 -8
- package/dist/src/seedSchema/ConfigSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/ConfigSchema.js +5 -12
- package/dist/src/seedSchema/ConfigSchema.js.map +1 -1
- package/dist/src/seedSchema/ModelSchema.js +5 -5
- package/dist/src/seedSchema/ModelSchema.js.map +1 -1
- package/dist/src/seedSchema/PropertyUidSchema.js +18 -0
- package/dist/src/seedSchema/PropertyUidSchema.js.map +1 -0
- package/dist/src/seedSchema/index.d.ts +1 -0
- package/dist/src/seedSchema/index.d.ts.map +1 -1
- package/dist/src/services/allItems/actors/fetchRelatedItems.js +1 -0
- package/dist/src/services/allItems/actors/fetchRelatedItems.js.map +1 -1
- package/dist/src/services/allItems/actors/initialize.js +1 -0
- package/dist/src/services/allItems/actors/initialize.js.map +1 -1
- package/dist/src/services/global/actors/addModelsToDb.js +1 -0
- package/dist/src/services/global/actors/addModelsToDb.js.map +1 -1
- package/dist/src/services/global/actors/initialize.js +1 -0
- package/dist/src/services/global/actors/initialize.js.map +1 -1
- package/dist/src/services/internal/actors/saveConfig.js +1 -0
- package/dist/src/services/internal/actors/saveConfig.js.map +1 -1
- package/dist/src/services/publish/actors/preparePublishRequestData.js +1 -0
- package/dist/src/services/publish/actors/preparePublishRequestData.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathResolver.js","sources":["../../../../src/node/PathResolver.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\nimport { NODE_APP_DB_CONFIG } from './constants'\nimport { findSeedConfigFile } from '@/helpers'\n\nexport class PathResolver {\n private static instance: PathResolver\n private constructor() {}\n\n static getInstance(): PathResolver {\n if (!PathResolver.instance) {\n PathResolver.instance = new PathResolver()\n }\n return PathResolver.instance\n }\n\n /**\n * Detects the current environment based on filesystem structure and package.json\n */\n private detectEnvironment(): 'sdk-dev' | 'linked-sdk' | 'test' | 'production' {\n // Check if we're in the SDK repo itself\n if (process.env.NODE_ENV !== 'test' && this.isInSdkRepo()) {\n return 'sdk-dev'\n }\n\n // Check if we're running tests\n if (process.env.NODE_ENV === 'test') {\n return 'test'\n }\n\n // Check if we're using a linked version of the SDK\n if (this.isUsingLinkedSdk()) {\n return 'linked-sdk'\n }\n\n // Default to production environment\n return 'production'\n }\n\n private isInSdkRepo(): boolean {\n try {\n // Check if we're in the SDK repo by looking for specific SDK files/directories\n const currentDir = process.cwd()\n return fs.existsSync(path.join(currentDir, 'src', 'node')) &&\n fs.existsSync(path.join(currentDir, 'package.json')) &&\n JSON.parse(fs.readFileSync(path.join(currentDir, 'package.json'), 'utf8')).name === '@seedprotocol/sdk'\n } catch {\n return false\n }\n }\n\n private isUsingLinkedSdk(): boolean {\n try {\n const pkgPath = path.join(process.cwd(), 'package.json')\n if (!fs.existsSync(pkgPath)) return false\n \n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))\n const sdkDep = pkg.dependencies?.['@seedprotocol/sdk']\n \n return sdkDep && (sdkDep.startsWith('link:') || sdkDep.startsWith('portal:'))\n } catch {\n return false\n }\n }\n\n /**\n * Gets the root directory containing node_modules\n */\n getRootWithNodeModules(): string {\n const processCwd = process.cwd()\n\n const calledFromMocks = processCwd.includes('__mocks__')\n\n if (calledFromMocks) {\n return path.join(processCwd, '..', '..', '..', '..',)\n }\n\n return processCwd\n }\n\n /**\n * Gets the SDK root directory\n */\n getSdkRootDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n const processCwd = process.cwd()\n\n if (process.cwd().includes('__mocks__')) {\n return path.join(rootWithNodeModules, 'src')\n }\n\n if (env === 'linked-sdk') {\n // For linked packages, find the package directory\n const pkgJson = JSON.parse(fs.readFileSync(path.join(processCwd, 'package.json'), 'utf8'))\n const sdkPath = pkgJson.dependencies?.['@seedprotocol/sdk'] || pkgJson.devDependencies?.['@seedprotocol/sdk']\n console.log(sdkPath)\n if (sdkPath === 'link:@seedprotocol/sdk') {\n return path.join(processCwd, 'node_modules', '@seedprotocol', 'sdk', 'src')\n }\n return path.resolve(processCwd, sdkPath.replace(/^(link:|portal:)/, ''))\n }\n\n console.log('getSdkRootDir', rootWithNodeModules, env)\n\n switch (env) {\n case 'sdk-dev':\n // This should be {localDir}/seed-protocol-sdk/src\n return path.join(rootWithNodeModules, 'src')\n case 'test':\n // This should be {localDir}/seed-protocol-sdk/src\n return path.join(rootWithNodeModules, 'src')\n default:\n // This should be {projectDir}/node_modules/@seedprotocol/sdk/dist\n return path.join(rootWithNodeModules, 'node_modules', '@seedprotocol', 'sdk', 'dist')\n }\n }\n\n getNodeModulesDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n\n let nodeModulesDir = path.join(rootWithNodeModules, 'node_modules')\n\n if (env !== 'linked-sdk' && env !== 'sdk-dev' && nodeModulesDir.includes('__tests__')) {\n nodeModulesDir = path.join(process.cwd(), '..', '..', '..', '..', 'node_modules',)\n }\n\n return nodeModulesDir\n }\n\n /**\n * Gets the .seed directory path\n */\n getDotSeedDir(schemaFileDir?: string): string {\n if (!schemaFileDir && process.env.SEED_SDK_TEST_PROJECT_TYPE && !process.cwd().includes('__mocks__')) {\n return path.join(process.cwd(), '__tests__', '__mocks__', process.env.SEED_SDK_TEST_PROJECT_TYPE, 'project', '.seed')\n }\n return path.join(schemaFileDir || process.cwd(), '.seed')\n }\n\n /**\n * Finds the Seed Protocol config file in the given directory\n * @param searchDir - Directory to search for the config file\n * @returns The path to the found config file, or null if not found\n */\n findConfigFile(searchDir: string = process.cwd()): string | null {\n return findSeedConfigFile(searchDir)\n }\n\n /**\n * Gets paths for app-specific directories\n */\n getAppPaths(schemaFileDir?: string | undefined) {\n const env = this.detectEnvironment()\n const dotSeedDir = this.getDotSeedDir(schemaFileDir)\n const nodeModulesDir = this.getNodeModulesDir()\n\n let drizzleKitPath = path.join(nodeModulesDir, 'drizzle-kit', 'bin.cjs')\n\n if (env === 'linked-sdk') {\n const sdkRootDir = this.getSdkRootDir()\n console.log(`sdkRootDir: ${sdkRootDir}`)\n const sdkPackageDir = path.dirname(sdkRootDir)\n console.log(`sdkPackageDir: ${sdkPackageDir}`)\n const sdkNodeModulesDir = path.join(sdkPackageDir, 'node_modules')\n drizzleKitPath = path.join(sdkNodeModulesDir, 'drizzle-kit', 'bin.cjs')\n }\n\n return {\n sdkRootDir: this.getSdkRootDir(),\n dotSeedDir,\n nodeModulesDir,\n appSchemaDir: path.join(dotSeedDir, 'schema'),\n appDbDir: path.join(dotSeedDir, 'db'),\n appMetaDir: path.join(dotSeedDir, 'db', 'meta'),\n drizzleDbConfigPath: path.join(this.getSdkRootDir(), NODE_APP_DB_CONFIG),\n drizzleKitPath,\n templatePath: path.join(this.getSdkRootDir(), 'node', 'codegen', 'templates')\n }\n }\n} \n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PathResolver.js","sources":["../../../../src/node/PathResolver.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\nimport { NODE_APP_DB_CONFIG } from './constants'\nimport { findSeedConfigFile } from '@/helpers'\n\nexport class PathResolver {\n private static instance: PathResolver\n private constructor() {}\n\n static getInstance(): PathResolver {\n if (!PathResolver.instance) {\n PathResolver.instance = new PathResolver()\n }\n return PathResolver.instance\n }\n\n /**\n * Detects the current environment based on filesystem structure and package.json\n */\n private detectEnvironment(): 'sdk-dev' | 'linked-sdk' | 'test' | 'production' {\n // Check if we're in the SDK repo itself\n if (process.env.NODE_ENV !== 'test' && this.isInSdkRepo()) {\n return 'sdk-dev'\n }\n\n // Check if we're running tests\n if (process.env.NODE_ENV === 'test') {\n return 'test'\n }\n\n // Check if we're using a linked version of the SDK\n if (this.isUsingLinkedSdk()) {\n return 'linked-sdk'\n }\n\n // Default to production environment\n return 'production'\n }\n\n private isInSdkRepo(): boolean {\n try {\n // Check if we're in the SDK repo by looking for specific SDK files/directories\n const currentDir = process.cwd()\n return fs.existsSync(path.join(currentDir, 'src', 'node')) &&\n fs.existsSync(path.join(currentDir, 'package.json')) &&\n JSON.parse(fs.readFileSync(path.join(currentDir, 'package.json'), 'utf8')).name === '@seedprotocol/sdk'\n } catch {\n return false\n }\n }\n\n private isUsingLinkedSdk(): boolean {\n try {\n const pkgPath = path.join(process.cwd(), 'package.json')\n if (!fs.existsSync(pkgPath)) return false\n \n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))\n const sdkDep = pkg.dependencies?.['@seedprotocol/sdk']\n \n return sdkDep && (sdkDep.startsWith('link:') || sdkDep.startsWith('portal:'))\n } catch {\n return false\n }\n }\n\n /**\n * Gets the root directory containing node_modules\n */\n getRootWithNodeModules(): string {\n const processCwd = process.cwd()\n\n const calledFromMocks = processCwd.includes('__mocks__')\n\n if (calledFromMocks) {\n return path.join(processCwd, '..', '..', '..', '..',)\n }\n\n return processCwd\n }\n\n /**\n * Gets the SDK root directory\n */\n getSdkRootDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n const processCwd = process.cwd()\n\n // For test environment, always return the SDK root directory\n if (env === 'test') {\n return rootWithNodeModules\n }\n\n if (env === 'linked-sdk') {\n // For linked packages, find the package directory\n const pkgJson = JSON.parse(fs.readFileSync(path.join(processCwd, 'package.json'), 'utf8'))\n const sdkPath = pkgJson.dependencies?.['@seedprotocol/sdk'] || pkgJson.devDependencies?.['@seedprotocol/sdk']\n console.log(sdkPath)\n if (sdkPath === 'link:@seedprotocol/sdk') {\n return path.join(processCwd, 'node_modules', '@seedprotocol', 'sdk', 'src')\n }\n return path.resolve(processCwd, sdkPath.replace(/^(link:|portal:)/, ''))\n }\n\n console.log('getSdkRootDir', rootWithNodeModules, env)\n\n switch (env) {\n case 'sdk-dev':\n // This should be {localDir}/seed-protocol-sdk (the SDK root directory)\n return rootWithNodeModules\n case 'test':\n // This should be {localDir}/seed-protocol-sdk (the SDK root directory)\n return rootWithNodeModules\n default:\n // This should be {projectDir}/node_modules/@seedprotocol/sdk/dist\n return path.join(rootWithNodeModules, 'node_modules', '@seedprotocol', 'sdk', 'dist')\n }\n }\n\n getNodeModulesDir(): string {\n const env = this.detectEnvironment()\n const rootWithNodeModules = this.getRootWithNodeModules()\n\n let nodeModulesDir = path.join(rootWithNodeModules, 'node_modules')\n\n if (env !== 'linked-sdk' && env !== 'sdk-dev' && nodeModulesDir.includes('__tests__')) {\n nodeModulesDir = path.join(process.cwd(), '..', '..', '..', '..', 'node_modules',)\n }\n\n return nodeModulesDir\n }\n\n /**\n * Gets the .seed directory path\n */\n getDotSeedDir(schemaFileDir?: string): string {\n if (!schemaFileDir && process.env.SEED_SDK_TEST_PROJECT_TYPE && !process.cwd().includes('__mocks__')) {\n return path.join(process.cwd(), '__tests__', '__mocks__', process.env.SEED_SDK_TEST_PROJECT_TYPE, 'project', '.seed')\n }\n return path.join(schemaFileDir || process.cwd(), '.seed')\n }\n\n /**\n * Finds the Seed Protocol config file in the given directory\n * @param searchDir - Directory to search for the config file\n * @returns The path to the found config file, or null if not found\n */\n findConfigFile(searchDir: string = process.cwd()): string | null {\n return findSeedConfigFile(searchDir)\n }\n\n /**\n * Gets paths for app-specific directories\n */\n getAppPaths(schemaFileDir?: string | undefined) {\n const env = this.detectEnvironment()\n const dotSeedDir = this.getDotSeedDir(schemaFileDir)\n const nodeModulesDir = this.getNodeModulesDir()\n\n let drizzleKitPath = path.join(nodeModulesDir, 'drizzle-kit', 'bin.cjs')\n\n if (env === 'linked-sdk') {\n const sdkRootDir = this.getSdkRootDir()\n console.log(`sdkRootDir: ${sdkRootDir}`)\n const sdkPackageDir = path.dirname(sdkRootDir)\n console.log(`sdkPackageDir: ${sdkPackageDir}`)\n const sdkNodeModulesDir = path.join(sdkPackageDir, 'node_modules')\n drizzleKitPath = path.join(sdkNodeModulesDir, 'drizzle-kit', 'bin.cjs')\n }\n\n // Determine the correct template path based on environment\n let templatePath: string\n if (env === 'production') {\n // In production, templates are at dist/node/codegen/templates\n templatePath = path.join(this.getSdkRootDir(), 'node', 'codegen', 'templates')\n } else {\n // In development/test, templates are at src/node/codegen/templates\n templatePath = path.join(this.getSdkRootDir(), 'src', 'node', 'codegen', 'templates')\n }\n\n return {\n sdkRootDir: this.getSdkRootDir(),\n dotSeedDir,\n nodeModulesDir,\n appSchemaDir: path.join(dotSeedDir, 'schema'),\n appDbDir: path.join(dotSeedDir, 'db'),\n appMetaDir: path.join(dotSeedDir, 'db', 'meta'),\n drizzleDbConfigPath: path.join(this.getSdkRootDir(), 'src', NODE_APP_DB_CONFIG),\n drizzleKitPath,\n templatePath\n }\n }\n} \n"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ const createDrizzleSchemaFilesFromConfig = async (configFilePath, outputDirPath)
|
|
|
59
59
|
const schemaFilePath = configFilePath || pathResolver.findConfigFile() || path.join(dotSeedDir, 'seed.config.ts');
|
|
60
60
|
console.log('schemaFilePath', schemaFilePath);
|
|
61
61
|
const { models, } = await getTsImport(schemaFilePath);
|
|
62
|
-
const writeToDir = appSchemaDir;
|
|
62
|
+
const writeToDir = outputDirPath || appSchemaDir;
|
|
63
63
|
for (const [modelName, modelClass] of Object.entries(models)) {
|
|
64
64
|
const code = generateDrizzleSchemaCode(modelName, modelClass);
|
|
65
65
|
if (!fs.existsSync(writeToDir)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle.js","sources":["../../../../../src/node/codegen/drizzle.ts"],"sourcesContent":["import path from 'path'\nimport pluralize from 'pluralize'\nimport { camelCase, snakeCase } from 'lodash-es'\nimport * as nunjucks from 'nunjucks'\nimport { ILoader } from 'nunjucks'\nimport { ModelClassType } from '@/types'\nimport { SCHEMA_NJK } from '@/helpers/constants'\nimport { getTsImport } from '@/node/helpers'\nimport fs from 'fs'\nimport {PathResolver} from '@/node/PathResolver'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:codegen:drizzle')\n\n\nconst TemplateLoader: ILoader = {\n getSource: (name: string) => {\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n let templateFilePath = templatePath\n if (name.includes(templatePath)) {\n templateFilePath = name\n } else {\n templateFilePath = path.join(templatePath, path.basename(name))\n }\n const src = fs.readFileSync(templateFilePath, 'utf-8')\n\n return {\n path: name,\n src,\n noCache: false,\n }\n },\n}\n\n// Configure Nunjucks\nconst env = new nunjucks.Environment(TemplateLoader)\n\nenv.addFilter('camelCase', camelCase)\nenv.addFilter('snakeCase', snakeCase)\nenv.addFilter('pluralize', pluralize)\n\nconst refNamesToExcludeFromRelations = [\n 'Text',\n 'Number',\n 'Boolean',\n 'Date',\n]\n\nexport const generateDrizzleSchemaCode = (\n modelName: string,\n modelClass: ModelClassType,\n): string => {\n const listProperties = Object.entries(modelClass.schema).filter(\n ([key, propertyDef]) => propertyDef?.dataType === 'List' && !refNamesToExcludeFromRelations.includes(propertyDef?.ref!),\n )\n\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n const filePath = path.join(templatePath, SCHEMA_NJK)\n\n const schemaCode = env.render(filePath, {\n modelName,\n modelClass,\n listProperties,\n })\n\n return schemaCode\n}\n\nexport const createDrizzleSchemaFilesFromConfig = async (\n configFilePath: string | undefined,\n outputDirPath: string | undefined,\n) => {\n const pathResolver = PathResolver.getInstance()\n const { dotSeedDir, appSchemaDir } = pathResolver.getAppPaths()\n console.log('createDrizzleSchemaFilesFromConfig', configFilePath, outputDirPath)\n\n // Use provided config file path or find the config file in the project root\n const schemaFilePath = configFilePath || pathResolver.findConfigFile() || path.join(dotSeedDir, 'seed.config.ts')\n console.log('schemaFilePath', schemaFilePath)\n\n const { models, } = await getTsImport<{\n models: Record<string, ModelClassType>\n }>(schemaFilePath)\n\n const writeToDir = outputDirPath || appSchemaDir\n\n for (const [modelName, modelClass] of Object.entries(models)) {\n const code = generateDrizzleSchemaCode(modelName, modelClass)\n\n if (!fs.existsSync(writeToDir)) {\n fs.mkdirSync(writeToDir)\n }\n\n const filePath = path.join(writeToDir, `${modelName}Schema.ts`)\n\n await fs.promises.writeFile(filePath, code).catch((e) => console.error(e))\n }\n}\n\n // Helper to determine TypeScript type based on property type\n const seedTypeToJsType = (propertyType: string): string => {\n switch (propertyType) {\n case 'Text':\n return 'string';\n case 'Number':\n return 'number';\n case 'Boolean':\n return 'boolean';\n case 'Date':\n return 'string';\n case 'List':\n return 'string[]';\n case 'Relation':\n return 'string';\n case 'Image':\n return 'string';\n case 'File':\n return 'string';\n default:\n return 'any';\n }\n};\n\n\nexport const generateModelCode = (values: Record<string, any>): string => {\n const { modelName, properties } = values;\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n\n if (modelName === 'Text' || modelName === 'TestModel') {\n logger(`Model name is ${modelName}.`)\n }\n\n const njkEnv = new nunjucks.Environment(new nunjucks.FileSystemLoader(templatePath))\n njkEnv.addFilter('seedTypeToJsType', seedTypeToJsType)\n return njkEnv.render('model.njk', { modelName, properties })\n};\n"],"names":[],"mappings":";;;;;;;;;;AAYA,MAAM,MAAM,GAAG,KAAK,CAAC,yBAAyB,CAAC;AAG/C,MAAM,cAAc,GAAY;AAC9B,IAAA,SAAS,EAAE,CAAC,IAAY,KAAI;AAC1B,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE;QAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE;QACnD,IAAI,gBAAgB,GAAG,YAAY;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC/B,gBAAgB,GAAG,IAAI;QACzB;aAAO;AACL,YAAA,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjE;QACA,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC;QAEtD,OAAO;AACL,YAAA,IAAI,EAAE,IAAI;YACV,GAAG;AACH,YAAA,OAAO,EAAE,KAAK;SACf;IACH,CAAC;CACF;AAED;AACA,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC;AAEpD,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;AACrC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;AACrC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;AAErC,MAAM,8BAA8B,GAAG;IACrC,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;CACP;MAEY,yBAAyB,GAAG,CACvC,SAAiB,EACjB,UAA0B,KAChB;AACV,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAC7D,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,WAAW,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAI,CAAC,CACxH;AAED,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE;IAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC;AAEpD,IAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;QACtC,SAAS;QACT,UAAU;QACV,cAAc;AACf,KAAA,CAAC;AAEF,IAAA,OAAO,UAAU;AACnB;AAEO,MAAM,kCAAkC,GAAG,OAChD,cAAkC,EAClC,aAAiC,KAC/B;AACF,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE;IAC/C,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,WAAW,EAAE;IAC/D,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,cAAc,EAAE,aAAa,CAAC;;AAGhF,IAAA,MAAM,cAAc,GAAG,cAAc,IAAI,YAAY,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;AACjH,IAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE7C,MAAM,EAAE,MAAM,GAAG,GAAG,MAAM,WAAW,CAElC,cAAc,CAAC;AAElB,IAAA,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"drizzle.js","sources":["../../../../../src/node/codegen/drizzle.ts"],"sourcesContent":["import path from 'path'\nimport pluralize from 'pluralize'\nimport { camelCase, snakeCase } from 'lodash-es'\nimport * as nunjucks from 'nunjucks'\nimport { ILoader } from 'nunjucks'\nimport { ModelClassType } from '@/types'\nimport { SCHEMA_NJK } from '@/helpers/constants'\nimport { getTsImport } from '@/node/helpers'\nimport fs from 'fs'\nimport {PathResolver} from '@/node/PathResolver'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:codegen:drizzle')\n\n\nconst TemplateLoader: ILoader = {\n getSource: (name: string) => {\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n let templateFilePath = templatePath\n if (name.includes(templatePath)) {\n templateFilePath = name\n } else {\n templateFilePath = path.join(templatePath, path.basename(name))\n }\n const src = fs.readFileSync(templateFilePath, 'utf-8')\n\n return {\n path: name,\n src,\n noCache: false,\n }\n },\n}\n\n// Configure Nunjucks\nconst env = new nunjucks.Environment(TemplateLoader)\n\nenv.addFilter('camelCase', camelCase)\nenv.addFilter('snakeCase', snakeCase)\nenv.addFilter('pluralize', pluralize)\n\nconst refNamesToExcludeFromRelations = [\n 'Text',\n 'Number',\n 'Boolean',\n 'Date',\n]\n\nexport const generateDrizzleSchemaCode = (\n modelName: string,\n modelClass: ModelClassType,\n): string => {\n const listProperties = Object.entries(modelClass.schema).filter(\n ([key, propertyDef]) => propertyDef?.dataType === 'List' && !refNamesToExcludeFromRelations.includes(propertyDef?.ref!),\n )\n\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n const filePath = path.join(templatePath, SCHEMA_NJK)\n\n const schemaCode = env.render(filePath, {\n modelName,\n modelClass,\n listProperties,\n })\n\n return schemaCode\n}\n\nexport const createDrizzleSchemaFilesFromConfig = async (\n configFilePath: string | undefined,\n outputDirPath: string | undefined,\n) => {\n const pathResolver = PathResolver.getInstance()\n const { dotSeedDir, appSchemaDir } = pathResolver.getAppPaths()\n console.log('createDrizzleSchemaFilesFromConfig', configFilePath, outputDirPath)\n\n // Use provided config file path or find the config file in the project root\n const schemaFilePath = configFilePath || pathResolver.findConfigFile() || path.join(dotSeedDir, 'seed.config.ts')\n console.log('schemaFilePath', schemaFilePath)\n\n const { models, } = await getTsImport<{\n models: Record<string, ModelClassType>\n }>(schemaFilePath)\n\n const writeToDir = outputDirPath || appSchemaDir\n\n for (const [modelName, modelClass] of Object.entries(models)) {\n const code = generateDrizzleSchemaCode(modelName, modelClass)\n\n if (!fs.existsSync(writeToDir)) {\n fs.mkdirSync(writeToDir)\n }\n\n const filePath = path.join(writeToDir, `${modelName}Schema.ts`)\n\n await fs.promises.writeFile(filePath, code).catch((e) => console.error(e))\n }\n}\n\n // Helper to determine TypeScript type based on property type\n const seedTypeToJsType = (propertyType: string): string => {\n switch (propertyType) {\n case 'Text':\n return 'string';\n case 'Number':\n return 'number';\n case 'Boolean':\n return 'boolean';\n case 'Date':\n return 'string';\n case 'List':\n return 'string[]';\n case 'Relation':\n return 'string';\n case 'Image':\n return 'string';\n case 'File':\n return 'string';\n default:\n return 'any';\n }\n};\n\n\nexport const generateModelCode = (values: Record<string, any>): string => {\n const { modelName, properties } = values;\n const pathResolver = PathResolver.getInstance()\n const { templatePath } = pathResolver.getAppPaths()\n\n if (modelName === 'Text' || modelName === 'TestModel') {\n logger(`Model name is ${modelName}.`)\n }\n\n const njkEnv = new nunjucks.Environment(new nunjucks.FileSystemLoader(templatePath))\n njkEnv.addFilter('seedTypeToJsType', seedTypeToJsType)\n return njkEnv.render('model.njk', { modelName, properties })\n};\n"],"names":[],"mappings":"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"}
|
package/dist/src/node/db/Db.js
CHANGED
|
@@ -7,6 +7,7 @@ import '../../seedSchema/MetadataSchema.js';
|
|
|
7
7
|
import { appState } from '../../seedSchema/AppStateSchema.js';
|
|
8
8
|
import '../../seedSchema/ModelSchema.js';
|
|
9
9
|
import '../../seedSchema/ModelUidSchema.js';
|
|
10
|
+
import '../../seedSchema/PropertyUidSchema.js';
|
|
10
11
|
import '../../seedSchema/ConfigSchema.js';
|
|
11
12
|
|
|
12
13
|
const logger = debug('seedSdk:node:db:Db');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Db.js","sources":["../../../../../src/node/db/Db.ts"],"sourcesContent":["import { BaseDb } from \"@/db/Db/BaseDb\";\nimport { IDb } from \"@/interfaces\";\nimport path from \"path\";\nimport { DrizzleConfig, } from \"drizzle-orm\";\nimport debug from 'debug'\nimport { appState } from '@/seedSchema'\n\nconst logger = debug('seedSdk:node:db:Db')\n\nconst getConfig = async (dotSeedDir: string) => {\n\n const { defineConfig } = await import('drizzle-kit')\n\n let schemaDir = path.join(process.cwd(), 'schema')\n\n const nodeDbConfig = defineConfig({\n schema: schemaDir,\n dialect: 'sqlite',\n out: `${dotSeedDir}/db`,\n dbCredentials: {\n url: `${dotSeedDir}/db/app_db.sqlite3`,\n }\n }) as DrizzleConfig & { dbCredentials: { url: string } }\n\n return nodeDbConfig\n}\n\nclass Db extends BaseDb implements IDb {\n static db: any\n\n constructor() {\n super()\n }\n\n static getAppDb() {\n return this.db\n }\n\n static isAppDbReady() {\n return true\n }\n\n static async prepareDb(filesDir: string) {\n const nodeDbConfig = await getConfig(filesDir)\n\n const {drizzle} = await import('drizzle-orm/better-sqlite3')\n\n this.db = drizzle({\n ...nodeDbConfig,\n logger: true,\n })\n\n if (!this.db) {\n throw new Error('Db not found')\n }\n\n return this.db\n }\n\n static async connectToDb(pathToDir: string, dbName: string) {\n\n return {\n id: this.db ? this.db.constructor.name : ''\n }\n }\n\n static async migrate(pathToDbDir: string, dbName: string, dbId: string) {\n const {migrate} = await import('drizzle-orm/better-sqlite3/migrator')\n migrate(this.db, { migrationsFolder: pathToDbDir })\n const queryResult = await this.db.select().from(appState)\n logger('queryResult', queryResult)\n\n return this.db\n }\n}\n\nBaseDb.setPlatformClass(Db)\n\nexport { Db }\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Db.js","sources":["../../../../../src/node/db/Db.ts"],"sourcesContent":["import { BaseDb } from \"@/db/Db/BaseDb\";\nimport { IDb } from \"@/interfaces\";\nimport path from \"path\";\nimport { DrizzleConfig, } from \"drizzle-orm\";\nimport debug from 'debug'\nimport { appState } from '@/seedSchema'\n\nconst logger = debug('seedSdk:node:db:Db')\n\nconst getConfig = async (dotSeedDir: string) => {\n\n const { defineConfig } = await import('drizzle-kit')\n\n let schemaDir = path.join(process.cwd(), 'schema')\n\n const nodeDbConfig = defineConfig({\n schema: schemaDir,\n dialect: 'sqlite',\n out: `${dotSeedDir}/db`,\n dbCredentials: {\n url: `${dotSeedDir}/db/app_db.sqlite3`,\n }\n }) as DrizzleConfig & { dbCredentials: { url: string } }\n\n return nodeDbConfig\n}\n\nclass Db extends BaseDb implements IDb {\n static db: any\n\n constructor() {\n super()\n }\n\n static getAppDb() {\n return this.db\n }\n\n static isAppDbReady() {\n return true\n }\n\n static async prepareDb(filesDir: string) {\n const nodeDbConfig = await getConfig(filesDir)\n\n const {drizzle} = await import('drizzle-orm/better-sqlite3')\n\n this.db = drizzle({\n ...nodeDbConfig,\n logger: true,\n })\n\n if (!this.db) {\n throw new Error('Db not found')\n }\n\n return this.db\n }\n\n static async connectToDb(pathToDir: string, dbName: string) {\n\n return {\n id: this.db ? this.db.constructor.name : ''\n }\n }\n\n static async migrate(pathToDbDir: string, dbName: string, dbId: string) {\n const {migrate} = await import('drizzle-orm/better-sqlite3/migrator')\n migrate(this.db, { migrationsFolder: pathToDbDir })\n const queryResult = await this.db.select().from(appState)\n logger('queryResult', queryResult)\n\n return this.db\n }\n}\n\nBaseDb.setPlatformClass(Db)\n\nexport { Db }\n"],"names":[],"mappings":";;;;;;;;;;;;AAOA,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CAAC;AAE1C,MAAM,SAAS,GAAG,OAAO,UAAkB,KAAI;IAE7C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,OAAO,aAAa,CAAC;AAEpD,IAAA,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;IAElD,MAAM,YAAY,GAAG,YAAY,CAAC;AAChC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,CAAA,EAAG,UAAU,CAAA,GAAA,CAAK;AACvB,QAAA,aAAa,EAAE;YACb,GAAG,EAAE,CAAA,EAAG,UAAU,CAAA,kBAAA,CAAoB;AACvC;AACF,KAAA,CAAuD;AAExD,IAAA,OAAO,YAAY;AACrB,CAAC;AAED,MAAM,EAAG,SAAQ,MAAM,CAAA;AAGrB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;AAEA,IAAA,OAAO,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,EAAE;IAChB;AAEA,IAAA,OAAO,YAAY,GAAA;AACjB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,aAAa,SAAS,CAAC,QAAgB,EAAA;AACrC,QAAA,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC;QAE9C,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,OAAO,4BAA4B,CAAC;AAE5D,QAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;AAChB,YAAA,GAAG,YAAY;AACf,YAAA,MAAM,EAAE,IAAI;AACb,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;QACjC;QAEA,OAAO,IAAI,CAAC,EAAE;IAChB;AAEA,IAAA,aAAa,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAA;QAExD,OAAO;AACL,YAAA,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,GAAG;SAC1C;IACH;IAEA,aAAa,OAAO,CAAC,WAAmB,EAAE,MAAc,EAAE,IAAY,EAAA;QACpE,MAAM,EAAC,OAAO,EAAC,GAAG,MAAM,OAAO,qCAAqC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;AACnD,QAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzD,QAAA,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC;QAElC,OAAO,IAAI,CAAC,EAAE;IAChB;AACD;AAED,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;;;;"}
|
|
@@ -61,26 +61,28 @@ export declare const config: import("drizzle-orm/sqlite-core").SQLiteTableWithCo
|
|
|
61
61
|
json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
62
62
|
name: "json";
|
|
63
63
|
tableName: "config";
|
|
64
|
-
dataType: "
|
|
65
|
-
columnType: "
|
|
66
|
-
data:
|
|
64
|
+
dataType: "string";
|
|
65
|
+
columnType: "SQLiteText";
|
|
66
|
+
data: string;
|
|
67
67
|
driverParam: string;
|
|
68
68
|
notNull: false;
|
|
69
69
|
hasDefault: false;
|
|
70
70
|
isPrimaryKey: false;
|
|
71
71
|
isAutoincrement: false;
|
|
72
72
|
hasRuntimeDefault: false;
|
|
73
|
-
enumValues:
|
|
73
|
+
enumValues: [string, ...string[]];
|
|
74
74
|
baseColumn: never;
|
|
75
75
|
identity: undefined;
|
|
76
76
|
generated: undefined;
|
|
77
|
-
}, {}, {
|
|
77
|
+
}, {}, {
|
|
78
|
+
length: number | undefined;
|
|
79
|
+
}>;
|
|
78
80
|
blob: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
79
81
|
name: "blob";
|
|
80
82
|
tableName: "config";
|
|
81
|
-
dataType: "
|
|
82
|
-
columnType: "
|
|
83
|
-
data:
|
|
83
|
+
dataType: "json";
|
|
84
|
+
columnType: "SQLiteBlobJson";
|
|
85
|
+
data: unknown;
|
|
84
86
|
driverParam: Buffer<ArrayBufferLike>;
|
|
85
87
|
notNull: false;
|
|
86
88
|
hasDefault: false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigSchema.d.ts","sourceRoot":"","sources":["../../../src/seedSchema/ConfigSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ConfigSchema.d.ts","sourceRoot":"","sources":["../../../src/seedSchema/ConfigSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,MAAM,CAAC,CAAA"}
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import { sqliteTable, blob, text,
|
|
2
|
-
import { sql } from 'drizzle-orm';
|
|
1
|
+
import { sqliteTable, blob, text, integer } from 'drizzle-orm/sqlite-core';
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
id:
|
|
3
|
+
sqliteTable('config', {
|
|
4
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
6
5
|
key: text('key').notNull(),
|
|
7
6
|
text: text('text'),
|
|
8
|
-
json: text('json'
|
|
9
|
-
blob: blob('blob'
|
|
10
|
-
}, {
|
|
11
|
-
checks: [
|
|
12
|
-
check('hasValue', sql `key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),
|
|
13
|
-
],
|
|
7
|
+
json: text('json'),
|
|
8
|
+
blob: blob('blob'),
|
|
14
9
|
});
|
|
15
|
-
|
|
16
|
-
export { config };
|
|
17
10
|
//# sourceMappingURL=ConfigSchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigSchema.js","sources":["../../../../src/seedSchema/ConfigSchema.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ConfigSchema.js","sources":["../../../../src/seedSchema/ConfigSchema.ts"],"sourcesContent":["import { integer, sqliteTable, text, blob, } from 'drizzle-orm/sqlite-core'\nimport { InferSelectModel } from 'drizzle-orm'\n\nexport const config = sqliteTable(\n 'config',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n key: text('key').notNull(),\n text: text('text'),\n json: text('json'),\n blob: blob('blob'),\n }\n)\n\nexport type configType = InferSelectModel<typeof config>"],"names":[],"mappings":";;AAGsB,WAAW,CAC/B,QAAQ,EACR;AACE,IAAA,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACrD,IAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAC1B,IAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;AAClB,IAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;AAClB,IAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;AACnB,CAAA"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { sqliteTable, text,
|
|
1
|
+
import { sqliteTable, text, integer, unique } from 'drizzle-orm/sqlite-core';
|
|
2
2
|
import { relations } from 'drizzle-orm';
|
|
3
3
|
|
|
4
4
|
const models = sqliteTable('models', {
|
|
5
|
-
id:
|
|
5
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
6
6
|
name: text('name').notNull(),
|
|
7
7
|
});
|
|
8
8
|
relations(models, ({ many }) => ({
|
|
9
9
|
properties: many(properties),
|
|
10
10
|
}));
|
|
11
11
|
const properties = sqliteTable('properties', {
|
|
12
|
-
id:
|
|
12
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
13
13
|
name: text('name').notNull(),
|
|
14
14
|
dataType: text('data_type').notNull(),
|
|
15
15
|
readEndpoint: text('read_endpoint'),
|
|
16
16
|
updateEndpoint: text('update_endpoint'),
|
|
17
|
-
modelId:
|
|
17
|
+
modelId: integer('model_id')
|
|
18
18
|
.notNull()
|
|
19
19
|
.references(() => models.id),
|
|
20
|
-
refModelId:
|
|
20
|
+
refModelId: integer('ref_model_id').references(() => models.id),
|
|
21
21
|
refValueType: text('ref_value_type'),
|
|
22
22
|
}, (table) => {
|
|
23
23
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSchema.js","sources":["../../../../src/seedSchema/ModelSchema.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ModelSchema.js","sources":["../../../../src/seedSchema/ModelSchema.ts"],"sourcesContent":["import { integer, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\nimport { InferInsertModel, InferSelectModel } from 'drizzle-orm'\nexport const models = sqliteTable('models', {\n id: integer('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n})\n\nexport const modelsRelations = relations(models, ({ many }) => ({\n properties: many(properties),\n}))\n\nexport type NewModelRecord = typeof models.$inferInsert\nexport type ModelRecordType = typeof models.$inferSelect\n\nexport const properties = sqliteTable(\n 'properties',\n {\n id: integer('id').primaryKey({ autoIncrement: true }),\n name: text('name').notNull(),\n dataType: text('data_type').notNull(),\n readEndpoint: text('read_endpoint'),\n updateEndpoint: text('update_endpoint'),\n modelId: integer('model_id')\n .notNull()\n .references(() => models.id),\n refModelId: integer('ref_model_id').references(() => models.id),\n refValueType: text('ref_value_type'),\n },\n (table) => {\n return {\n uniqueNameModelId: unique('unique_name_model_id').on(\n table.name,\n table.modelId,\n ),\n }\n },\n)\n\nexport const propertiesRelations = relations(properties, ({ one }) => ({\n model: one(models),\n refModel: one(models),\n}))\n\nexport type NewPropertyRecord = InferInsertModel<typeof properties>\nexport type PropertyType = InferSelectModel<typeof properties>\n"],"names":[],"mappings":";;;AAGO,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE;AAC1C,IAAA,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACrD,IAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AAC7B,CAAA;AAE8B,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM;AAC9D,IAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAC7B,CAAA,CAAC;AAKK,MAAM,UAAU,GAAG,WAAW,CACnC,YAAY,EACZ;AACE,IAAA,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACrD,IAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AAC5B,IAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;AACrC,IAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC;AACnC,IAAA,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACvC,IAAA,OAAO,EAAE,OAAO,CAAC,UAAU;AACxB,SAAA,OAAO;AACP,SAAA,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC;AAC9B,IAAA,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC;AAC/D,IAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;CACrC,EACD,CAAC,KAAK,KAAI;IACR,OAAO;AACL,QAAA,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAClD,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,CACd;KACF;AACH,CAAC;AAGgC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM;AACrE,IAAA,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC;AAClB,IAAA,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;AACtB,CAAA,CAAC;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sqliteTable, int, text } from 'drizzle-orm/sqlite-core';
|
|
2
|
+
import { relations } from 'drizzle-orm';
|
|
3
|
+
import { models, properties } from './ModelSchema.js';
|
|
4
|
+
|
|
5
|
+
const propertyUids = sqliteTable('property_uids', {
|
|
6
|
+
id: int('id').primaryKey({ autoIncrement: true }),
|
|
7
|
+
uid: text('uid').notNull(),
|
|
8
|
+
propertyId: int('property_id')
|
|
9
|
+
.notNull()
|
|
10
|
+
.unique()
|
|
11
|
+
.references(() => models.id),
|
|
12
|
+
});
|
|
13
|
+
relations(propertyUids, ({ one }) => ({
|
|
14
|
+
property: one(properties),
|
|
15
|
+
}));
|
|
16
|
+
|
|
17
|
+
export { propertyUids };
|
|
18
|
+
//# sourceMappingURL=PropertyUidSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PropertyUidSchema.js","sources":["../../../../src/seedSchema/PropertyUidSchema.ts"],"sourcesContent":["import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'\nimport { relations } from 'drizzle-orm'\nimport { models, properties } from './ModelSchema'\n\nexport const propertyUids = sqliteTable('property_uids', {\n id: int('id').primaryKey({ autoIncrement: true }),\n uid: text('uid').notNull(),\n propertyId: int('property_id')\n .notNull()\n .unique()\n .references(() => models.id),\n})\n\nexport const propertyUidRelations = relations(propertyUids, ({ one }) => ({\n property: one(properties),\n}))\n"],"names":[],"mappings":";;;;AAIO,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE;AACvD,IAAA,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AACjD,IAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AAC1B,IAAA,UAAU,EAAE,GAAG,CAAC,aAAa;AAC1B,SAAA,OAAO;AACP,SAAA,MAAM;AACN,SAAA,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC;AAC/B,CAAA;AAEmC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM;AACxE,IAAA,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC;AAC1B,CAAA,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/seedSchema/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/seedSchema/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA"}
|
|
@@ -6,6 +6,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
6
6
|
import '../../../seedSchema/AppStateSchema.js';
|
|
7
7
|
import { models } from '../../../seedSchema/ModelSchema.js';
|
|
8
8
|
import { modelUids } from '../../../seedSchema/ModelUidSchema.js';
|
|
9
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
9
10
|
import '../../../seedSchema/ConfigSchema.js';
|
|
10
11
|
import { getAddressesFromDb } from '../../../helpers/db.js';
|
|
11
12
|
import { eq } from 'drizzle-orm';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRelatedItems.js","sources":["../../../../../../src/services/allItems/actors/fetchRelatedItems.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport {\n GET_ALL_PROPERTIES_FOR_ALL_VERSIONS,\n GET_SEED_IDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport {\n models as modelsTable,\n modelUids,\n PropertyType,\n} from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport {\n AllItemsMachineContext,\n FromCallbackInput,\n ModelClassType,\n} from '@/types'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchRelatedItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelName } = context\n\n const appDb = BaseDb.getAppDb()\n\n const relatedProperties = new Map<string, PropertyType>()\n const relatedVersionsBySeedUid = new Map<string, Attestation[]>()\n const schemaUidsByModelName = new Map<string, string>()\n const mostRecentVersionsBySeedUid = new Map<string, Attestation>()\n const mostRecentPropertiesBySeedUid = new Map<string, Attestation[]>()\n const seedUidsByMostRecentVersionUid = new Map<string, string>()\n\n const _fetchRelatedItems = async () => {\n // Get related properties\n for (const [propertyName, propertyDef] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyDef && propertyDef.ref && propertyDef.refModelId) {\n relatedProperties.set(propertyName, propertyDef)\n }\n }\n\n const addresses = await getAddressesFromDb(appDb)\n\n // Get the models they point to from sdkConfigDb\n for (const [propertyName, propertyDef] of relatedProperties.entries()) {\n const relatedModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.id, propertyDef.refModelId))\n .limit(1)\n\n if (relatedModelQuery && relatedModelQuery.length > 0) {\n const relatedModel = relatedModelQuery[0]\n const relatedModelUid = relatedModel.uid\n // Exclude the current model's schemaUid since we already have its versions\n if (relatedModelUid && relatedModelUid !== ModelClass.schemaUid) {\n schemaUidsByModelName.set(relatedModel.name, relatedModelUid)\n }\n }\n }\n\n const queryKey = [`getRelatedSeedIds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeedIds: relatedSeedIdAttestations } =\n await queryClient.fetchQuery({\n queryKey,\n queryFn: async () =>\n easClient.request(GET_SEED_IDS, {\n where: {\n schema: {\n is: {\n id: {\n in: Array.from(schemaUidsByModelName.values()),\n },\n },\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n const relatedSeedIds = relatedSeedIdAttestations.map((seed) => seed.id)\n\n const { itemVersions: relatedVersions } = await queryClient.fetchQuery({\n queryKey: [`getRelatedVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: relatedSeedIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n // Index versions by seedUid\n for (const version of relatedVersions) {\n const existingVersionsForSeedUid =\n relatedVersionsBySeedUid.get(version.refUID) || []\n existingVersionsForSeedUid.push(version)\n relatedVersionsBySeedUid.set(version.refUID, existingVersionsForSeedUid)\n }\n\n // Sort the indexed versions by timeCreated and index the most recent\n for (const [\n seedUid,\n versionsForSeed,\n ] of relatedVersionsBySeedUid.entries()) {\n const versionsForSeedSorted = versionsForSeed.sort(\n (a: Attestation, b: Attestation) => {\n return a.timeCreated - b.timeCreated\n },\n )\n relatedVersionsBySeedUid.set(seedUid, versionsForSeedSorted)\n mostRecentVersionsBySeedUid.set(seedUid, versionsForSeedSorted[0])\n seedUidsByMostRecentVersionUid.set(versionsForSeedSorted[0].id, seedUid)\n }\n\n // Extract the ids of the most recent versions\n const mostRecentVersionIds = Array.from(\n mostRecentVersionsBySeedUid.values(),\n ).map((version) => version.id)\n\n const { allProperties } = await queryClient.fetchQuery({\n queryKey: [`getAllProperties${modelName}`],\n queryFn: async () =>\n easClient.request(GET_ALL_PROPERTIES_FOR_ALL_VERSIONS, {\n where: {\n refUID: {\n in: mostRecentVersionIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n for (const propertyAttestation of allProperties) {\n const seedUidForProperty = seedUidsByMostRecentVersionUid.get(\n propertyAttestation.refUID,\n )\n const existingPropertiesForSeedUid =\n mostRecentPropertiesBySeedUid.get(seedUidForProperty!) || []\n existingPropertiesForSeedUid.push(propertyAttestation)\n mostRecentPropertiesBySeedUid.set(\n seedUidForProperty!,\n existingPropertiesForSeedUid,\n )\n }\n }\n\n _fetchRelatedItems().then(() => {\n sendBack({\n type: 'fetchRelatedItemsSuccess',\n mostRecentPropertiesBySeedUid,\n relatedVersionsBySeedUid,\n relatedProperties,\n schemaUidsByModelName,\n })\n return\n })\n})\n"],"names":["modelsTable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetchRelatedItems.js","sources":["../../../../../../src/services/allItems/actors/fetchRelatedItems.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport {\n GET_ALL_PROPERTIES_FOR_ALL_VERSIONS,\n GET_SEED_IDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport {\n models as modelsTable,\n modelUids,\n PropertyType,\n} from '@/seedSchema'\nimport { Attestation } from '@/graphql/gql/graphql'\nimport {\n AllItemsMachineContext,\n FromCallbackInput,\n ModelClassType,\n} from '@/types'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\n\n\nexport const fetchRelatedItems = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { ModelClass, modelName } = context\n\n const appDb = BaseDb.getAppDb()\n\n const relatedProperties = new Map<string, PropertyType>()\n const relatedVersionsBySeedUid = new Map<string, Attestation[]>()\n const schemaUidsByModelName = new Map<string, string>()\n const mostRecentVersionsBySeedUid = new Map<string, Attestation>()\n const mostRecentPropertiesBySeedUid = new Map<string, Attestation[]>()\n const seedUidsByMostRecentVersionUid = new Map<string, string>()\n\n const _fetchRelatedItems = async () => {\n // Get related properties\n for (const [propertyName, propertyDef] of Object.entries(\n (ModelClass as ModelClassType).schema,\n )) {\n if (propertyDef && propertyDef.ref && propertyDef.refModelId) {\n relatedProperties.set(propertyName, propertyDef)\n }\n }\n\n const addresses = await getAddressesFromDb(appDb)\n\n // Get the models they point to from sdkConfigDb\n for (const [propertyName, propertyDef] of relatedProperties.entries()) {\n const relatedModelQuery = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.id, propertyDef.refModelId))\n .limit(1)\n\n if (relatedModelQuery && relatedModelQuery.length > 0) {\n const relatedModel = relatedModelQuery[0]\n const relatedModelUid = relatedModel.uid\n // Exclude the current model's schemaUid since we already have its versions\n if (relatedModelUid && relatedModelUid !== ModelClass.schemaUid) {\n schemaUidsByModelName.set(relatedModel.name, relatedModelUid)\n }\n }\n }\n\n const queryKey = [`getRelatedSeedIds${modelName}`]\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeedIds: relatedSeedIdAttestations } =\n await queryClient.fetchQuery({\n queryKey,\n queryFn: async () =>\n easClient.request(GET_SEED_IDS, {\n where: {\n schema: {\n is: {\n id: {\n in: Array.from(schemaUidsByModelName.values()),\n },\n },\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n const relatedSeedIds = relatedSeedIdAttestations.map((seed) => seed.id)\n\n const { itemVersions: relatedVersions } = await queryClient.fetchQuery({\n queryKey: [`getRelatedVersions${modelName}`],\n queryFn: async () =>\n easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: relatedSeedIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n // Index versions by seedUid\n for (const version of relatedVersions) {\n const existingVersionsForSeedUid =\n relatedVersionsBySeedUid.get(version.refUID) || []\n existingVersionsForSeedUid.push(version)\n relatedVersionsBySeedUid.set(version.refUID, existingVersionsForSeedUid)\n }\n\n // Sort the indexed versions by timeCreated and index the most recent\n for (const [\n seedUid,\n versionsForSeed,\n ] of relatedVersionsBySeedUid.entries()) {\n const versionsForSeedSorted = versionsForSeed.sort(\n (a: Attestation, b: Attestation) => {\n return a.timeCreated - b.timeCreated\n },\n )\n relatedVersionsBySeedUid.set(seedUid, versionsForSeedSorted)\n mostRecentVersionsBySeedUid.set(seedUid, versionsForSeedSorted[0])\n seedUidsByMostRecentVersionUid.set(versionsForSeedSorted[0].id, seedUid)\n }\n\n // Extract the ids of the most recent versions\n const mostRecentVersionIds = Array.from(\n mostRecentVersionsBySeedUid.values(),\n ).map((version) => version.id)\n\n const { allProperties } = await queryClient.fetchQuery({\n queryKey: [`getAllProperties${modelName}`],\n queryFn: async () =>\n easClient.request(GET_ALL_PROPERTIES_FOR_ALL_VERSIONS, {\n where: {\n refUID: {\n in: mostRecentVersionIds,\n },\n attester: {\n in: addresses,\n },\n },\n }),\n })\n\n for (const propertyAttestation of allProperties) {\n const seedUidForProperty = seedUidsByMostRecentVersionUid.get(\n propertyAttestation.refUID,\n )\n const existingPropertiesForSeedUid =\n mostRecentPropertiesBySeedUid.get(seedUidForProperty!) || []\n existingPropertiesForSeedUid.push(propertyAttestation)\n mostRecentPropertiesBySeedUid.set(\n seedUidForProperty!,\n existingPropertiesForSeedUid,\n )\n }\n }\n\n _fetchRelatedItems().then(() => {\n sendBack({\n type: 'fetchRelatedItemsSuccess',\n mostRecentPropertiesBySeedUid,\n relatedVersionsBySeedUid,\n relatedProperties,\n schemaUidsByModelName,\n })\n return\n })\n})\n"],"names":["modelsTable"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
10
10
|
import '../../../seedSchema/AppStateSchema.js';
|
|
11
11
|
import { models } from '../../../seedSchema/ModelSchema.js';
|
|
12
12
|
import { modelUids } from '../../../seedSchema/ModelUidSchema.js';
|
|
13
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
13
14
|
import '../../../seedSchema/ConfigSchema.js';
|
|
14
15
|
import { eq } from 'drizzle-orm';
|
|
15
16
|
import { getAddressesFromDb } from '../../../helpers/db.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sources":["../../../../../../src/services/allItems/actors/initialize.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport pluralize from 'pluralize'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { toSnakeCase } from '@/helpers'\nimport {\n models as modelsTable,\n modelUids,\n properties,\n} from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\n\ntype Times = {\n initialize?: {\n start: number | null\n end: number | null\n }\n fetchDbData?: {\n start: number | null\n end: number | null\n }\n fetchSeeds?: {\n start: number | null\n end: number | null\n }\n fetchVersions?: {\n start: number | null\n end: number | null\n }\n fetchRelatedItems?: {\n start: number | null\n end: number | null\n }\n processItems?: {\n start: number | null\n end: number | null\n }\n}\n\ntype InternalDataType = keyof typeof INTERNAL_DATA_TYPES;\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { modelName, modelAddedToDb, ModelClass, times } = context\n\n const newTimes: Times = {\n initialize: {\n start: Date.now(),\n end: null,\n },\n }\n\n let modelNameLowercase: string | undefined\n let modelNamePlural: string | undefined\n let queryVariables: Record<string, unknown> | undefined\n let appDb\n\n const _initialize = async () => {\n appDb = BaseDb.getAppDb()\n\n // const rows = await getItemsDataFromDb(modelName)\n //\n // if (rows && rows.length > 0) {\n // for (const itemData of rows) {\n // const {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // } = itemData\n //\n // eventEmitter.emit('item.create.request', {\n // itemData: {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // },\n // ModelClass,\n // })\n // }\n // }\n\n modelNameLowercase = modelName.toLowerCase()\n modelNamePlural = pluralize(modelNameLowercase!)\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemas${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n },\n }),\n })\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schema found for ${modelName}`)\n }\n\n const modelSchema = modelSchemas.schemas[0]\n\n if (!modelSchema.id) {\n throw new Error(\n `No schema ID found for schema ${JSON.stringify(modelSchema)}`,\n )\n }\n\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel = foundModels[0]\n\n if (!foundModel) {\n sendBack({ type: 'modelNotFound', modelName })\n return\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n const addresses = await getAddressesFromDb()\n\n queryVariables = {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n equals: modelSchema.id,\n },\n decodedDataJson: {\n contains: modelSchema.id,\n },\n },\n }\n }\n\n const initializeHandler = () => {\n _initialize().then(() => {\n sendBack({\n type: 'initializeSuccess',\n modelName,\n modelNameLowercase,\n modelNamePlural,\n queryVariables,\n })\n newTimes!.initialize!.end = Date.now()\n sendBack({ type: 'updateTimes', times: newTimes })\n })\n }\n\n if (modelAddedToDb) {\n initializeHandler()\n }\n\n const dbReadyHandler = (event) => {\n initializeHandler()\n }\n\n eventEmitter.addListener('allDbsLoaded', dbReadyHandler)\n\n return () => {\n eventEmitter.removeListener('allDbsLoaded', dbReadyHandler)\n }\n})\n"],"names":["modelsTable"],"mappings":"
|
|
1
|
+
{"version":3,"file":"initialize.js","sources":["../../../../../../src/services/allItems/actors/initialize.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { GET_SCHEMAS } from '@/Item/queries'\nimport pluralize from 'pluralize'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { toSnakeCase } from '@/helpers'\nimport {\n models as modelsTable,\n modelUids,\n properties,\n} from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { SchemaWhereInput } from '@/graphql/gql/graphql'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nimport { AllItemsMachineContext, FromCallbackInput } from '@/types'\n\n\ntype Times = {\n initialize?: {\n start: number | null\n end: number | null\n }\n fetchDbData?: {\n start: number | null\n end: number | null\n }\n fetchSeeds?: {\n start: number | null\n end: number | null\n }\n fetchVersions?: {\n start: number | null\n end: number | null\n }\n fetchRelatedItems?: {\n start: number | null\n end: number | null\n }\n processItems?: {\n start: number | null\n end: number | null\n }\n}\n\ntype InternalDataType = keyof typeof INTERNAL_DATA_TYPES;\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<AllItemsMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { modelName, modelAddedToDb, ModelClass, times } = context\n\n const newTimes: Times = {\n initialize: {\n start: Date.now(),\n end: null,\n },\n }\n\n let modelNameLowercase: string | undefined\n let modelNamePlural: string | undefined\n let queryVariables: Record<string, unknown> | undefined\n let appDb\n\n const _initialize = async () => {\n appDb = BaseDb.getAppDb()\n\n // const rows = await getItemsDataFromDb(modelName)\n //\n // if (rows && rows.length > 0) {\n // for (const itemData of rows) {\n // const {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // } = itemData\n //\n // eventEmitter.emit('item.create.request', {\n // itemData: {\n // versionLocalId,\n // versionUid,\n // createdAt,\n // seedLocalId,\n // seedUid,\n // attestationCreatedAt,\n // },\n // ModelClass,\n // })\n // }\n // }\n\n modelNameLowercase = modelName.toLowerCase()\n modelNamePlural = pluralize(modelNameLowercase!)\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const modelSchemas = await queryClient.fetchQuery({\n queryKey: [`getSchemas${modelName}`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n equals: `bytes32 ${toSnakeCase(modelName)}`,\n },\n },\n }),\n })\n\n if (\n !modelSchemas ||\n !modelSchemas.schemas ||\n modelSchemas.schemas.length === 0\n ) {\n throw new Error(`No schema found for ${modelName}`)\n }\n\n const modelSchema = modelSchemas.schemas[0]\n\n if (!modelSchema.id) {\n throw new Error(\n `No schema ID found for schema ${JSON.stringify(modelSchema)}`,\n )\n }\n\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n const foundModel = foundModels[0]\n\n if (!foundModel) {\n sendBack({ type: 'modelNotFound', modelName })\n return\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n const addresses = await getAddressesFromDb()\n\n queryVariables = {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n equals: modelSchema.id,\n },\n decodedDataJson: {\n contains: modelSchema.id,\n },\n },\n }\n }\n\n const initializeHandler = () => {\n _initialize().then(() => {\n sendBack({\n type: 'initializeSuccess',\n modelName,\n modelNameLowercase,\n modelNamePlural,\n queryVariables,\n })\n newTimes!.initialize!.end = Date.now()\n sendBack({ type: 'updateTimes', times: newTimes })\n })\n }\n\n if (modelAddedToDb) {\n initializeHandler()\n }\n\n const dbReadyHandler = (event) => {\n initializeHandler()\n }\n\n eventEmitter.addListener('allDbsLoaded', dbReadyHandler)\n\n return () => {\n eventEmitter.removeListener('allDbsLoaded', dbReadyHandler)\n }\n})\n"],"names":["modelsTable"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
5
5
|
import '../../../seedSchema/AppStateSchema.js';
|
|
6
6
|
import { models } from '../../../seedSchema/ModelSchema.js';
|
|
7
7
|
import { modelUids } from '../../../seedSchema/ModelUidSchema.js';
|
|
8
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
8
9
|
import '../../../seedSchema/ConfigSchema.js';
|
|
9
10
|
import { eq } from 'drizzle-orm';
|
|
10
11
|
import { toSnakeCase } from '../../../helpers/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addModelsToDb.js","sources":["../../../../../../src/services/global/actors/addModelsToDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { GLOBAL_ADDING_MODELS_TO_DB_SUCCESS } from '@/services/internal/constants'\nimport { eventEmitter } from '@/eventBus'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport debug from 'debug'\nimport { GET_SCHEMAS } from '@/Item/queries'\n\nconst logger = debug('seedSdk:services:global:actors:addModelsToDb')\n\nexport const addModelsToDb = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { models } = context\n\n const _addModelsToDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!models) {\n return\n }\n\n const { models: SeedModels } = await import(\n '@/db/configs/seed.schema.config'\n )\n\n const allModels = {\n ...SeedModels,\n ...models,\n }\n\n let hasModelsInDb = false\n const schemaDefsByModelName = new Map<\n string,\n {\n dbId: number\n schemaDef: string\n }\n >()\n\n for (const [modelName, _] of Object.entries(allModels)) {\n logger(\n '[helpers/db] [addModelsToInternalDb] starting modelName:',\n modelName,\n )\n\n let foundModel\n\n const foundModelsQuery = await appDb\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n\n if (!foundModelsQuery || foundModelsQuery.length === 0) {\n await appDb.insert(modelsTable).values({\n name: modelName,\n })\n\n logger('[global/actors] [addModelsToDb] inserted model:', modelName)\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n foundModel = foundModels[0]\n }\n\n if (foundModelsQuery && foundModelsQuery.length > 0) {\n foundModel = foundModelsQuery[0]\n }\n\n if (!foundModel) {\n hasModelsInDb = false\n break\n }\n\n schemaDefsByModelName.set(modelName, {\n dbId: foundModel.id,\n schemaDef: `bytes32 ${toSnakeCase(modelName)}`,\n })\n }\n\n if (!hasModelsInDb) {\n return false\n }\n\n const schemaDefs = Array.from(schemaDefsByModelName.values()).map(\n ({ schemaDef }) => schemaDef,\n )\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { schemas } = await queryClient.fetchQuery({\n queryKey: [`getSchemasVersion`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n in: schemaDefs,\n },\n },\n }),\n })\n\n if (!schemas || schemas.length === 0) {\n throw new Error(`No schemas found`)\n }\n\n for (const schema of schemas) {\n const modelId = Array.from(schemaDefsByModelName.values()).find(\n ({ schemaDef }) => schemaDef === schema.schema,\n )?.dbId\n\n if (!modelId) {\n throw new Error(`No modelId found for schema ${schema.schema}`)\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId,\n uid: schema.id,\n })\n .onConflictDoNothing()\n }\n }\n\n _addModelsToDb().then((hasModelsInDb) => {\n sendBack({ type: GLOBAL_ADDING_MODELS_TO_DB_SUCCESS })\n if (hasModelsInDb) {\n }\n for (const [modelName, model] of Object.entries(models)) {\n const service = context[`${modelName}Service`]\n service.send({ type: 'modelsFound' })\n }\n eventEmitter.emit('syncDbWithEas')\n return\n })\n\n return () => { }\n})\n"],"names":["models","modelsTable"],"mappings":"
|
|
1
|
+
{"version":3,"file":"addModelsToDb.js","sources":["../../../../../../src/services/global/actors/addModelsToDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { toSnakeCase, BaseEasClient, BaseQueryClient } from '@/helpers'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { GLOBAL_ADDING_MODELS_TO_DB_SUCCESS } from '@/services/internal/constants'\nimport { eventEmitter } from '@/eventBus'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport debug from 'debug'\nimport { GET_SCHEMAS } from '@/Item/queries'\n\nconst logger = debug('seedSdk:services:global:actors:addModelsToDb')\n\nexport const addModelsToDb = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { models } = context\n\n const _addModelsToDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n if (!models) {\n return\n }\n\n const { models: SeedModels } = await import(\n '@/db/configs/seed.schema.config'\n )\n\n const allModels = {\n ...SeedModels,\n ...models,\n }\n\n let hasModelsInDb = false\n const schemaDefsByModelName = new Map<\n string,\n {\n dbId: number\n schemaDef: string\n }\n >()\n\n for (const [modelName, _] of Object.entries(allModels)) {\n logger(\n '[helpers/db] [addModelsToInternalDb] starting modelName:',\n modelName,\n )\n\n let foundModel\n\n const foundModelsQuery = await appDb\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n\n if (!foundModelsQuery || foundModelsQuery.length === 0) {\n await appDb.insert(modelsTable).values({\n name: modelName,\n })\n\n logger('[global/actors] [addModelsToDb] inserted model:', modelName)\n const foundModels = await appDb\n .select({\n id: modelsTable.id,\n name: modelsTable.name,\n uid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n\n foundModel = foundModels[0]\n }\n\n if (foundModelsQuery && foundModelsQuery.length > 0) {\n foundModel = foundModelsQuery[0]\n }\n\n if (!foundModel) {\n hasModelsInDb = false\n break\n }\n\n schemaDefsByModelName.set(modelName, {\n dbId: foundModel.id,\n schemaDef: `bytes32 ${toSnakeCase(modelName)}`,\n })\n }\n\n if (!hasModelsInDb) {\n return false\n }\n\n const schemaDefs = Array.from(schemaDefsByModelName.values()).map(\n ({ schemaDef }) => schemaDef,\n )\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { schemas } = await queryClient.fetchQuery({\n queryKey: [`getSchemasVersion`],\n queryFn: async () =>\n easClient.request(GET_SCHEMAS, {\n where: {\n schema: {\n in: schemaDefs,\n },\n },\n }),\n })\n\n if (!schemas || schemas.length === 0) {\n throw new Error(`No schemas found`)\n }\n\n for (const schema of schemas) {\n const modelId = Array.from(schemaDefsByModelName.values()).find(\n ({ schemaDef }) => schemaDef === schema.schema,\n )?.dbId\n\n if (!modelId) {\n throw new Error(`No modelId found for schema ${schema.schema}`)\n }\n\n await appDb\n .insert(modelUids)\n .values({\n modelId,\n uid: schema.id,\n })\n .onConflictDoNothing()\n }\n }\n\n _addModelsToDb().then((hasModelsInDb) => {\n sendBack({ type: GLOBAL_ADDING_MODELS_TO_DB_SUCCESS })\n if (hasModelsInDb) {\n }\n for (const [modelName, model] of Object.entries(models)) {\n const service = context[`${modelName}Service`]\n service.send({ type: 'modelsFound' })\n }\n eventEmitter.emit('syncDbWithEas')\n return\n })\n\n return () => { }\n})\n"],"names":["models","modelsTable"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
9
9
|
import { appState } from '../../../seedSchema/AppStateSchema.js';
|
|
10
10
|
import '../../../seedSchema/ModelSchema.js';
|
|
11
11
|
import '../../../seedSchema/ModelUidSchema.js';
|
|
12
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
12
13
|
import '../../../seedSchema/ConfigSchema.js';
|
|
13
14
|
import { like } from 'drizzle-orm';
|
|
14
15
|
import { fetchSchemaUids } from '../../../stores/eas.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize.js","sources":["../../../../../../src/services/global/actors/initialize.ts"],"sourcesContent":["import { EventObject, fromCallback, Subscription, waitFor } from 'xstate'\nimport { getEnvironment } from '@/helpers/environment'\nimport {\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { fetchSchemaUids } from '@/stores/eas'\n\nconst logger = debug('seedSdk:services:global:actors:initialize')\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, EventObject>\n>(({ sendBack, input: { event, context } }) => {\n const { internalService, models, endpoints, arweaveDomain, addresses, } = context\n\n if (!internalService) {\n throw new Error('internalService is required')\n }\n\n if (!models) {\n throw new Error('models is required')\n }\n\n const environment = getEnvironment()\n let easSubscription: Subscription | undefined\n\n const _initInternal = async (): Promise<void> => {\n internalService.send({\n type: 'init',\n endpoints,\n addresses,\n arweaveDomain,\n })\n await waitFor(internalService, (snapshot) => {\n logger('snapshot.value:', snapshot.value)\n return snapshot.value === 'ready'\n })\n logger('[sdk] [internal] sending init')\n }\n\n const _initAllItemsServices = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n const payloadObj: {\n create: Record<string, any>,\n restore: Record<string, any>,\n } = {\n create: {},\n restore: {},\n }\n\n const modelNamesRestored: string[] = []\n\n if (rows && rows.length > 0) {\n for (const row of rows) {\n const modelName = row.key.replace('snapshot__', '')\n payloadObj.restore[modelName] = JSON.parse(row.value)\n modelNamesRestored.push(modelName)\n }\n }\n for (const [modelName, ModelClass] of Object.entries(models)) {\n if (!modelNamesRestored.includes(modelName)) {\n payloadObj.create[modelName] = ModelClass\n }\n }\n sendBack({\n type: GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n ...payloadObj,\n })\n }\n\n const _initEas = async (): Promise<void> => {\n await fetchSchemaUids()\n }\n\n _initInternal()\n .then(() => {\n return _initAllItemsServices()\n })\n .then(() => {\n return _initEas()\n })\n .then(() => {\n logger('[global/actors] Internal initialized')\n sendBack({ type: GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY })\n })\n\n\n sendBack({ type: GLOBAL_INITIALIZING_SEND_CONFIG, environment })\n\n return () => {\n easSubscription?.unsubscribe()\n }\n})\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initialize.js","sources":["../../../../../../src/services/global/actors/initialize.ts"],"sourcesContent":["import { EventObject, fromCallback, Subscription, waitFor } from 'xstate'\nimport { getEnvironment } from '@/helpers/environment'\nimport {\n GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY,\n GLOBAL_INITIALIZING_SEND_CONFIG,\n} from '@/services/internal/constants'\nimport debug from 'debug'\nimport { FromCallbackInput, GlobalMachineContext } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\nimport { like } from 'drizzle-orm'\nimport { fetchSchemaUids } from '@/stores/eas'\n\nconst logger = debug('seedSdk:services:global:actors:initialize')\n\nexport const initialize = fromCallback<\n EventObject,\n FromCallbackInput<GlobalMachineContext, EventObject>\n>(({ sendBack, input: { event, context } }) => {\n const { internalService, models, endpoints, arweaveDomain, addresses, } = context\n\n if (!internalService) {\n throw new Error('internalService is required')\n }\n\n if (!models) {\n throw new Error('models is required')\n }\n\n const environment = getEnvironment()\n let easSubscription: Subscription | undefined\n\n const _initInternal = async (): Promise<void> => {\n internalService.send({\n type: 'init',\n endpoints,\n addresses,\n arweaveDomain,\n })\n await waitFor(internalService, (snapshot) => {\n logger('snapshot.value:', snapshot.value)\n return snapshot.value === 'ready'\n })\n logger('[sdk] [internal] sending init')\n }\n\n const _initAllItemsServices = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(appState)\n .where(like(appState.key, 'snapshot__%'))\n\n const payloadObj: {\n create: Record<string, any>,\n restore: Record<string, any>,\n } = {\n create: {},\n restore: {},\n }\n\n const modelNamesRestored: string[] = []\n\n if (rows && rows.length > 0) {\n for (const row of rows) {\n const modelName = row.key.replace('snapshot__', '')\n payloadObj.restore[modelName] = JSON.parse(row.value)\n modelNamesRestored.push(modelName)\n }\n }\n for (const [modelName, ModelClass] of Object.entries(models)) {\n if (!modelNamesRestored.includes(modelName)) {\n payloadObj.create[modelName] = ModelClass\n }\n }\n sendBack({\n type: GLOBAL_INITIALIZING_CREATE_ALL_ITEMS_SERVICES,\n ...payloadObj,\n })\n }\n\n const _initEas = async (): Promise<void> => {\n await fetchSchemaUids()\n }\n\n _initInternal()\n .then(() => {\n return _initAllItemsServices()\n })\n .then(() => {\n return _initEas()\n })\n .then(() => {\n logger('[global/actors] Internal initialized')\n sendBack({ type: GLOBAL_INITIALIZING_INTERNAL_SERVICE_READY })\n })\n\n\n sendBack({ type: GLOBAL_INITIALIZING_SEND_CONFIG, environment })\n\n return () => {\n easSubscription?.unsubscribe()\n }\n})\n"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
7
7
|
import { appState } from '../../../seedSchema/AppStateSchema.js';
|
|
8
8
|
import '../../../seedSchema/ModelSchema.js';
|
|
9
9
|
import '../../../seedSchema/ModelUidSchema.js';
|
|
10
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
10
11
|
import '../../../seedSchema/ConfigSchema.js';
|
|
11
12
|
import debug from 'debug';
|
|
12
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveConfig.js","sources":["../../../../../../src/services/internal/actors/saveConfig.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_SAVING_CONFIG_SUCCESS } from '@/services/internal/constants'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { appState } from '@/seedSchema'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:services:internal:actors:saveConfig')\n\nexport const saveConfig = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n\n logger('saveConfig starting')\n\n const { endpoints, addresses, arweaveDomain } = context\n\n if (!endpoints) {\n throw new Error('saveConfig called with invalid endpoints')\n }\n\n const _saveConfig = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n throw new Error('App DB not found')\n }\n const endpointsValueString = JSON.stringify(endpoints)\n const addressesValueString = JSON.stringify(addresses)\n\n // TODO: Figure out how to define on conflict with multiple rows added\n await appDb\n .insert(appState)\n .values({\n key: 'endpoints',\n value: endpointsValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: endpointsValueString,\n },\n })\n\n if (addresses) {\n await appDb\n .insert(appState)\n .values({\n key: 'addresses',\n value: addressesValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: addressesValueString,\n },\n })\n }\n\n await appDb\n .insert(appState)\n .values({\n key: 'arweaveDomain',\n value: arweaveDomain || 'arweave.net',\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: arweaveDomain || 'arweave.net',\n },\n })\n }\n\n _saveConfig().then(() => {\n logger('saveConfig success')\n return sendBack({ type: INTERNAL_SAVING_CONFIG_SUCCESS })\n })\n\n return () => { }\n})\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveConfig.js","sources":["../../../../../../src/services/internal/actors/saveConfig.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { INTERNAL_SAVING_CONFIG_SUCCESS } from '@/services/internal/constants'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { FromCallbackInput, InternalMachineContext } from '@/types'\nimport { appState } from '@/seedSchema'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:services:internal:actors:saveConfig')\n\nexport const saveConfig = fromCallback<\n EventObject,\n FromCallbackInput<InternalMachineContext>\n>(({ sendBack, input: { context } }) => {\n\n logger('saveConfig starting')\n\n const { endpoints, addresses, arweaveDomain } = context\n\n if (!endpoints) {\n throw new Error('saveConfig called with invalid endpoints')\n }\n\n const _saveConfig = async (): Promise<void> => {\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n throw new Error('App DB not found')\n }\n const endpointsValueString = JSON.stringify(endpoints)\n const addressesValueString = JSON.stringify(addresses)\n\n // TODO: Figure out how to define on conflict with multiple rows added\n await appDb\n .insert(appState)\n .values({\n key: 'endpoints',\n value: endpointsValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: endpointsValueString,\n },\n })\n\n if (addresses) {\n await appDb\n .insert(appState)\n .values({\n key: 'addresses',\n value: addressesValueString,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: addressesValueString,\n },\n })\n }\n\n await appDb\n .insert(appState)\n .values({\n key: 'arweaveDomain',\n value: arweaveDomain || 'arweave.net',\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value: arweaveDomain || 'arweave.net',\n },\n })\n }\n\n _saveConfig().then(() => {\n logger('saveConfig success')\n return sendBack({ type: INTERNAL_SAVING_CONFIG_SUCCESS })\n })\n\n return () => { }\n})\n"],"names":[],"mappings":";;;;;;;;;;;;;AAOA,MAAM,MAAM,GAAG,KAAK,CAAC,6CAA6C,CAAC;AAE5D,MAAM,UAAU,GAAG,YAAY,CAGpC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAI;IAErC,MAAM,CAAC,qBAAqB,CAAC;IAE7B,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO;IAEvD,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC;IAC7D;AAEA,IAAA,MAAM,WAAW,GAAG,YAA0B;AAC5C,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAE/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;QACrC;QACA,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACtD,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;AAGtD,QAAA,MAAM;aACH,MAAM,CAAC,QAAQ;AACf,aAAA,MAAM,CAAC;AACN,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,KAAK,EAAE,oBAAoB;SAC5B;AACA,aAAA,kBAAkB,CAAC;YAClB,MAAM,EAAE,QAAQ,CAAC,GAAG;AACpB,YAAA,GAAG,EAAE;AACL,gBAAA,KAAK,EAAE,oBAAoB;AAC1B,aAAA;AACF,SAAA,CAAC;QAEJ,IAAI,SAAS,EAAE;AACb,YAAA,MAAM;iBACH,MAAM,CAAC,QAAQ;AACjB,iBAAA,MAAM,CAAC;AACN,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,KAAK,EAAE,oBAAoB;aAC5B;AACA,iBAAA,kBAAkB,CAAC;gBAClB,MAAM,EAAE,QAAQ,CAAC,GAAG;AACpB,gBAAA,GAAG,EAAE;AACH,oBAAA,KAAK,EAAE,oBAAoB;AAC5B,iBAAA;AACF,aAAA,CAAC;QACJ;AAEA,QAAA,MAAM;aACH,MAAM,CAAC,QAAQ;AACf,aAAA,MAAM,CAAC;AACN,YAAA,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,aAAa,IAAI,aAAa;SACtC;AACA,aAAA,kBAAkB,CAAC;YAClB,MAAM,EAAE,QAAQ,CAAC,GAAG;AACpB,YAAA,GAAG,EAAE;gBACH,KAAK,EAAE,aAAa,IAAI,aAAa;AACtC,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC;AAEH,IAAA,WAAW,EAAE,CAAC,IAAI,CAAC,MAAK;QACtB,MAAM,CAAC,oBAAoB,CAAC;QAC5B,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,CAAC;AAC3D,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAK,EAAG,CAAC;AAClB,CAAC;;;;"}
|
|
@@ -5,6 +5,7 @@ import '../../../seedSchema/MetadataSchema.js';
|
|
|
5
5
|
import '../../../seedSchema/AppStateSchema.js';
|
|
6
6
|
import { models } from '../../../seedSchema/ModelSchema.js';
|
|
7
7
|
import { modelUids } from '../../../seedSchema/ModelUidSchema.js';
|
|
8
|
+
import '../../../seedSchema/PropertyUidSchema.js';
|
|
8
9
|
import '../../../seedSchema/ConfigSchema.js';
|
|
9
10
|
import { BaseDb } from '../../../db/Db/BaseDb.js';
|
|
10
11
|
import { eq } from 'drizzle-orm';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preparePublishRequestData.js","sources":["../../../../../../src/services/publish/actors/preparePublishRequestData.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const preparePublishRequestData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _preparePublishRequestData = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n return false\n }\n\n const appDb = BaseDb.getAppDb()\n\n const modelsRows = await appDb\n .select({\n modelName: modelsTable.name,\n schemaUid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelUids.modelId, modelsTable.id))\n .where(eq(modelsTable.name, 'Version'))\n\n if (!modelsRows || modelsRows.length === 0) {\n sendBack({ type: 'preparePublishRequestDataError' })\n return false\n }\n\n const versionSchemaUid = modelsRows[0].schemaUid\n\n const editedProperties = await item.getEditedProperties()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas({\n sdkConfigDb: appDb,\n })\n\n // const dataEncoder = new SchemaEncoder(modelProperty.schemaDefinition,)\n // const encodedData = dataEncoder.encodeData(data,)\n //\n // itemData.listOfAttestations.push({\n // schema : modelProperty.schemaUid,\n // data : [\n // {\n // ...defaultAttestationData,\n // data : encodedData,\n // },\n // ],\n // },)\n\n const publishRequestData = {\n seedIsRevocable: false,\n seedSchemaUid: item.schemaUid,\n seedUid: item.seedUid,\n versionSchemaUid,\n versionUid: item.latestVersionUid,\n listOfAttestations: [],\n }\n\n sendBack({\n type: 'updateContext',\n ...publishRequestData,\n })\n\n return true\n }\n\n _preparePublishRequestData().then((success) => {\n if (success) {\n sendBack({ type: 'preparePublishRequestDataSuccess' })\n }\n })\n})\n"],"names":["modelsTable"],"mappings":"
|
|
1
|
+
{"version":3,"file":"preparePublishRequestData.js","sources":["../../../../../../src/services/publish/actors/preparePublishRequestData.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput, PublishMachineContext } from '@/types'\nimport { models as modelsTable, modelUids } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { BaseItem } from '@/Item/BaseItem'\n\nexport const preparePublishRequestData = fromCallback<\n EventObject,\n FromCallbackInput<PublishMachineContext>\n>(({ sendBack, input: { context } }) => {\n const { localId } = context\n\n const _preparePublishRequestData = async () => {\n const item = await BaseItem.find({ seedLocalId: localId })\n\n if (!item) {\n return false\n }\n\n const appDb = BaseDb.getAppDb()\n\n const modelsRows = await appDb\n .select({\n modelName: modelsTable.name,\n schemaUid: modelUids.uid,\n })\n .from(modelsTable)\n .leftJoin(modelUids, eq(modelUids.modelId, modelsTable.id))\n .where(eq(modelsTable.name, 'Version'))\n\n if (!modelsRows || modelsRows.length === 0) {\n sendBack({ type: 'preparePublishRequestDataError' })\n return false\n }\n\n const versionSchemaUid = modelsRows[0].schemaUid\n\n const editedProperties = await item.getEditedProperties()\n\n const { modelSchemas, schemaStringToModelRecord } = await getModelSchemas({\n sdkConfigDb: appDb,\n })\n\n // const dataEncoder = new SchemaEncoder(modelProperty.schemaDefinition,)\n // const encodedData = dataEncoder.encodeData(data,)\n //\n // itemData.listOfAttestations.push({\n // schema : modelProperty.schemaUid,\n // data : [\n // {\n // ...defaultAttestationData,\n // data : encodedData,\n // },\n // ],\n // },)\n\n const publishRequestData = {\n seedIsRevocable: false,\n seedSchemaUid: item.schemaUid,\n seedUid: item.seedUid,\n versionSchemaUid,\n versionUid: item.latestVersionUid,\n listOfAttestations: [],\n }\n\n sendBack({\n type: 'updateContext',\n ...publishRequestData,\n })\n\n return true\n }\n\n _preparePublishRequestData().then((success) => {\n if (success) {\n sendBack({ type: 'preparePublishRequestDataSuccess' })\n }\n })\n})\n"],"names":["modelsTable"],"mappings":";;;;;;;;;;;;;;AAQO,MAAM,yBAAyB,GAAG,YAAY,CAGnD,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,KAAI;AACrC,IAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;AAE3B,IAAA,MAAM,0BAA0B,GAAG,YAAW;AAC5C,QAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAE1D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;QAE/B,MAAM,UAAU,GAAG,MAAM;AACtB,aAAA,MAAM,CAAC;YACN,SAAS,EAAEA,MAAW,CAAC,IAAI;YAC3B,SAAS,EAAE,SAAS,CAAC,GAAG;SACzB;aACA,IAAI,CAACA,MAAW;AAChB,aAAA,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAEA,MAAW,CAAC,EAAE,CAAC;aACzD,KAAK,CAAC,EAAE,CAACA,MAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,YAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC;AACpD,YAAA,OAAO,KAAK;QACd;QAEA,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;AAEhD,QAAyB,MAAM,IAAI,CAAC,mBAAmB;QAEvD,MAAM,EAAE,YAAY,EAAE,yBAAyB,EAAE,GAAG,MAAM,eAAe,CAExE,CAAC;;;;;;;;;;;;;AAeF,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,IAAI,CAAC,SAAS;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,gBAAgB;YAChB,UAAU,EAAE,IAAI,CAAC,gBAAgB;AACjC,YAAA,kBAAkB,EAAE,EAAE;SACvB;AAED,QAAA,QAAQ,CAAC;AACP,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,GAAG,kBAAkB;AACtB,SAAA,CAAC;AAEF,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;QAC5C,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC;QACxD;AACF,IAAA,CAAC,CAAC;AACJ,CAAC;;;;"}
|