@solidxai/core 0.1.13-beta.4 → 0.1.13-beta.6

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 (118) hide show
  1. package/.claude/settings.local.json +16 -0
  2. package/CHANGELOG.md +1053 -0
  3. package/CLAUDE.md +26 -0
  4. package/dist/commands/run-tests.command.d.ts +7 -1
  5. package/dist/commands/run-tests.command.d.ts.map +1 -1
  6. package/dist/commands/run-tests.command.js +49 -3
  7. package/dist/commands/run-tests.command.js.map +1 -1
  8. package/dist/constants/chatter-message.constants.d.ts +1 -0
  9. package/dist/constants/chatter-message.constants.d.ts.map +1 -1
  10. package/dist/constants/chatter-message.constants.js +3 -1
  11. package/dist/constants/chatter-message.constants.js.map +1 -1
  12. package/dist/constants/user.constants.d.ts +2 -0
  13. package/dist/constants/user.constants.d.ts.map +1 -0
  14. package/dist/constants/user.constants.js +5 -0
  15. package/dist/constants/user.constants.js.map +1 -0
  16. package/dist/controllers/chatter-message.controller.d.ts +5 -0
  17. package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
  18. package/dist/controllers/chatter-message.controller.js +14 -0
  19. package/dist/controllers/chatter-message.controller.js.map +1 -1
  20. package/dist/entities/user.entity.d.ts.map +1 -1
  21. package/dist/entities/user.entity.js +36 -0
  22. package/dist/entities/user.entity.js.map +1 -1
  23. package/dist/seeders/seed-data/solid-core-metadata.json +12 -7
  24. package/dist/services/chatter-message.service.d.ts +10 -0
  25. package/dist/services/chatter-message.service.d.ts.map +1 -1
  26. package/dist/services/chatter-message.service.js +44 -3
  27. package/dist/services/chatter-message.service.js.map +1 -1
  28. package/dist/services/crud.service.d.ts +2 -0
  29. package/dist/services/crud.service.d.ts.map +1 -1
  30. package/dist/services/crud.service.js +13 -1
  31. package/dist/services/crud.service.js.map +1 -1
  32. package/dist/services/settings/default-settings-provider.service.d.ts +40 -0
  33. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
  34. package/dist/services/settings/default-settings-provider.service.js +22 -0
  35. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  36. package/dist/testing/adapters/ui/playwright-adapter.d.ts +5 -0
  37. package/dist/testing/adapters/ui/playwright-adapter.d.ts.map +1 -1
  38. package/dist/testing/adapters/ui/playwright-adapter.js +17 -1
  39. package/dist/testing/adapters/ui/playwright-adapter.js.map +1 -1
  40. package/dist/testing/adapters/ui/ui.types.d.ts +2 -0
  41. package/dist/testing/adapters/ui/ui.types.d.ts.map +1 -1
  42. package/dist/testing/adapters/ui/ui.types.js.map +1 -1
  43. package/dist/testing/steps/ui/actions.step.d.ts.map +1 -1
  44. package/dist/testing/steps/ui/actions.step.js +6 -2
  45. package/dist/testing/steps/ui/actions.step.js.map +1 -1
  46. package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
  47. package/dist/testing/steps/ui/assertions.step.js +11 -3
  48. package/dist/testing/steps/ui/assertions.step.js.map +1 -1
  49. package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
  50. package/dist/testing/steps/ui/form.step.js +9 -3
  51. package/dist/testing/steps/ui/form.step.js.map +1 -1
  52. package/dist/testing/steps/ui/manual.step.js +1 -1
  53. package/dist/testing/steps/ui/manual.step.js.map +1 -1
  54. package/dist/testing/steps/ui/navigation.step.d.ts.map +1 -1
  55. package/dist/testing/steps/ui/navigation.step.js +3 -1
  56. package/dist/testing/steps/ui/navigation.step.js.map +1 -1
  57. package/package.json +1 -1
  58. package/src/commands/run-tests.command.ts +47 -1
  59. package/src/constants/chatter-message.constants.ts +12 -0
  60. package/src/constants/user.constants.ts +13 -0
  61. package/src/controllers/chatter-message.controller.ts +8 -0
  62. package/src/entities/user.entity.ts +53 -36
  63. package/src/seeders/seed-data/solid-core-metadata.json +12 -7
  64. package/src/services/1.js +6 -0
  65. package/src/services/chatter-message.service.ts +86 -4
  66. package/src/services/crud.service.ts +31 -1
  67. package/src/services/settings/default-settings-provider.service.ts +22 -0
  68. package/src/testing/README.md +64 -2
  69. package/src/testing/adapters/ui/playwright-adapter.ts +25 -0
  70. package/src/testing/adapters/ui/ui.types.ts +2 -0
  71. package/src/testing/steps/ui/actions.step.ts +8 -4
  72. package/src/testing/steps/ui/assertions.step.ts +18 -5
  73. package/src/testing/steps/ui/form.step.ts +16 -6
  74. package/src/testing/steps/ui/manual.step.ts +1 -1
  75. package/src/testing/steps/ui/navigation.step.ts +4 -2
  76. package/dist-tests/api/authenticate.spec.js +0 -119
  77. package/dist-tests/api/authenticate.spec.js.map +0 -1
  78. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  79. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  80. package/dist-tests/api/ping.spec.js +0 -21
  81. package/dist-tests/api/ping.spec.js.map +0 -1
  82. package/dist-tests/helpers/auth.js +0 -41
  83. package/dist-tests/helpers/auth.js.map +0 -1
  84. package/dist-tests/helpers/env.js +0 -11
  85. package/dist-tests/helpers/env.js.map +0 -1
  86. package/docs/agent-builder/notebook-lm-prompt-for-agent-builder.md +0 -136
  87. package/docs/agent-builder/team-ready-note-agent-builder.md +0 -305
  88. package/docs/agent-hub-grooming.md +0 -301
  89. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
  90. package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
  91. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
  92. package/docs/datasource-introspection-ddl-analysis.md +0 -326
  93. package/docs/datasource-introspection-implementation-plan.md +0 -306
  94. package/docs/grouping-enhancements.md +0 -89
  95. package/docs/java-spring/README.md +0 -3
  96. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  97. package/docs/module-package-import-handoff.md +0 -691
  98. package/docs/seed-changes.md +0 -65
  99. package/docs/test-data-workflow.md +0 -200
  100. package/docs/type-declaration-import-issue.md +0 -24
  101. package/docs/workflow/business-automation-example-notes.md +0 -309
  102. package/docs/workflow/control-flow-node-addition-sop.md +0 -324
  103. package/docs/workflow/data-engineering-pipeline-example-notes.md +0 -330
  104. package/docs/workflow/foreach-example-notes.md +0 -187
  105. package/docs/workflow/hello-world-example-notes.md +0 -271
  106. package/docs/workflow/kestra-concepts-plugins-blueprints.md +0 -315
  107. package/docs/workflow/loop-until-example-notes.md +0 -198
  108. package/docs/workflow/microservices-and-apis-example-notes.md +0 -264
  109. package/docs/workflow/samples.md +0 -25
  110. package/docs/workflow/what-is-kestra.md +0 -79
  111. package/docs/workflow/workflow-core-module-handoff-summary.md +0 -191
  112. package/docs/workflow/workflow-module-brd.md +0 -185
  113. package/docs/workflow/workflow-module-domain-model.md +0 -252
  114. package/docs/workflow/workflow-module-metadata-dsl.md +0 -302
  115. package/docs/workflow/workflow-module-technical-spec.md +0 -293
  116. package/docs/workflow/workflow-node-type-contracts.md +0 -635
  117. package/docs/workflow/workflow-node-ui-metadata-contract.md +0 -1262
  118. package/docs/workflow/workflow-solidx-model-field-spec.md +0 -284
