@solidxai/core 0.1.11-beta.11 → 0.1.11-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/helpers/module-metadata-helper.service.js +1 -1
  2. package/dist/helpers/module-metadata-helper.service.js.map +1 -1
  3. package/dist/services/datasource-introspection.service.d.ts +1 -0
  4. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  5. package/dist/services/datasource-introspection.service.js +14 -5
  6. package/dist/services/datasource-introspection.service.js.map +1 -1
  7. package/dist-tests/api/authenticate.spec.js +119 -0
  8. package/dist-tests/api/authenticate.spec.js.map +1 -0
  9. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
  10. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
  11. package/dist-tests/api/ping.spec.js +21 -0
  12. package/dist-tests/api/ping.spec.js.map +1 -0
  13. package/dist-tests/helpers/auth.js +41 -0
  14. package/dist-tests/helpers/auth.js.map +1 -0
  15. package/dist-tests/helpers/env.js +11 -0
  16. package/dist-tests/helpers/env.js.map +1 -0
  17. package/docs/agent-hub-grooming.md +301 -0
  18. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +438 -0
  19. package/docs/dashboards/dashboard-curl-smoke-tests.txt +146 -0
  20. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +172 -0
  21. package/docs/datasource-introspection-ddl-analysis.md +326 -0
  22. package/docs/datasource-introspection-implementation-plan.md +306 -0
  23. package/docs/grouping-enhancements.md +89 -0
  24. package/docs/java-spring/README.md +3 -0
  25. package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
  26. package/docs/module-package-import-handoff.md +691 -0
  27. package/docs/seed-changes.md +65 -0
  28. package/docs/test-data-workflow.md +200 -0
  29. package/docs/type-declaration-import-issue.md +24 -0
  30. package/package.json +1 -1
  31. package/src/helpers/module-metadata-helper.service.ts +1 -1
  32. package/src/services/datasource-introspection.service.ts +18 -5
  33. package/.claude/settings.local.json +0 -16
  34. package/CLAUDE.md +0 -26
  35. package/src/services/1.js +0 -6
@@ -72,7 +72,7 @@ let ModuleMetadataHelperService = ModuleMetadataHelperService_1 = class ModuleMe
72
72
  if (!moduleName) {
73
73
  return '';
74
74
  }
75
- return path.resolve(process.cwd(), 'src', moduleName);
75
+ return path.resolve(process.cwd(), 'src', (0, lodash_1.kebabCase)(moduleName));
76
76
  }
