@solidstarters/solid-core 1.2.161 → 1.2.163

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 (58) hide show
  1. package/dist/commands/ingest.command.d.ts +16 -0
  2. package/dist/commands/ingest.command.d.ts.map +1 -0
  3. package/dist/commands/ingest.command.js +50 -0
  4. package/dist/commands/ingest.command.js.map +1 -0
  5. package/dist/commands/refresh-module.command.d.ts.map +1 -1
  6. package/dist/commands/refresh-module.command.js.map +1 -1
  7. package/dist/controllers/service.controller.d.ts +16 -1
  8. package/dist/controllers/service.controller.d.ts.map +1 -1
  9. package/dist/controllers/service.controller.js +55 -2
  10. package/dist/controllers/service.controller.js.map +1 -1
  11. package/dist/controllers/test.controller.d.ts +6 -1
  12. package/dist/controllers/test.controller.d.ts.map +1 -1
  13. package/dist/controllers/test.controller.js +21 -3
  14. package/dist/controllers/test.controller.js.map +1 -1
  15. package/dist/entities/common.entity.d.ts.map +1 -1
  16. package/dist/entities/common.entity.js +14 -2
  17. package/dist/entities/common.entity.js.map +1 -1
  18. package/dist/entities/user.entity.d.ts.map +1 -1
  19. package/dist/entities/user.entity.js +11 -1
  20. package/dist/entities/user.entity.js.map +1 -1
  21. package/dist/helpers/error-mapper.service.d.ts +8 -0
  22. package/dist/helpers/error-mapper.service.d.ts.map +1 -0
  23. package/dist/helpers/error-mapper.service.js +108 -0
  24. package/dist/helpers/error-mapper.service.js.map +1 -0
  25. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  26. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +4 -2
  27. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  28. package/dist/seeders/seed-data/solid-core-metadata.json +21 -0
  29. package/dist/services/genai/ingest-metadata.service.d.ts +38 -0
  30. package/dist/services/genai/ingest-metadata.service.d.ts.map +1 -0
  31. package/dist/services/genai/ingest-metadata.service.js +530 -0
  32. package/dist/services/genai/ingest-metadata.service.js.map +1 -0
  33. package/dist/services/genai/r2r-helper.service.d.ts +7 -0
  34. package/dist/services/genai/r2r-helper.service.d.ts.map +1 -0
  35. package/dist/services/genai/r2r-helper.service.js +36 -0
  36. package/dist/services/genai/r2r-helper.service.js.map +1 -0
  37. package/dist/services/setting.service.d.ts.map +1 -1
  38. package/dist/services/setting.service.js +38 -20
  39. package/dist/services/setting.service.js.map +1 -1
  40. package/dist/solid-core.module.d.ts.map +1 -1
  41. package/dist/solid-core.module.js +8 -0
  42. package/dist/solid-core.module.js.map +1 -1
  43. package/dist/tsconfig.tsbuildinfo +1 -1
  44. package/package.json +2 -1
  45. package/src/commands/ingest-rag-chunking-strategy-for.md +224 -0
  46. package/src/commands/ingest.command.ts +36 -0
  47. package/src/commands/refresh-module.command.ts +0 -1
  48. package/src/controllers/service.controller.ts +66 -3
  49. package/src/controllers/test.controller.ts +15 -3
  50. package/src/entities/common.entity.ts +10 -0
  51. package/src/entities/user.entity.ts +33 -1
  52. package/src/helpers/error-mapper.service.ts +214 -0
  53. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +4 -2
  54. package/src/seeders/seed-data/solid-core-metadata.json +21 -0
  55. package/src/services/genai/ingest-metadata.service.ts +695 -0
  56. package/src/services/genai/r2r-helper.service.ts +33 -0
  57. package/src/services/setting.service.ts +46 -22
  58. package/src/solid-core.module.ts +8 -0