package/CLAUDE.md ADDED
@@ -0,0 +1,26 @@
1
+ # This is the SolidX API project.
2
+ This is included as a dependency in consuming projects.
3
+
4
+ # SolidX UI
5
+ # The corresponding UI project is at the below path:
6
+ /Users/oswald/projects/Solid_Starters/solid-core-ui
7
+
8
+ # SolidX Docs
9
+ # The documentation project is at the below path:
10
+ /Users/oswald/projects/solidxai-docs
11
+
12
+ # SolidX Agent
13
+ # The agent project which has the skills for helping users configure, build and use SolidX is at the below path:
14
+ /Users/oswald/projects/Solid_Starters/agent
15
+
16
+ # SolidX Control Plane Commands
17
+ # The control plane commands for managing SolidX instances are in the below path:
18
+ /Users/oswald/projects/Solid_Starters/solidctl
19
+
20
+ # Testing reference project
21
+ # This is the reference library management project that is used for testing and development of SolidX features. It is located at the below path:
22
+ /Users/oswald/projects/Solid_Starters/solid-library-management
23
+
24
+ # Code Builder project
25
+ # This is the project that contains the code builder which generates code based on user input and templates. It is located at the below path:
26
+ /Users/oswald/projects/Solid_Starters/solid-code-builder
@@ -1,5 +1,6 @@
1
1
  import { CommandRunner } from 'nest-commander';
2
2
  import { ModuleMetadataHelperService } from '../helpers/module-metadata-helper.service';