77
77
  async getSolidUiModulePath(moduleName) {
78
78
  if (!moduleName) {
@@ -1 +1 @@
1
- {"version":3,"file":"module-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { kebabCase } from 'lodash';\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\nimport { SOLID_CORE_MODULE_NAME } from \"src/constants\";\nimport { DiskFileService } from \"src/services/file\";\n\n@Injectable()\nexport class ModuleMetadataHelperService {\n private readonly logger = new Logger(ModuleMetadataHelperService.name);\n constructor(private readonly fileService: DiskFileService) { }\n // async getModuleMetadataConfig(moduleName: string): Promise<ModuleMetadata> {\n // const filePath = this.getModuleMetadataFilePath(moduleName);\n // const metadata = await this.getModuleMetadata(filePath);\n // return metadata;\n // }\n\n async getModuleMetadataConfiguration(configFilePath: string): Promise<any> {\n if (!configFilePath) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configFilePath, 'utf8');\n return JSON.parse(fileContent);\n }\n catch (error: any) {\n this.logger.error(`module metadata configuration non existent at: ${configFilePath}`);\n }\n\n return null;\n }\n\n async getModulePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n return path.resolve(process.cwd(), 'src', moduleName);\n }\n\n async getSolidUiModulePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n\n const dashModuleName = kebabCase(moduleName);\n return path.resolve(process.cwd(), '..', 'solid-ui', 'src', dashModuleName);\n }\n\n private resolveModuleMetadataFolderPath(moduleName: string): string {\n const dashModuleName = kebabCase(moduleName);\n return path.resolve(process.cwd(), 'src', dashModuleName, 'metadata');\n }\n\n async getModuleMetadataFilePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n const dashModuleName = kebabCase(moduleName);\n const filePath = path.join(\n this.resolveModuleMetadataFolderPath(dashModuleName),\n `${dashModuleName}-metadata.json`,\n );\n\n if (dashModuleName === SOLID_CORE_MODULE_NAME) {\n const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);\n const fallbackExists = await this.fileService.exists(fallbackPath);\n if (fallbackExists) {\n this.logger.debug(`Fallback path: ${fallbackPath}`);\n return fallbackPath;\n }\n\n const consumingProjectFallbackPath = path.resolve(process.cwd(), 'node_modules', '@solidxai', 'core', 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);\n const consumingProjectFallbackExists = await this.fileService.exists(consumingProjectFallbackPath);\n if (consumingProjectFallbackExists) {\n this.logger.debug(`Fallback path: ${consumingProjectFallbackPath}`);\n return consumingProjectFallbackPath;\n }\n }\n\n return filePath;\n }\n\n async getModuleMetadataFolderPath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n return this.resolveModuleMetadataFolderPath(moduleName);\n }\n\n}\n"]}
1
+ {"version":3,"file":"module-metadata-helper.service.js","sourceRoot":"","sources":["../../src/helpers/module-metadata-helper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { kebabCase } from 'lodash';\nimport { Injectable, Logger } from \"@nestjs/common\";\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\nimport { SOLID_CORE_MODULE_NAME } from \"src/constants\";\nimport { DiskFileService } from \"src/services/file\";\n\n@Injectable()\nexport class ModuleMetadataHelperService {\n private readonly logger = new Logger(ModuleMetadataHelperService.name);\n constructor(private readonly fileService: DiskFileService) { }\n // async getModuleMetadataConfig(moduleName: string): Promise<ModuleMetadata> {\n // const filePath = this.getModuleMetadataFilePath(moduleName);\n // const metadata = await this.getModuleMetadata(filePath);\n // return metadata;\n // }\n\n async getModuleMetadataConfiguration(configFilePath: string): Promise<any> {\n if (!configFilePath) {\n return null;\n }\n try {\n const fileContent = await fs.readFile(configFilePath, 'utf8');\n return JSON.parse(fileContent);\n }\n catch (error: any) {\n this.logger.error(`module metadata configuration non existent at: ${configFilePath}`);\n }\n\n return null;\n }\n\n async getModulePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n return path.resolve(process.cwd(), 'src', kebabCase(moduleName));\n }\n\n async getSolidUiModulePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n\n const dashModuleName = kebabCase(moduleName);\n return path.resolve(process.cwd(), '..', 'solid-ui', 'src', dashModuleName);\n }\n\n private resolveModuleMetadataFolderPath(moduleName: string): string {\n const dashModuleName = kebabCase(moduleName);\n return path.resolve(process.cwd(), 'src', dashModuleName, 'metadata');\n }\n\n async getModuleMetadataFilePath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n const dashModuleName = kebabCase(moduleName);\n const filePath = path.join(\n this.resolveModuleMetadataFolderPath(dashModuleName),\n `${dashModuleName}-metadata.json`,\n );\n\n if (dashModuleName === SOLID_CORE_MODULE_NAME) {\n const fallbackPath = path.resolve(process.cwd(), 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);\n const fallbackExists = await this.fileService.exists(fallbackPath);\n if (fallbackExists) {\n this.logger.debug(`Fallback path: ${fallbackPath}`);\n return fallbackPath;\n }\n\n const consumingProjectFallbackPath = path.resolve(process.cwd(), 'node_modules', '@solidxai', 'core', 'src', 'seeders', 'seed-data', `${dashModuleName}-metadata.json`);\n const consumingProjectFallbackExists = await this.fileService.exists(consumingProjectFallbackPath);\n if (consumingProjectFallbackExists) {\n this.logger.debug(`Fallback path: ${consumingProjectFallbackPath}`);\n return consumingProjectFallbackPath;\n }\n }\n\n return filePath;\n }\n\n async getModuleMetadataFolderPath(moduleName: string): Promise<string> {\n if (!moduleName) {\n return '';\n }\n return this.resolveModuleMetadataFolderPath(moduleName);\n }\n\n}\n"]}
@@ -332,6 +332,7 @@ export declare class DatasourceIntrospectionService {
332
332
  private toTableKey;
333
333
  private toModelMapKey;
334
334
  private syncTypeormDatasourceFile;
335
+ private writeMigrationFile;
335
336
  private renderTypeormDatasourceTemplate;
336
337
  private arrayLiteralContainsValue;
337
338
  private getTypeormDatasourceOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"datasource-introspection.service.d.ts","sourceRoot":"","sources":["../../src/services/datasource-introspection.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datasource-introspection.service.d.ts","sourceRoot":"","sources":["../../src/services/datasource-introspection.service.ts"],"names":[],"mappings":"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"}
@@ -290,10 +290,7 @@ let DatasourceIntrospectionService = class DatasourceIntrospectionService {
290
290
  if (!mappingDto.modelId) {
291
291
  throw new common_1.BadRequestException("Persist the model mapping first so the generated entity can be registered before creating migration artifacts.");
292
292
  }
293
- if (plan.migration.willGenerate && plan.migration.content && plan.migration.filePath) {
294
- await fs.mkdir(path.dirname(plan.migration.filePath), { recursive: true });
295
- await fs.writeFile(plan.migration.filePath, plan.migration.content, "utf8");
296
- }
293
+ const migrationWritten = await this.writeMigrationFile(plan.migration);
297
294
  const datasourceFile = await this.syncTypeormDatasourceFile(module.name, datasource, plan.modelPayload.singularName);
298
295
  return {
299
296
  data: {
@@ -301,7 +298,7 @@ let DatasourceIntrospectionService = class DatasourceIntrospectionService {
301
298
  operation: plan.operation,
302
299
  migration: {
303
300
  ...plan.migration,
304
- written: Boolean(plan.migration.willGenerate && plan.migration.filePath),
301
+ written: migrationWritten,
305
302
  },
306
303
  datasourceFile,
307
304
  summary: plan.summary,
@@ -1494,6 +1491,18 @@ let DatasourceIntrospectionService = class DatasourceIntrospectionService {
1494
1491
  migrationGlobRegistered: true,
1495
1492
  };
1496
1493
  }
1494
+ async writeMigrationFile(migration) {
1495
+ if (!migration.willGenerate || !migration.content || !migration.filePath) {
1496
+ return false;
1497
+ }
1498
+ await fs.mkdir(path.dirname(migration.filePath), { recursive: true });
1499
+ await fs.writeFile(migration.filePath, migration.content, "utf8");
1500
+ const writtenContent = await fs.readFile(migration.filePath, "utf8").catch(() => null);
1501
+ if (writtenContent !== migration.content) {
1502
+ throw new common_1.BadRequestException(`Migration file could not be verified after writing: ${migration.filePath}`);
1503
+ }
1504
+ return true;
1505
+ }
1497
1506
  renderTypeormDatasourceTemplate(input) {
1498
1507
  const { datasource, entityClassName, entityImportPath, migrationGlob } = input;
1499
1508
  const envPrefix = datasource.envPrefix?.toUpperCase?.() || "DEFAULT";