@solidxai/core 0.1.10-beta.24 → 0.1.10-beta.26
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/controllers/action-metadata.controller.d.ts +1 -20
- package/dist/controllers/action-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/agent-event.controller.d.ts +1 -20
- package/dist/controllers/agent-event.controller.d.ts.map +1 -1
- package/dist/controllers/agent-session.controller.d.ts +1 -20
- package/dist/controllers/agent-session.controller.d.ts.map +1 -1
- package/dist/controllers/ai-interaction.controller.d.ts +1 -20
- package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message-details.controller.d.ts +1 -20
- package/dist/controllers/chatter-message-details.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +1 -20
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -20
- package/dist/controllers/dashboard-user-layout.controller.d.ts.map +1 -1
- package/dist/controllers/email-template.controller.d.ts +1 -20
- package/dist/controllers/email-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-template.controller.d.ts +1 -20
- package/dist/controllers/export-template.controller.d.ts.map +1 -1
- package/dist/controllers/export-transaction.controller.d.ts +1 -20
- package/dist/controllers/export-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -20
- package/dist/controllers/import-transaction-error-log.controller.d.ts.map +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +1 -20
- package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
- package/dist/controllers/list-of-values.controller.d.ts +1 -20
- package/dist/controllers/list-of-values.controller.d.ts.map +1 -1
- package/dist/controllers/locale.controller.d.ts +1 -20
- package/dist/controllers/locale.controller.d.ts.map +1 -1
- package/dist/controllers/mcp-audit-log.controller.d.ts +1 -20
- package/dist/controllers/mcp-audit-log.controller.d.ts.map +1 -1
- package/dist/controllers/media.controller.d.ts +1 -20
- package/dist/controllers/media.controller.d.ts.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.d.ts +1 -20
- package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.d.ts +10 -30
- package/dist/controllers/model-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/model-metadata.controller.js +2 -2
- package/dist/controllers/model-sequence.controller.d.ts +1 -20
- package/dist/controllers/model-sequence.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata-explorer.controller.d.ts +171 -0
- package/dist/controllers/module-metadata-explorer.controller.d.ts.map +1 -0
- package/dist/controllers/module-metadata-explorer.controller.js +143 -0
- package/dist/controllers/module-metadata-explorer.controller.js.map +1 -0
- package/dist/controllers/module-metadata.controller.d.ts +5 -0
- package/dist/controllers/module-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/module-metadata.controller.js +12 -0
- package/dist/controllers/module-metadata.controller.js.map +1 -1
- package/dist/controllers/module-package.controller.d.ts +622 -0
- package/dist/controllers/module-package.controller.d.ts.map +1 -0
- package/dist/controllers/module-package.controller.js +150 -0
- package/dist/controllers/module-package.controller.js.map +1 -0
- package/dist/controllers/mq-message-queue.controller.d.ts +1 -20
- package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -1
- package/dist/controllers/mq-message.controller.d.ts +1 -20
- package/dist/controllers/mq-message.controller.d.ts.map +1 -1
- package/dist/controllers/permission-metadata.controller.d.ts +1 -20
- package/dist/controllers/permission-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -20
- package/dist/controllers/role-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/saved-filters.controller.d.ts +1 -20
- package/dist/controllers/saved-filters.controller.d.ts.map +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +1 -20
- package/dist/controllers/scheduled-job.controller.d.ts.map +1 -1
- package/dist/controllers/security-rule.controller.d.ts +1 -20
- package/dist/controllers/security-rule.controller.d.ts.map +1 -1
- package/dist/controllers/sms-template.controller.d.ts +1 -20
- package/dist/controllers/sms-template.controller.d.ts.map +1 -1
- package/dist/controllers/user-activity-history.controller.d.ts +1 -20
- package/dist/controllers/user-activity-history.controller.d.ts.map +1 -1
- package/dist/controllers/user-view-metadata.controller.d.ts +1 -20
- package/dist/controllers/user-view-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/user.controller.d.ts +1 -20
- package/dist/controllers/user.controller.d.ts.map +1 -1
- package/dist/controllers/view-metadata.controller.d.ts +1 -20
- package/dist/controllers/view-metadata.controller.d.ts.map +1 -1
- package/dist/dtos/confirm-module-package-import.dto.d.ts +4 -0
- package/dist/dtos/confirm-module-package-import.dto.d.ts.map +1 -0
- package/dist/dtos/confirm-module-package-import.dto.js +34 -0
- package/dist/dtos/confirm-module-package-import.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-references-query.dto.d.ts +10 -0
- package/dist/dtos/metadata-explorer-references-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js +69 -0
- package/dist/dtos/metadata-explorer-references-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts +8 -0
- package/dist/dtos/metadata-explorer-search-query.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js +55 -0
- package/dist/dtos/metadata-explorer-search-query.dto.js.map +1 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts +4 -0
- package/dist/dtos/metadata-explorer-write.dto.d.ts.map +1 -0
- package/dist/dtos/metadata-explorer-write.dto.js +30 -0
- package/dist/dtos/metadata-explorer-write.dto.js.map +1 -0
- package/dist/dtos/run-module-package-build.dto.d.ts +5 -0
- package/dist/dtos/run-module-package-build.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-build.dto.js +38 -0
- package/dist/dtos/run-module-package-build.dto.js.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts +4 -0
- package/dist/dtos/run-module-package-seed.dto.d.ts.map +1 -0
- package/dist/dtos/run-module-package-seed.dto.js +34 -0
- package/dist/dtos/run-module-package-seed.dto.js.map +1 -0
- package/dist/helpers/command.service.js +1 -1
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +2 -0
- package/dist/helpers/module-metadata-helper.service.d.ts.map +1 -1
- package/dist/helpers/module-metadata-helper.service.js +14 -12
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +11 -6
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/typeorm-migration-helpers.d.ts +12 -0
- package/dist/helpers/typeorm-migration-helpers.d.ts.map +1 -0
- package/dist/helpers/typeorm-migration-helpers.js +119 -0
- package/dist/helpers/typeorm-migration-helpers.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +1 -0
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +57 -38
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.js +1 -1
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +2364 -1106
- package/dist/services/crud-helper.service.d.ts +18 -0
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +67 -1
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +1 -21
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +23 -87
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/genai/ingest-metadata.service.js +2 -2
- package/dist/services/genai/ingest-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts +1 -20
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +31 -2
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +5 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +15 -30
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +249 -29
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/module-metadata-explorer.service.d.ts +161 -0
- package/dist/services/module-metadata-explorer.service.d.ts.map +1 -0
- package/dist/services/module-metadata-explorer.service.js +485 -0
- package/dist/services/module-metadata-explorer.service.js.map +1 -0
- package/dist/services/module-metadata.service.d.ts +7 -0
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +121 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/module-package.service.d.ts +266 -0
- package/dist/services/module-package.service.d.ts.map +1 -0
- package/dist/services/module-package.service.js +980 -0
- package/dist/services/module-package.service.js.map +1 -0
- package/dist/services/settings/default-settings-provider.service.d.ts +18 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +10 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +10 -2
- package/dist/solid-core.module.js.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
- package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
- package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
- package/docs/grouping-enhancements.md +89 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/docs/module-package-import-handoff.md +691 -0
- package/docs/seed-changes.md +65 -0
- package/docs/test-data-workflow.md +200 -0
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +2 -1
- package/src/controllers/module-metadata-explorer.controller.ts +83 -0
- package/src/controllers/module-metadata.controller.ts +6 -0
- package/src/controllers/module-package.controller.ts +102 -0
- package/src/dtos/confirm-module-package-import.dto.ts +12 -0
- package/src/dtos/metadata-explorer-references-query.dto.ts +39 -0
- package/src/dtos/metadata-explorer-search-query.dto.ts +28 -0
- package/src/dtos/metadata-explorer-write.dto.ts +11 -0
- package/src/dtos/run-module-package-build.dto.ts +14 -0
- package/src/dtos/run-module-package-seed.dto.ts +12 -0
- package/src/helpers/command.service.ts +1 -1
- package/src/helpers/module-metadata-helper.service.ts +19 -21
- package/src/helpers/module.helper.ts +12 -9
- package/src/helpers/typeorm-migration-helpers.ts +163 -0
- package/src/index.ts +8 -0
- package/src/seeders/module-metadata-seeder.service.ts +63 -38
- package/src/seeders/module-test-data.service.ts +1 -1
- package/src/seeders/seed-data/solid-core-metadata.json +2365 -1107
- package/src/services/crud-helper.service.ts +79 -1
- package/src/services/crud.service.ts +26 -119
- package/src/services/dashboard-providers/README.md +1 -1
- package/src/services/genai/ingest-metadata.service.ts +3 -3
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +37 -2
- package/src/services/mediaStorageProviders/file-storage-provider.ts +5 -1
- package/src/services/model-metadata.service.ts +302 -98
- package/src/services/module-metadata-explorer.service.ts +670 -0
- package/src/services/module-metadata.service.ts +136 -10
- package/src/services/module-package.service.ts +1171 -0
- package/src/services/settings/default-settings-provider.service.ts +10 -0
- package/src/solid-core.module.ts +10 -2
- package/.claude/settings.local.json +0 -15
- package/CLAUDE.md +0 -26
- package/dist/services/database/database-bootstrap.service.d.ts +0 -12
- package/dist/services/database/database-bootstrap.service.d.ts.map +0 -1
- package/dist/services/database/database-bootstrap.service.js +0 -115
- package/dist/services/database/database-bootstrap.service.js.map +0 -1
- package/sql/default/mariadb/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mariadb/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/mssql/proc_CleanupModuleMetadata.sql +0 -78
- package/sql/default/mysql/proc_CleanupModelMetadata.sql +0 -153
- package/sql/default/mysql/proc_CleanupModuleMetadata.sql +0 -56
- package/sql/default/postgres/proc_CleanupModelMetadata.sql +0 -148
- package/sql/default/postgres/proc_CleanupModuleMetadata.sql +0 -50
- package/sql/default/postgres/scratchpad.sql.txt +0 -12
- package/src/services/1.js +0 -6
- package/src/services/database/database-bootstrap.service.ts +0 -91
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-package.service.js","sourceRoot":"","sources":["../../src/services/module-package.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BadRequestException,\n Injectable,\n Logger,\n NotFoundException,\n} from '@nestjs/common';\nimport { createHash } from 'crypto';\nimport archiver from 'archiver';\nimport { createWriteStream } from 'fs';\nimport { DisallowInProduction } from 'src/decorators/disallow-in-production.decorator';\nimport { ConfirmModulePackageImportDto } from 'src/dtos/confirm-module-package-import.dto';\nimport { RunModulePackageBuildDto } from 'src/dtos/run-module-package-build.dto';\nimport { RunModulePackageSeedDto } from 'src/dtos/run-module-package-seed.dto';\nimport { CommandService } from 'src/helpers/command.service';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { v4 as uuidv4 } from 'uuid';\n\ntype ModulePackageManifest = {\n schemaVersion: string;\n packageType: string;\n exportedAt?: string;\n generatedBy?: {\n name: string;\n version?: string;\n };\n module: {\n name: string;\n displayName?: string;\n description?: string;\n };\n contents: {\n metadataPath: string;\n apiModulePath: string;\n uiModulePath: string;\n };\n compatibility?: Record<string, unknown>;\n postImport?: Record<string, unknown>;\n checksums?: Record<string, string>;\n};\n\ntype ValidationPayload = {\n valid: boolean;\n errors: string[];\n warnings: string[];\n};\n\ntype PreviewPayload = {\n module: {\n name: string;\n displayName?: string;\n description?: string;\n };\n manifest: ModulePackageManifest;\n contentsSummary: {\n totalEntries: number;\n solidApiEntries: number;\n solidUiEntries: number;\n };\n requiredPaths: {\n metadataPath: string;\n apiModulePath: string;\n uiModulePath: string;\n };\n conflicts: string[];\n fileTree: string[];\n nextActions: string[];\n};\n\ntype ParsedArchive = {\n entries: string[];\n archiveRootPrefix: string | null;\n manifest: ModulePackageManifest;\n metadataDocument: any;\n validation: ValidationPayload;\n preview: PreviewPayload;\n};\n\ntype ModulePackageStatusFile = {\n transactionKey: string;\n status: string;\n currentStep: string;\n moduleName: string | null;\n moduleDisplayName: string | null;\n archiveFileName: string | null;\n archiveFilePath: string | null;\n extractDirPath: string | null;\n archiveRootPrefix: string | null;\n manifest: ModulePackageManifest | null;\n metadataDocument: any;\n preview: PreviewPayload | null;\n validation: ValidationPayload | null;\n conflicts: string[];\n outputs: {\n import: string | null;\n build: string | null;\n seed: string | null;\n };\n errorMessage: string | null;\n createdAt: string;\n updatedAt: string;\n};\n\ntype ModulePackageExportFile = {\n fileName: string;\n filePath: string;\n mimeType: string;\n};\n\ntype ModulePackageRuntimeCleanupResult = {\n runtimeRoot: string;\n removedImportTransactions: number;\n removedExportTransactions: number;\n removedImportLooseEntries: number;\n removedExportLooseEntries: number;\n clearedActiveTransactionPointer: boolean;\n clearedAt: string;\n};\n\ntype ModulePackageActiveTransactionFile = {\n transactionKey: string;\n updatedAt: string;\n};\n\nenum ModulePackageStatus {\n uploaded = 'uploaded',\n validated = 'validated',\n awaiting_confirmation = 'awaiting_confirmation',\n import_running = 'import_running',\n awaiting_restart = 'awaiting_restart',\n build_running = 'build_running',\n build_failed = 'build_failed',\n build_succeeded = 'build_succeeded',\n seed_running = 'seed_running',\n seed_failed = 'seed_failed',\n completed = 'completed',\n failed = 'failed',\n}\n\n@Injectable()\nexport class ModulePackageService {\n private readonly logger = new Logger(ModulePackageService.name);\n private static readonly SUPPORTED_SCHEMA_VERSION = '1.0';\n private static readonly SUPPORTED_PACKAGE_TYPE = 'solidx-module';\n\n constructor(\n private readonly commandService: CommandService,\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) { }\n\n @DisallowInProduction()\n async validateUpload(file: Express.Multer.File) {\n if (!file) {\n throw new BadRequestException('A .sldx archive file is required.');\n }\n\n await this.cleanupModulePackageTransactions();\n\n const transactionKey = uuidv4();\n const workingDir = await this.createWorkingDir(transactionKey);\n const archiveFileName = file.originalname || path.basename(file.path);\n const archiveFilePath = path.join(workingDir, archiveFileName);\n const extractDirPath = path.join(workingDir, 'extract');\n\n await fs.mkdir(extractDirPath, { recursive: true });\n await fs.rename(file.path, archiveFilePath);\n\n const parsed = await this.parseArchive(archiveFilePath);\n await this.extractArchive(archiveFilePath, extractDirPath);\n\n const transaction: ModulePackageStatusFile = {\n transactionKey,\n status: parsed.validation.valid ? ModulePackageStatus.awaiting_confirmation : ModulePackageStatus.failed,\n currentStep: 'preview',\n moduleName: parsed.manifest.module.name,\n moduleDisplayName: parsed.manifest.module.displayName ?? null,\n archiveFileName,\n archiveFilePath,\n extractDirPath,\n archiveRootPrefix: parsed.archiveRootPrefix,\n manifest: parsed.manifest,\n metadataDocument: parsed.metadataDocument,\n preview: parsed.preview,\n validation: parsed.validation,\n conflicts: parsed.preview.conflicts,\n outputs: {\n import: null,\n build: null,\n seed: null,\n },\n errorMessage: parsed.validation.valid ? null : parsed.validation.errors.join('\\n'),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n await this.writeStatusFile(transactionKey, transaction);\n return this.toStatusResponse(transaction);\n }\n\n async getStatus(transactionKey: string) {\n const transaction = await this.loadTransaction(transactionKey);\n return this.toStatusResponse(transaction);\n }\n\n @DisallowInProduction()\n async getLatestResumableImport() {\n await this.cleanupModulePackageTransactions();\n const transaction = await this.resolveLatestResumableTransaction();\n return transaction ? this.toStatusResponse(transaction) : null;\n }\n\n @DisallowInProduction()\n async dismissImport(transactionKey: string) {\n const transaction = await this.loadTransaction(transactionKey);\n await this.clearActiveTransactionIfMatches(transaction.transactionKey);\n return this.toStatusResponse(transaction);\n }\n\n @DisallowInProduction()\n async clearPackageRuntime(): Promise<ModulePackageRuntimeCleanupResult> {\n const runtimeRoot = this.getModulePackageRuntimeRoot();\n const importsRoot = this.getModulePackageImportsRoot();\n const exportsRoot = this.getModulePackageExportsRoot();\n const snapshot = await this.collectRuntimeCleanupSnapshot();\n\n await fs.rm(runtimeRoot, { recursive: true, force: true });\n await fs.mkdir(importsRoot, { recursive: true });\n await fs.mkdir(exportsRoot, { recursive: true });\n\n return {\n runtimeRoot,\n ...snapshot,\n clearedAt: new Date().toISOString(),\n };\n }\n\n @DisallowInProduction()\n async exportModulePackage(moduleNameInput: string): Promise<ModulePackageExportFile> {\n const moduleName = (moduleNameInput ?? '').trim();\n if (!moduleName) {\n throw new BadRequestException('A module name is required to export a module package.');\n }\n\n const solidApiModulePath = this.getSolidApiModuleTargetPath(moduleName);\n const solidUiModulePath = this.getSolidUiModuleTargetPath(moduleName);\n const metadataFilePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n\n await this.assertPathExists(solidApiModulePath, 'solid-api module path');\n await this.assertPathExists(solidUiModulePath, 'solid-ui module path');\n await this.assertPathExists(metadataFilePath, 'module metadata file');\n\n const metadataDocument = this.parseMetadataDocument(\n await fs.readFile(metadataFilePath, 'utf-8'),\n [],\n );\n\n const transactionKey = uuidv4();\n const exportRoot = path.join(this.getModulePackageExportsRoot(), transactionKey);\n const stagingDir = path.join(exportRoot, 'staging');\n const archiveFileName = `${moduleName}.sldx`;\n const archiveFilePath = path.join(exportRoot, archiveFileName);\n\n await fs.mkdir(path.join(stagingDir, 'solid-api', 'src'), { recursive: true });\n await fs.mkdir(path.join(stagingDir, 'solid-ui', 'src'), { recursive: true });\n\n await fs.cp(solidApiModulePath, path.join(stagingDir, 'solid-api', 'src', moduleName), { recursive: true });\n await fs.cp(solidUiModulePath, path.join(stagingDir, 'solid-ui', 'src', moduleName), { recursive: true });\n\n const manifest = await this.buildExportManifest(moduleName, metadataDocument, stagingDir);\n await fs.writeFile(\n path.join(stagingDir, 'manifest.json'),\n JSON.stringify(manifest, null, 2),\n 'utf-8',\n );\n\n await this.createArchiveFromDirectory(stagingDir, archiveFilePath);\n\n return {\n fileName: archiveFileName,\n filePath: archiveFilePath,\n mimeType: 'application/zip',\n };\n }\n\n @DisallowInProduction()\n async confirmImport(transactionKey: string, dto: ConfirmModulePackageImportDto = {}) {\n const transaction = await this.loadTransaction(transactionKey);\n const preview = transaction.preview;\n const validation = transaction.validation;\n\n if (!preview || !validation) {\n throw new BadRequestException('The module package transaction is missing preview or validation data.');\n }\n\n if (!validation.valid) {\n throw new BadRequestException({\n message: 'The uploaded module package is invalid and cannot be imported.',\n validation,\n });\n }\n\n const overwriteExisting = dto.overwriteExisting ?? false;\n if (preview.conflicts.length > 0 && !overwriteExisting) {\n throw new BadRequestException({\n message: 'Conflicts were detected. Re-submit with overwriteExisting=true to continue.',\n conflicts: preview.conflicts,\n });\n }\n\n transaction.status = ModulePackageStatus.import_running;\n transaction.currentStep = 'import';\n transaction.errorMessage = null;\n await this.writeStatusFile(transactionKey, transaction);\n\n try {\n const moduleName = preview.module.name;\n const solidApiTarget = this.getSolidApiModuleTargetPath(moduleName);\n const solidUiTarget = this.getSolidUiModuleTargetPath(moduleName);\n const extractRoot = transaction.archiveRootPrefix\n ? path.join(transaction.extractDirPath as string, transaction.archiveRootPrefix.replace(/\\/$/, ''))\n : transaction.extractDirPath as string;\n const solidApiSource = path.join(extractRoot, 'solid-api', 'src', moduleName);\n const solidUiSource = path.join(extractRoot, 'solid-ui', 'src', moduleName);\n\n await this.assertPathExists(solidApiSource, 'solid-api module source');\n await this.assertPathExists(solidUiSource, 'solid-ui module source');\n\n if (overwriteExisting) {\n await fs.rm(solidApiTarget, { recursive: true, force: true });\n await fs.rm(solidUiTarget, { recursive: true, force: true });\n }\n\n await fs.mkdir(path.dirname(solidApiTarget), { recursive: true });\n await fs.mkdir(path.dirname(solidUiTarget), { recursive: true });\n\n await fs.cp(solidApiSource, solidApiTarget, { recursive: true, force: overwriteExisting });\n await fs.cp(solidUiSource, solidUiTarget, { recursive: true, force: overwriteExisting });\n\n if (transaction.extractDirPath) {\n await fs.rm(transaction.extractDirPath, { recursive: true, force: true });\n transaction.extractDirPath = null;\n }\n\n transaction.status = ModulePackageStatus.awaiting_restart;\n transaction.currentStep = 'restart';\n transaction.outputs.import = [\n `Placed solid-api module at ${solidApiTarget}`,\n `Placed solid-ui module at ${solidUiTarget}`,\n `Metadata file placed at ${preview.requiredPaths.metadataPath}`,\n ].join('\\n');\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n\n return this.toStatusResponse(transaction);\n } catch (error: any) {\n transaction.status = ModulePackageStatus.failed;\n transaction.currentStep = 'import';\n transaction.errorMessage = error.message ?? 'Failed to import the module package.';\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n throw error;\n }\n }\n\n @DisallowInProduction()\n async runBuild(transactionKey: string, dto: RunModulePackageBuildDto = {}) {\n const transaction = await this.loadTransaction(transactionKey);\n transaction.status = ModulePackageStatus.build_running;\n transaction.currentStep = 'build';\n transaction.errorMessage = null;\n await this.writeStatusFile(transactionKey, transaction);\n\n try {\n const buildSolidApi = dto.buildSolidApi ?? true;\n const buildSolidUi = dto.buildSolidUi ?? true;\n const outputs: string[] = [];\n const failedTargets: string[] = [];\n const projectRoot = this.getProjectRoot();\n\n if (buildSolidApi) {\n try {\n const output = await this.commandService.executeCommandWithArgs({\n command: 'npx',\n args: ['-y', '@solidxai/solidctl@latest', 'build'],\n cwd: projectRoot,\n });\n outputs.push(`solidctl build [success]\\n${output}`.trim());\n } catch (error: any) {\n failedTargets.push('solidctl build');\n outputs.push(`solidctl build [failed]\\n${error?.message ?? 'Build failed.'}`.trim());\n }\n }\n\n if (buildSolidUi) {\n try {\n const output = await this.commandService.executeCommandWithArgs({\n command: 'npx',\n args: ['-y', '@solidxai/solidctl@latest', 'build', '--ui-only'],\n cwd: projectRoot,\n });\n outputs.push(`solidctl build --ui-only [success]\\n${output}`.trim());\n } catch (error: any) {\n failedTargets.push('solidctl build --ui-only');\n outputs.push(`solidctl build --ui-only [failed]\\n${error?.message ?? 'Build failed.'}`.trim());\n }\n }\n\n transaction.status = failedTargets.length > 0\n ? ModulePackageStatus.build_failed\n : ModulePackageStatus.build_succeeded;\n transaction.currentStep = 'build';\n transaction.outputs.build = outputs.join('\\n\\n');\n transaction.errorMessage = failedTargets.length > 0\n ? `Build completed with errors in: ${failedTargets.join(', ')}`\n : null;\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n\n return this.toStatusResponse(transaction);\n } catch (error: any) {\n transaction.status = ModulePackageStatus.build_failed;\n transaction.currentStep = 'build';\n transaction.errorMessage = error.message ?? 'Build failed.';\n transaction.outputs.build = error.message ?? '';\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n throw error;\n }\n }\n\n @DisallowInProduction()\n async runSeed(transactionKey: string, dto: RunModulePackageSeedDto = {}) {\n const transaction = await this.loadTransaction(transactionKey);\n const moduleName = transaction.moduleName;\n\n if (!moduleName) {\n throw new BadRequestException('Unable to seed because the transaction is missing moduleName.');\n }\n\n transaction.status = ModulePackageStatus.seed_running;\n transaction.currentStep = 'seed';\n transaction.errorMessage = null;\n await this.writeStatusFile(transactionKey, transaction);\n\n try {\n const output = await this.commandService.executeCommandWithArgs({\n command: 'npx',\n args: ['-y', '@solidxai/solidctl@latest', 'seed', '--modules-to-seed', moduleName],\n cwd: this.getProjectRoot(),\n });\n transaction.status = ModulePackageStatus.completed;\n transaction.currentStep = 'done';\n transaction.outputs.seed = [\n `solidctl seed --modules-to-seed ${moduleName} [success]`,\n output,\n ].filter(Boolean).join('\\n');\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n\n return this.toStatusResponse(transaction);\n } catch (error: any) {\n transaction.status = ModulePackageStatus.seed_failed;\n transaction.currentStep = 'seed';\n transaction.errorMessage = error.message ?? 'Seed failed.';\n transaction.outputs.seed = error.message ?? '';\n await this.writeStatusFile(transactionKey, transaction);\n await this.syncActiveTransactionPointer(transaction);\n return this.toStatusResponse(transaction);\n }\n }\n\n private async parseArchive(archiveFilePath: string): Promise<ParsedArchive> {\n const entries = await this.listArchiveEntries(archiveFilePath);\n const archiveRootPrefix = this.detectArchiveRootPrefix(entries);\n const normalizedEntries = this.normalizeArchiveEntries(entries, archiveRootPrefix);\n const validationErrors: string[] = [];\n const validationWarnings: string[] = [];\n\n if (path.extname(archiveFilePath).toLowerCase() !== '.sldx') {\n validationErrors.push('Only .sldx archives are supported.');\n }\n\n const unsafeEntries = normalizedEntries.filter((entry) => this.isUnsafeArchivePath(entry));\n if (unsafeEntries.length > 0) {\n validationErrors.push(`Archive contains unsafe paths: ${unsafeEntries.join(', ')}`);\n }\n\n if (!normalizedEntries.includes('manifest.json')) {\n validationErrors.push('Archive is missing manifest.json at the root.');\n }\n\n const manifestArchivePath = this.toArchiveEntryPath(archiveRootPrefix, 'manifest.json');\n const manifestText = normalizedEntries.includes('manifest.json')\n ? await this.readArchiveEntry(archiveFilePath, manifestArchivePath)\n : '';\n const manifest = this.parseManifest(manifestText, validationErrors);\n\n if (!manifest) {\n return {\n entries: normalizedEntries,\n archiveRootPrefix,\n manifest: this.getFallbackManifest(),\n metadataDocument: null,\n validation: {\n valid: false,\n errors: validationErrors,\n warnings: validationWarnings,\n },\n preview: {\n module: { name: '', displayName: '' },\n manifest: this.getFallbackManifest(),\n contentsSummary: {\n totalEntries: normalizedEntries.length,\n solidApiEntries: normalizedEntries.filter((entry) => entry.startsWith('solid-api/')).length,\n solidUiEntries: normalizedEntries.filter((entry) => entry.startsWith('solid-ui/')).length,\n },\n requiredPaths: {\n metadataPath: '',\n apiModulePath: '',\n uiModulePath: '',\n },\n conflicts: [],\n fileTree: normalizedEntries,\n nextActions: ['Fix archive structure and upload again.'],\n },\n };\n }\n\n if (manifest.packageType !== ModulePackageService.SUPPORTED_PACKAGE_TYPE) {\n validationErrors.push(`manifest.json packageType must be \"${ModulePackageService.SUPPORTED_PACKAGE_TYPE}\".`);\n }\n if (manifest.schemaVersion !== ModulePackageService.SUPPORTED_SCHEMA_VERSION) {\n validationErrors.push(`manifest.json schemaVersion must be \"${ModulePackageService.SUPPORTED_SCHEMA_VERSION}\".`);\n }\n if (!manifest.module?.name) {\n validationErrors.push('manifest.json module.name is required.');\n }\n\n const moduleName = manifest.module?.name ?? '';\n const expectedPaths = this.buildExpectedPaths(moduleName);\n\n if (manifest.contents?.metadataPath !== expectedPaths.metadataPath) {\n validationErrors.push(`manifest.json contents.metadataPath must be \"${expectedPaths.metadataPath}\".`);\n }\n if (manifest.contents?.apiModulePath !== expectedPaths.apiModulePath) {\n validationErrors.push(`manifest.json contents.apiModulePath must be \"${expectedPaths.apiModulePath}\".`);\n }\n if (manifest.contents?.uiModulePath !== expectedPaths.uiModulePath) {\n validationErrors.push(`manifest.json contents.uiModulePath must be \"${expectedPaths.uiModulePath}\".`);\n }\n\n if (!normalizedEntries.includes(expectedPaths.metadataPath)) {\n validationErrors.push(`Archive is missing ${expectedPaths.metadataPath}.`);\n }\n if (!normalizedEntries.includes(expectedPaths.apiModulePath)) {\n validationErrors.push(`Archive is missing ${expectedPaths.apiModulePath}.`);\n }\n if (!normalizedEntries.includes(expectedPaths.uiModulePath)) {\n validationErrors.push(`Archive is missing ${expectedPaths.uiModulePath}.`);\n }\n\n const metadataDocument = normalizedEntries.includes(expectedPaths.metadataPath)\n ? this.parseMetadataDocument(\n await this.readArchiveEntry(archiveFilePath, this.toArchiveEntryPath(archiveRootPrefix, expectedPaths.metadataPath)),\n validationErrors,\n )\n : null;\n\n const metadataModuleName = metadataDocument?.moduleMetadata?.name;\n if (metadataModuleName && metadataModuleName !== moduleName) {\n validationErrors.push(`Metadata module name \"${metadataModuleName}\" does not match manifest module name \"${moduleName}\".`);\n }\n\n if (!manifest.checksums || Object.keys(manifest.checksums).length === 0) {\n validationWarnings.push('manifest.json does not include checksums. Checksums are recommended.');\n }\n\n const conflicts = await this.detectConflicts(moduleName);\n if (conflicts.length > 0) {\n validationWarnings.push('The target module already exists locally and will require overwrite confirmation.');\n }\n\n const validation: ValidationPayload = {\n valid: validationErrors.length === 0,\n errors: validationErrors,\n warnings: validationWarnings,\n };\n\n const preview: PreviewPayload = {\n module: manifest.module,\n manifest,\n contentsSummary: {\n totalEntries: normalizedEntries.length,\n solidApiEntries: normalizedEntries.filter((entry) => entry.startsWith('solid-api/')).length,\n solidUiEntries: normalizedEntries.filter((entry) => entry.startsWith('solid-ui/')).length,\n },\n requiredPaths: expectedPaths,\n conflicts,\n fileTree: normalizedEntries,\n nextActions: [\n 'Review archive preview.',\n 'Confirm import to place files locally.',\n 'Wait for service restart, then run build and seed.',\n ],\n };\n\n return {\n entries: normalizedEntries,\n archiveRootPrefix,\n manifest,\n metadataDocument,\n validation,\n preview,\n };\n }\n\n private parseManifest(manifestText: string, validationErrors: string[]): ModulePackageManifest | null {\n if (!manifestText) {\n return null;\n }\n\n try {\n return JSON.parse(manifestText) as ModulePackageManifest;\n } catch (error) {\n validationErrors.push('manifest.json is not valid JSON.');\n return null;\n }\n }\n\n private parseMetadataDocument(documentText: string, validationErrors: string[]) {\n try {\n return JSON.parse(documentText);\n } catch (error) {\n validationErrors.push('Module metadata JSON is not valid JSON.');\n return null;\n }\n }\n\n private async listArchiveEntries(archiveFilePath: string): Promise<string[]> {\n const output = await this.commandService.executeCommandWithArgs({\n command: 'unzip',\n args: ['-Z1', archiveFilePath],\n });\n\n return output\n .split(/\\r?\\n/)\n .map((entry) => entry.trim())\n .filter(Boolean);\n }\n\n private async readArchiveEntry(archiveFilePath: string, entryPath: string): Promise<string> {\n return this.commandService.executeCommandWithArgs({\n command: 'unzip',\n args: ['-p', archiveFilePath, entryPath],\n });\n }\n\n private async extractArchive(archiveFilePath: string, extractDirPath: string) {\n await this.commandService.executeCommandWithArgs({\n command: 'unzip',\n args: ['-o', archiveFilePath, '-d', extractDirPath],\n });\n }\n\n private async detectConflicts(moduleName: string): Promise<string[]> {\n const conflicts: string[] = [];\n const solidApiTarget = this.getSolidApiModuleTargetPath(moduleName);\n const solidUiTarget = this.getSolidUiModuleTargetPath(moduleName);\n const metadataFilePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n\n if (await this.pathExists(solidApiTarget)) {\n conflicts.push(`solid-api module already exists at ${solidApiTarget}`);\n }\n if (await this.pathExists(solidUiTarget)) {\n conflicts.push(`solid-ui module already exists at ${solidUiTarget}`);\n }\n if (await this.pathExists(metadataFilePath)) {\n conflicts.push(`module metadata already exists at ${metadataFilePath}`);\n }\n\n return conflicts;\n }\n\n private buildExpectedPaths(moduleName: string) {\n return {\n metadataPath: `solid-api/src/${moduleName}/metadata/${moduleName}-metadata.json`,\n apiModulePath: `solid-api/src/${moduleName}/${moduleName}.module.ts`,\n uiModulePath: `solid-ui/src/${moduleName}/${moduleName}.ui-module.ts`,\n };\n }\n\n private detectArchiveRootPrefix(entries: string[]): string | null {\n const normalized = entries\n .map((entry) => entry.trim())\n .filter(Boolean)\n .filter((entry) => !this.isMacOsMetadataEntry(entry));\n\n if (normalized.length === 0) {\n return null;\n }\n\n const topLevelSegments = normalized\n .map((entry) => entry.split('/')[0])\n .filter(Boolean);\n\n const uniqueTopLevelSegments = Array.from(new Set(topLevelSegments));\n if (uniqueTopLevelSegments.length !== 1) {\n return null;\n }\n\n const onlySegment = uniqueTopLevelSegments[0];\n const hasNestedEntries = normalized.some((entry) => entry.startsWith(`${onlySegment}/`));\n return hasNestedEntries ? `${onlySegment}/` : null;\n }\n\n private normalizeArchiveEntries(entries: string[], archiveRootPrefix: string | null) {\n const filteredEntries = entries.filter((entry) => !this.isMacOsMetadataEntry(entry));\n\n if (!archiveRootPrefix) {\n return filteredEntries;\n }\n\n return filteredEntries\n .map((entry) => entry.startsWith(archiveRootPrefix) ? entry.slice(archiveRootPrefix.length) : entry)\n .filter(Boolean);\n }\n\n private toArchiveEntryPath(archiveRootPrefix: string | null, normalizedEntryPath: string) {\n return archiveRootPrefix ? `${archiveRootPrefix}${normalizedEntryPath}` : normalizedEntryPath;\n }\n\n private isUnsafeArchivePath(entry: string) {\n return entry.startsWith('/') || entry.includes('..') || /^[A-Za-z]:/.test(entry);\n }\n\n private isMacOsMetadataEntry(entry: string) {\n const normalizedEntry = entry.trim();\n if (!normalizedEntry) {\n return false;\n }\n\n const segments = normalizedEntry.split('/').filter(Boolean);\n return segments.some((segment) => segment === '__MACOSX' || segment.startsWith('._'));\n }\n\n private getFallbackManifest(): ModulePackageManifest {\n return {\n schemaVersion: ModulePackageService.SUPPORTED_SCHEMA_VERSION,\n packageType: ModulePackageService.SUPPORTED_PACKAGE_TYPE,\n module: { name: '', displayName: '' },\n contents: {\n metadataPath: '',\n apiModulePath: '',\n uiModulePath: '',\n },\n };\n }\n\n private async loadTransaction(transactionKey: string) {\n this.assertSafeTransactionKey(transactionKey);\n const statusFilePath = this.getStatusFilePath(transactionKey);\n\n if (!(await this.pathExists(statusFilePath))) {\n throw new NotFoundException(`Module package transaction ${transactionKey} was not found.`);\n }\n\n return JSON.parse(await fs.readFile(statusFilePath, 'utf-8')) as ModulePackageStatusFile;\n }\n\n private isResumableStatus(status: string | null | undefined) {\n return [\n ModulePackageStatus.import_running,\n ModulePackageStatus.awaiting_restart,\n ModulePackageStatus.build_running,\n ModulePackageStatus.build_failed,\n ModulePackageStatus.build_succeeded,\n ModulePackageStatus.seed_running,\n ModulePackageStatus.seed_failed,\n ].includes(status as ModulePackageStatus);\n }\n\n private async createWorkingDir(transactionKey: string) {\n const baseDir = path.join(\n this.getModulePackageImportsRoot(),\n transactionKey,\n );\n\n await fs.mkdir(baseDir, { recursive: true });\n return baseDir;\n }\n\n private getSolidApiRoot() {\n return process.cwd();\n }\n\n private getProjectRoot() {\n return path.resolve(this.getSolidApiRoot(), '..');\n }\n\n private getSolidUiRoot() {\n return path.join(this.getProjectRoot(), 'solid-ui');\n }\n\n private getModulePackageImportsRoot() {\n return path.join(\n this.getModulePackageRuntimeRoot(),\n 'module-package-imports',\n );\n }\n\n private getModulePackageExportsRoot() {\n return path.join(\n this.getModulePackageRuntimeRoot(),\n 'module-package-exports',\n );\n }\n\n private getModulePackageRuntimeRoot() {\n const configuredRuntimeRoot = process.env.SOLIDX_MODULE_PACKAGE_RUNTIME_DIR?.trim();\n\n if (configuredRuntimeRoot) {\n return path.resolve(configuredRuntimeRoot);\n }\n\n return path.join(\n this.getProjectRoot(),\n '.solidx-runtime',\n );\n }\n\n private getSolidApiModuleTargetPath(moduleName: string) {\n return path.join(this.getSolidApiRoot(), 'src', moduleName);\n }\n\n private getSolidUiModuleTargetPath(moduleName: string) {\n return path.join(this.getSolidUiRoot(), 'src', moduleName);\n }\n\n private async pathExists(targetPath: string) {\n try {\n await fs.access(targetPath);\n return true;\n } catch (error) {\n return false;\n }\n }\n\n private async assertPathExists(targetPath: string, label: string) {\n if (!(await this.pathExists(targetPath))) {\n throw new BadRequestException(`Expected ${label} at ${targetPath}, but it was not found in the extracted archive.`);\n }\n }\n\n private async readDirSafe(targetPath: string) {\n try {\n return await fs.readdir(targetPath, { withFileTypes: true });\n } catch (error) {\n return [];\n }\n }\n\n private assertSafeTransactionKey(transactionKey: string) {\n if (!/^[a-zA-Z0-9-]+$/.test(transactionKey)) {\n throw new BadRequestException('Invalid module package transaction key.');\n }\n }\n\n private getStatusFilePath(transactionKey: string) {\n this.assertSafeTransactionKey(transactionKey);\n return path.join(this.getModulePackageImportsRoot(), transactionKey, 'status.json');\n }\n\n private getActiveTransactionFilePath() {\n return path.join(this.getModulePackageImportsRoot(), 'active-transaction.json');\n }\n\n private async writeStatusFile(transactionKey: string, payload: ModulePackageStatusFile) {\n payload.updatedAt = new Date().toISOString();\n const statusFilePath = this.getStatusFilePath(transactionKey);\n await fs.mkdir(path.dirname(statusFilePath), { recursive: true });\n await fs.writeFile(statusFilePath, JSON.stringify(payload, null, 2));\n }\n\n private async markActiveTransaction(transactionKey: string) {\n const activeTransactionFilePath = this.getActiveTransactionFilePath();\n await fs.mkdir(path.dirname(activeTransactionFilePath), { recursive: true });\n const payload: ModulePackageActiveTransactionFile = {\n transactionKey,\n updatedAt: new Date().toISOString(),\n };\n await fs.writeFile(activeTransactionFilePath, JSON.stringify(payload, null, 2));\n }\n\n private async clearActiveTransactionIfMatches(transactionKey: string) {\n const activeTransaction = await this.loadActiveTransactionPointer();\n if (!activeTransaction || activeTransaction.transactionKey !== transactionKey) {\n return;\n }\n\n await fs.rm(this.getActiveTransactionFilePath(), { force: true });\n }\n\n private async loadActiveTransactionPointer(): Promise<ModulePackageActiveTransactionFile | null> {\n try {\n return JSON.parse(await fs.readFile(this.getActiveTransactionFilePath(), 'utf-8')) as ModulePackageActiveTransactionFile;\n } catch (error) {\n return null;\n }\n }\n\n private async syncActiveTransactionPointer(transaction: ModulePackageStatusFile) {\n if (this.isResumableStatus(transaction.status)) {\n await this.markActiveTransaction(transaction.transactionKey);\n return;\n }\n\n await this.clearActiveTransactionIfMatches(transaction.transactionKey);\n }\n\n private async collectRuntimeCleanupSnapshot() {\n const importEntries = await this.readDirSafe(this.getModulePackageImportsRoot());\n const exportEntries = await this.readDirSafe(this.getModulePackageExportsRoot());\n\n const importTransactionEntries = importEntries.filter(\n (entry) => entry.isDirectory() && /^[a-zA-Z0-9-]+$/.test(entry.name),\n );\n const exportTransactionEntries = exportEntries.filter(\n (entry) => entry.isDirectory() && /^[a-zA-Z0-9-]+$/.test(entry.name),\n );\n\n const importLooseEntries = importEntries.filter(\n (entry) => !(entry.isDirectory() && /^[a-zA-Z0-9-]+$/.test(entry.name)),\n );\n const exportLooseEntries = exportEntries.filter(\n (entry) => !(entry.isDirectory() && /^[a-zA-Z0-9-]+$/.test(entry.name)),\n );\n\n return {\n removedImportTransactions: importTransactionEntries.length,\n removedExportTransactions: exportTransactionEntries.length,\n removedImportLooseEntries: importLooseEntries.length,\n removedExportLooseEntries: exportLooseEntries.length,\n clearedActiveTransactionPointer: importEntries.some((entry) => entry.name === 'active-transaction.json'),\n };\n }\n\n private getCompletedTransactionRetentionMs() {\n const retentionDays = Number(process.env.SOLIDX_MODULE_PACKAGE_RETENTION_DAYS ?? 7);\n const safeDays = Number.isFinite(retentionDays) && retentionDays > 0 ? retentionDays : 7;\n return safeDays * 24 * 60 * 60 * 1000;\n }\n\n private getPendingTransactionRetentionMs() {\n const retentionHours = Number(process.env.SOLIDX_MODULE_PACKAGE_PENDING_RETENTION_HOURS ?? 24);\n const safeHours = Number.isFinite(retentionHours) && retentionHours > 0 ? retentionHours : 24;\n return safeHours * 60 * 60 * 1000;\n }\n\n private async cleanupModulePackageTransactions() {\n const importsRoot = this.getModulePackageImportsRoot();\n const activePointer = await this.loadActiveTransactionPointer();\n const now = Date.now();\n\n try {\n await fs.mkdir(importsRoot, { recursive: true });\n const entries = await fs.readdir(importsRoot, { withFileTypes: true });\n\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n\n const transactionKey = entry.name;\n if (!/^[a-zA-Z0-9-]+$/.test(transactionKey)) {\n continue;\n }\n\n const statusFilePath = this.getStatusFilePath(transactionKey);\n let transaction: ModulePackageStatusFile | null = null;\n\n try {\n transaction = JSON.parse(await fs.readFile(statusFilePath, 'utf-8')) as ModulePackageStatusFile;\n } catch (error) {\n continue;\n }\n\n const updatedAtMs = transaction.updatedAt ? new Date(transaction.updatedAt).getTime() : 0;\n const ageMs = updatedAtMs > 0 ? now - updatedAtMs : Number.MAX_SAFE_INTEGER;\n const isResumable = this.isResumableStatus(transaction.status);\n const maxAgeMs = isResumable\n ? this.getPendingTransactionRetentionMs()\n : this.getCompletedTransactionRetentionMs();\n const shouldDelete = ageMs > maxAgeMs;\n\n if (!shouldDelete) {\n continue;\n }\n\n await fs.rm(path.join(importsRoot, transactionKey), { recursive: true, force: true });\n\n if (activePointer?.transactionKey === transactionKey) {\n await fs.rm(this.getActiveTransactionFilePath(), { force: true });\n }\n }\n } catch (error) {\n this.logger.warn(`Failed to clean up module package transactions: ${String(error)}`);\n }\n }\n\n private async resolveLatestResumableTransaction(): Promise<ModulePackageStatusFile | null> {\n const activePointer = await this.loadActiveTransactionPointer();\n if (activePointer?.transactionKey) {\n try {\n const activeTransaction = await this.loadTransaction(activePointer.transactionKey);\n if (this.isResumableStatus(activeTransaction.status)) {\n return activeTransaction;\n }\n\n await this.clearActiveTransactionIfMatches(activePointer.transactionKey);\n } catch (error) {\n await this.clearActiveTransactionIfMatches(activePointer.transactionKey);\n }\n }\n\n const importsRoot = this.getModulePackageImportsRoot();\n const candidates: ModulePackageStatusFile[] = [];\n\n try {\n const entries = await fs.readdir(importsRoot, { withFileTypes: true });\n\n for (const entry of entries) {\n if (!entry.isDirectory()) {\n continue;\n }\n\n const transactionKey = entry.name;\n if (!/^[a-zA-Z0-9-]+$/.test(transactionKey)) {\n continue;\n }\n\n try {\n const transaction = await this.loadTransaction(transactionKey);\n if (this.isResumableStatus(transaction.status)) {\n candidates.push(transaction);\n }\n } catch (error) {\n continue;\n }\n }\n } catch (error) {\n return null;\n }\n\n candidates.sort((left, right) => {\n const leftUpdatedAt = new Date(left.updatedAt ?? left.createdAt ?? 0).getTime();\n const rightUpdatedAt = new Date(right.updatedAt ?? right.createdAt ?? 0).getTime();\n return rightUpdatedAt - leftUpdatedAt;\n });\n\n const latest = candidates[0] ?? null;\n if (latest) {\n await this.markActiveTransaction(latest.transactionKey);\n }\n return latest;\n }\n\n private toStatusResponse(transaction: ModulePackageStatusFile) {\n return {\n transactionKey: transaction.transactionKey,\n status: transaction.status,\n currentStep: transaction.currentStep,\n moduleName: transaction.moduleName,\n moduleDisplayName: transaction.moduleDisplayName,\n archiveFileName: transaction.archiveFileName,\n manifest: transaction.manifest,\n preview: transaction.preview,\n validation: transaction.validation,\n conflicts: transaction.conflicts,\n outputs: transaction.outputs,\n errorMessage: transaction.errorMessage,\n createdAt: transaction.createdAt,\n updatedAt: transaction.updatedAt,\n };\n }\n\n private async buildExportManifest(moduleName: string, metadataDocument: any, stagingDir: string): Promise<ModulePackageManifest> {\n const expectedPaths = this.buildExpectedPaths(moduleName);\n const checksums = await this.computeDirectoryChecksums(stagingDir, ['manifest.json']);\n\n return {\n schemaVersion: ModulePackageService.SUPPORTED_SCHEMA_VERSION,\n packageType: ModulePackageService.SUPPORTED_PACKAGE_TYPE,\n exportedAt: new Date().toISOString(),\n generatedBy: {\n name: '@solidxai/core',\n },\n module: {\n name: moduleName,\n displayName: metadataDocument?.moduleMetadata?.displayName,\n description: metadataDocument?.moduleMetadata?.description,\n },\n contents: expectedPaths,\n postImport: {\n recommendedSteps: ['restart', 'build', 'seed'],\n },\n checksums,\n };\n }\n\n private async computeDirectoryChecksums(rootDir: string, excludedRelativePaths: string[] = []): Promise<Record<string, string>> {\n const excludedPaths = new Set(excludedRelativePaths.map((entry) => entry.replace(/\\\\/g, '/')));\n const filePaths = await this.collectFilePathsRecursively(rootDir);\n const checksums: Record<string, string> = {};\n\n for (const filePath of filePaths) {\n const relativePath = path.relative(rootDir, filePath).replace(/\\\\/g, '/');\n if (excludedPaths.has(relativePath)) {\n continue;\n }\n\n checksums[relativePath] = await this.computeSha256(filePath);\n }\n\n return checksums;\n }\n\n private async collectFilePathsRecursively(rootDir: string): Promise<string[]> {\n const entries = await fs.readdir(rootDir, { withFileTypes: true });\n const nestedPaths = await Promise.all(entries.map(async (entry) => {\n const entryPath = path.join(rootDir, entry.name);\n if (entry.isDirectory()) {\n return this.collectFilePathsRecursively(entryPath);\n }\n\n return [entryPath];\n }));\n\n return nestedPaths.flat();\n }\n\n private async createArchiveFromDirectory(sourceDir: string, archiveFilePath: string): Promise<void> {\n await fs.mkdir(path.dirname(archiveFilePath), { recursive: true });\n\n await new Promise<void>((resolve, reject) => {\n const output = createWriteStream(archiveFilePath);\n const archive = archiver('zip', {\n zlib: { level: 9 },\n });\n\n const rejectOnce = (error: Error) => {\n output.destroy();\n reject(error);\n };\n\n output.on('close', () => resolve());\n output.on('error', rejectOnce);\n archive.on('warning', rejectOnce);\n archive.on('error', rejectOnce);\n\n archive.pipe(output);\n archive.directory(sourceDir, false);\n void archive.finalize();\n });\n }\n\n private async computeSha256(filePath: string): Promise<string> {\n const fileBuffer = await fs.readFile(filePath);\n return createHash('sha256').update(fileBuffer).digest('hex');\n }\n}\n"]}
|
|
@@ -310,6 +310,15 @@ declare const getSolidCoreSettings: (isProd: boolean) => [{
|
|
|
310
310
|
readonly group: "system-settings";
|
|
311
311
|
readonly sortOrder: 30;
|
|
312
312
|
readonly controlType: "shortText";
|
|
313
|
+
}, {
|
|
314
|
+
readonly moduleName: "solid-core";
|
|
315
|
+
readonly key: "frontendAdminBaseUrl";
|
|
316
|
+
readonly value: string;
|
|
317
|
+
readonly level: SettingLevel.SystemAdminReadonly;
|
|
318
|
+
readonly label: "Frontend Admin Base URL";
|
|
319
|
+
readonly group: "system-settings";
|
|
320
|
+
readonly sortOrder: 35;
|
|
321
|
+
readonly controlType: "shortText";
|
|
313
322
|
}, {
|
|
314
323
|
readonly moduleName: "solid-core";
|
|
315
324
|
readonly key: "solidAppWebsiteUrl";
|
|
@@ -1399,6 +1408,15 @@ export declare class SolidCoreDefaultSettingsProvider implements ISettingsProvid
|
|
|
1399
1408
|
readonly group: "system-settings";
|
|
1400
1409
|
readonly sortOrder: 30;
|
|
1401
1410
|
readonly controlType: "shortText";
|
|
1411
|
+
}, {
|
|
1412
|
+
readonly moduleName: "solid-core";
|
|
1413
|
+
readonly key: "frontendAdminBaseUrl";
|
|
1414
|
+
readonly value: string;
|
|
1415
|
+
readonly level: SettingLevel.SystemAdminReadonly;
|
|
1416
|
+
readonly label: "Frontend Admin Base URL";
|
|
1417
|
+
readonly group: "system-settings";
|
|
1418
|
+
readonly sortOrder: 35;
|
|
1419
|
+
readonly controlType: "shortText";
|
|
1402
1420
|
}, {
|
|
1403
1421
|
readonly moduleName: "solid-core";
|
|
1404
1422
|
readonly key: "solidAppWebsiteUrl";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-settings-provider.service.d.ts","sourceRoot":"","sources":["../../../src/services/settings/default-settings-provider.service.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EAEjB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AACxD,eAAO,MAAM,8BAA8B,wBAAwB,CAAC;AAGpE,QAAA,MAAM,oBAAoB,GAAI,QAAQ,OAAO
|
|
1
|
+
{"version":3,"file":"default-settings-provider.service.d.ts","sourceRoot":"","sources":["../../../src/services/settings/default-settings-provider.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -362,6 +362,16 @@ const getSolidCoreSettings = (isProd) => [
|
|
|
362
362
|
sortOrder: 30,
|
|
363
363
|
controlType: "shortText",
|
|
364
364
|
},
|
|
365
|
+
{
|
|
366
|
+
moduleName: "solid-core",
|
|
367
|
+
key: "frontendAdminBaseUrl",
|
|
368
|
+
value: process.env.FRONTEND_BASE_URL,
|
|
369
|
+
level: interfaces_1.SettingLevel.SystemAdminReadonly,
|
|
370
|
+
label: "Frontend Admin Base URL",
|
|
371
|
+
group: "system-settings",
|
|
372
|
+
sortOrder: 35,
|
|
373
|
+
controlType: "shortText",
|
|
374
|
+
},
|
|
365
375
|
{
|
|
366
376
|
moduleName: "solid-core",
|
|
367
377
|
key: "solidAppWebsiteUrl",
|