3
+ import { SettingService } from '../services/setting.service';
3
4
  interface TestRunCommandOptions {
4
5
  module?: string;
5
6
  moduleName?: string;
@@ -10,6 +11,8 @@ interface TestRunCommandOptions {
10
11
  apiBaseUrl?: string;
11
12
  uiBaseUrl?: string;
12
13
  headless?: boolean;
14
+ uiTimeoutMs?: number;
15
+ uiNavigationTimeoutMs?: number;
13
16
  timeoutMs?: number;
14
17
  retries?: number;
15
18
  listSpecs?: boolean;
@@ -18,8 +21,9 @@ interface TestRunCommandOptions {
18
21
  }
19
22
  export declare class TestRunCommand extends CommandRunner {
20
23
  private readonly moduleMetadataHelperService;
24
+ private readonly settingService;
21
25
  private readonly logger;
22
- constructor(moduleMetadataHelperService: ModuleMetadataHelperService);
26
+ constructor(moduleMetadataHelperService: ModuleMetadataHelperService, settingService: SettingService);
23
27
  run(passedParam: string[], options?: TestRunCommandOptions): Promise<void>;
24
28
  parseModule(val: string): string;
25
29
  parseScenarioIds(val: string): string;
@@ -31,6 +35,8 @@ export declare class TestRunCommand extends CommandRunner {
31
35
  parseApiBaseUrl(val: string): string;
32
36
  parseUiBaseUrl(val: string): string;
33
37
  parseHeadless(val: string): boolean;
38
+ parseUiTimeoutMs(val: string): number;
39
+ parseUiNavigationTimeoutMs(val: string): number;
34
40
  parseTimeoutMs(val: string): number;
35
41
  parseRetries(val: string): number;
36
42
  parseRunName(val: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAOzF,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAH9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B;IAKrE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASnC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGlC"}
1
+ {"version":3,"file":"run-tests.command.d.ts","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAMzF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAIa,cAAe,SAAQ,aAAa;IAI7C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAGvC,2BAA2B,EAAE,2BAA2B,EACxD,cAAc,EAAE,cAAc;IAK3C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiHhF,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASrC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUrC,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAUxC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAUrC,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS/C,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASnC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGlC"}
@@ -52,10 +52,12 @@ const console_reporter_1 = require("../testing/reporter/console-reporter");
52
52
  const webhook_reporter_1 = require("../testing/reporter/webhook-reporter");
53
53
  const run_from_metadata_1 = require("../testing/runner/run-from-metadata");
54
54
  const spec_registry_1 = require("../testing/core/spec-registry");
55
+ const setting_service_1 = require("../services/setting.service");
55
56
  let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_commander_1.CommandRunner {
56
- constructor(moduleMetadataHelperService) {
57
+ constructor(moduleMetadataHelperService, settingService) {
57
58
  super();
58
59
  this.moduleMetadataHelperService = moduleMetadataHelperService;
60
+ this.settingService = settingService;
59
61
  this.logger = new common_1.Logger(TestRunCommand_1.name);
60
62
  }
61
63
  async run(passedParam, options) {
@@ -102,6 +104,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
102
104
  const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;
103
105
  const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;
104
106
  const headless = options?.headless ?? true;
107
+ const uiTimeoutMs = options?.uiTimeoutMs
108
+ ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)
109
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestDefaultTimeoutMs'));
110
+ const uiNavigationTimeoutMs = options?.uiNavigationTimeoutMs
111
+ ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)
112
+ ?? toPositiveNumber(this.settingService.getConfigValue('uiTestNavigationTimeoutMs'));
105
113
  const printApiLogs = options?.printApiLogs ?? false;
106
114
  const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;
107
115
  const runName = options?.runName ?? `run-${Date.now()}`;
@@ -116,7 +124,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
116
124
  skipScenarioIds,
117
125
  reporter,
118
126
  api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,
119
- ui: { baseUrl: uiBaseUrl, headless },
127
+ ui: {
128
+ baseUrl: uiBaseUrl,
129
+ headless,
130
+ defaultTimeoutMs: uiTimeoutMs,
131
+ navigationTimeoutMs: uiNavigationTimeoutMs,
132
+ },
120
133
  defaults: {
121
134
  timeoutMs: options?.timeoutMs,
122
135
  retries: options?.retries,
@@ -180,6 +193,12 @@ let TestRunCommand = TestRunCommand_1 = class TestRunCommand extends nest_comman
180
193
  parseHeadless(val) {
181
194
  return val === 'false' ? false : true;
182
195
  }
196
+ parseUiTimeoutMs(val) {
197
+ return Number(val);
198
+ }
199
+ parseUiNavigationTimeoutMs(val) {
200
+ return Number(val);
201
+ }
183
202
  parseTimeoutMs(val) {
184
203
  return Number(val);
185
204
  }
@@ -291,6 +310,26 @@ __decorate([
291
310
  __metadata("design:paramtypes", [String]),
292
311
  __metadata("design:returntype", Boolean)
293
312
  ], TestRunCommand.prototype, "parseHeadless", null);
313
+ __decorate([
314
+ (0, nest_commander_1.Option)({
315
+ flags: '--ui-timeout-ms [number]',
316
+ description: 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',
317
+ required: false,
318
+ }),
319
+ __metadata("design:type", Function),
320
+ __metadata("design:paramtypes", [String]),
321
+ __metadata("design:returntype", Number)
322
+ ], TestRunCommand.prototype, "parseUiTimeoutMs", null);
323
+ __decorate([
324
+ (0, nest_commander_1.Option)({
325
+ flags: '--ui-navigation-timeout-ms [number]',
326
+ description: 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',
327
+ required: false,
328
+ }),
329
+ __metadata("design:type", Function),
330
+ __metadata("design:paramtypes", [String]),
331
+ __metadata("design:returntype", Number)
332
+ ], TestRunCommand.prototype, "parseUiNavigationTimeoutMs", null);
294
333
  __decorate([
295
334
  (0, nest_commander_1.Option)({
296
335
  flags: '--timeout-ms [number]',
@@ -326,7 +365,8 @@ exports.TestRunCommand = TestRunCommand = TestRunCommand_1 = __decorate([
326
365
  name: 'run',
327
366
  description: 'Run testing scenarios from module metadata.',
328
367
  }),
329
- __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService])
368
+ __metadata("design:paramtypes", [module_metadata_helper_service_1.ModuleMetadataHelperService,
369
+ setting_service_1.SettingService])
330
370
  ], TestRunCommand);
331
371
  function splitCsv(value) {
332
372
  if (!value)
@@ -337,6 +377,12 @@ function splitCsv(value) {
337
377
  .filter(Boolean);
338
378
  return items.length ? items : undefined;
339
379
  }
380
+ function toPositiveNumber(value) {
381
+ if (value === null || value === undefined || value === '')
382
+ return undefined;
383
+ const parsed = Number(value);
384
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
385
+ }
340
386
  function resolveSpecPath(entry, metadataPath) {
341
387
  if (path.isAbsolute(entry)) {
342
388
  return entry;
@@ -1 +1 @@
1
- {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const reporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: { baseUrl: uiBaseUrl, headless },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (reporter instanceof WebhookReporter) {\n await reporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
1
+ {"version":3,"file":"run-tests.command.js","sourceRoot":"","sources":["../../src/commands/run-tests.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport * as path from 'path';\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\nimport { ConsoleReporter } from 'src/testing/reporter/console-reporter';\nimport { WebhookReporter } from 'src/testing/reporter/webhook-reporter';\nimport { runFromMetadata } from 'src/testing/runner/run-from-metadata';\nimport type { TestingMetadata } from 'src/testing/contracts/testing-metadata.types';\nimport { SpecRegistry } from 'src/testing/core/spec-registry';\nimport { SettingService } from 'src/services/setting.service';\nimport type { SolidCoreSetting } from 'src/services/settings/default-settings-provider.service';\n\ninterface TestRunCommandOptions {\n module?: string;\n moduleName?: string;\n scenarioIds?: string;\n includeTags?: string;\n skipScenarioIds?: string;\n reporter?: string;\n apiBaseUrl?: string;\n uiBaseUrl?: string;\n headless?: boolean;\n uiTimeoutMs?: number;\n uiNavigationTimeoutMs?: number;\n timeoutMs?: number;\n retries?: number;\n listSpecs?: boolean;\n printApiLogs?: boolean;\n runName?: string;\n}\n\n@SubCommand({\n name: 'run',\n description: 'Run testing scenarios from module metadata.',\n})\nexport class TestRunCommand extends CommandRunner {\n private readonly logger = new Logger(TestRunCommand.name);\n\n constructor(\n private readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n private readonly settingService: SettingService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: TestRunCommandOptions): Promise<void> {\n try {\n const moduleName = options?.moduleName ?? options?.module ?? passedParam?.[0];\n if (!moduleName) {\n this.logger.error('Module name is required. Use --module or pass it as the first argument.');\n return;\n }\n\n const metadataPath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n if (!metadataPath) {\n this.logger.error(`Unable to resolve metadata path for module: ${moduleName}`);\n return;\n }\n\n const metadata = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(metadataPath);\n if (!metadata?.testing) {\n this.logger.error(`No testing configuration found in metadata: ${metadataPath}`);\n return;\n }\n\n const listSpecs = options?.listSpecs ?? false;\n const specEntries = Array.isArray(metadata.testing?.specs)\n ? metadata.testing.specs\n : [];\n\n if (listSpecs) {\n const registry = new SpecRegistry();\n if (specEntries.length) {\n loadSpecRegistrations(specEntries, metadataPath, registry);\n }\n printSpecList(registry.list());\n return;\n }\n if (!metadata?.testing?.scenarios || !Array.isArray(metadata.testing.scenarios)) {\n this.logger.error(`No testing.scenarios found in metadata: ${metadataPath}`);\n return;\n }\n\n const scenarioIds = splitCsv(options?.scenarioIds);\n const includeTags = splitCsv(options?.includeTags);\n const skipScenarioIds = splitCsv(options?.skipScenarioIds);\n\n const reporterName = options?.reporter ?? 'console';\n if (reporterName !== 'console') {\n this.logger.error(`Unsupported reporter: ${reporterName}. Use \"console\".`);\n return;\n }\n\n const apiBaseUrl = options?.apiBaseUrl ?? process.env.BASE_URL;\n const uiBaseUrl = options?.uiBaseUrl ?? process.env.FRONTEND_BASE_URL;\n const headless = options?.headless ?? true;\n const uiTimeoutMs =\n options?.uiTimeoutMs\n ?? toPositiveNumber(process.env.UI_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestDefaultTimeoutMs'));\n const uiNavigationTimeoutMs =\n options?.uiNavigationTimeoutMs\n ?? toPositiveNumber(process.env.UI_NAVIGATION_TIMEOUT_MS)\n ?? toPositiveNumber(this.settingService.getConfigValue<SolidCoreSetting>('uiTestNavigationTimeoutMs'));\n const printApiLogs = options?.printApiLogs ?? false;\n\n const webhookUrl = process.env.SOLIDCTL_WEBHOOK_URL;\n const runName = options?.runName ?? `run-${Date.now()}`;\n const reporter = webhookUrl\n ? new WebhookReporter(webhookUrl, runName)\n : new ConsoleReporter();\n\n try {\n await runFromMetadata({\n metadata: metadata as TestingMetadata,\n scenarioIds,\n includeTags,\n skipScenarioIds,\n reporter,\n api: apiBaseUrl ? { baseUrl: apiBaseUrl } : undefined,\n ui: {\n baseUrl: uiBaseUrl,\n headless,\n defaultTimeoutMs: uiTimeoutMs,\n navigationTimeoutMs: uiNavigationTimeoutMs,\n },\n defaults: {\n timeoutMs: options?.timeoutMs,\n retries: options?.retries,\n },\n options: { printApiLogs },\n specs: specEntries.length\n ? (registry) => loadSpecRegistrations(specEntries, metadataPath, registry)\n : undefined,\n });\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n } finally {\n if (reporter instanceof WebhookReporter) {\n await reporter.flush(Number(process.exitCode ?? 0));\n }\n }\n return;\n } catch (err: any) {\n this.logger.error('Run tests command failed');\n console.error('Run tests command failed');\n process.exitCode = 1;\n return;\n }\n }\n\n @Option({\n flags: '-m, --module [module name]',\n description: 'Module name to load metadata from.',\n required: false,\n })\n parseModule(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to run.',\n required: false,\n })\n parseScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--include-tags [tags]',\n description: 'Comma-separated list of tags; scenario must include all.',\n required: false,\n })\n parseIncludeTags(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--skip-scenario-ids [ids]',\n description: 'Comma-separated list of scenario ids to skip.',\n required: false,\n })\n parseSkipScenarioIds(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--reporter [name]',\n description: 'Reporter name (currently only \"console\").',\n required: false,\n })\n parseReporter(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--list-specs [true|false]',\n description: 'List registered test specs and exit.',\n required: false,\n })\n parseListSpecs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--print-api-logs [true|false]',\n description: 'Print full API request/response logs for api.request steps.',\n required: false,\n })\n parsePrintApiLogs(val?: string): boolean {\n if (val === undefined) return true;\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--api-base-url [url]',\n description: 'API base URL (defaults to process.env.BASE_URL).',\n required: false,\n })\n parseApiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--ui-base-url [url]',\n description: 'UI base URL (defaults to process.env.FRONTEND_BASE_URL).',\n required: false,\n })\n parseUiBaseUrl(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--headless [true|false]',\n description: 'Run UI browser in headless mode (default: true).',\n required: false,\n })\n parseHeadless(val: string): boolean {\n return val === 'false' ? false : true;\n }\n\n @Option({\n flags: '--ui-timeout-ms [number]',\n description:\n 'Default timeout in ms for UI steps (waits, clicks, fills). Defaults to process.env.UI_TIMEOUT_MS, then the uiTestDefaultTimeoutMs setting, then 30000.',\n required: false,\n })\n parseUiTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--ui-navigation-timeout-ms [number]',\n description:\n 'Default timeout in ms for ui.goto navigation. Defaults to process.env.UI_NAVIGATION_TIMEOUT_MS, then the uiTestNavigationTimeoutMs setting, then --ui-timeout-ms.',\n required: false,\n })\n parseUiNavigationTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--timeout-ms [number]',\n description: 'Default scenario timeout in milliseconds.',\n required: false,\n })\n parseTimeoutMs(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--retries [number]',\n description: 'Default scenario retries.',\n required: false,\n })\n parseRetries(val: string): number {\n return Number(val);\n }\n\n @Option({\n flags: '--run-name [name]',\n description: 'Logical name for this test run (used by webhook reporter).',\n required: false,\n })\n parseRunName(val: string): string {\n return val;\n }\n}\n\nfunction splitCsv(value?: string): string[] | undefined {\n if (!value) return undefined;\n const items = value\n .split(',')\n .map((item) => item.trim())\n .filter(Boolean);\n return items.length ? items : undefined;\n}\n\n// Accepts unknown because settings come back already parsed as numbers, while env\n// vars arrive as strings.\nfunction toPositiveNumber(value?: unknown): number | undefined {\n if (value === null || value === undefined || value === '') return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction resolveSpecPath(entry: string, metadataPath: string): string {\n if (path.isAbsolute(entry)) {\n return entry;\n }\n if (entry.startsWith('.')) {\n return path.resolve(path.dirname(metadataPath), entry);\n }\n return path.resolve(process.cwd(), entry);\n}\n\nfunction loadSpecRegistrations(entries: string[], metadataPath: string, registry: SpecRegistry): void {\n for (const entry of entries) {\n const resolved = resolveSpecPath(entry, metadataPath);\n let mod: any;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n mod = require(resolved);\n } catch (err: any) {\n const message = err?.message ?? String(err);\n throw new Error(\n `Failed to load test spec module \"${entry}\" resolved to \"${resolved}\": ${message}`,\n );\n }\n const register = mod?.registerTestSpecs ?? mod?.default ?? mod;\n if (typeof register !== 'function') {\n throw new Error(\n `Test spec module \"${entry}\" did not export a register function (expected \"registerTestSpecs\" or default export).`,\n );\n }\n register(registry);\n }\n}\nfunction printSpecList(specIds: string[]): void {\n if (!specIds.length) {\n console.log('No test specs registered.');\n return;\n }\n console.log('Registered test specs:');\n for (const id of specIds) {\n console.log(`- ${id}`);\n }\n}\n"]}
@@ -14,4 +14,5 @@ export declare const CHATTER_MESSAGE_STATUS: {
14
14
  readonly PENDING: "pending";
15
15
  readonly COMPLETED: "completed";
16
16
  };
17
+ export declare const CHATTER_MESSAGE_USER_FIELDS: readonly ["id", "fullName"];
17
18
  //# sourceMappingURL=chatter-message.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC"}
1
+ {"version":3,"file":"chatter-message.constants.d.ts","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;;CAGvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;CAO1B,CAAC;AAEX,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAUX,eAAO,MAAM,2BAA2B,6BAAsB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
3
+ exports.CHATTER_MESSAGE_USER_FIELDS = exports.CHATTER_MESSAGE_STATUS = exports.CHATTER_MESSAGE_SUBTYPE = exports.CHATTER_MESSAGE_TYPE = void 0;
4
+ const user_constants_1 = require("./user.constants");
4
5
  exports.CHATTER_MESSAGE_TYPE = {
5
6
  AUDIT: 'audit',
6
7
  CUSTOM: 'custom',
@@ -17,4 +18,5 @@ exports.CHATTER_MESSAGE_STATUS = {
17
18
  PENDING: 'pending',
18
19
  COMPLETED: 'completed',
19
20
  };
21
+ exports.CHATTER_MESSAGE_USER_FIELDS = user_constants_1.USER_SUMMARY_FIELDS;
20
22
  //# sourceMappingURL=chatter-message.constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC","sourcesContent":["export const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n"]}
1
+ {"version":3,"file":"chatter-message.constants.js","sourceRoot":"","sources":["../../src/constants/chatter-message.constants.ts"],"names":[],"mappings":";;;AAAA,qDAAmE;AAEtD,QAAA,oBAAoB,GAAG;IAChC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACV,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACnC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACN,CAAC;AAEE,QAAA,sBAAsB,GAAG;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CAChB,CAAC;AAUE,QAAA,2BAA2B,GAAG,oCAAmB,CAAC","sourcesContent":["import { USER_SUMMARY_FIELDS } from 'src/constants/user.constants';\n\nexport const CHATTER_MESSAGE_TYPE = {\n AUDIT: 'audit',\n CUSTOM: 'custom',\n} as const;\n\nexport const CHATTER_MESSAGE_SUBTYPE = {\n AUDIT_INSERT: 'audit_insert',\n AUDIT_UPDATE: 'audit_update',\n AUDIT_DELETE: 'audit_delete',\n CUSTOM: 'custom',\n NOTE: 'note',\n TASK: 'task',\n} as const;\n\nexport const CHATTER_MESSAGE_STATUS = {\n PENDING: 'pending',\n COMPLETED: 'completed',\n} as const;\n\n/**\n * Columns of the message author exposed by the chatter APIs.\n *\n * The chatter panel renders `fullName` (name label + initials avatar) and uses `id`\n * for the own-note edit check; the admin list/form/tree views display `fullName` via\n * each view's `coModelFieldToDisplay`. That is exactly the platform-wide summary\n * shape, so this is an alias rather than a second list to keep in step.\n */\nexport const CHATTER_MESSAGE_USER_FIELDS = USER_SUMMARY_FIELDS;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const USER_SUMMARY_FIELDS: readonly ["id", "fullName"];
2
+ //# sourceMappingURL=user.constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.constants.d.ts","sourceRoot":"","sources":["../../src/constants/user.constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB,6BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.USER_SUMMARY_FIELDS = void 0;
4
+ exports.USER_SUMMARY_FIELDS = ['id', 'fullName'];
5
+ //# sourceMappingURL=user.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.constants.js","sourceRoot":"","sources":["../../src/constants/user.constants.ts"],"names":[],"mappings":";;;AAYa,QAAA,mBAAmB,GAAG,CAAC,IAAI,EAAE,UAAU,CAAU,CAAC","sourcesContent":["/**\n * The columns of a `User` that are safe to embed in another entity's API response.\n *\n * Whenever a user is attached to a record the caller asked for - a `createdBy` /\n * `updatedBy` populate, a chatter message author - the caller wants to display who it\n * was, not to read their profile. Everything else on `User` is PII (email, mobile),\n * authz metadata (roles, apiKeys) or secret, and the embedded user is frequently\n * someone the viewer has no other visibility of.\n *\n * `fullName` is nullable; consumers that need a fallback should use the record's own\n * context rather than widening this list.\n */\nexport const USER_SUMMARY_FIELDS = ['id', 'fullName'] as const;\n"]}
@@ -16,6 +16,11 @@ export declare class ChatterMessageController {
16
16
  records: import("..").ChatterMessage[];
17
17
  }>;
18
18
  findMany(query: any): Promise<any>;
19
+ getMentionableUsers(query: any): Promise<{
20
+ id: number;
21
+ username: string;
22
+ fullName: string;
23
+ }[]>;
19
24
  findOne(id: string, query: any): Promise<import("..").ChatterMessage>;
20
25
  postMessage(postDto: PostChatterMessageDto, files: Array<Express.Multer.File>): Promise<import("..").ChatterMessage>;
21
26
  markCompleted(id: string): Promise<import("..").ChatterMessage>;
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAUtF,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAsDrD,kBAAkB,CACH,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAC9B,KAAK,EAAE,GAAG;;;;;;;;;;;IAgBf,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAmBpD,WAAW,CACP,OAAO,EAAE,qBAAqB,EACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9C,aAAa,CAAc,EAAE,EAAE,MAAM;IAOrC,uBAAuB,CACd,EAAE,EAAE,MAAM,EACf,SAAS,EAAE,2BAA2B,EAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAIrD"}
1
+ {"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAUtF,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAsDrD,kBAAkB,CACH,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAC9B,KAAK,EAAE,GAAG;;;;;;;;;;;IAgBf,QAAQ,CAAU,KAAK,EAAE,GAAG;IAQ5B,mBAAmB,CAAU,KAAK,EAAE,GAAG;;;;;IAMvC,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAmBpD,WAAW,CACP,OAAO,EAAE,qBAAqB,EACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9C,aAAa,CAAc,EAAE,EAAE,MAAM;IAOrC,uBAAuB,CACd,EAAE,EAAE,MAAM,EACf,SAAS,EAAE,2BAA2B,EAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAIrD"}
@@ -35,6 +35,9 @@ let ChatterMessageController = class ChatterMessageController {
35
35
  async findMany(query) {
36
36
  return this.service.find(query);
37
37
  }
38
+ async getMentionableUsers(query) {
39
+ return this.service.getMentionableUsers(query?.search, query?.limit ? +query.limit : undefined);
40
+ }
38
41
  async findOne(id, query) {
39
42
  return this.service.findOne(+id, query);
40
43
  }
@@ -87,6 +90,17 @@ __decorate([
87
90
  __metadata("design:paramtypes", [Object]),
88
91
  __metadata("design:returntype", Promise)
89
92
  ], ChatterMessageController.prototype, "findMany", null);
93
+ __decorate([
94
+ (0, swagger_1.ApiBearerAuth)("jwt"),
95
+ (0, swagger_1.ApiQuery)({ name: 'search', required: false, type: String }),
96
+ (0, swagger_1.ApiQuery)({ name: 'limit', required: false, type: Number }),
97
+ (0, common_1.Get)('mentionable-users'),
98
+ openapi.ApiResponse({ status: 200 }),
99
+ __param(0, (0, common_1.Query)()),
100
+ __metadata("design:type", Function),
101
+ __metadata("design:paramtypes", [Object]),
102
+ __metadata("design:returntype", Promise)
103
+ ], ChatterMessageController.prototype, "getMentionableUsers", null);
90
104
  __decorate([
91
105
  (0, swagger_1.ApiBearerAuth)("jwt"),
92
106
  (0, common_1.Get)(':id'),
@@ -1 +1 @@
1
- {"version":3,"file":"chatter-message.controller.js","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ChatterMessageService } from '../services/chatter-message.service';\nimport { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';\nimport { UpdateChatterMessageDto } from '../dtos/update-chatter-message.dto';\nimport { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';\nimport { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';\nimport { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';\nimport { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';\nimport { Public } from 'src/decorators/public.decorator';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('chatter-message')\nexport class ChatterMessageController {\n constructor(private readonly service: ChatterMessageService) {}\n\n // @ApiBearerAuth(\"jwt\")\n // @Post()\n // @UseInterceptors(AnyFilesInterceptor())\n // create(@Body() createDto: CreateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.create(createDto, files);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk')\n // @UseInterceptors(AnyFilesInterceptor())\n // insertMany(@Body() createDtos: CreateChatterMessageDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n // return this.service.insertMany(createDtos, filesArray);\n // }\n\n\n // @ApiBearerAuth(\"jwt\")\n // @Put(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // update(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Patch(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files, true);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk-recover')\n // async recoverMany(@Body() ids: number[]) {\n // return this.service.recoverMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Get('/recover/:id')\n // async recover(@Param('id') id: number) {\n // return this.service.recover(id);\n // }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/getChatterMessages/:entityId/:entityName')\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n async getChatterMessages(\n @Param('entityId') entityId: number,\n @Param('entityName') entityName: string,\n @Query() query: any\n ) {\n return this.service.getChatterMessages(entityId, entityName, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete('/bulk')\n // async deleteMany(@Body() ids: number[]) {\n // return this.service.deleteMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete(':id')\n // async delete(@Param('id') id: number) {\n // return this.service.delete(id);\n // }\n\n @ApiBearerAuth(\"jwt\")\n @Post('post')\n @UseInterceptors(AnyFilesInterceptor())\n async postMessage(\n @Body() postDto: PostChatterMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.postMessage(postDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/complete')\n async markCompleted(@Param('id') id: string) {\n return this.service.markCompleted(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/note')\n @UseInterceptors(AnyFilesInterceptor())\n async updateCustomNoteMessage(\n @Param('id') id: string,\n @Body() updateDto: UpdateChatterNoteMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.updateCustomNoteMessage(+id, updateDto, files);\n }\n}\n"]}
1
+ {"version":3,"file":"chatter-message.controller.js","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ChatterMessageService } from '../services/chatter-message.service';\nimport { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';\nimport { UpdateChatterMessageDto } from '../dtos/update-chatter-message.dto';\nimport { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';\nimport { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';\nimport { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';\nimport { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';\nimport { Public } from 'src/decorators/public.decorator';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('chatter-message')\nexport class ChatterMessageController {\n constructor(private readonly service: ChatterMessageService) {}\n\n // @ApiBearerAuth(\"jwt\")\n // @Post()\n // @UseInterceptors(AnyFilesInterceptor())\n // create(@Body() createDto: CreateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.create(createDto, files);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk')\n // @UseInterceptors(AnyFilesInterceptor())\n // insertMany(@Body() createDtos: CreateChatterMessageDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n // return this.service.insertMany(createDtos, filesArray);\n // }\n\n\n // @ApiBearerAuth(\"jwt\")\n // @Put(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // update(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Patch(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files, true);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk-recover')\n // async recoverMany(@Body() ids: number[]) {\n // return this.service.recoverMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Get('/recover/:id')\n // async recover(@Param('id') id: number) {\n // return this.service.recover(id);\n // }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/getChatterMessages/:entityId/:entityName')\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n async getChatterMessages(\n @Param('entityId') entityId: number,\n @Param('entityName') entityName: string,\n @Query() query: any\n ) {\n return this.service.getChatterMessages(entityId, entityName, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'search', required: false, type: String })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @Get('mentionable-users')\n async getMentionableUsers(@Query() query: any) {\n return this.service.getMentionableUsers(query?.search, query?.limit ? +query.limit : undefined);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete('/bulk')\n // async deleteMany(@Body() ids: number[]) {\n // return this.service.deleteMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete(':id')\n // async delete(@Param('id') id: number) {\n // return this.service.delete(id);\n // }\n\n @ApiBearerAuth(\"jwt\")\n @Post('post')\n @UseInterceptors(AnyFilesInterceptor())\n async postMessage(\n @Body() postDto: PostChatterMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.postMessage(postDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/complete')\n async markCompleted(@Param('id') id: string) {\n return this.service.markCompleted(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/note')\n @UseInterceptors(AnyFilesInterceptor())\n async updateCustomNoteMessage(\n @Param('id') id: string,\n @Body() updateDto: UpdateChatterNoteMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.updateCustomNoteMessage(+id, updateDto, files);\n }\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;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAG7D,qBAGa,IAAK,SAAQ,YAAY;IAIlC,QAAQ,EAAE,MAAM,CAAC;IAKjB,QAAQ,EAAE,MAAM,CAAC;IAKjB,KAAK,EAAE,MAAM,CAAC;IAKd,MAAM,EAAE,MAAM,CAAC;IAIf,QAAQ,EAAE,MAAM,CAAC;IAIjB,mBAAmB,EAAE,OAAO,CAAQ;IAIpC,iBAAiB,EAAE,MAAM,CAAW;IAIpC,UAAU,EAAE,MAAM,CAAC;IAInB,iBAAiB,EAAE,MAAM,CAAC;IAI1B,QAAQ,EAAE,MAAM,CAAC;IAIjB,oBAAoB,EAAE,MAAM,CAAC;IAI7B,UAAU,EAAE,MAAM,CAAC;IAInB,mBAAmB,EAAE,MAAM,CAAC;IAI5B,sBAAsB,EAAE,MAAM,CAAC;IAI/B,OAAO,EAAE,MAAM,CAAC;IAIhB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,WAAW,EAAE,MAAM,CAAC;IAIpB,oBAAoB,EAAE,MAAM,CAAC;IAI7B,uBAAuB,EAAE,MAAM,CAAC;IAIhC,0BAA0B,EAAE,MAAM,CAAC;IAInC,mCAAmC,EAAE,MAAM,CAAC;IAI5C,sCAAsC,EAAE,MAAM,CAAC;IAK/C,MAAM,EAAE,OAAO,CAAQ;IAIvB,yBAAyB,EAAE,IAAI,CAAC;IAIhC,iCAAiC,EAAE,MAAM,CAAC;IAI1C,0CAA0C,EAAE,IAAI,CAAC;IAIjD,6BAA6B,EAAE,IAAI,CAAC;IAIpC,oCAAoC,EAAE,MAAM,CAAC;IAI7C,6CAA6C,EAAE,IAAI,CAAC;IAIpD,8BAA8B,EAAE,IAAI,CAAC;IAIrC,qCAAqC,EAAE,MAAM,CAAC;IAI9C,8CAA8C,EAAE,IAAI,CAAC;IAIrD,sBAAsB,EAAE,IAAI,CAAC;IAI7B,6BAA6B,EAAE,MAAM,CAAC;IAItC,sCAAsC,EAAE,IAAI,CAAC;IAI7C,uBAAuB,EAAE,IAAI,CAAC;IAI9B,8BAA8B,EAAE,MAAM,CAAC;IAIvC,uCAAuC,EAAE,IAAI,CAAC;IAI9C,aAAa,EAAE,MAAM,CAAC;IAKtB,KAAK,EAAE,YAAY,EAAE,CAAC;IAItB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IAIrC,cAAc,EAAE,MAAM,CAAC;IAIvB,qBAAqB,EAAE,MAAM,CAAC;IAI9B,UAAU,EAAE,IAAI,CAAC;IAIjB,mBAAmB,EAAE,MAAM,CAAK;IAGhC,MAAM,EAAE,GAAG,CAAC;IAIZ,0BAA0B,EAAE,OAAO,CAAS;IAI5C,OAAO,EAAE,UAAU,EAAE,CAAC;CAEzB"}
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;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAoB7D,qBAGa,IAAK,SAAQ,YAAY;IAIlC,QAAQ,EAAE,MAAM,CAAC;IAKjB,QAAQ,EAAE,MAAM,CAAC;IAKjB,KAAK,EAAE,MAAM,CAAC;IAKd,MAAM,EAAE,MAAM,CAAC;IAIf,QAAQ,EAAE,MAAM,CAAC;IAIjB,mBAAmB,EAAE,OAAO,CAAQ;IAIpC,iBAAiB,EAAE,MAAM,CAAW;IAIpC,UAAU,EAAE,MAAM,CAAC;IAInB,iBAAiB,EAAE,MAAM,CAAC;IAI1B,QAAQ,EAAE,MAAM,CAAC;IAIjB,oBAAoB,EAAE,MAAM,CAAC;IAI7B,UAAU,EAAE,MAAM,CAAC;IAInB,mBAAmB,EAAE,MAAM,CAAC;IAI5B,sBAAsB,EAAE,MAAM,CAAC;IAI/B,OAAO,EAAE,MAAM,CAAC;IAIhB,gBAAgB,EAAE,MAAM,CAAC;IAIzB,WAAW,EAAE,MAAM,CAAC;IAIpB,oBAAoB,EAAE,MAAM,CAAC;IAI7B,uBAAuB,EAAE,MAAM,CAAC;IAIhC,0BAA0B,EAAE,MAAM,CAAC;IAInC,mCAAmC,EAAE,MAAM,CAAC;IAI5C,sCAAsC,EAAE,MAAM,CAAC;IAK/C,MAAM,EAAE,OAAO,CAAQ;IAIvB,yBAAyB,EAAE,IAAI,CAAC;IAIhC,iCAAiC,EAAE,MAAM,CAAC;IAI1C,0CAA0C,EAAE,IAAI,CAAC;IAIjD,6BAA6B,EAAE,IAAI,CAAC;IAIpC,oCAAoC,EAAE,MAAM,CAAC;IAI7C,6CAA6C,EAAE,IAAI,CAAC;IAIpD,8BAA8B,EAAE,IAAI,CAAC;IAIrC,qCAAqC,EAAE,MAAM,CAAC;IAI9C,8CAA8C,EAAE,IAAI,CAAC;IAIrD,sBAAsB,EAAE,IAAI,CAAC;IAI7B,6BAA6B,EAAE,MAAM,CAAC;IAItC,sCAAsC,EAAE,IAAI,CAAC;IAI7C,uBAAuB,EAAE,IAAI,CAAC;IAI9B,8BAA8B,EAAE,MAAM,CAAC;IAIvC,uCAAuC,EAAE,IAAI,CAAC;IAI9C,aAAa,EAAE,MAAM,CAAC;IAKtB,KAAK,EAAE,YAAY,EAAE,CAAC;IAItB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IAIrC,cAAc,EAAE,MAAM,CAAC;IAIvB,qBAAqB,EAAE,MAAM,CAAC;IAI9B,UAAU,EAAE,IAAI,CAAC;IAIjB,mBAAmB,EAAE,MAAM,CAAK;IAGhC,MAAM,EAAE,GAAG,CAAC;IAIZ,0BAA0B,EAAE,OAAO,CAAS;IAI5C,OAAO,EAAE,UAAU,EAAE,CAAC;CAEzB"}
@@ -57,6 +57,7 @@ __decorate([
57
57
  ], User.prototype, "mobile", void 0);
58
58
  __decorate([
59
59
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
60
+ (0, class_transformer_1.Exclude)(),
60
61
  __metadata("design:type", String)
61
62
  ], User.prototype, "password", void 0);
62
63
  __decorate([
@@ -66,66 +67,82 @@ __decorate([
66
67
  ], User.prototype, "forcePasswordChange", void 0);
67
68
  __decorate([
68
69
  (0, typeorm_1.Column)({ type: "varchar", default: "local" }),
70
+ (0, class_transformer_1.Exclude)(),
69
71
  __metadata("design:type", String)
70
72
  ], User.prototype, "lastLoginProvider", void 0);
71
73
  __decorate([
72
74
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
75
+ (0, class_transformer_1.Exclude)(),
73
76
  __metadata("design:type", String)
74
77
  ], User.prototype, "accessCode", void 0);
75
78
  __decorate([
76
79
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
80
+ (0, class_transformer_1.Exclude)(),
77
81
  __metadata("design:type", String)
78
82
  ], User.prototype, "googleAccessToken", void 0);
79
83
  __decorate([
80
84
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
85
+ (0, class_transformer_1.Exclude)(),
81
86
  __metadata("design:type", String)
82
87
  ], User.prototype, "googleId", void 0);
83
88
  __decorate([
84
89
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
90
+ (0, class_transformer_1.Exclude)(),
85
91
  __metadata("design:type", String)
86
92
  ], User.prototype, "googleProfilePicture", void 0);
87
93
  __decorate([
88
94
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
95
+ (0, class_transformer_1.Exclude)(),
89
96
  __metadata("design:type", String)
90
97
  ], User.prototype, "facebookId", void 0);
91
98
  __decorate([
92
99
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
100
+ (0, class_transformer_1.Exclude)(),
93
101
  __metadata("design:type", String)
94
102
  ], User.prototype, "facebookAccessToken", void 0);
95
103
  __decorate([
96
104
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
105
+ (0, class_transformer_1.Exclude)(),
97
106
  __metadata("design:type", String)
98
107
  ], User.prototype, "facebookProfilePicture", void 0);
99
108
  __decorate([
100
109
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
110
+ (0, class_transformer_1.Exclude)(),
101
111
  __metadata("design:type", String)
102
112
  ], User.prototype, "appleId", void 0);
103
113
  __decorate([
104
114
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
115
+ (0, class_transformer_1.Exclude)(),
105
116
  __metadata("design:type", String)
106
117
  ], User.prototype, "appleAccessToken", void 0);
107
118
  __decorate([
108
119
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
120
+ (0, class_transformer_1.Exclude)(),
109
121
  __metadata("design:type", String)
110
122
  ], User.prototype, "microsoftId", void 0);
111
123
  __decorate([
112
124
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
125
+ (0, class_transformer_1.Exclude)(),
113
126
  __metadata("design:type", String)
114
127
  ], User.prototype, "microsoftAccessToken", void 0);
115
128
  __decorate([
116
129
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
130
+ (0, class_transformer_1.Exclude)(),
117
131
  __metadata("design:type", String)
118
132
  ], User.prototype, "microsoftProfilePicture", void 0);
119
133
  __decorate([
120
134
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
135
+ (0, class_transformer_1.Exclude)(),
121
136
  __metadata("design:type", String)
122
137
  ], User.prototype, "microsoftActiveDirectoryId", void 0);
123
138
  __decorate([
124
139
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
140
+ (0, class_transformer_1.Exclude)(),
125
141
  __metadata("design:type", String)
126
142
  ], User.prototype, "microsoftActiveDirectoryAccessToken", void 0);
127
143
  __decorate([
128
144
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
145
+ (0, class_transformer_1.Exclude)(),
129
146
  __metadata("design:type", String)
130
147
  ], User.prototype, "microsoftActiveDirectoryProfilePicture", void 0);
131
148
  __decorate([
@@ -136,62 +153,77 @@ __decorate([
136
153
  ], User.prototype, "active", void 0);
137
154
  __decorate([
138
155
  (0, typeorm_1.Column)({ nullable: true }),
156
+ (0, class_transformer_1.Exclude)(),
139
157
  __metadata("design:type", Date)
140
158
  ], User.prototype, "forgotPasswordConfirmedAt", void 0);
141
159
  __decorate([
142
160
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
161
+ (0, class_transformer_1.Exclude)(),
143
162
  __metadata("design:type", String)
144
163
  ], User.prototype, "verificationTokenOnForgotPassword", void 0);
145
164
  __decorate([
146
165
  (0, typeorm_1.Column)({ nullable: true }),
166
+ (0, class_transformer_1.Exclude)(),
147
167
  __metadata("design:type", Date)
148
168
  ], User.prototype, "verificationTokenOnForgotPasswordExpiresAt", void 0);
149
169
  __decorate([
150
170
  (0, typeorm_1.Column)({ nullable: true }),
171
+ (0, class_transformer_1.Exclude)(),
151
172
  __metadata("design:type", Date)
152
173
  ], User.prototype, "emailVerifiedOnRegistrationAt", void 0);
153
174
  __decorate([
154
175
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
176
+ (0, class_transformer_1.Exclude)(),
155
177
  __metadata("design:type", String)
156
178
  ], User.prototype, "emailVerificationTokenOnRegistration", void 0);
157
179
  __decorate([
158
180
  (0, typeorm_1.Column)({ nullable: true }),
181
+ (0, class_transformer_1.Exclude)(),
159
182
  __metadata("design:type", Date)
160
183
  ], User.prototype, "emailVerificationTokenOnRegistrationExpiresAt", void 0);
161
184
  __decorate([
162
185
  (0, typeorm_1.Column)({ nullable: true }),
186
+ (0, class_transformer_1.Exclude)(),
163
187
  __metadata("design:type", Date)
164
188
  ], User.prototype, "mobileVerifiedOnRegistrationAt", void 0);
165
189
  __decorate([
166
190
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
191
+ (0, class_transformer_1.Exclude)(),
167
192
  __metadata("design:type", String)
168
193
  ], User.prototype, "mobileVerificationTokenOnRegistration", void 0);
169
194
  __decorate([
170
195
  (0, typeorm_1.Column)({ nullable: true }),
196
+ (0, class_transformer_1.Exclude)(),
171
197
  __metadata("design:type", Date)
172
198
  ], User.prototype, "mobileVerificationTokenOnRegistrationExpiresAt", void 0);
173
199
  __decorate([
174
200
  (0, typeorm_1.Column)({ nullable: true }),
201
+ (0, class_transformer_1.Exclude)(),
175
202
  __metadata("design:type", Date)
176
203
  ], User.prototype, "emailVerifiedOnLoginAt", void 0);
177
204
  __decorate([
178
205
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
206
+ (0, class_transformer_1.Exclude)(),
179
207
  __metadata("design:type", String)
180
208
  ], User.prototype, "emailVerificationTokenOnLogin", void 0);
181
209
  __decorate([
182
210
  (0, typeorm_1.Column)({ nullable: true }),
211
+ (0, class_transformer_1.Exclude)(),
183
212
  __metadata("design:type", Date)
184
213
  ], User.prototype, "emailVerificationTokenOnLoginExpiresAt", void 0);
185
214
  __decorate([
186
215
  (0, typeorm_1.Column)({ nullable: true }),
216
+ (0, class_transformer_1.Exclude)(),
187
217
  __metadata("design:type", Date)
188
218
  ], User.prototype, "mobileVerifiedOnLoginAt", void 0);
189
219
  __decorate([
190
220
  (0, typeorm_1.Column)({ type: "varchar", nullable: true }),
221
+ (0, class_transformer_1.Exclude)(),
191
222
  __metadata("design:type", String)
192
223
  ], User.prototype, "mobileVerificationTokenOnLogin", void 0);
193
224
  __decorate([
194
225
  (0, typeorm_1.Column)({ nullable: true }),
226
+ (0, class_transformer_1.Exclude)(),
195
227
  __metadata("design:type", Date)
196
228
  ], User.prototype, "mobileVerificationTokenOnLoginExpiresAt", void 0);
197
229
  __decorate([
@@ -207,17 +239,21 @@ __decorate([
207
239
  ], User.prototype, "roles", void 0);
208
240
  __decorate([
209
241
  (0, typeorm_1.OneToMany)(() => user_view_metadata_entity_1.UserViewMetadata, userViewMetadata => userViewMetadata.user, { cascade: true }),
242
+ (0, class_transformer_1.Exclude)(),
210
243
  __metadata("design:type", Array)
211
244
  ], User.prototype, "userViewMetadata", void 0);
212
245
  __decorate([
246
+ (0, class_transformer_1.Exclude)(),
213
247
  (0, typeorm_1.Column)({ type: "varchar", default: "bcrypt" }),
214
248
  __metadata("design:type", String)
215
249
  ], User.prototype, "passwordScheme", void 0);
216
250
  __decorate([
251
+ (0, class_transformer_1.Exclude)(),
217
252
  (0, typeorm_1.Column)({ type: "int", default: 1 }),
218
253
  __metadata("design:type", Number)
219
254
  ], User.prototype, "passwordSchemeVersion", void 0);
220
255
  __decorate([
256
+ (0, class_transformer_1.Exclude)(),
221
257
  (0, typeorm_1.Column)({ nullable: true }),
222
258
  __metadata("design:type", Date)
223
259
  ], User.prototype, "rehashedAt", void 0);