@solidstarters/solid-core 1.2.184 → 1.2.185

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 (43) hide show
  1. package/dist/config/iam.config.d.ts +2 -0
  2. package/dist/config/iam.config.d.ts.map +1 -1
  3. package/dist/config/iam.config.js +1 -0
  4. package/dist/config/iam.config.js.map +1 -1
  5. package/dist/interfaces.d.ts +9 -1
  6. package/dist/interfaces.d.ts.map +1 -1
  7. package/dist/interfaces.js.map +1 -1
  8. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  9. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +3 -2
  10. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  11. package/dist/seeders/seed-data/solid-core-metadata.json +48 -48
  12. package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.d.ts +10 -0
  13. package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.d.ts.map +1 -0
  14. package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.js +35 -0
  15. package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.js.map +1 -0
  16. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +16 -0
  17. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +1 -0
  18. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +74 -0
  19. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +1 -0
  20. package/dist/services/model-metadata.service.js +4 -4
  21. package/dist/services/model-metadata.service.js.map +1 -1
  22. package/dist/services/setting.service.d.ts.map +1 -1
  23. package/dist/services/setting.service.js +4 -2
  24. package/dist/services/setting.service.js.map +1 -1
  25. package/dist/services/solid-ts-morph.service.d.ts +5 -0
  26. package/dist/services/solid-ts-morph.service.d.ts.map +1 -1
  27. package/dist/services/solid-ts-morph.service.js +21 -0
  28. package/dist/services/solid-ts-morph.service.js.map +1 -1
  29. package/dist/solid-core.module.d.ts.map +1 -1
  30. package/dist/solid-core.module.js +4 -0
  31. package/dist/solid-core.module.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/src/config/iam.config.ts +2 -1
  35. package/src/interfaces.ts +12 -1
  36. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +4 -3
  37. package/src/seeders/seed-data/solid-core-metadata.json +48 -48
  38. package/src/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.ts +34 -0
  39. package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +69 -0
  40. package/src/services/model-metadata.service.ts +4 -4
  41. package/src/services/setting.service.ts +4 -2
  42. package/src/services/solid-ts-morph.service.ts +37 -0
  43. package/src/solid-core.module.ts +6 -1
@@ -3,6 +3,7 @@ import { Injectable, Logger } from "@nestjs/common";
3
3
  import { join, dirname, normalize, isAbsolute, basename } from "node:path";
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
5
5
  import { Project, Node, ObjectLiteralExpression, ArrayLiteralExpression, QuoteKind, IndentationText } from "ts-morph";
6
+ import { MethodDeclarationStructure, StructureKind } from "ts-morph";
6
7
 
7
8
  type Bucket = "providers" | "exports";
8
9
 
@@ -260,4 +261,40 @@ export class SolidTsMorphService {
260
261
  this.logger.log(`Staged provider registration in: ${this.rel(abs)} (${registerIn.join(", ")})`);
261
262
  return { staged: true };
262
263
  }
264
+
265
+
266
+ addMethodToExistingClass(
267
+ filePath: string,
268
+ className: string,
269
+ methodName: string,
270
+ methodCode: string,
271
+ ): { staged: boolean; overwritten: boolean; skipped: boolean } {
272
+ const abs = this.resolveRepoPath(filePath);
273
+ if (!existsSync(abs))
274
+ throw new Error(`addMethodToExistingClass: File not found at ${filePath}`);
275
+
276
+ const existing = this.project.getSourceFile(abs);
277
+ const sourceFile = existing
278
+ ? existing
279
+ : this.project.createSourceFile(abs, readFileSync(abs, "utf8"), { overwrite: true });
280
+
281
+ const targetClass = sourceFile.getClass(className);
282
+ if (!targetClass)
283
+ throw new Error(`addMethodToExistingClass: Class ${className} not found in ${filePath}`);
284
+
285
+ const existingMethod = targetClass.getMethod(methodName);
286
+ if (existingMethod) {
287
+
288
+ this.logger.log(`Skipped adding method '${methodName}' (already exists)`);
289
+ return { staged: false, overwritten: false, skipped: true };
290
+ }
291
+ // Add the LLM-generated method directly
292
+ targetClass.addMember(methodCode);
293
+
294
+
295
+ this.dirtySourceFiles.add(abs);
296
+ this.logger.log(`Staged method '${methodName}' in class ${className} at ${this.rel(abs)}`);
297
+ return { staged: true, overwritten: !!existingMethod, skipped: false };
298
+ }
299
+
263
300
  }
@@ -102,6 +102,7 @@ import { UserSeederService } from './seeders/user-seeder.service';
102
102
  import { AuthenticationService } from './services/authentication.service';
103
103
  import { BcryptService } from './services/bcrypt.service';
104
104
  import { UuidExternalIdComputedFieldProvider } from './services/computed-fields/uuid-external-id-computed-field-provider.service';
105
+ import { UuidExternalIdEntityComputedFieldProvider } from './services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service';
105
106
  import { EmailTemplateService } from './services/email-template.service';
106
107
  import { FileService } from './services/file.service';
107
108
  import { HashingService } from './services/hashing.service';
@@ -296,6 +297,7 @@ import { SolidCreateComputedProviderMcpHandler } from './services/genai/mcp-hand
296
297
  import { SolidTsMorphService } from './services/solid-ts-morph.service';
297
298
  import { SolidAddVariableToDashboardMcpHandler } from './services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service';
298
299
  import { SolidAddQuestionToDashboardMcpHandler } from './services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service';
300
+ import { SolidAddCustomServiceMethodMcpHandler } from './services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service';
299
301
 
300
302
 
301
303
  @Global()
@@ -538,6 +540,7 @@ import { SolidAddQuestionToDashboardMcpHandler } from './services/genai/mcp-hand
538
540
  TinyUrlService,
539
541
  PdfService,
540
542
  UuidExternalIdComputedFieldProvider,
543
+ UuidExternalIdEntityComputedFieldProvider,
541
544
  ListOfModelsSelectionProvider,
542
545
  ListOfScheduledJobsSelectionProvider,
543
546
  LocaleListSelectionProvider,
@@ -632,7 +635,7 @@ import { SolidAddQuestionToDashboardMcpHandler } from './services/genai/mcp-hand
632
635
  SolidCreateModelWithFieldsMcpHandler,
633
636
  SolidAddFieldsToModelMcpHandler,
634
637
  SolidUpdateLayoutMcpHandler,
635
-
638
+
636
639
  SolidCreateDashboardWithWidgetsMcpHandler,
637
640
  SolidCreateDashboardQuestionMcpHandler,
638
641
  SolidCreateDashboardQuestionSqlDatasetConfigMcpHandler,
@@ -640,6 +643,8 @@ import { SolidAddQuestionToDashboardMcpHandler } from './services/genai/mcp-hand
640
643
  SolidCreateComputedProviderMcpHandler,
641
644
  SolidAddVariableToDashboardMcpHandler,
642
645
  SolidAddQuestionToDashboardMcpHandler,
646
+
647
+ SolidAddCustomServiceMethodMcpHandler,
643
648
  SolidTsMorphService,
644
649
 
645
650
  ViewMetadataRepository,