@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
package/dist/bin.js
CHANGED
|
@@ -14,13 +14,6 @@ import { PathResolver } from './src/node/PathResolver.js';
|
|
|
14
14
|
import { createDrizzleSchemaFilesFromConfig } from './src/node/codegen/drizzle.js';
|
|
15
15
|
import { rimrafSync } from 'rimraf';
|
|
16
16
|
import { getTsImport } from './src/node/helpers/index.js';
|
|
17
|
-
import { seeds } from './src/seedSchema/SeedSchema.js';
|
|
18
|
-
import { versions } from './src/seedSchema/VersionSchema.js';
|
|
19
|
-
import { metadata } from './src/seedSchema/MetadataSchema.js';
|
|
20
|
-
import { appState } from './src/seedSchema/AppStateSchema.js';
|
|
21
|
-
import { models } from './src/seedSchema/ModelSchema.js';
|
|
22
|
-
import { modelUids } from './src/seedSchema/ModelUidSchema.js';
|
|
23
|
-
import { config } from './src/seedSchema/ConfigSchema.js';
|
|
24
17
|
import { commandExists } from './src/helpers/scripts.js';
|
|
25
18
|
|
|
26
19
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -62,7 +55,7 @@ function copyDirectoryRecursively(sourceDir, targetDir) {
|
|
|
62
55
|
}
|
|
63
56
|
}
|
|
64
57
|
}
|
|
65
|
-
const seedDatabase = async (seedDataPath) => {
|
|
58
|
+
const seedDatabase = async (seedDataPath, dotSeedDir) => {
|
|
66
59
|
console.log('[Seed Protocol] Running seed script');
|
|
67
60
|
try {
|
|
68
61
|
// Import better-sqlite3 dynamically to handle optional dependency
|
|
@@ -72,7 +65,7 @@ const seedDatabase = async (seedDataPath) => {
|
|
|
72
65
|
const drizzleModule = await import('drizzle-orm/better-sqlite3');
|
|
73
66
|
const betterSqlite3Module = await import('better-sqlite3');
|
|
74
67
|
drizzle = drizzleModule.drizzle;
|
|
75
|
-
Database = betterSqlite3Module;
|
|
68
|
+
Database = betterSqlite3Module.default;
|
|
76
69
|
}
|
|
77
70
|
catch (importError) {
|
|
78
71
|
console.error('[Seed Protocol] Error: better-sqlite3 is required for seeding the database.');
|
|
@@ -82,37 +75,45 @@ const seedDatabase = async (seedDataPath) => {
|
|
|
82
75
|
// Read the seed data file
|
|
83
76
|
const seedData = JSON.parse(fs.readFileSync(seedDataPath, 'utf-8'));
|
|
84
77
|
// Connect to the database
|
|
85
|
-
const
|
|
86
|
-
const
|
|
87
|
-
const
|
|
78
|
+
const actualDotSeedDir = dotSeedDir || pathResolver.getDotSeedDir();
|
|
79
|
+
const dbDir = path.join(actualDotSeedDir, 'db');
|
|
80
|
+
const dbPath = path.join(dbDir, 'app_db.sqlite3');
|
|
81
|
+
// Ensure the database directory exists
|
|
82
|
+
if (!fs.existsSync(dbDir)) {
|
|
83
|
+
fs.mkdirSync(dbDir, { recursive: true });
|
|
84
|
+
}
|
|
85
|
+
const sqlite = new Database(dbPath);
|
|
88
86
|
const db = drizzle(sqlite);
|
|
87
|
+
// Import the generated schema files
|
|
88
|
+
const schemaPath = path.join(actualDotSeedDir, 'schema');
|
|
89
|
+
const { appState: generatedAppState, config: generatedConfig, metadata: generatedMetadata, models: generatedModels, modelUids: generatedModelUids, seeds: generatedSeeds, versions: generatedVersions } = await import(schemaPath + '/index.ts');
|
|
89
90
|
// Seed each table based on the provided data
|
|
90
91
|
if (seedData.appState && seedData.appState.length > 0) {
|
|
91
|
-
await db.insert(
|
|
92
|
+
await db.insert(generatedAppState).values(seedData.appState);
|
|
92
93
|
console.log('Seeded appState table');
|
|
93
94
|
}
|
|
94
95
|
if (seedData.config && seedData.config.length > 0) {
|
|
95
|
-
await db.insert(
|
|
96
|
+
await db.insert(generatedConfig).values(seedData.config);
|
|
96
97
|
console.log('Seeded config table');
|
|
97
98
|
}
|
|
98
99
|
if (seedData.models && seedData.models.length > 0) {
|
|
99
|
-
await db.insert(
|
|
100
|
+
await db.insert(generatedModels).values(seedData.models);
|
|
100
101
|
console.log('Seeded models table');
|
|
101
102
|
}
|
|
102
103
|
if (seedData.modelUids && seedData.modelUids.length > 0) {
|
|
103
|
-
await db.insert(
|
|
104
|
+
await db.insert(generatedModelUids).values(seedData.modelUids);
|
|
104
105
|
console.log('Seeded modelUids table');
|
|
105
106
|
}
|
|
106
107
|
if (seedData.metadata && seedData.metadata.length > 0) {
|
|
107
|
-
await db.insert(
|
|
108
|
+
await db.insert(generatedMetadata).values(seedData.metadata);
|
|
108
109
|
console.log('Seeded metadata table');
|
|
109
110
|
}
|
|
110
111
|
if (seedData.seeds && seedData.seeds.length > 0) {
|
|
111
|
-
await db.insert(
|
|
112
|
+
await db.insert(generatedSeeds).values(seedData.seeds);
|
|
112
113
|
console.log('Seeded seeds table');
|
|
113
114
|
}
|
|
114
115
|
if (seedData.versions && seedData.versions.length > 0) {
|
|
115
|
-
await db.insert(
|
|
116
|
+
await db.insert(generatedVersions).values(seedData.versions);
|
|
116
117
|
console.log('Seeded versions table');
|
|
117
118
|
}
|
|
118
119
|
console.log('[Seed Protocol] Successfully seeded database');
|
|
@@ -162,7 +163,13 @@ const init = (args) => {
|
|
|
162
163
|
}
|
|
163
164
|
// Remove dotSeedDir to start fresh each time
|
|
164
165
|
if (fs.existsSync(dotSeedDir)) {
|
|
165
|
-
|
|
166
|
+
try {
|
|
167
|
+
fs.rmSync(dotSeedDir, { recursive: true, force: true });
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
// If rmSync fails, try using rimraf as fallback
|
|
171
|
+
rimrafSync(dotSeedDir, { force: true });
|
|
172
|
+
}
|
|
166
173
|
}
|
|
167
174
|
console.log('[Seed Protocol] dotSeedDir', dotSeedDir);
|
|
168
175
|
const drizzleKitCommand = `npx --yes tsx ${drizzleKitPath}`;
|
|
@@ -170,19 +177,29 @@ const init = (args) => {
|
|
|
170
177
|
try {
|
|
171
178
|
// Get all file names in the directory
|
|
172
179
|
const files = fs.readdirSync(dirPath);
|
|
173
|
-
// Filter for .ts files excluding index.ts
|
|
174
|
-
const
|
|
175
|
-
|
|
180
|
+
// Filter for .ts files excluding index.ts and only include actual schema files
|
|
181
|
+
const validSchemaFiles = [
|
|
182
|
+
'AppStateSchema',
|
|
183
|
+
'ConfigSchema',
|
|
184
|
+
'MetadataSchema',
|
|
185
|
+
'ModelSchema',
|
|
186
|
+
'ModelUidSchema',
|
|
187
|
+
'PropertyUidSchema',
|
|
188
|
+
'SeedSchema',
|
|
189
|
+
'VersionSchema'
|
|
190
|
+
];
|
|
191
|
+
const tsFiles = files.filter((file) => file.endsWith('.ts') &&
|
|
192
|
+
file !== 'index.ts' &&
|
|
193
|
+
validSchemaFiles.includes(path.basename(file, '.ts')));
|
|
194
|
+
// Check if index.ts exists, create it if it doesn't
|
|
176
195
|
const indexFilePath = path.join(dirPath, 'index.ts');
|
|
177
|
-
|
|
178
|
-
|
|
196
|
+
let indexContent = '';
|
|
197
|
+
if (fs.existsSync(indexFilePath)) {
|
|
198
|
+
indexContent = fs.readFileSync(indexFilePath, 'utf8');
|
|
179
199
|
}
|
|
180
|
-
|
|
181
|
-
console.
|
|
182
|
-
return;
|
|
200
|
+
else {
|
|
201
|
+
console.log(`Creating index.ts in directory: ${dirPath}`);
|
|
183
202
|
}
|
|
184
|
-
// Read the content of index.ts
|
|
185
|
-
const indexContent = fs.readFileSync(indexFilePath, 'utf8');
|
|
186
203
|
// Create export statements for each .ts file
|
|
187
204
|
const exportStatements = tsFiles.map((file) => `export * from './${path.basename(file, '.ts')}';`);
|
|
188
205
|
// Check if each export statement is already present in index.ts
|
|
@@ -219,24 +236,44 @@ const init = (args) => {
|
|
|
219
236
|
rimrafSync(`${outputDirPath}/**/index.ts`, { glob: true });
|
|
220
237
|
};
|
|
221
238
|
const updateSchema = async (pathToConfig, pathToMeta) => {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
239
|
+
try {
|
|
240
|
+
// Create a project-specific Drizzle Kit configuration
|
|
241
|
+
const projectConfigPath = path.join(dotSeedDir, 'drizzle.config.ts');
|
|
242
|
+
const projectConfig = `import { defineConfig } from 'drizzle-kit'
|
|
243
|
+
|
|
244
|
+
export default defineConfig({
|
|
245
|
+
schema: '${path.join(dotSeedDir, 'schema')}',
|
|
246
|
+
dialect: 'sqlite',
|
|
247
|
+
out: '${path.join(dotSeedDir, 'db')}',
|
|
248
|
+
dbCredentials: {
|
|
249
|
+
url: '${path.join(dotSeedDir, 'db', 'app_db.sqlite3')}',
|
|
250
|
+
},
|
|
251
|
+
})`;
|
|
252
|
+
fs.writeFileSync(projectConfigPath, projectConfig);
|
|
253
|
+
if (!fs.existsSync(pathToMeta)) {
|
|
254
|
+
console.log(`${drizzleKitCommand} generate --config=${projectConfigPath}`);
|
|
255
|
+
execSync(`${drizzleKitCommand} generate --config=${projectConfigPath}`, { stdio: 'inherit' });
|
|
256
|
+
}
|
|
257
|
+
console.log(`${drizzleKitCommand} migrate --config=${projectConfigPath}`);
|
|
258
|
+
execSync(`${drizzleKitCommand} migrate --config=${projectConfigPath}`, { stdio: 'inherit' });
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
console.error('[Seed Protocol] Error running Drizzle Kit commands:', error);
|
|
262
|
+
throw error;
|
|
225
263
|
}
|
|
226
|
-
execSync(`${drizzleKitCommand} migrate --config=${pathToConfig}`);
|
|
227
264
|
};
|
|
228
265
|
const runCommands = async () => {
|
|
229
266
|
const tsxExists = commandExists('tsx');
|
|
230
267
|
if (!tsxExists) {
|
|
231
268
|
execSync(`npm install -g tsx`, { stdio: 'inherit' });
|
|
232
269
|
}
|
|
233
|
-
await createDrizzleSchemaFilesFromConfig(configFilePath,
|
|
270
|
+
await createDrizzleSchemaFilesFromConfig(configFilePath, appSchemaDir);
|
|
234
271
|
ensureIndexExports(appSchemaDir);
|
|
235
272
|
await updateSchema(drizzleDbConfigPath, appMetaDir);
|
|
236
273
|
const seedDataFilePath = path.join(__dirname, 'seedData.json');
|
|
237
|
-
await seedDatabase(seedDataFilePath);
|
|
274
|
+
await seedDatabase(seedDataFilePath, dotSeedDir);
|
|
238
275
|
};
|
|
239
|
-
copyDirectoryRecursively(path.join(pathResolver.getSdkRootDir(), 'seedSchema'), path.join(dotSeedDir, 'schema'));
|
|
276
|
+
copyDirectoryRecursively(path.join(pathResolver.getSdkRootDir(), 'src', 'seedSchema'), path.join(dotSeedDir, 'schema'));
|
|
240
277
|
// copyDirectoryRecursively(
|
|
241
278
|
// path.join(pathResolver.getSdkRootDir(), 'node', 'codegen'),
|
|
242
279
|
// path.join(dotSeedDir, 'codegen'),
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sources":["../../scripts/bin.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from 'path'\nimport fs from 'fs'\nimport { execSync, } from 'child_process'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport process from 'node:process'\nimport '@/node/helpers/EasClient'\nimport '@/node/helpers/QueryClient'\nimport '@/node/helpers/FileManager'\nimport '@/node/helpers/ArweaveClient'\nimport { INIT_SCRIPT_SUCCESS_MESSAGE, SCHEMA_TS } from '@/helpers/constants'\nimport { PathResolver } from '@/node/PathResolver'\nimport { createDrizzleSchemaFilesFromConfig } from '@/node/codegen'\nimport { rimrafSync } from 'rimraf'\nimport { getTsImport } from '@/node/helpers'\nimport { ModelClassType } from '@/types/model'\nimport { appState, config, metadata, models, modelUids, seeds, versions } from '@/seedSchema'\nimport { commandExists } from '@/helpers/scripts'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\nlet a\n\na = process.argv.splice(2)\nconst pathResolver = PathResolver.getInstance()\n\n/**\n * Copy a directory and all its contents recursively\n * @param {string} sourceDir - Path to the source directory\n * @param {string} targetDir - Path to the target directory\n */\nfunction copyDirectoryRecursively(sourceDir: string, targetDir: string) {\n // Create the target directory if it doesn't exist\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n\n // Read all entries in the source directory\n const entries = fs.readdirSync(sourceDir);\n\n // Process each entry\n for (const entry of entries) {\n // Skip __tests__ directories to prevent recursive copying\n if (entry === '__tests__') {\n console.log(`Skipping __tests__ directory: ${path.join(sourceDir, entry)}`);\n continue;\n }\n\n const sourcePath = path.join(sourceDir, entry);\n const targetPath = path.join(targetDir, entry);\n \n // Check if the entry is a file or directory\n const stats = fs.statSync(sourcePath);\n \n if (stats.isFile()) {\n // Copy the file directly\n fs.copyFileSync(sourcePath, targetPath);\n console.log(`Copied file: ${sourcePath} → ${targetPath}`);\n } \n else if (stats.isDirectory()) {\n // Recursively copy the subdirectory\n copyDirectoryRecursively(sourcePath, targetPath);\n }\n }\n}\n\nconst seedDatabase = async (seedDataPath: string) => {\n console.log('[Seed Protocol] Running seed script')\n\n try {\n // Import better-sqlite3 dynamically to handle optional dependency\n let drizzle: any\n let Database: any\n \n try {\n const drizzleModule = await import('drizzle-orm/better-sqlite3')\n const betterSqlite3Module = await import('better-sqlite3')\n drizzle = drizzleModule.drizzle\n Database = betterSqlite3Module\n } catch (importError) {\n console.error('[Seed Protocol] Error: better-sqlite3 is required for seeding the database.')\n console.error('[Seed Protocol] Please install better-sqlite3: npm install better-sqlite3')\n process.exit(1)\n }\n \n // Read the seed data file\n const seedData = JSON.parse(fs.readFileSync(seedDataPath, 'utf-8'))\n \n // Connect to the database\n const dotSeedDir = pathResolver.getDotSeedDir()\n const dbPath = path.join(dotSeedDir, 'db', 'app_db.sqlite3')\n const sqlite = new Database.default(dbPath)\n const db = drizzle(sqlite)\n \n // Seed each table based on the provided data\n if (seedData.appState && seedData.appState.length > 0) {\n await db.insert(appState).values(seedData.appState)\n console.log('Seeded appState table')\n }\n \n if (seedData.config && seedData.config.length > 0) {\n await db.insert(config).values(seedData.config)\n console.log('Seeded config table')\n }\n \n if (seedData.models && seedData.models.length > 0) {\n await db.insert(models).values(seedData.models)\n console.log('Seeded models table')\n }\n \n if (seedData.modelUids && seedData.modelUids.length > 0) {\n await db.insert(modelUids).values(seedData.modelUids)\n console.log('Seeded modelUids table')\n }\n \n if (seedData.metadata && seedData.metadata.length > 0) {\n await db.insert(metadata).values(seedData.metadata)\n console.log('Seeded metadata table')\n }\n \n if (seedData.seeds && seedData.seeds.length > 0) {\n await db.insert(seeds).values(seedData.seeds)\n console.log('Seeded seeds table')\n }\n \n if (seedData.versions && seedData.versions.length > 0) {\n await db.insert(versions).values(seedData.versions)\n console.log('Seeded versions table')\n }\n \n console.log('[Seed Protocol] Successfully seeded database')\n } catch (error) {\n console.error('[Seed Protocol] Error seeding database:', error)\n process.exit(1)\n }\n}\n\nconst init = (args: string[],) => {\n console.log('args:', args)\n\n if (args && args.length) {\n if (args[0] === 'init') {\n console.log('[Seed Protocol] Running init script')\n\n let appFilesDirPath = args[2] || undefined\n let schemaFileDir = args[1]\n\n if (schemaFileDir && schemaFileDir.startsWith('.')) {\n const relativePath = schemaFileDir.replace('./', '')\n if (!process.cwd().includes(relativePath)) {\n schemaFileDir = path.resolve(schemaFileDir,)\n }\n if (process.cwd().includes(relativePath)) {\n schemaFileDir = process.cwd()\n }\n }\n\n if (!schemaFileDir && !process.cwd().includes('seed-protocol-sdk')) {\n schemaFileDir = process.cwd()\n }\n\n console.log('[Seed Protocol] schemaFileDir', schemaFileDir)\n\n if (!schemaFileDir) {\n // Use the new config file finding logic\n const foundConfigFile = pathResolver.findConfigFile()\n if (foundConfigFile) {\n schemaFileDir = path.dirname(foundConfigFile)\n } else {\n console.error('No config file found. Please create a seed.config.ts, seed.schema.ts, or schema.ts file in your project root.')\n return\n }\n }\n\n const {\n dotSeedDir,\n appSchemaDir,\n appMetaDir,\n drizzleDbConfigPath,\n drizzleKitPath,\n sdkRootDir,\n } = pathResolver.getAppPaths(schemaFileDir)\n\n // Find the actual config file in the schema file directory\n const configFilePath = pathResolver.findConfigFile(schemaFileDir)\n if (!configFilePath) {\n console.error('Config file not found in the specified directory.')\n return\n }\n\n // Remove dotSeedDir to start fresh each time\n if (fs.existsSync(dotSeedDir)) {\n fs.rmSync(dotSeedDir, { recursive: true, force: true })\n }\n\n console.log('[Seed Protocol] dotSeedDir', dotSeedDir)\n\n const tsconfigArg = `--tsconfig ${sdkRootDir}/tsconfig.json`\n\n const drizzleKitCommand = `npx --yes tsx ${drizzleKitPath}`\n\n const ensureIndexExports = (dirPath: string): void => {\n try {\n // Get all file names in the directory\n const files = fs.readdirSync(dirPath)\n\n // Filter for .ts files excluding index.ts\n const tsFiles = files.filter(\n (file) => file.endsWith('.ts') && file !== 'index.ts',\n )\n\n // Check if index.ts exists\n const indexFilePath = path.join(dirPath, 'index.ts')\n try {\n fs.accessSync(indexFilePath)\n } catch (error) {\n console.error(`index.ts not found in the directory: ${dirPath}`)\n return\n }\n\n // Read the content of index.ts\n const indexContent = fs.readFileSync(indexFilePath, 'utf8')\n\n // Create export statements for each .ts file\n const exportStatements = tsFiles.map(\n (file) => `export * from './${path.basename(file, '.ts')}';`,\n )\n\n // Check if each export statement is already present in index.ts\n const missingExports = exportStatements.filter(\n (statement) => !indexContent.includes(statement),\n )\n\n if (missingExports.length > 0) {\n // Append missing export statements to index.ts\n const newContent =\n indexContent + '\\n' + missingExports.join('\\n') + '\\n'\n fs.writeFileSync(indexFilePath, newContent, 'utf8')\n console.log(\n `Updated index.ts with missing exports:\\n${missingExports.join('\\n')}`,\n )\n } else {\n console.log('All exports are already present in index.ts')\n }\n } catch (error) {\n console.error(`Error processing directory: ${dirPath}`, error)\n }\n }\n\n const copyDotSeedFilesToAppFiles = async (_appFilesDirPath: string) => {\n console.log('[Seed Protocol] Copying dot seed files to app files')\n const { endpoints } = await getTsImport<{\n models: Record<string, ModelClassType>,\n endpoints: Record<string, string>\n }>(configFilePath)\n\n const outputDirPath = endpoints.localOutputDir || _appFilesDirPath\n\n const exists = await fs.promises.access(outputDirPath).then(() => true).catch(() => false)\n if (exists) {\n await fs.promises.rm(outputDirPath, { recursive: true, force: true })\n }\n \n console.log(`[Seed Protocol] making dir at ${outputDirPath}`)\n fs.mkdirSync(outputDirPath, { recursive: true })\n console.log('[Seed Protocol] copying app files')\n \n // Use copyDirectoryRecursively instead of fs.cpSync to exclude __tests__ directories\n copyDirectoryRecursively(dotSeedDir, outputDirPath)\n \n console.log('[Seed Protocol] removing sqlite3 files and index.ts files')\n rimrafSync(`${outputDirPath}/**/*.sqlite3`, { glob: true })\n rimrafSync(`${outputDirPath}/**/index.ts`, { glob: true })\n }\n\n const updateSchema = async (pathToConfig: string, pathToMeta: string) => {\n if (!fs.existsSync(pathToMeta)) {\n console.log(`${drizzleKitCommand} generate --config=${pathToConfig}`)\n execSync(\n `${drizzleKitCommand} generate --config=${pathToConfig}`,\n )\n }\n execSync(`${drizzleKitCommand} migrate --config=${pathToConfig}`)\n }\n\n const runCommands = async () => {\n const tsxExists = commandExists('tsx')\n if (!tsxExists) {\n execSync(`npm install -g tsx`, {stdio: 'inherit'})\n }\n\n await createDrizzleSchemaFilesFromConfig(configFilePath, undefined)\n ensureIndexExports(appSchemaDir!)\n await updateSchema(drizzleDbConfigPath, appMetaDir!)\n const seedDataFilePath = path.join(__dirname, 'seedData.json')\n await seedDatabase(seedDataFilePath)\n }\n\n copyDirectoryRecursively(\n path.join(pathResolver.getSdkRootDir(), 'seedSchema'),\n path.join(dotSeedDir, 'schema'),\n )\n\n // copyDirectoryRecursively(\n // path.join(pathResolver.getSdkRootDir(), 'node', 'codegen'),\n // path.join(dotSeedDir, 'codegen'),\n // )\n\n console.log('copying', configFilePath, path.join(dotSeedDir, 'seed.config.ts'))\n\n fs.copyFileSync(configFilePath, path.join(dotSeedDir, 'seed.config.ts'))\n\n runCommands()\n .then(() => {\n if (!appFilesDirPath) {\n console.log('[Seed Protocol] Finished running init script')\n } else {\n return copyDotSeedFilesToAppFiles(appFilesDirPath)\n }\n })\n .then(() => {\n console.log(INIT_SCRIPT_SUCCESS_MESSAGE)\n })\n } else if (args[0] === 'seed' && args[1]) {\n seedDatabase(args[1])\n } else {\n console.log('Unknown command. Available commands:')\n console.log('init [schemaPath] [appFilesPath] - Initialize the database')\n console.log('seed [seedDataPath] - Seed the database with data from JSON file')\n }\n }\n}\n\nconst calledFrom = pathToFileURL(process.argv[1]).href\n\nconsole.log('calledFrom', calledFrom)\n\nif (\n calledFrom.endsWith('node_modules/.bin/seed') ||\n import.meta.url.endsWith('@seedprotocol/sdk/node/bin.js') ||\n import.meta.url.endsWith('scripts/bin.ts') ||\n import.meta.url.endsWith('dist/bin.js')\n) {\n // module was not imported but called directly\n init(a)\n}\n\nexport { init }\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bin.js","sources":["../../scripts/bin.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from 'path'\nimport fs from 'fs'\nimport { execSync, } from 'child_process'\nimport { fileURLToPath, pathToFileURL } from 'url'\nimport process from 'node:process'\nimport '@/node/helpers/EasClient'\nimport '@/node/helpers/QueryClient'\nimport '@/node/helpers/FileManager'\nimport '@/node/helpers/ArweaveClient'\nimport { INIT_SCRIPT_SUCCESS_MESSAGE, SCHEMA_TS } from '@/helpers/constants'\nimport { PathResolver } from '@/node/PathResolver'\nimport { createDrizzleSchemaFilesFromConfig } from '@/node/codegen'\nimport { rimrafSync } from 'rimraf'\nimport { getTsImport } from '@/node/helpers'\nimport { ModelClassType } from '@/types/model'\nimport { appState, config, metadata, models, modelUids, seeds, versions } from '@/seedSchema'\nimport { commandExists } from '@/helpers/scripts'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\nlet a\n\na = process.argv.splice(2)\nconst pathResolver = PathResolver.getInstance()\n\n/**\n * Copy a directory and all its contents recursively\n * @param {string} sourceDir - Path to the source directory\n * @param {string} targetDir - Path to the target directory\n */\nfunction copyDirectoryRecursively(sourceDir: string, targetDir: string) {\n // Create the target directory if it doesn't exist\n if (!fs.existsSync(targetDir)) {\n fs.mkdirSync(targetDir, { recursive: true });\n }\n\n // Read all entries in the source directory\n const entries = fs.readdirSync(sourceDir);\n\n // Process each entry\n for (const entry of entries) {\n // Skip __tests__ directories to prevent recursive copying\n if (entry === '__tests__') {\n console.log(`Skipping __tests__ directory: ${path.join(sourceDir, entry)}`);\n continue;\n }\n\n const sourcePath = path.join(sourceDir, entry);\n const targetPath = path.join(targetDir, entry);\n \n // Check if the entry is a file or directory\n const stats = fs.statSync(sourcePath);\n \n if (stats.isFile()) {\n // Copy the file directly\n fs.copyFileSync(sourcePath, targetPath);\n console.log(`Copied file: ${sourcePath} → ${targetPath}`);\n } \n else if (stats.isDirectory()) {\n // Recursively copy the subdirectory\n copyDirectoryRecursively(sourcePath, targetPath);\n }\n }\n}\n\nconst seedDatabase = async (seedDataPath: string, dotSeedDir?: string) => {\n console.log('[Seed Protocol] Running seed script')\n\n try {\n // Import better-sqlite3 dynamically to handle optional dependency\n let drizzle: any\n let Database: any\n \n try {\n const drizzleModule = await import('drizzle-orm/better-sqlite3')\n const betterSqlite3Module = await import('better-sqlite3')\n drizzle = drizzleModule.drizzle\n Database = betterSqlite3Module.default\n } catch (importError) {\n console.error('[Seed Protocol] Error: better-sqlite3 is required for seeding the database.')\n console.error('[Seed Protocol] Please install better-sqlite3: npm install better-sqlite3')\n process.exit(1)\n }\n \n // Read the seed data file\n const seedData = JSON.parse(fs.readFileSync(seedDataPath, 'utf-8'))\n \n // Connect to the database\n const actualDotSeedDir = dotSeedDir || pathResolver.getDotSeedDir()\n const dbDir = path.join(actualDotSeedDir, 'db')\n const dbPath = path.join(dbDir, 'app_db.sqlite3')\n \n // Ensure the database directory exists\n if (!fs.existsSync(dbDir)) {\n fs.mkdirSync(dbDir, { recursive: true })\n }\n \n const sqlite = new Database(dbPath)\n const db = drizzle(sqlite)\n \n // Import the generated schema files\n const schemaPath = path.join(actualDotSeedDir, 'schema')\n const { appState: generatedAppState, config: generatedConfig, metadata: generatedMetadata, models: generatedModels, modelUids: generatedModelUids, seeds: generatedSeeds, versions: generatedVersions } = await import(schemaPath + '/index.ts')\n \n // Seed each table based on the provided data\n if (seedData.appState && seedData.appState.length > 0) {\n await db.insert(generatedAppState).values(seedData.appState)\n console.log('Seeded appState table')\n }\n \n if (seedData.config && seedData.config.length > 0) {\n await db.insert(generatedConfig).values(seedData.config)\n console.log('Seeded config table')\n }\n \n if (seedData.models && seedData.models.length > 0) {\n await db.insert(generatedModels).values(seedData.models)\n console.log('Seeded models table')\n }\n \n if (seedData.modelUids && seedData.modelUids.length > 0) {\n await db.insert(generatedModelUids).values(seedData.modelUids)\n console.log('Seeded modelUids table')\n }\n \n if (seedData.metadata && seedData.metadata.length > 0) {\n await db.insert(generatedMetadata).values(seedData.metadata)\n console.log('Seeded metadata table')\n }\n \n if (seedData.seeds && seedData.seeds.length > 0) {\n await db.insert(generatedSeeds).values(seedData.seeds)\n console.log('Seeded seeds table')\n }\n \n if (seedData.versions && seedData.versions.length > 0) {\n await db.insert(generatedVersions).values(seedData.versions)\n console.log('Seeded versions table')\n }\n \n console.log('[Seed Protocol] Successfully seeded database')\n } catch (error) {\n console.error('[Seed Protocol] Error seeding database:', error)\n process.exit(1)\n }\n}\n\nconst init = (args: string[],) => {\n console.log('args:', args)\n\n if (args && args.length) {\n if (args[0] === 'init') {\n console.log('[Seed Protocol] Running init script')\n\n let appFilesDirPath = args[2] || undefined\n let schemaFileDir = args[1]\n\n if (schemaFileDir && schemaFileDir.startsWith('.')) {\n const relativePath = schemaFileDir.replace('./', '')\n if (!process.cwd().includes(relativePath)) {\n schemaFileDir = path.resolve(schemaFileDir,)\n }\n if (process.cwd().includes(relativePath)) {\n schemaFileDir = process.cwd()\n }\n }\n\n if (!schemaFileDir && !process.cwd().includes('seed-protocol-sdk')) {\n schemaFileDir = process.cwd()\n }\n\n console.log('[Seed Protocol] schemaFileDir', schemaFileDir)\n\n if (!schemaFileDir) {\n // Use the new config file finding logic\n const foundConfigFile = pathResolver.findConfigFile()\n if (foundConfigFile) {\n schemaFileDir = path.dirname(foundConfigFile)\n } else {\n console.error('No config file found. Please create a seed.config.ts, seed.schema.ts, or schema.ts file in your project root.')\n return\n }\n }\n\n const {\n dotSeedDir,\n appSchemaDir,\n appMetaDir,\n drizzleDbConfigPath,\n drizzleKitPath,\n sdkRootDir,\n } = pathResolver.getAppPaths(schemaFileDir)\n\n // Find the actual config file in the schema file directory\n const configFilePath = pathResolver.findConfigFile(schemaFileDir)\n if (!configFilePath) {\n console.error('Config file not found in the specified directory.')\n return\n }\n\n // Remove dotSeedDir to start fresh each time\n if (fs.existsSync(dotSeedDir)) {\n try {\n fs.rmSync(dotSeedDir, { recursive: true, force: true })\n } catch (error) {\n // If rmSync fails, try using rimraf as fallback\n rimrafSync(dotSeedDir, { force: true })\n }\n }\n\n console.log('[Seed Protocol] dotSeedDir', dotSeedDir)\n\n const tsconfigArg = `--tsconfig ${sdkRootDir}/tsconfig.json`\n\n const drizzleKitCommand = `npx --yes tsx ${drizzleKitPath}`\n\n const ensureIndexExports = (dirPath: string): void => {\n try {\n // Get all file names in the directory\n const files = fs.readdirSync(dirPath)\n\n // Filter for .ts files excluding index.ts and only include actual schema files\n const validSchemaFiles = [\n 'AppStateSchema',\n 'ConfigSchema', \n 'MetadataSchema',\n 'ModelSchema',\n 'ModelUidSchema',\n 'PropertyUidSchema',\n 'SeedSchema',\n 'VersionSchema'\n ]\n \n const tsFiles = files.filter(\n (file) => file.endsWith('.ts') && \n file !== 'index.ts' && \n validSchemaFiles.includes(path.basename(file, '.ts'))\n )\n\n // Check if index.ts exists, create it if it doesn't\n const indexFilePath = path.join(dirPath, 'index.ts')\n let indexContent = ''\n \n if (fs.existsSync(indexFilePath)) {\n indexContent = fs.readFileSync(indexFilePath, 'utf8')\n } else {\n console.log(`Creating index.ts in directory: ${dirPath}`)\n }\n\n // Create export statements for each .ts file\n const exportStatements = tsFiles.map(\n (file) => `export * from './${path.basename(file, '.ts')}';`,\n )\n\n // Check if each export statement is already present in index.ts\n const missingExports = exportStatements.filter(\n (statement) => !indexContent.includes(statement),\n )\n\n if (missingExports.length > 0) {\n // Append missing export statements to index.ts\n const newContent =\n indexContent + '\\n' + missingExports.join('\\n') + '\\n'\n fs.writeFileSync(indexFilePath, newContent, 'utf8')\n console.log(\n `Updated index.ts with missing exports:\\n${missingExports.join('\\n')}`,\n )\n } else {\n console.log('All exports are already present in index.ts')\n }\n } catch (error) {\n console.error(`Error processing directory: ${dirPath}`, error)\n }\n }\n\n const copyDotSeedFilesToAppFiles = async (_appFilesDirPath: string) => {\n console.log('[Seed Protocol] Copying dot seed files to app files')\n const { endpoints } = await getTsImport<{\n models: Record<string, ModelClassType>,\n endpoints: Record<string, string>\n }>(configFilePath)\n\n const outputDirPath = endpoints.localOutputDir || _appFilesDirPath\n\n const exists = await fs.promises.access(outputDirPath).then(() => true).catch(() => false)\n if (exists) {\n await fs.promises.rm(outputDirPath, { recursive: true, force: true })\n }\n \n console.log(`[Seed Protocol] making dir at ${outputDirPath}`)\n fs.mkdirSync(outputDirPath, { recursive: true })\n console.log('[Seed Protocol] copying app files')\n \n // Use copyDirectoryRecursively instead of fs.cpSync to exclude __tests__ directories\n copyDirectoryRecursively(dotSeedDir, outputDirPath)\n \n console.log('[Seed Protocol] removing sqlite3 files and index.ts files')\n rimrafSync(`${outputDirPath}/**/*.sqlite3`, { glob: true })\n rimrafSync(`${outputDirPath}/**/index.ts`, { glob: true })\n }\n\n const updateSchema = async (pathToConfig: string, pathToMeta: string) => {\n try {\n // Create a project-specific Drizzle Kit configuration\n const projectConfigPath = path.join(dotSeedDir, 'drizzle.config.ts')\n const projectConfig = `import { defineConfig } from 'drizzle-kit'\n\nexport default defineConfig({\n schema: '${path.join(dotSeedDir, 'schema')}',\n dialect: 'sqlite',\n out: '${path.join(dotSeedDir, 'db')}',\n dbCredentials: {\n url: '${path.join(dotSeedDir, 'db', 'app_db.sqlite3')}',\n },\n})`\n \n fs.writeFileSync(projectConfigPath, projectConfig)\n \n if (!fs.existsSync(pathToMeta)) {\n console.log(`${drizzleKitCommand} generate --config=${projectConfigPath}`)\n execSync(\n `${drizzleKitCommand} generate --config=${projectConfigPath}`,\n { stdio: 'inherit' }\n )\n }\n console.log(`${drizzleKitCommand} migrate --config=${projectConfigPath}`)\n execSync(`${drizzleKitCommand} migrate --config=${projectConfigPath}`, { stdio: 'inherit' })\n } catch (error) {\n console.error('[Seed Protocol] Error running Drizzle Kit commands:', error)\n throw error\n }\n }\n\n const runCommands = async () => {\n const tsxExists = commandExists('tsx')\n if (!tsxExists) {\n execSync(`npm install -g tsx`, {stdio: 'inherit'})\n }\n\n await createDrizzleSchemaFilesFromConfig(configFilePath, appSchemaDir)\n ensureIndexExports(appSchemaDir!)\n await updateSchema(drizzleDbConfigPath, appMetaDir!)\n const seedDataFilePath = path.join(__dirname, 'seedData.json')\n await seedDatabase(seedDataFilePath, dotSeedDir)\n }\n\n copyDirectoryRecursively(\n path.join(pathResolver.getSdkRootDir(), 'src', 'seedSchema'),\n path.join(dotSeedDir, 'schema'),\n )\n\n // copyDirectoryRecursively(\n // path.join(pathResolver.getSdkRootDir(), 'node', 'codegen'),\n // path.join(dotSeedDir, 'codegen'),\n // )\n\n console.log('copying', configFilePath, path.join(dotSeedDir, 'seed.config.ts'))\n\n fs.copyFileSync(configFilePath, path.join(dotSeedDir, 'seed.config.ts'))\n\n runCommands()\n .then(() => {\n if (!appFilesDirPath) {\n console.log('[Seed Protocol] Finished running init script')\n } else {\n return copyDotSeedFilesToAppFiles(appFilesDirPath)\n }\n })\n .then(() => {\n console.log(INIT_SCRIPT_SUCCESS_MESSAGE)\n })\n } else if (args[0] === 'seed' && args[1]) {\n seedDatabase(args[1])\n } else {\n console.log('Unknown command. Available commands:')\n console.log('init [schemaPath] [appFilesPath] - Initialize the database')\n console.log('seed [seedDataPath] - Seed the database with data from JSON file')\n }\n }\n}\n\nconst calledFrom = pathToFileURL(process.argv[1]).href\n\nconsole.log('calledFrom', calledFrom)\n\nif (\n calledFrom.endsWith('node_modules/.bin/seed') ||\n import.meta.url.endsWith('@seedprotocol/sdk/node/bin.js') ||\n import.meta.url.endsWith('scripts/bin.ts') ||\n import.meta.url.endsWith('dist/bin.js')\n) {\n // module was not imported but called directly\n init(a)\n}\n\nexport { init }\n"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -19,6 +19,7 @@ export { metadata } from './src/seedSchema/MetadataSchema.js';
|
|
|
19
19
|
import './src/seedSchema/AppStateSchema.js';
|
|
20
20
|
export { models } from './src/seedSchema/ModelSchema.js';
|
|
21
21
|
import './src/seedSchema/ModelUidSchema.js';
|
|
22
|
+
import './src/seedSchema/PropertyUidSchema.js';
|
|
22
23
|
import './src/seedSchema/ConfigSchema.js';
|
|
23
24
|
export { getModel, getModelNames, getModels } from './src/stores/modelClass.js';
|
|
24
25
|
export { getCorrectId } from './src/helpers/index.js';
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../../src/index.ts"],"sourcesContent":["import SeedImage from './browser/react/SeedImage'\nimport { enableMapSet } from 'immer'\n\nexport {\n Model,\n Property,\n Image,\n List,\n Text,\n Json,\n Relation,\n Boolean,\n Number,\n Date,\n} from './schema'\n\nexport { BaseItem as Item } from './Item/BaseItem'\nexport { BaseItemProperty as ItemProperty } from './ItemProperty/BaseItemProperty'\n\nexport {\n useItems,\n useItem,\n useItemProperties,\n useCreateItem,\n useItemProperty,\n useDeleteItem,\n useGlobalServiceStatus,\n usePublishItem,\n usePersistedSnapshots,\n useServices,\n useService,\n useModels,\n} from './browser/react'\n\n\nexport { SeedImage }\n\nexport {FileManager as FileManagerBrowser} from './browser/helpers/FileManager'\nexport {Db as DbBrowser} from './browser/db/Db'\n\nexport {models, versions, seeds, metadata, } from './seedSchema'\n\nexport {getModels, getModel, getModelNames,} from './stores/modelClass'\n\nexport { getCorrectId, } from './helpers'\n\nexport {\n eventEmitter,\n} from './eventBus'\n\nenableMapSet()\n\nexport { withSeed } from './node/webpack'\n\nexport type { PublishUpload } from './db/read/getPublishUploads'\n\n\nexport { client } from './client'\n\nexport * from './types'\n\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"main.js","sources":["../../src/index.ts"],"sourcesContent":["import SeedImage from './browser/react/SeedImage'\nimport { enableMapSet } from 'immer'\n\nexport {\n Model,\n Property,\n Image,\n List,\n Text,\n Json,\n Relation,\n Boolean,\n Number,\n Date,\n} from './schema'\n\nexport { BaseItem as Item } from './Item/BaseItem'\nexport { BaseItemProperty as ItemProperty } from './ItemProperty/BaseItemProperty'\n\nexport {\n useItems,\n useItem,\n useItemProperties,\n useCreateItem,\n useItemProperty,\n useDeleteItem,\n useGlobalServiceStatus,\n usePublishItem,\n usePersistedSnapshots,\n useServices,\n useService,\n useModels,\n} from './browser/react'\n\n\nexport { SeedImage }\n\nexport {FileManager as FileManagerBrowser} from './browser/helpers/FileManager'\nexport {Db as DbBrowser} from './browser/db/Db'\n\nexport {models, versions, seeds, metadata, } from './seedSchema'\n\nexport {getModels, getModel, getModelNames,} from './stores/modelClass'\n\nexport { getCorrectId, } from './helpers'\n\nexport {\n eventEmitter,\n} from './eventBus'\n\nenableMapSet()\n\nexport { withSeed } from './node/webpack'\n\nexport type { PublishUpload } from './db/read/getPublishUploads'\n\n\nexport { client } from './client'\n\nexport * from './types'\n\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,YAAY,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;AA4IrC,QAAA,MAAM,IAAI,SAAU,MAAM,EAAE,SAwO3B,CAAA;AAgBD,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { InferSelectModel
|
|
1
|
+
import { integer, sqliteTable, text, blob, } from 'drizzle-orm/sqlite-core'
|
|
2
|
+
import { InferSelectModel } from 'drizzle-orm'
|
|
3
3
|
|
|
4
4
|
export const config = sqliteTable(
|
|
5
5
|
'config',
|
|
6
6
|
{
|
|
7
|
-
id:
|
|
7
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
8
8
|
key: text('key').notNull(),
|
|
9
9
|
text: text('text'),
|
|
10
|
-
json: text('json'
|
|
11
|
-
blob: blob('blob'
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
checks: [
|
|
15
|
-
check('hasValue', sql`key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),
|
|
16
|
-
],
|
|
17
|
-
})
|
|
10
|
+
json: text('json'),
|
|
11
|
+
blob: blob('blob'),
|
|
12
|
+
}
|
|
13
|
+
)
|
|
18
14
|
|
|
19
15
|
export type configType = InferSelectModel<typeof config>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { integer, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'
|
|
2
2
|
import { relations } from 'drizzle-orm'
|
|
3
3
|
import { InferInsertModel, InferSelectModel } from 'drizzle-orm'
|
|
4
4
|
export const models = sqliteTable('models', {
|
|
5
|
-
id:
|
|
5
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
6
6
|
name: text('name').notNull(),
|
|
7
7
|
})
|
|
8
8
|
|
|
@@ -16,15 +16,15 @@ export type ModelRecordType = typeof models.$inferSelect
|
|
|
16
16
|
export const properties = sqliteTable(
|
|
17
17
|
'properties',
|
|
18
18
|
{
|
|
19
|
-
id:
|
|
19
|
+
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
20
20
|
name: text('name').notNull(),
|
|
21
21
|
dataType: text('data_type').notNull(),
|
|
22
22
|
readEndpoint: text('read_endpoint'),
|
|
23
23
|
updateEndpoint: text('update_endpoint'),
|
|
24
|
-
modelId:
|
|
24
|
+
modelId: integer('model_id')
|
|
25
25
|
.notNull()
|
|
26
26
|
.references(() => models.id),
|
|
27
|
-
refModelId:
|
|
27
|
+
refModelId: integer('ref_model_id').references(() => models.id),
|
|
28
28
|
refValueType: text('ref_value_type'),
|
|
29
29
|
},
|
|
30
30
|
(table) => {
|
package/dist/seedSchema/index.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { metadata } from '../../../seedSchema/MetadataSchema.js';
|
|
|
7
7
|
import '../../../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 { BaseDb } from '../../../db/Db/BaseDb.js';
|
|
12
13
|
import { updateMetadata } from '../../../db/write/updateMetadata.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrateFromDb.js","sources":["../../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { BaseFileManager } from '@/helpers'\n\nconst logger = debug('seedSdk:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const isImage =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'Image'\n\n const isFile =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'File'\n\n if (\n (\n isRelation || \n isImage ||\n isFile\n ) &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (isRelation || isImage || isFile) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue, localStorageDir } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (isImage) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n }).catch((error) => {\n // No-op\n shouldReadFromFile = true\n })\n\n if (!response || !response.ok) {\n shouldReadFromFile = true\n }\n\n // Check if the status is in the 200-299 range\n if (response && response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n isImage\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n or(\n eq(metadata.propertyName, 'storageTransactionId'),\n eq(metadata.propertyName, 'transactionId'),\n ),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const fs = await BaseFileManager.getFs()\n const path = BaseFileManager.getPathModule()\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file: string) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n localStorageDir = `/${dir}`\n if (fileExists && filename && filePath) {\n const file = await BaseFileManager.readFile(filePath)\n refResolvedDisplayValue = URL.createObjectURL(file)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n refResolvedDisplayValue: refResolvedDisplayValue,\n localStorageDir,\n })\n }\n\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { BaseItem } = await import(`@/Item/BaseItem`)\n const item = await BaseItem.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await BaseFileManager.pathExists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await BaseFileManager.readFileAsString(filePath)\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hydrateFromDb.js","sources":["../../../../../../src/ItemProperty/service/actors/hydrateFromDb.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { and, eq, or, sql } from 'drizzle-orm'\nimport debug from 'debug'\nimport { metadata } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { updateMetadata } from '@/db/write/updateMetadata'\nimport { FromCallbackInput } from '@/types/machines'\nimport { PropertyMachineContext } from '@/types/property'\nimport { BaseFileManager } from '@/helpers'\n\nconst logger = debug('seedSdk:property:actors:hydrateFromDb')\n\nexport const hydrateFromDb = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, EventObject>\n>(({ sendBack, input: { context } }) => {\n const {\n seedUid,\n seedLocalId,\n propertyName: propertyNameRaw,\n propertyRecordSchema,\n modelName,\n } = context\n\n let propertyName = propertyNameRaw\n\n const isRelation =\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'Relation'\n\n const isImage =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'Image'\n\n const isFile =\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'File'\n\n if (\n (\n isRelation || \n isImage ||\n isFile\n ) &&\n !propertyNameRaw.endsWith('Id')\n ) {\n propertyName = propertyNameRaw + 'Id'\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.ref &&\n propertyRecordSchema.dataType === 'List' &&\n !propertyNameRaw.endsWith('Ids')\n ) {\n propertyName = propertyNameRaw + 'Ids'\n }\n\n const _hydrateFromDb = async () => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (isRelation || isImage || isFile) {\n let missingPropertyNameVariant\n if (propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName.slice(0, -2)\n }\n if (!propertyName.endsWith('Id')) {\n missingPropertyNameVariant = propertyName + 'Id'\n }\n if (missingPropertyNameVariant) {\n whereClauses.push(\n or(\n eq(metadata.propertyName, propertyName),\n eq(metadata.propertyName, missingPropertyNameVariant),\n ),\n )\n }\n if (!missingPropertyNameVariant) {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n } else {\n whereClauses.push(eq(metadata.propertyName, propertyName))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n if (!rows || !rows.length) {\n return\n }\n\n const firstRow = rows[0]\n\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n schemaUid: schemaUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n refValueType,\n } = firstRow\n\n let { refResolvedDisplayValue, refResolvedValue, localStorageDir } = firstRow\n\n let propertyValueProcessed: string | string[] | undefined | null =\n propertyValueFromDb\n\n\n if (isImage) {\n let shouldReadFromFile = true\n\n if (\n refResolvedValue &&\n refResolvedDisplayValue &&\n refResolvedDisplayValue.includes('http')\n ) {\n try {\n const response = await fetch(refResolvedDisplayValue, {\n method: 'HEAD',\n }).catch((error) => {\n // No-op\n shouldReadFromFile = true\n })\n\n if (!response || !response.ok) {\n shouldReadFromFile = true\n }\n\n // Check if the status is in the 200-299 range\n if (response && response.ok) {\n shouldReadFromFile = false\n }\n } catch (error) {\n shouldReadFromFile = true\n }\n }\n\n if (shouldReadFromFile) {\n let dir = localStorageDir\n if (\n !dir &&\n isImage\n ) {\n dir = 'images'\n }\n\n dir = dir!.replace(/^\\//, '')\n\n if (\n propertyValueFromDb &&\n propertyValueFromDb.length === 66\n ) {\n // Here the storageTransactionId is stored on a different record and\n // we want to add it as the refResolvedValue\n const storageTransactionQuery = await appDb\n .select({\n propertyValue: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, propertyValueFromDb),\n or(\n eq(metadata.propertyName, 'storageTransactionId'),\n eq(metadata.propertyName, 'transactionId'),\n ),\n ),\n )\n\n if (storageTransactionQuery && storageTransactionQuery.length > 0) {\n const row = storageTransactionQuery[0]\n refResolvedValue = row.propertyValue\n await updateMetadata({\n localId,\n refResolvedValue,\n localStorageDir: '/images',\n })\n }\n }\n\n const dirPath = `/files/${dir}`\n const fs = await BaseFileManager.getFs()\n const path = BaseFileManager.getPathModule()\n const files = await fs.promises.readdir(dirPath)\n const matchingFiles = files.filter((file: string) => {\n return path.basename(file).includes(refResolvedValue!)\n })\n let fileExists = false\n let filename\n let filePath\n if (matchingFiles && matchingFiles.length > 0) {\n fileExists = true\n filename = matchingFiles[0]\n filePath = `/files/${dir}/${filename}`\n }\n localStorageDir = `/${dir}`\n if (fileExists && filename && filePath) {\n const file = await BaseFileManager.readFile(filePath)\n refResolvedDisplayValue = URL.createObjectURL(file)\n await updateMetadata({\n localId,\n refResolvedValue: filename,\n refResolvedDisplayValue: refResolvedDisplayValue,\n localStorageDir,\n })\n }\n\n }\n }\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.dataType === 'List' &&\n propertyRecordSchema.ref &&\n typeof propertyValueFromDb === 'string'\n ) {\n propertyValueProcessed = propertyValueFromDb.split(',')\n }\n\n sendBack({\n type: 'updateContext',\n localId,\n uid,\n propertyValue: propertyValueProcessed,\n seedLocalId: seedLocalIdFromDb,\n seedUid: seedUidFromDb,\n versionLocalId: versionLocalIdFromDb,\n versionUid: versionUidFromDb,\n schemaUid: schemaUidFromDb,\n refValueType,\n localStorageDir,\n refResolvedValue,\n refResolvedDisplayValue,\n renderValue: refResolvedDisplayValue,\n populatedFromDb: true,\n })\n\n if (\n propertyRecordSchema &&\n propertyRecordSchema.storageType &&\n propertyRecordSchema.storageType === 'ItemStorage'\n ) {\n const { BaseItem } = await import(`@/Item/BaseItem`)\n const item = await BaseItem.find({\n seedLocalId,\n modelName,\n })\n if (item) {\n const filePath = `/files/${localStorageDir}/${refResolvedValue}`\n const exists = await BaseFileManager.pathExists(filePath)\n\n if (!exists) {\n return\n }\n\n const renderValue = await BaseFileManager.readFileAsString(filePath)\n const property = item.properties[propertyName]\n property.getService().send({ type: 'updateContext', renderValue })\n return\n }\n }\n }\n\n _hydrateFromDb().then(() => {\n sendBack({ type: 'hydrateFromDbSuccess' })\n })\n})\n"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { metadata } from '../../../../seedSchema/MetadataSchema.js';
|
|
|
9
9
|
import '../../../../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 { createMetadata } from '../../../../db/write/createMetadata.js';
|
|
14
15
|
import { BaseFileManager } from '../../../../helpers/FileManager/BaseFileManager.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveItemStorage.js","sources":["../../../../../../../src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getItemPropertyData } from '@/db/read/getItemProperty'\nimport { getItemData } from '@/db/read/getItemData'\nimport { and, eq } from 'drizzle-orm'\nimport { metadata } from '@/seedSchema'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\n\nexport const saveItemStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n seedLocalId,\n seedUid,\n propertyName,\n propertyRecordSchema,\n modelName,\n propertyValue: existingValue,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveItemStorage = async (): Promise<boolean> => {\n // Save value to file\n const appDb = BaseDb.getAppDb()\n let propertyData\n\n if (localId) {\n propertyData = await getItemPropertyData({\n localId,\n })\n }\n\n if (!localId && seedLocalId) {\n const itemData = await getItemData({\n seedLocalId,\n })\n if (itemData) {\n const whereClauses = [\n eq(metadata.propertyName, propertyName),\n eq(metadata.seedLocalId, seedLocalId),\n ]\n\n if (itemData.latestVersionLocalId) {\n whereClauses.push(\n eq(metadata.versionLocalId, itemData.latestVersionLocalId),\n )\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (queryRows && queryRows.length) {\n propertyData = queryRows[0]\n }\n\n if (!propertyData && newValue) {\n\n const filename = `${seedUid || seedLocalId}${propertyRecordSchema.filenameSuffix}`\n const writeToPath = `/files/${propertyRecordSchema.localStorageDir}/${filename}`\n await BaseFileManager.saveFile(writeToPath, newValue as string | Blob | ArrayBuffer)\n\n const propertyDataRows = await createMetadata(\n {\n propertyName,\n propertyValue: filename,\n modelType: modelName.toLowerCase(),\n seedLocalId,\n seedUid,\n versionLocalId: itemData.latestVersionLocalId,\n versionUid: itemData.latestVersionUid,\n localStorageDir: propertyRecordSchema.localStorageDir,\n refValueType: 'file',\n },\n propertyRecordSchema,\n )\n\n propertyData = propertyDataRows[0]\n }\n\n // propertyData = {\n // propertyName,\n // seedLocalId,\n // seedUid,\n // versionLocalId: itemData.latestVersionLocalId,\n // versionUid: itemData.latestVersionUid,\n // schemaUid: itemData.schemaUid,\n // }\n }\n }\n\n const localStorageDir =\n propertyRecordSchema.localStorageDir || propertyData.localStorageDir\n const fileName =\n propertyData.refResolvedValue ||\n `${propertyData.seedUid || propertyData.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n\n if (!localStorageDir || !fileName) {\n throw new Error(\n `Missing localStorageDir: ${localStorageDir} or fileName: ${fileName}`,\n )\n }\n\n const filePath = `/files/${localStorageDir}/${fileName}`\n try {\n await BaseFileManager.saveFile(filePath, newValue as string | Blob | ArrayBuffer)\n } catch (error) {\n const fs = await BaseFileManager.getFs()\n fs.writeFileSync(filePath, newValue)\n }\n\n await appDb\n .update(metadata)\n .set({\n refResolvedValue: fileName,\n })\n .where(eq(metadata.localId, propertyData.localId))\n\n sendBack({\n type: 'updateContext',\n renderValue: newValue,\n })\n\n return true\n }\n\n _saveItemStorage().then((success) => {\n if (success) {\n sendBack({ type: 'saveItemStorageSuccess' })\n }\n })\n})\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveItemStorage.js","sources":["../../../../../../../src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types/machines'\nimport {\n ItemPropertyValueType,\n PropertyMachineContext,\n SaveValueToDbEvent,\n} from '@/types/property'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getItemPropertyData } from '@/db/read/getItemProperty'\nimport { getItemData } from '@/db/read/getItemData'\nimport { and, eq } from 'drizzle-orm'\nimport { metadata } from '@/seedSchema'\nimport { createMetadata } from '@/db/write/createMetadata'\nimport { BaseFileManager } from '@/helpers/FileManager/BaseFileManager'\n\nexport const saveItemStorage = fromCallback<\n EventObject,\n FromCallbackInput<PropertyMachineContext, SaveValueToDbEvent>\n>(({ sendBack, input: { context, event } }) => {\n const {\n localId,\n seedLocalId,\n seedUid,\n propertyName,\n propertyRecordSchema,\n modelName,\n propertyValue: existingValue,\n } = context\n\n if (!propertyRecordSchema) {\n throw new Error('Missing propertyRecordSchema')\n }\n\n let newValue: ItemPropertyValueType\n\n if (event) {\n newValue = event.newValue\n }\n\n if (existingValue === newValue) {\n sendBack({ type: 'saveValueToDbSuccess' })\n return\n }\n\n const _saveItemStorage = async (): Promise<boolean> => {\n // Save value to file\n const appDb = BaseDb.getAppDb()\n let propertyData\n\n if (localId) {\n propertyData = await getItemPropertyData({\n localId,\n })\n }\n\n if (!localId && seedLocalId) {\n const itemData = await getItemData({\n seedLocalId,\n })\n if (itemData) {\n const whereClauses = [\n eq(metadata.propertyName, propertyName),\n eq(metadata.seedLocalId, seedLocalId),\n ]\n\n if (itemData.latestVersionLocalId) {\n whereClauses.push(\n eq(metadata.versionLocalId, itemData.latestVersionLocalId),\n )\n }\n\n const queryRows = await appDb\n .select()\n .from(metadata)\n .where(and(...whereClauses))\n\n if (queryRows && queryRows.length) {\n propertyData = queryRows[0]\n }\n\n if (!propertyData && newValue) {\n\n const filename = `${seedUid || seedLocalId}${propertyRecordSchema.filenameSuffix}`\n const writeToPath = `/files/${propertyRecordSchema.localStorageDir}/${filename}`\n await BaseFileManager.saveFile(writeToPath, newValue as string | Blob | ArrayBuffer)\n\n const propertyDataRows = await createMetadata(\n {\n propertyName,\n propertyValue: filename,\n modelType: modelName.toLowerCase(),\n seedLocalId,\n seedUid,\n versionLocalId: itemData.latestVersionLocalId,\n versionUid: itemData.latestVersionUid,\n localStorageDir: propertyRecordSchema.localStorageDir,\n refValueType: 'file',\n },\n propertyRecordSchema,\n )\n\n propertyData = propertyDataRows[0]\n }\n\n // propertyData = {\n // propertyName,\n // seedLocalId,\n // seedUid,\n // versionLocalId: itemData.latestVersionLocalId,\n // versionUid: itemData.latestVersionUid,\n // schemaUid: itemData.schemaUid,\n // }\n }\n }\n\n const localStorageDir =\n propertyRecordSchema.localStorageDir || propertyData.localStorageDir\n const fileName =\n propertyData.refResolvedValue ||\n `${propertyData.seedUid || propertyData.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n\n if (!localStorageDir || !fileName) {\n throw new Error(\n `Missing localStorageDir: ${localStorageDir} or fileName: ${fileName}`,\n )\n }\n\n const filePath = `/files/${localStorageDir}/${fileName}`\n try {\n await BaseFileManager.saveFile(filePath, newValue as string | Blob | ArrayBuffer)\n } catch (error) {\n const fs = await BaseFileManager.getFs()\n fs.writeFileSync(filePath, newValue)\n }\n\n await appDb\n .update(metadata)\n .set({\n refResolvedValue: fileName,\n })\n .where(eq(metadata.localId, propertyData.localId))\n\n sendBack({\n type: 'updateContext',\n renderValue: newValue,\n })\n\n return true\n }\n\n _saveItemStorage().then((success) => {\n if (success) {\n sendBack({ type: 'saveItemStorageSuccess' })\n }\n })\n})\n"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import '../../seedSchema/MetadataSchema.js';
|
|
|
12
12
|
import { appState } from '../../seedSchema/AppStateSchema.js';
|
|
13
13
|
import '../../seedSchema/ModelSchema.js';
|
|
14
14
|
import '../../seedSchema/ModelUidSchema.js';
|
|
15
|
+
import '../../seedSchema/PropertyUidSchema.js';
|
|
15
16
|
import '../../seedSchema/ConfigSchema.js';
|
|
16
17
|
import { like } from 'drizzle-orm';
|
|
17
18
|
import { BaseDb } from '../../db/Db/BaseDb.js';
|