@@ -0,0 +1,16 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { SolidRegistry } from 'src/helpers/solid-registry';
3
+ import { IngestMetadataService } from 'src/services/genai/ingest-metadata.service';
4
+ interface IngestCommandOptions {
5
+ module?: string;
6
+ }
7
+ export declare class IngestCommand extends CommandRunner {
8
+ private readonly solidRegistry;
9
+ private readonly ingestMetadataService;
10
+ private readonly logger;
11
+ constructor(solidRegistry: SolidRegistry, ingestMetadataService: IngestMetadataService);
12
+ run(passedParam: string[], options?: IngestCommandOptions): Promise<void>;
13
+ parseString(val: string): string;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=ingest.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.command.d.ts","sourceRoot":"","sources":["../../src/commands/ingest.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CAEjB;AAED,qBACa,aAAc,SAAQ,aAAa;IAI5C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAJxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;gBAGtC,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB;IAKzD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/E,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGjC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var IngestCommand_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.IngestCommand = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const nest_commander_1 = require("nest-commander");
16
+ const solid_registry_1 = require("../helpers/solid-registry");
17
+ const ingest_metadata_service_1 = require("../services/genai/ingest-metadata.service");
18
+ let IngestCommand = IngestCommand_1 = class IngestCommand extends nest_commander_1.CommandRunner {
19
+ constructor(solidRegistry, ingestMetadataService) {
20
+ super();
21
+ this.solidRegistry = solidRegistry;
22
+ this.ingestMetadataService = ingestMetadataService;
23
+ this.logger = new common_1.Logger(IngestCommand_1.name);
24
+ }
25
+ async run(passedParam, options) {
26
+ this.logger.log(`Running the solid ingest for module ${options.module} at ${new Date()}`);
27
+ await this.ingestMetadataService.ingest();
28
+ }
29
+ parseString(val) {
30
+ return val;
31
+ }
32
+ };
33
+ exports.IngestCommand = IngestCommand;
34
+ __decorate([
35
+ (0, nest_commander_1.Option)({
36
+ flags: '-m, --module [module name]',
37
+ description: 'The seeder to run.',
38
+ required: false,
39
+ defaultValue: ''
40
+ }),
41
+ __metadata("design:type", Function),
42
+ __metadata("design:paramtypes", [String]),
43
+ __metadata("design:returntype", String)
44
+ ], IngestCommand.prototype, "parseString", null);
45
+ exports.IngestCommand = IngestCommand = IngestCommand_1 = __decorate([
46
+ (0, nest_commander_1.Command)({ name: 'ingest', description: 'Ingests solid metadata json for all modules deployed in the consuming project' }),
47
+ __metadata("design:paramtypes", [solid_registry_1.SolidRegistry,
48
+ ingest_metadata_service_1.IngestMetadataService])
49
+ ], IngestCommand);
50
+ //# sourceMappingURL=ingest.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.command.js","sourceRoot":"","sources":["../../src/commands/ingest.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAC3D,uFAAmF;AAQ5E,IAAM,aAAa,qBAAnB,MAAM,aAAc,SAAQ,8BAAa;IAG9C,YACmB,aAA4B,EAC5B,qBAA4C;QAE7D,KAAK,EAAE,CAAC;QAHS,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAJ9C,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAOzD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA8B;QAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,OAAO,CAAC,MAAM,OAAO,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAQD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAxBY,sCAAa;AAqBxB;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,EAAE;KACjB,CAAC;;;;gDAGD;wBAvBU,aAAa;IADzB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+EAA+E,EAAE,CAAC;qCAKtF,8BAAa;QACL,+CAAqB;GALpD,aAAa,CAwBzB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { IngestMetadataService } from 'src/services/genai/ingest-metadata.service';\n\ninterface IngestCommandOptions {\n module?: string;\n // seeder?: string;\n}\n\n@Command({ name: 'ingest', description: 'Ingests solid metadata json for all modules deployed in the consuming project' })\nexport class IngestCommand extends CommandRunner {\n private readonly logger = new Logger(IngestCommand.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly ingestMetadataService: IngestMetadataService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: IngestCommandOptions): Promise<void> {\n this.logger.log(`Running the solid ingest for module ${options.module} at ${new Date()}`);\n await this.ingestMetadataService.ingest();\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'The seeder to run.',\n required: false,\n defaultValue: ''\n })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-module.command.d.ts","sourceRoot":"","sources":["../../src/commands/refresh-module.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAIa,oBAAqB,SAAQ,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAI/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAE1D,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQ9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOjC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,EAAE;CAOlD"}
1
+ {"version":3,"file":"refresh-module.command.d.ts","sourceRoot":"","sources":["../../src/commands/refresh-module.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,qBAIa,oBAAqB,SAAQ,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAI/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAE1D,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS5B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQ9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAOjC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,EAAE;CAOlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-module.command.js","sourceRoot":"","sources":["../../src/commands/refresh-module.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,iFAA4E;AAC5E,qCAAwC;AAYjC,IAAM,oBAAoB,4BAA1B,MAAM,oBAAqB,SAAQ,8BAAa;IACrD,YACmB,qBAA4C;QAE7D,KAAK,EAAE,CAAC;QAFS,0BAAqB,GAArB,qBAAqB,CAAuB;QAI9C,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IADhE,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,YAAsB,EAAE,OAAwB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,MAAM,qBAAqB,GAAG;YAC5B,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,aAAa,EAAE,OAAO,CAAC,IAAI;YAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,CAAC;IAOD,OAAO,CAAC,GAAW;QACjB,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAOD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAMD,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAID,QAAQ,CAAC,OAAuB;QAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,qBAAY,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CAEF,CAAA;AA1DY,oDAAoB;AA2B/B;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,6CAA6C;KAC3D,CAAC;;;;mDAGD;AAOD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,+CAA+C;KAC7D,CAAC;;;;qDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qBAAqB;KACnC,CAAC;;;;uDAID;+BA/CU,oBAAoB;IAJhC,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uFAAuF;KACrG,CAAC;qCAG0C,+CAAqB;GAFpD,oBAAoB,CA0DhC","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { ModuleMetadataService } from '../services/module-metadata.service';\nimport { CommandError } from './helper';\n\ninterface CommandOptions {\n id: number;\n name: string;\n dryRun: boolean;\n}\n\n@Command({\n name: 'refresh-module',\n description: 'Refreshes a module and its model and fields i.e (entity,dto,service,controller files)',\n})\nexport class RefreshModuleCommand extends CommandRunner {\n constructor(\n private readonly moduleMetadataService: ModuleMetadataService,\n ) {\n super();\n }\n private readonly logger = new Logger(RefreshModuleCommand.name);\n\n async run(_passedParam: string[], options?: CommandOptions): Promise<void> {\n const errors = this.validate(options);\n if (errors.length) {\n errors.forEach((error) => this.logger.error(error));\n return;\n }\n const codeGenerationOptions = {\n moduleId: options.id,\n moduleUserKey: options.name,\n dryRun: options.dryRun,\n };\n await this.moduleMetadataService.generateCode(codeGenerationOptions);\n }\n\n\n @Option({\n flags: '-i, --id [module ID]',\n description: 'Module ID from the ss_module_metadata table',\n })\n parseId(val: string): number {\n return +val;\n }\n\n // Accept the module name as an argument\n @Option({\n flags: '-n, --name [module name]',\n description: 'Module Name from the ss_module_metadata table',\n })\n parseName(val: string): string {\n return val;\n }\n\n @Option({\n flags: '-d, --dryRun [dry run]',\n description: 'Dry run the command',\n })\n parseDryRun(val: string): boolean {\n this.logger.debug(`Dry run : ${val}`);\n return (val === 'false') ? false : true;\n }\n\n\n // Validate the options passed\n validate(options: CommandOptions): CommandError[] {\n if (!options.id && !options.name) {\n return [new CommandError('Module ID or Module Name is required')];\n }\n return [];\n }\n\n}\n"]}
1
+ {"version":3,"file":"refresh-module.command.js","sourceRoot":"","sources":["../../src/commands/refresh-module.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,iFAA4E;AAC5E,qCAAwC;AAYjC,IAAM,oBAAoB,4BAA1B,MAAM,oBAAqB,SAAQ,8BAAa;IACrD,YACmB,qBAA4C;QAE7D,KAAK,EAAE,CAAC;QAFS,0BAAqB,GAArB,qBAAqB,CAAuB;QAI9C,WAAM,GAAG,IAAI,eAAM,CAAC,sBAAoB,CAAC,IAAI,CAAC,CAAC;IADhE,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,YAAsB,EAAE,OAAwB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,MAAM,qBAAqB,GAAG;YAC5B,QAAQ,EAAE,OAAO,CAAC,EAAE;YACpB,aAAa,EAAE,OAAO,CAAC,IAAI;YAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QACF,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,CAAC;IAMD,OAAO,CAAC,GAAW;QACjB,OAAO,CAAC,GAAG,CAAC;IACd,CAAC;IAOD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAMD,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAID,QAAQ,CAAC,OAAuB;QAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,qBAAY,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CAEF,CAAA;AAzDY,oDAAoB;AA0B/B;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,6CAA6C;KAC3D,CAAC;;;;mDAGD;AAOD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,+CAA+C;KAC7D,CAAC;;;;qDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,qBAAqB;KACnC,CAAC;;;;uDAID;+BA9CU,oBAAoB;IAJhC,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uFAAuF;KACrG,CAAC;qCAG0C,+CAAqB;GAFpD,oBAAoB,CAyDhC","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { ModuleMetadataService } from '../services/module-metadata.service';\nimport { CommandError } from './helper';\n\ninterface CommandOptions {\n id: number;\n name: string;\n dryRun: boolean;\n}\n\n@Command({\n name: 'refresh-module',\n description: 'Refreshes a module and its model and fields i.e (entity,dto,service,controller files)',\n})\nexport class RefreshModuleCommand extends CommandRunner {\n constructor(\n private readonly moduleMetadataService: ModuleMetadataService,\n ) {\n super();\n }\n private readonly logger = new Logger(RefreshModuleCommand.name);\n\n async run(_passedParam: string[], options?: CommandOptions): Promise<void> {\n const errors = this.validate(options);\n if (errors.length) {\n errors.forEach((error) => this.logger.error(error));\n return;\n }\n const codeGenerationOptions = {\n moduleId: options.id,\n moduleUserKey: options.name,\n dryRun: options.dryRun,\n };\n await this.moduleMetadataService.generateCode(codeGenerationOptions);\n }\n\n @Option({\n flags: '-i, --id [module ID]',\n description: 'Module ID from the ss_module_metadata table',\n })\n parseId(val: string): number {\n return +val;\n }\n\n // Accept the module name as an argument\n @Option({\n flags: '-n, --name [module name]',\n description: 'Module Name from the ss_module_metadata table',\n })\n parseName(val: string): string {\n return val;\n }\n\n @Option({\n flags: '-d, --dryRun [dry run]',\n description: 'Dry run the command',\n })\n parseDryRun(val: string): boolean {\n this.logger.debug(`Dry run : ${val}`);\n return (val === 'false') ? false : true;\n }\n\n\n // Validate the options passed\n validate(options: CommandOptions): CommandError[] {\n if (!options.id && !options.name) {\n return [new CommandError('Module ID or Module Name is required')];\n }\n return [];\n }\n\n}\n"]}
@@ -1,11 +1,26 @@
1
1
  import { SolidRegistry } from '../helpers/solid-registry';
2
+ import { ActiveUserData } from 'src/interfaces/active-user-data.interface';
3
+ import { AiInteractionService } from 'src/services/ai-interaction.service';
4
+ import { MqMessageService } from 'src/services/mq-message.service';
5
+ import { ErrorMapperService } from 'src/helpers/error-mapper.service';
2
6
  export declare class ServiceController {
3
7
  private readonly solidRegistry;
8
+ private readonly aiInteractionService;
9
+ private readonly mqMessageService;
10
+ private readonly errorMapper;
4
11
  private readonly logger;
5
- constructor(solidRegistry: SolidRegistry);
12
+ constructor(solidRegistry: SolidRegistry, aiInteractionService: AiInteractionService, mqMessageService: MqMessageService, errorMapper: ErrorMapperService);
6
13
  pingPong(): {
7
14
  pong: string;
8
15
  };
16
+ mcpPingPong(activeUser: ActiveUserData): Promise<{
17
+ mcpPong: string;
18
+ genAiInteraction: {
19
+ status: string;
20
+ errorCode: string;
21
+ errorMessage: string;
22
+ };
23
+ }>;
9
24
  seedData(seedData: any): Promise<{
10
25
  message: string;
11
26
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"service.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/service.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D,qBAIa,iBAAiB;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAGxC,aAAa,EAAE,aAAa;IAKjD,QAAQ;;;IAOF,QAAQ,CAAS,QAAQ,EAAE,GAAG;;;CAiCvC"}
1
+ {"version":3,"file":"service.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/service.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE,qBAIa,iBAAiB;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IANhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;gBAGxC,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,kBAAkB;IAKpD,QAAQ;;;IAMF,WAAW,CAAe,UAAU,EAAE,cAAc;;;;;;;;IAyDpD,QAAQ,CAAS,QAAQ,EAAE,GAAG;;;CAiCvC"}
@@ -20,14 +20,55 @@ const public_decorator_1 = require("../decorators/public.decorator");
20
20
  const solid_registry_1 = require("../helpers/solid-registry");
21
21
  const swagger_1 = require("@nestjs/swagger");
22
22
  const throttler_1 = require("@nestjs/throttler");
23
+ const active_user_decorator_1 = require("../decorators/active-user.decorator");
24
+ const ai_interaction_service_1 = require("../services/ai-interaction.service");
25
+ const mq_message_service_1 = require("../services/mq-message.service");
26
+ const error_mapper_service_1 = require("../helpers/error-mapper.service");
23
27
  let ServiceController = ServiceController_1 = class ServiceController {
24
- constructor(solidRegistry) {
28
+ constructor(solidRegistry, aiInteractionService, mqMessageService, errorMapper) {
25
29
  this.solidRegistry = solidRegistry;
30
+ this.aiInteractionService = aiInteractionService;
31
+ this.mqMessageService = mqMessageService;
32
+ this.errorMapper = errorMapper;
26
33
  this.logger = new common_1.Logger(ServiceController_1.name);
27
34
  }
28
35
  pingPong() {
29
36
  return { pong: 'v1.0.2' };
30
37
  }
38
+ async mcpPingPong(activeUser) {
39
+ const threadId = `pingPongTxn-${activeUser.sub}`;
40
+ const { queueMessageId, aiInteractionId } = await this.aiInteractionService.triggerMcpClientJob(`Can you do 1 + 1`, activeUser.sub, true, threadId);
41
+ this.logger.debug(`mcp ping pong job triggered: queueMessageId=${queueMessageId}, aiInteractionId=${aiInteractionId}`);
42
+ const result = await this.mqMessageService.waitForTerminalStatus(queueMessageId, {
43
+ timeoutMs: 2 * 60 * 1000,
44
+ intervalMs: 500,
45
+ maxIntervalMs: 2000,
46
+ throwOnFailure: false,
47
+ });
48
+ this.logger.debug(`mcp ping pong job finished with stage=${result.stage}`);
49
+ this.logger.debug(`mcp ping pong trying to find genai (child) interaction for aiInteraction for id=${aiInteractionId}`);
50
+ const genAiInteractions = await this.aiInteractionService.find({
51
+ filters: {
52
+ parentInteraction: {
53
+ id: {
54
+ $eq: aiInteractionId
55
+ }
56
+ }
57
+ }
58
+ });
59
+ const genAiInteraction = genAiInteractions['records'][0];
60
+ this.logger.debug(genAiInteraction.message);
61
+ this.logger.debug(`identified gen-ai interaction with id=${genAiInteraction.id}`);
62
+ this.logger.debug(`proceeding with applying the gen-ai interaction`);
63
+ return {
64
+ mcpPong: 'v1.0.2',
65
+ genAiInteraction: {
66
+ status: genAiInteraction.status,
67
+ errorCode: genAiInteraction.status === 'failed' ? this.errorMapper.mapMessage(genAiInteraction.errorMessage, genAiInteraction.metadata) : '',
68
+ errorMessage: genAiInteraction.errorMessage,
69
+ }
70
+ };
71
+ }
31
72
  async seedData(seedData) {
32
73
  const seeder = this.solidRegistry
33
74
  .getSeeders()
@@ -52,6 +93,15 @@ __decorate([
52
93
  __metadata("design:paramtypes", []),
53
94
  __metadata("design:returntype", void 0)
54
95
  ], ServiceController.prototype, "pingPong", null);
96
+ __decorate([
97
+ (0, swagger_1.ApiBearerAuth)("jwt"),
98
+ (0, common_1.Get)('mcp/ping'),
99
+ openapi.ApiResponse({ status: 200 }),
100
+ __param(0, (0, active_user_decorator_1.ActiveUser)()),
101
+ __metadata("design:type", Function),
102
+ __metadata("design:paramtypes", [Object]),
103
+ __metadata("design:returntype", Promise)
104
+ ], ServiceController.prototype, "mcpPingPong", null);
55
105
  __decorate([
56
106
  (0, public_decorator_1.Public)(),
57
107
  (0, throttler_1.SkipThrottle)({ short: false, login: true, burst: true, sustained: true }),
@@ -67,6 +117,9 @@ exports.ServiceController = ServiceController = ServiceController_1 = __decorate
67
117
  (0, swagger_1.ApiTags)("Common"),
68
118
  (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
69
119
  (0, throttler_1.SkipThrottle)({ short: true, login: true, burst: true, sustained: true }),
70
- __metadata("design:paramtypes", [solid_registry_1.SolidRegistry])
120
+ __metadata("design:paramtypes", [solid_registry_1.SolidRegistry,
121
+ ai_interaction_service_1.AiInteractionService,
122
+ mq_message_service_1.MqMessageService,
123
+ error_mapper_service_1.ErrorMapperService])
71
124
  ], ServiceController);
72
125
  //# sourceMappingURL=service.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.controller.js","sourceRoot":"","sources":["../../src/controllers/service.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAgF;AAEhF,qEAAyD;AACzD,8DAA0D;AAC1D,6CAA0C;AAC1C,iDAAiE;AAO1D,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAG1B,YACqB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAHhC,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAIzD,CAAC;IAIL,QAAQ;QACJ,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAKK,AAAN,KAAK,CAAC,QAAQ,CAAS,QAAa;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC5B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC;aACnD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,qDAAqD,CAAC,CAAC;YAC1G,OAAO;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,iBAAiB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3D,CAAC;CAoBJ,CAAA;AAjDY,8CAAiB;AAS1B;IAFC,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,MAAM,CAAC;;;;;iDAGX;AAKK;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,wBAAY,EAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzE,IAAA,aAAI,EAAC,MAAM,CAAC;;IACG,WAAA,IAAA,aAAI,GAAE,CAAA;;;;iDAarB;4BA7BQ,iBAAiB;IAJ7B,IAAA,mBAAU,EAAC,EAAE,CAAC;IACd,IAAA,iBAAO,EAAC,QAAQ,CAAC;IACjB,IAAA,kBAAS,EAAC,0BAAc,CAAC;IACzB,IAAA,wBAAY,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;qCAKjC,8BAAa;GAJxC,iBAAiB,CAiD7B","sourcesContent":["import { Body, Controller, Get, Logger, Post, UseGuards } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { Public } from 'src/decorators/public.decorator';\nimport { SolidRegistry } from '../helpers/solid-registry';\nimport { ApiTags } from '@nestjs/swagger';\nimport { ThrottlerGuard, SkipThrottle } from '@nestjs/throttler';\n\n\n@Controller('')\n@ApiTags(\"Common\")\n@UseGuards(ThrottlerGuard)\n@SkipThrottle({ short: true, login: true, burst: true, sustained: true }) //Skip all\nexport class ServiceController {\n private readonly logger = new Logger(ServiceController.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n @Public()\n @Get('ping')\n pingPong() {\n return { pong: 'v1.0.2' };\n }\n\n @Public()\n @SkipThrottle({ short: false, login: true, burst: true, sustained: true }) //Enable the short throttle only\n @Post('seed')\n async seedData(@Body() seedData: any) {\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === seedData.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed();\n return { message: `seed data for ${seedData.seeder}` };\n }\n\n // @Public()\n // @Get('play')\n // play() {\n // return this.solidRegistry.getControllers();\n // }\n\n // //This method identifies a provider as a seeder if it has a seed method i.e duck typing\n // private isSeeder(provider: InstanceWrapper) {\n // const { instance } = provider;\n // if (!instance) return false;\n\n // const seedMethod = this.metadataScanner\n // .getAllMethodNames(Object.getPrototypeOf(instance))\n // .find((methodName) => methodName === 'seed');\n // if (!seedMethod) return false;\n // return true;\n // }\n\n}\n"]}
1
+ {"version":3,"file":"service.controller.js","sourceRoot":"","sources":["../../src/controllers/service.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Get, Logger, Post, UseGuards } from '@nestjs/common';\nimport { Public } from 'src/decorators/public.decorator';\nimport { SolidRegistry } from '../helpers/solid-registry';\nimport { ApiBearerAuth, ApiTags } from '@nestjs/swagger';\nimport { ThrottlerGuard, SkipThrottle } from '@nestjs/throttler';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { AiInteractionService } from 'src/services/ai-interaction.service';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { ErrorMapperService } from 'src/helpers/error-mapper.service';\n\n\n@Controller('')\n@ApiTags(\"Common\")\n@UseGuards(ThrottlerGuard)\n@SkipThrottle({ short: true, login: true, burst: true, sustained: true }) // Skip all\nexport class ServiceController {\n private readonly logger = new Logger(ServiceController.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly aiInteractionService: AiInteractionService,\n private readonly mqMessageService: MqMessageService,\n private readonly errorMapper: ErrorMapperService\n ) { }\n\n @Public()\n @Get('ping')\n pingPong() {\n return { pong: 'v1.0.2' };\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('mcp/ping')\n async mcpPingPong(@ActiveUser() activeUser: ActiveUserData) {\n // TODO: do a MCP client invocation, wait for response and return.\n // If failure then decide shape to return.\n\n const threadId = `pingPongTxn-${activeUser.sub}`;\n\n const { queueMessageId, aiInteractionId } = await this.aiInteractionService.triggerMcpClientJob(\n `Can you do 1 + 1`,\n activeUser.sub,\n true,\n threadId\n );\n\n this.logger.debug(`mcp ping pong job triggered: queueMessageId=${queueMessageId}, aiInteractionId=${aiInteractionId}`);\n\n // Wait up to 2 minutes, start at 500ms poll, back off to max 2s, throw if failed:\n const result = await this.mqMessageService.waitForTerminalStatus(queueMessageId, {\n timeoutMs: 2 * 60 * 1000,\n intervalMs: 500,\n maxIntervalMs: 2000,\n throwOnFailure: false,\n });\n\n this.logger.debug(`mcp ping pong job finished with stage=${result.stage}`)\n\n this.logger.debug(`mcp ping pong trying to find genai (child) interaction for aiInteraction for id=${aiInteractionId}`)\n\n // @ts-ignore\n const genAiInteractions = await this.aiInteractionService.find({\n filters: {\n parentInteraction: {\n id: {\n $eq: aiInteractionId\n }\n }\n }\n });\n\n const genAiInteraction = genAiInteractions['records'][0];\n this.logger.debug(genAiInteraction.message);\n\n this.logger.debug(`identified gen-ai interaction with id=${genAiInteraction.id}`);\n this.logger.debug(`proceeding with applying the gen-ai interaction`)\n\n return {\n mcpPong: 'v1.0.2',\n genAiInteraction: {\n status: genAiInteraction.status,\n errorCode: genAiInteraction.status === 'failed' ? this.errorMapper.mapMessage(genAiInteraction.errorMessage, genAiInteraction.metadata) : '',\n errorMessage: genAiInteraction.errorMessage,\n }\n };\n }\n\n @Public()\n @SkipThrottle({ short: false, login: true, burst: true, sustained: true }) //Enable the short throttle only\n @Post('seed')\n async seedData(@Body() seedData: any) {\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === seedData.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed();\n return { message: `seed data for ${seedData.seeder}` };\n }\n\n // @Public()\n // @Get('play')\n // play() {\n // return this.solidRegistry.getControllers();\n // }\n\n // //This method identifies a provider as a seeder if it has a seed method i.e duck typing\n // private isSeeder(provider: InstanceWrapper) {\n // const { instance } = provider;\n // if (!instance) return false;\n\n // const seedMethod = this.metadataScanner\n // .getAllMethodNames(Object.getPrototypeOf(instance))\n // .find((methodName) => methodName === 'seed');\n // if (!seedMethod) return false;\n // return true;\n // }\n\n}\n"]}
@@ -1,11 +1,13 @@
1
1
  import { SolidRegistry } from "src/helpers/solid-registry";
2
+ import { IngestMetadataService } from "src/services/genai/ingest-metadata.service";
2
3
  export declare class SeedData {
3
4
  seeder: string;
4
5
  }
5
6
  export declare class TestController {
6
7
  private readonly solidRegistry;
8
+ private readonly ingestMetadataService;
7
9
  private readonly logger;
8
- constructor(solidRegistry: SolidRegistry);
10
+ constructor(solidRegistry: SolidRegistry, ingestMetadataService: IngestMetadataService);
9
11
  uploadData(files: Array<Express.Multer.File>, body: any): {
10
12
  message: string;
11
13
  fileNames: string[];
@@ -14,5 +16,8 @@ export declare class TestController {
14
16
  uploadFile(file: Express.Multer.File, body: any): {
15
17
  filename: string;
16
18
  };
19
+ mcpIngest(file: Express.Multer.File, body: any): Promise<{
20
+ ok: boolean;
21
+ }>;
17
22
  }
18
23
  //# sourceMappingURL=test.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAGa,cAAc;IAEb,OAAO,CAAC,QAAQ,CAAC,aAAa;IAD1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAC7B,aAAa,EAAE,aAAa;IAKzD,UAAU,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,IAAI,EAAE,GAAG;;;;;IAMhF,UAAU,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;CAyBxE"}
1
+ {"version":3,"file":"test.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAEa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAHxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAEvC,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,qBAAqB;IAM/D,UAAU,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,IAAI,EAAE,GAAG;;;;;IAOhF,UAAU,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;IAWjE,SAAS,CAAiB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAU,IAAI,EAAE,GAAG;;;CAsB7E"}
@@ -21,12 +21,14 @@ const swagger_1 = require("@nestjs/swagger");
21
21
  const solid_registry_1 = require("../helpers/solid-registry");
22
22
  const auth_decorator_1 = require("../decorators/auth.decorator");
23
23
  const auth_type_enum_1 = require("../enums/auth-type.enum");
24
+ const ingest_metadata_service_1 = require("../services/genai/ingest-metadata.service");
24
25
  class SeedData {
25
26
  }
26
27
  exports.SeedData = SeedData;
27
28
  let TestController = TestController_1 = class TestController {
28
- constructor(solidRegistry) {
29
+ constructor(solidRegistry, ingestMetadataService) {
29
30
  this.solidRegistry = solidRegistry;
31
+ this.ingestMetadataService = ingestMetadataService;
30
32
  this.logger = new common_1.Logger(TestController_1.name);
31
33
  }
32
34
  uploadData(files, body) {
@@ -37,6 +39,10 @@ let TestController = TestController_1 = class TestController {
37
39
  this.logger.debug(body);
38
40
  return { filename: file.originalname };
39
41
  }
42
+ async mcpIngest(file, body) {
43
+ await this.ingestMetadataService.ingest();
44
+ return { ok: true };
45
+ }
40
46
  };
41
47
  exports.TestController = TestController;
42
48
  __decorate([
@@ -51,6 +57,7 @@ __decorate([
51
57
  __metadata("design:returntype", void 0)
52
58
  ], TestController.prototype, "uploadData", null);
53
59
  __decorate([
60
+ (0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
54
61
  (0, common_1.Post)('upload'),
55
62
  (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
56
63
  openapi.ApiResponse({ status: 201 }),
@@ -60,10 +67,21 @@ __decorate([
60
67
  __metadata("design:paramtypes", [Object, Object]),
61
68
  __metadata("design:returntype", void 0)
62
69
  ], TestController.prototype, "uploadFile", null);
70
+ __decorate([
71
+ (0, swagger_1.ApiBearerAuth)("jwt"),
72
+ (0, common_1.Post)('mcp/ingest'),
73
+ (0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
74
+ openapi.ApiResponse({ status: 201 }),
75
+ __param(0, (0, common_1.UploadedFile)()),
76
+ __param(1, (0, common_1.Body)()),
77
+ __metadata("design:type", Function),
78
+ __metadata("design:paramtypes", [Object, Object]),
79
+ __metadata("design:returntype", Promise)
80
+ ], TestController.prototype, "mcpIngest", null);
63
81
  exports.TestController = TestController = TestController_1 = __decorate([
64
- (0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
65
82
  (0, common_1.Controller)('test'),
66
83
  (0, swagger_1.ApiTags)("App Builder"),
67
- __metadata("design:paramtypes", [solid_registry_1.SolidRegistry])
84
+ __metadata("design:paramtypes", [solid_registry_1.SolidRegistry,
85
+ ingest_metadata_service_1.IngestMetadataService])
68
86
  ], TestController);
69
87
  //# sourceMappingURL=test.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.controller.js","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA8G;AAC9G,+DAAgF;AAChF,6CAA0C;AAC1C,8DAA2D;AAC3D,iEAAqD;AACrD,4DAAoD;AAEpD,MAAa,QAAQ;CAEpB;AAFD,4BAEC;AAKM,IAAM,cAAc,sBAApB,MAAM,cAAc;IAEzB,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QADxC,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IACG,CAAC;IAK9D,UAAU,CAAkB,KAAiC,EAAU,IAAS;QAC9E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;IAID,UAAU,CAAiB,IAAyB,EAAU,IAAS;QAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;CAmBF,CAAA;AAtCY,wCAAc;AAOzB;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;IACtC,IAAA,aAAI,EAAC,SAAS,CAAC;;IACJ,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAqC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAnC,KAAK;;gDAEvC;AAID;IAFC,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IAC7B,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAM5D;yBAnBU,cAAc;IAH1B,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,mBAAU,EAAC,MAAM,CAAC;IAClB,IAAA,iBAAO,EAAC,aAAa,CAAC;qCAGuB,8BAAa;GAF9C,cAAc,CAsC1B","sourcesContent":["import { Body, Controller, Logger, Post, UploadedFile, UploadedFiles, UseInterceptors } from \"@nestjs/common\";\nimport { AnyFilesInterceptor, FileInterceptor } from \"@nestjs/platform-express\";\nimport { ApiTags } from \"@nestjs/swagger\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\n\nexport class SeedData {\n seeder: string;\n}\n\n@Auth(AuthType.None)\n@Controller('test')\n@ApiTags(\"App Builder\")\nexport class TestController {\n private readonly logger = new Logger(TestController.name);\n constructor(private readonly solidRegistry: SolidRegistry) { }\n\n @Auth(AuthType.None)\n @UseInterceptors(AnyFilesInterceptor())\n @Post('uploads')\n uploadData(@UploadedFiles() files: Array<Express.Multer.File>, @Body() body: any) {\n return { message: 'file uploaded', fileNames: files.map(f => f.originalname), formData: body };\n }\n\n @Post('upload')\n @UseInterceptors(FileInterceptor('file')) // 'file' here is the name of the field in the form\n uploadFile(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n // console.log(file);\n this.logger.debug(file);\n // console.log(body);\n this.logger.debug(body);\n return { filename: file.originalname };\n }\n\n // @Public()\n // @Post('seed')\n // async seedData(@Body() seedData: any) {\n // const seeder = this.solidRegistry\n // .getSeeders()\n // .filter((seeder) => seeder.name === seedData.seeder)\n // .map((seeder) => seeder.instance)\n // .pop();\n // if (!seeder) {\n // this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);\n // return;\n // }\n // this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n // await seeder.seed();\n // return { message: `seed data for ${seedData.seeder}` };\n // }\n\n}\n"]}
1
+ {"version":3,"file":"test.controller.js","sourceRoot":"","sources":["../../src/controllers/test.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAA8G;AAC9G,+DAAgF;AAChF,6CAAyD;AACzD,8DAA2D;AAC3D,iEAAqD;AACrD,4DAAoD;AACpD,uFAAmF;AAEnF,MAAa,QAAQ;CAEpB;AAFD,4BAEC;AAIM,IAAM,cAAc,sBAApB,MAAM,cAAc;IAEzB,YACmB,aAA4B,EAC5B,qBAA4C;QAD5C,kBAAa,GAAb,aAAa,CAAe;QAC5B,0BAAqB,GAArB,qBAAqB,CAAuB;QAH9C,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAItD,CAAC;IAKL,UAAU,CAAkB,KAAiC,EAAU,IAAS;QAC9E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;IAKD,UAAU,CAAiB,IAAyB,EAAU,IAAS;QAErE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAKK,AAAN,KAAK,CAAC,SAAS,CAAiB,IAAyB,EAAU,IAAS;QAC1E,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CAmBF,CAAA;AAlDY,wCAAc;AAUzB;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;IACtC,IAAA,aAAI,EAAC,SAAS,CAAC;;IACJ,WAAA,IAAA,sBAAa,GAAE,CAAA;IAAqC,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAnC,KAAK;;gDAEvC;AAKD;IAHC,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IAC7B,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAM5D;AAKK;IAHL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,MAAM,CAAC,CAAC;;IACxB,WAAA,IAAA,qBAAY,GAAE,CAAA;IAA6B,WAAA,IAAA,aAAI,GAAE,CAAA;;;;+CAGjE;yBA/BU,cAAc;IAF1B,IAAA,mBAAU,EAAC,MAAM,CAAC;IAClB,IAAA,iBAAO,EAAC,aAAa,CAAC;qCAIa,8BAAa;QACL,+CAAqB;GAJpD,cAAc,CAkD1B","sourcesContent":["import { Body, Controller, Logger, Post, UploadedFile, UploadedFiles, UseInterceptors } from \"@nestjs/common\";\nimport { AnyFilesInterceptor, FileInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiTags } from \"@nestjs/swagger\";\nimport { SolidRegistry } from \"src/helpers/solid-registry\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\nimport { IngestMetadataService } from \"src/services/genai/ingest-metadata.service\";\n\nexport class SeedData {\n seeder: string;\n}\n\n@Controller('test')\n@ApiTags(\"App Builder\")\nexport class TestController {\n private readonly logger = new Logger(TestController.name);\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly ingestMetadataService: IngestMetadataService,\n ) { }\n\n @Auth(AuthType.None)\n @UseInterceptors(AnyFilesInterceptor())\n @Post('uploads')\n uploadData(@UploadedFiles() files: Array<Express.Multer.File>, @Body() body: any) {\n return { message: 'file uploaded', fileNames: files.map(f => f.originalname), formData: body };\n }\n\n @Auth(AuthType.None)\n @Post('upload')\n @UseInterceptors(FileInterceptor('file')) // 'file' here is the name of the field in the form\n uploadFile(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n // console.log(file);\n this.logger.debug(file);\n // console.log(body);\n this.logger.debug(body);\n return { filename: file.originalname };\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('mcp/ingest')\n @UseInterceptors(FileInterceptor('file'))\n async mcpIngest(@UploadedFile() file: Express.Multer.File, @Body() body: any) {\n await this.ingestMetadataService.ingest();\n return { ok: true };\n }\n\n // @Public()\n // @Post('seed')\n // async seedData(@Body() seedData: any) {\n // const seeder = this.solidRegistry\n // .getSeeders()\n // .filter((seeder) => seeder.name === seedData.seeder)\n // .map((seeder) => seeder.instance)\n // .pop();\n // if (!seeder) {\n // this.logger.error(`Seeder service ${seedData.seeder} not found. Does your service have a seed() method?`);\n // return;\n // }\n // this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n // await seeder.seed();\n // return { message: `seed data for ${seedData.seeder}` };\n // }\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"common.entity.d.ts","sourceRoot":"","sources":["../../src/entities/common.entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,8BAAsB,YAAY;IAE9B,EAAE,EAAE,MAAM,CAAA;IAGV,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,cAAc,EAAE,MAAM,CAAC;IAGvB,WAAW,EAAE,IAAI,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IAGnB,qBAAqB,EAAE,MAAM,CAAC;IAG9B,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;CACnB"}
1
+ {"version":3,"file":"common.entity.d.ts","sourceRoot":"","sources":["../../src/entities/common.entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,8BACsB,YAAY;IAG9B,EAAE,EAAE,MAAM,CAAA;IAGV,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAGhB,cAAc,EAAE,MAAM,CAAC;IAIvB,WAAW,EAAE,IAAI,CAAC;IAIlB,UAAU,EAAE,MAAM,CAAC;IAInB,qBAAqB,EAAE,MAAM,CAAC;IAK9B,SAAS,EAAE,IAAI,CAAC;IAKhB,SAAS,EAAE,IAAI,CAAC;CACnB"}
@@ -12,13 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CommonEntity = void 0;
13
13
  const openapi = require("@nestjs/swagger");
14
14
  const typeorm_1 = require("typeorm");
15
- class CommonEntity {
15
+ const class_transformer_1 = require("class-transformer");
16
+ let CommonEntity = class CommonEntity {
16
17
  static _OPENAPI_METADATA_FACTORY() {
17
18
  return { id: { required: true, type: () => Number }, createdAt: { required: true, type: () => Date }, updatedAt: { required: true, type: () => Date }, deletedAt: { required: true, type: () => Date }, deletedTracker: { required: true, type: () => String }, publishedAt: { required: true, type: () => Date }, localeName: { required: true, type: () => String }, defaultEntityLocaleId: { required: true, type: () => Number }, createdBy: { required: true, type: () => require("./user.entity").User }, updatedBy: { required: true, type: () => require("./user.entity").User } };
18
19
  }
19
- }
20
+ };
20
21
  exports.CommonEntity = CommonEntity;
21
22
  __decorate([
23
+ (0, class_transformer_1.Expose)(),
22
24
  (0, typeorm_1.PrimaryGeneratedColumn)({ type: 'integer' }),
23
25
  __metadata("design:type", Number)
24
26
  ], CommonEntity.prototype, "id", void 0);
@@ -39,23 +41,33 @@ __decorate([
39
41
  __metadata("design:type", String)
40
42
  ], CommonEntity.prototype, "deletedTracker", void 0);
41
43
  __decorate([
44
+ (0, class_transformer_1.Expose)(),
42
45
  (0, typeorm_1.Column)({ type: "timestamp", name: 'published_at', default: null, nullable: true }),
43
46
  __metadata("design:type", Date)
44
47
  ], CommonEntity.prototype, "publishedAt", void 0);
45
48
  __decorate([
49
+ (0, class_transformer_1.Expose)(),
46
50
  (0, typeorm_1.Column)({ type: "varchar", name: 'locale_name', default: null }),
47
51
  __metadata("design:type", String)
48
52
  ], CommonEntity.prototype, "localeName", void 0);
49
53
  __decorate([
54
+ (0, class_transformer_1.Expose)(),
50
55
  (0, typeorm_1.Column)({ type: "int", name: 'default_entity_locale_id', default: null }),
51
56
  __metadata("design:type", Number)
52
57
  ], CommonEntity.prototype, "defaultEntityLocaleId", void 0);
53
58
  __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ (0, class_transformer_1.Type)(() => require('./user.entity').User?.default ?? require('./user.entity').User),
54
61
  (0, typeorm_1.ManyToOne)(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true }),
55
62
  __metadata("design:type", Function)
56
63
  ], CommonEntity.prototype, "createdBy", void 0);
57
64
  __decorate([
65
+ (0, class_transformer_1.Expose)(),
66
+ (0, class_transformer_1.Type)(() => require('./user.entity').User?.default ?? require('./user.entity').User),
58
67
  (0, typeorm_1.ManyToOne)(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true }),
59
68
  __metadata("design:type", Function)
60
69
  ], CommonEntity.prototype, "updatedBy", void 0);
70
+ exports.CommonEntity = CommonEntity = __decorate([
71
+ (0, class_transformer_1.Exclude)()
72
+ ], CommonEntity);
61
73
  //# sourceMappingURL=common.entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.entity.js","sourceRoot":"","sources":["../../src/entities/common.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAA0H;AAG1H,MAAsB,YAAY;;;;CA8BjC;AA9BD,oCA8BC;AA5BG;IADC,IAAA,gCAAsB,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;wCAClC;AAGV;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;;oDACpC;AAGvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;8BACrE,IAAI;iDAAC;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;gDAC7C;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2DAC3C;AAG9B;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACnH;AAGhB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACnH","sourcesContent":["import { Column, CreateDateColumn, DeleteDateColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from \"typeorm\";\nimport type { User } from \"./user.entity\";\n\nexport abstract class CommonEntity {\n @PrimaryGeneratedColumn({ type: 'integer' })\n id: number\n\n @CreateDateColumn({ type: \"timestamp\", name: \"created_at\" })\n createdAt: Date;\n\n @UpdateDateColumn({ type: \"timestamp\", name: \"updated_at\" })\n updatedAt: Date;\n\n @DeleteDateColumn({ type: \"timestamp\", name: \"deleted_at\" })\n deletedAt: Date;\n\n @Column({ name: \"deletedTracker\", default: \"not-deleted\" })\n deletedTracker: string;\n\n @Column({ type: \"timestamp\", name: 'published_at', default: null ,nullable: true})\n publishedAt: Date;\n\n @Column({ type: \"varchar\", name: 'locale_name', default: null })\n localeName: string;\n\n @Column({ type: \"int\", name: 'default_entity_locale_id', default: null })\n defaultEntityLocaleId: number;\n\n @ManyToOne(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true })\n createdBy: User;\n\n @ManyToOne(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true })\n updatedBy: User; \n}\n"]}
1
+ {"version":3,"file":"common.entity.js","sourceRoot":"","sources":["../../src/entities/common.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAA0H;AAE1H,yDAA0D;AAGnD,IAAe,YAAY,GAA3B,MAAe,YAAY;;;;CAsCjC,CAAA;AAtCqB,oCAAY;AAG9B;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,gCAAsB,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;wCAClC;AAGV;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BACjD,IAAI;+CAAC;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;;oDACpC;AAIvB;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;8BACrE,IAAI;iDAAC;AAIlB;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;gDAC7C;AAInB;IAFC,IAAA,0BAAM,GAAE;IACR,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2DAC3C;AAK9B;IAHC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAE;IACrF,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACnH;AAKhB;IAHC,IAAA,0BAAM,GAAE;IACR,IAAA,wBAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAE;IACrF,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACnH;uBArCE,YAAY;IADjC,IAAA,2BAAO,GAAE;GACY,YAAY,CAsCjC","sourcesContent":["import { Column, CreateDateColumn, DeleteDateColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from \"typeorm\";\nimport type { User } from \"./user.entity\";\nimport { Exclude, Expose, Type } from \"class-transformer\";\n\n@Exclude()\nexport abstract class CommonEntity {\n @Expose()\n @PrimaryGeneratedColumn({ type: 'integer' })\n id: number\n\n @CreateDateColumn({ type: \"timestamp\", name: \"created_at\" })\n createdAt: Date;\n\n @UpdateDateColumn({ type: \"timestamp\", name: \"updated_at\" })\n updatedAt: Date;\n\n @DeleteDateColumn({ type: \"timestamp\", name: \"deleted_at\" })\n deletedAt: Date;\n\n @Column({ name: \"deletedTracker\", default: \"not-deleted\" })\n deletedTracker: string;\n\n @Expose()\n @Column({ type: \"timestamp\", name: 'published_at', default: null ,nullable: true})\n publishedAt: Date;\n\n @Expose()\n @Column({ type: \"varchar\", name: 'locale_name', default: null })\n localeName: string;\n\n @Expose()\n @Column({ type: \"int\", name: 'default_entity_locale_id', default: null })\n defaultEntityLocaleId: number;\n\n @Expose()\n @Type( () => require('./user.entity').User?.default ?? require('./user.entity').User )\n @ManyToOne(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true })\n createdBy: User;\n\n @Expose()\n @Type( () => require('./user.entity').User?.default ?? require('./user.entity').User )\n @ManyToOne(() => require('./user.entity').User?.default ?? require('./user.entity').User, { onDelete: 'SET NULL', nullable: true })\n updatedBy: User; \n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../src/entities/user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAEzE,qBAEa,IAAK,SAAQ,YAAY;IAElC,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,mBAAmB,EAAE,OAAO,CAAQ;IAEpC,iBAAiB,EAAE,MAAM,CAAW;IAEpC,UAAU,EAAE,MAAM,CAAC;IAEnB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,oBAAoB,EAAE,MAAM,CAAC;IAE7B,MAAM,EAAE,OAAO,CAAQ;IAEvB,yBAAyB,EAAE,IAAI,CAAC;IAEhC,iCAAiC,EAAE,MAAM,CAAC;IAE1C,0CAA0C,EAAE,IAAI,CAAC;IAEjD,6BAA6B,EAAE,IAAI,CAAC;IAEpC,oCAAoC,EAAE,MAAM,CAAC;IAE7C,6CAA6C,EAAE,IAAI,CAAC;IAEpD,8BAA8B,EAAE,IAAI,CAAC;IAErC,qCAAqC,EAAE,MAAM,CAAC;IAE9C,8CAA8C,EAAE,IAAI,CAAC;IAErD,sBAAsB,EAAE,IAAI,CAAC;IAE7B,6BAA6B,EAAE,MAAM,CAAC;IAEtC,sCAAsC,EAAE,IAAI,CAAC;IAE7C,uBAAuB,EAAE,IAAI,CAAC;IAE9B,8BAA8B,EAAE,MAAM,CAAC;IAEvC,uCAAuC,EAAE,IAAI,CAAC;IAE9C,aAAa,EAAE,MAAM,CAAC;IAGtB,KAAK,EAAE,YAAY,EAAE,CAAC;IAEtB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACxC"}
1
+ {"version":3,"file":"user.entity.d.ts","sourceRoot":"","sources":["../../src/entities/user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAGzE,qBAGa,IAAK,SAAQ,YAAY;IAGlC,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,EAAE,MAAM,CAAC;IAIjB,KAAK,EAAE,MAAM,CAAC;IAId,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,EAAE,MAAM,CAAC;IAGjB,mBAAmB,EAAE,OAAO,CAAQ;IAGpC,iBAAiB,EAAE,MAAM,CAAW;IAGpC,UAAU,EAAE,MAAM,CAAC;IAGnB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,QAAQ,EAAE,MAAM,CAAC;IAGjB,oBAAoB,EAAE,MAAM,CAAC;IAG7B,MAAM,EAAE,OAAO,CAAQ;IAGvB,yBAAyB,EAAE,IAAI,CAAC;IAGhC,iCAAiC,EAAE,MAAM,CAAC;IAG1C,0CAA0C,EAAE,IAAI,CAAC;IAGjD,6BAA6B,EAAE,IAAI,CAAC;IAGpC,oCAAoC,EAAE,MAAM,CAAC;IAG7C,6CAA6C,EAAE,IAAI,CAAC;IAGpD,8BAA8B,EAAE,IAAI,CAAC;IAGrC,qCAAqC,EAAE,MAAM,CAAC;IAG9C,8CAA8C,EAAE,IAAI,CAAC;IAGrD,sBAAsB,EAAE,IAAI,CAAC;IAG7B,6BAA6B,EAAE,MAAM,CAAC;IAGtC,sCAAsC,EAAE,IAAI,CAAC;IAG7C,uBAAuB,EAAE,IAAI,CAAC;IAG9B,8BAA8B,EAAE,MAAM,CAAC;IAGvC,uCAAuC,EAAE,IAAI,CAAC;IAG9C,aAAa,EAAE,MAAM,CAAC;IAItB,KAAK,EAAE,YAAY,EAAE,CAAC;IAGtB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;CACxC"}
@@ -15,6 +15,7 @@ const common_entity_1 = require("./common.entity");
15
15
  const typeorm_1 = require("typeorm");
16
16
  const role_metadata_entity_1 = require("./role-metadata.entity");
17
17
  const user_view_metadata_entity_1 = require("./user-view-metadata.entity");
18
+ const class_transformer_1 = require("class-transformer");
18
19
  let User = class User extends common_entity_1.CommonEntity {
19
20
  constructor() {
20
21
  super(...arguments);
@@ -29,21 +30,25 @@ let User = class User extends common_entity_1.CommonEntity {
29
30
  exports.User = User;
30
31
  __decorate([
31
32
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
33
+ (0, class_transformer_1.Expose)(),
32
34
  __metadata("design:type", String)
33
35
  ], User.prototype, "fullName", void 0);
34
36
  __decorate([
35
37
  (0, typeorm_1.Index)({ unique: true }),
36
38
  (0, typeorm_1.Column)({ type: "varchar" }),
39
+ (0, class_transformer_1.Expose)(),
37
40
  __metadata("design:type", String)
38
41
  ], User.prototype, "username", void 0);
39
42
  __decorate([
40
43
  (0, typeorm_1.Index)({ unique: true }),
41
44
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
45
+ (0, class_transformer_1.Expose)(),
42
46
  __metadata("design:type", String)
43
47
  ], User.prototype, "email", void 0);
44
48
  __decorate([
45
49
  (0, typeorm_1.Index)({ unique: true }),
46
50
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
51
+ (0, class_transformer_1.Expose)(),
47
52
  __metadata("design:type", String)
48
53
  ], User.prototype, "mobile", void 0);
49
54
  __decorate([
@@ -52,6 +57,7 @@ __decorate([
52
57
  ], User.prototype, "password", void 0);
53
58
  __decorate([
54
59
  (0, typeorm_1.Column)({ type: "boolean", nullable: true, default: true }),
60
+ (0, class_transformer_1.Expose)(),
55
61
  __metadata("design:type", Boolean)
56
62
  ], User.prototype, "forcePasswordChange", void 0);
57
63
  __decorate([
@@ -76,6 +82,7 @@ __decorate([
76
82
  ], User.prototype, "googleProfilePicture", void 0);
77
83
  __decorate([
78
84
  (0, typeorm_1.Column)({ type: "boolean", default: true }),
85
+ (0, class_transformer_1.Expose)(),
79
86
  __metadata("design:type", Boolean)
80
87
  ], User.prototype, "active", void 0);
81
88
  __decorate([
@@ -140,11 +147,13 @@ __decorate([
140
147
  ], User.prototype, "mobileVerificationTokenOnLoginExpiresAt", void 0);
141
148
  __decorate([
142
149
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
150
+ (0, class_transformer_1.Expose)(),
143
151
  __metadata("design:type", String)
144
152
  ], User.prototype, "customPayload", void 0);
145
153
  __decorate([
146
154
  (0, typeorm_1.ManyToMany)(() => role_metadata_entity_1.RoleMetadata, roleMetadata => roleMetadata.users, { cascade: true }),
147
155
  (0, typeorm_1.JoinTable)(),
156
+ (0, class_transformer_1.Expose)(),
148
157
  __metadata("design:type", Array)
149
158
  ], User.prototype, "roles", void 0);
150
159
  __decorate([
@@ -153,6 +162,7 @@ __decorate([
153
162
  ], User.prototype, "userViewMetadata", void 0);
154
163
  exports.User = User = __decorate([
155
164
  (0, typeorm_1.Entity)("ss_user"),
156
- (0, typeorm_1.TableInheritance)({ column: { type: "varchar", name: "type", default: "User" } })
165
+ (0, typeorm_1.TableInheritance)({ column: { type: "varchar", name: "type", default: "User" } }),
166
+ (0, class_transformer_1.Exclude)()
157
167
  ], User);
158
168
  //# sourceMappingURL=user.entity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../src/entities/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mDAAyD;AACzD,qCAAoG;AACpG,iEAAiE;AACjE,2EAAyE;AAIlE,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,4BAAY;IAA/B;;QAeH,wBAAmB,GAAY,IAAI,CAAC;QAEpC,sBAAiB,GAAW,OAAO,CAAC;QAUpC,WAAM,GAAY,IAAI,CAAC;KAsC1B;;2UAlDkC,IAAI,wWAYjB,IAAI;;CAsCzB,CAAA;AAjEY,oBAAI;AAEb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCAC3B;AAGjB;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;sCACX;AAGjB;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mCAC9B;AAGd;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oCAC7B;AAEf;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCAC3B;AAEjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;iDACvB;AAEpC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;;+CACV;AAEpC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;wCACzB;AAEnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAClB;AAE1B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCAC3B;AAEjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kDACf;AAE7B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;oCACpB;AAEvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACnB,IAAI;uDAAC;AAEhC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+DACF;AAE1C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACF,IAAI;wEAAC;AAEjD;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACf,IAAI;2DAAC;AAEpC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;kEACC;AAE7C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACC,IAAI;2EAAC;AAEpD;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACd,IAAI;4DAAC;AAErC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mEACE;AAE9C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACE,IAAI;4EAAC;AAErD;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACtB,IAAI;oDAAC;AAE7B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2DACN;AAEtC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACN,IAAI;oEAAC;AAE7C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACrB,IAAI;qDAAC;AAE9B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;4DACL;AAEvC;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACL,IAAI;qEAAC;AAE9C;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACtB;AAGtB;IAFC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,mCAAY,EAAE,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrF,IAAA,mBAAS,GAAE;;mCACU;AAEtB;IADC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4CAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;8CAC3D;eAhE5B,IAAI;IAFhB,IAAA,gBAAM,EAAC,SAAS,CAAC;IACjB,IAAA,0BAAgB,EAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;GACpE,IAAI,CAiEhB","sourcesContent":["import { CommonEntity } from \"src/entities/common.entity\"\nimport { Entity, Column, Index, JoinTable, ManyToMany, OneToMany, TableInheritance } from \"typeorm\";\nimport { RoleMetadata } from 'src/entities/role-metadata.entity';\nimport { UserViewMetadata } from 'src/entities/user-view-metadata.entity'\n\n@Entity(\"ss_user\")\n@TableInheritance({ column: { type: \"varchar\", name: \"type\", default: \"User\" } })\nexport class User extends CommonEntity {\n @Column({ type: \"varchar\", nullable: true })\n fullName: string;\n @Index({ unique: true })\n @Column({ type: \"varchar\" })\n username: string;\n @Index({ unique: true })\n @Column({ type: \"varchar\", nullable: true })\n email: string;\n @Index({ unique: true })\n @Column({ type: \"varchar\", nullable: true })\n mobile: string;\n @Column({ type: \"varchar\", nullable: true })\n password: string;\n @Column({ type: \"boolean\", nullable: true, default: true })\n forcePasswordChange: boolean = true;\n @Column({ type: \"varchar\", default: \"local\" })\n lastLoginProvider: string = \"local\";\n @Column({ type: \"varchar\", nullable: true })\n accessCode: string;\n @Column({ type: \"varchar\", nullable: true })\n googleAccessToken: string;\n @Column({ type: \"varchar\", nullable: true })\n googleId: string;\n @Column({ type: \"varchar\", nullable: true })\n googleProfilePicture: string;\n @Column({ type: \"boolean\", default: true })\n active: boolean = true;\n @Column({ type: \"timestamp\", nullable: true })\n forgotPasswordConfirmedAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n verificationTokenOnForgotPassword: string;\n @Column({ type: \"timestamp\", nullable: true })\n verificationTokenOnForgotPasswordExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n emailVerifiedOnRegistrationAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n emailVerificationTokenOnRegistration: string;\n @Column({ type: \"timestamp\", nullable: true })\n emailVerificationTokenOnRegistrationExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n mobileVerifiedOnRegistrationAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n mobileVerificationTokenOnRegistration: string;\n @Column({ type: \"timestamp\", nullable: true })\n mobileVerificationTokenOnRegistrationExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n emailVerifiedOnLoginAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n emailVerificationTokenOnLogin: string;\n @Column({ type: \"timestamp\", nullable: true })\n emailVerificationTokenOnLoginExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n mobileVerifiedOnLoginAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n mobileVerificationTokenOnLogin: string;\n @Column({ type: \"timestamp\", nullable: true })\n mobileVerificationTokenOnLoginExpiresAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n customPayload: string;\n @ManyToMany(() => RoleMetadata, roleMetadata => roleMetadata.users, { cascade: true })\n @JoinTable()\n roles: RoleMetadata[];\n @OneToMany(() => UserViewMetadata, userViewMetadata => userViewMetadata.user, { cascade: true })\n userViewMetadata: UserViewMetadata[];\n}"]}
1
+ {"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../src/entities/user.entity.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommonEntity } from \"src/entities/common.entity\"\nimport { Entity, Column, Index, JoinTable, ManyToMany, OneToMany, TableInheritance } from \"typeorm\";\nimport { RoleMetadata } from 'src/entities/role-metadata.entity';\nimport { UserViewMetadata } from 'src/entities/user-view-metadata.entity'\nimport { Exclude, Expose } from \"class-transformer\";\n\n@Entity(\"ss_user\")\n@TableInheritance({ column: { type: \"varchar\", name: \"type\", default: \"User\" } })\n@Exclude()\nexport class User extends CommonEntity {\n @Column({ type: \"varchar\", nullable: true })\n @Expose()\n fullName: string; \n @Index({ unique: true })\n @Column({ type: \"varchar\" })\n @Expose()\n username: string;\n @Index({ unique: true })\n @Column({ type: \"varchar\", nullable: true })\n @Expose()\n email: string;\n @Index({ unique: true })\n @Column({ type: \"varchar\", nullable: true })\n @Expose()\n mobile: string;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n password: string;\n @Column({ type: \"boolean\", nullable: true, default: true })\n @Expose()\n forcePasswordChange: boolean = true;\n @Column({ type: \"varchar\", default: \"local\" })\n // don't send to client\n lastLoginProvider: string = \"local\";\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client (test)\n accessCode: string;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n googleAccessToken: string;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n googleId: string;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n googleProfilePicture: string;\n @Column({ type: \"boolean\", default: true })\n @Expose()\n active: boolean = true;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n forgotPasswordConfirmedAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n verificationTokenOnForgotPassword: string;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n verificationTokenOnForgotPasswordExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n emailVerifiedOnRegistrationAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n emailVerificationTokenOnRegistration: string;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n emailVerificationTokenOnRegistrationExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n mobileVerifiedOnRegistrationAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n mobileVerificationTokenOnRegistration: string;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n mobileVerificationTokenOnRegistrationExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n emailVerifiedOnLoginAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n emailVerificationTokenOnLogin: string;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n emailVerificationTokenOnLoginExpiresAt: Date;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n mobileVerifiedOnLoginAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n // don't send to client\n mobileVerificationTokenOnLogin: string;\n @Column({ type: \"timestamp\", nullable: true })\n // don't send to client\n mobileVerificationTokenOnLoginExpiresAt: Date;\n @Column({ type: \"varchar\", nullable: true })\n @Expose()\n customPayload: string;\n @ManyToMany(() => RoleMetadata, roleMetadata => roleMetadata.users, { cascade: true })\n @JoinTable()\n @Expose()\n roles: RoleMetadata[];\n @OneToMany(() => UserViewMetadata, userViewMetadata => userViewMetadata.user, { cascade: true })\n // don't send to client\n userViewMetadata: UserViewMetadata[];\n}"]}
@@ -0,0 +1,8 @@
1
+ export declare const ERROR_CODES: readonly ["bedrock-throttling-error", "bedrock-access-denied", "bedrock-input-too-long", "bedrock-validation-error", "bedrock-model-not-found", "db-duplicate-key", "db-foreign-key-error", "metadata-extraction-date-parsing-failed", "metadata-extraction-missing-s3-file", "solidx-mcp-server-unavailable", "unknown-error"];
2
+ export type ErrorCode = typeof ERROR_CODES[number];
3
+ export declare class ErrorMapperService {
4
+ mapException(exc: unknown): ErrorCode;
5
+ mapMessage(message: string, trace?: string): ErrorCode;
6
+ private combineErrorText;
7
+ }
8
+ //# sourceMappingURL=error-mapper.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-mapper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/error-mapper.service.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,iUAYd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEnD,qBACa,kBAAkB;IAK3B,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS;IAsIrC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS;IAOtD,OAAO,CAAC,gBAAgB;CAuC3B"}