@solidstarters/solid-core 1.2.98 → 1.2.100

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 (101) hide show
  1. package/dist/controllers/setting.controller.d.ts +1 -1
  2. package/dist/controllers/setting.controller.d.ts.map +1 -1
  3. package/dist/controllers/setting.controller.js +5 -3
  4. package/dist/controllers/setting.controller.js.map +1 -1
  5. package/dist/dtos/update-settings.dto.d.ts.map +1 -1
  6. package/dist/dtos/update-settings.dto.js +1 -2
  7. package/dist/dtos/update-settings.dto.js.map +1 -1
  8. package/dist/entities/common.entity.d.ts +3 -0
  9. package/dist/entities/common.entity.d.ts.map +1 -1
  10. package/dist/entities/common.entity.js +9 -1
  11. package/dist/entities/common.entity.js.map +1 -1
  12. package/dist/entities/menu-item-metadata.entity.js +1 -1
  13. package/dist/entities/menu-item-metadata.entity.js.map +1 -1
  14. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts +1 -0
  15. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts.map +1 -1
  16. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.js +3 -1
  17. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.js.map +1 -1
  18. package/dist/helpers/model-metadata-helper.service.d.ts +8 -0
  19. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -0
  20. package/dist/helpers/model-metadata-helper.service.js +118 -0
  21. package/dist/helpers/model-metadata-helper.service.js.map +1 -0
  22. package/dist/helpers/schematic.service.d.ts +4 -1
  23. package/dist/helpers/schematic.service.d.ts.map +1 -1
  24. package/dist/helpers/schematic.service.js +8 -10
  25. package/dist/helpers/schematic.service.js.map +1 -1
  26. package/dist/helpers/solid-registry.d.ts +3 -1
  27. package/dist/helpers/solid-registry.d.ts.map +1 -1
  28. package/dist/helpers/solid-registry.js +4 -0
  29. package/dist/helpers/solid-registry.js.map +1 -1
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +7 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/seeders/module-metadata-seeder.service.d.ts +3 -1
  35. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  36. package/dist/seeders/module-metadata-seeder.service.js +7 -2
  37. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  38. package/dist/seeders/system-fields-seeder.service.d.ts +13 -0
  39. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -0
  40. package/dist/seeders/system-fields-seeder.service.js +56 -0
  41. package/dist/seeders/system-fields-seeder.service.js.map +1 -0
  42. package/dist/services/authentication.service.js +4 -4
  43. package/dist/services/authentication.service.js.map +1 -1
  44. package/dist/services/computed-fields/concat-computed-field-provider.service.d.ts.map +1 -1
  45. package/dist/services/computed-fields/concat-computed-field-provider.service.js +3 -0
  46. package/dist/services/computed-fields/concat-computed-field-provider.service.js.map +1 -1
  47. package/dist/services/crud.service.d.ts +1 -1
  48. package/dist/services/crud.service.d.ts.map +1 -1
  49. package/dist/services/crud.service.js +7 -6
  50. package/dist/services/crud.service.js.map +1 -1
  51. package/dist/services/model-metadata.service.js +1 -0
  52. package/dist/services/model-metadata.service.js.map +1 -1
  53. package/dist/services/setting.service.d.ts +1 -1
  54. package/dist/services/setting.service.d.ts.map +1 -1
  55. package/dist/services/setting.service.js +27 -1
  56. package/dist/services/setting.service.js.map +1 -1
  57. package/dist/solid-core.module.d.ts.map +1 -1
  58. package/dist/solid-core.module.js +8 -2
  59. package/dist/solid-core.module.js.map +1 -1
  60. package/dist/subscribers/audit.subscriber.d.ts +4 -5
  61. package/dist/subscribers/audit.subscriber.d.ts.map +1 -1
  62. package/dist/subscribers/audit.subscriber.js +12 -12
  63. package/dist/subscribers/audit.subscriber.js.map +1 -1
  64. package/dist/subscribers/created-by-updated-by.subscriber.d.ts +12 -0
  65. package/dist/subscribers/created-by-updated-by.subscriber.d.ts.map +1 -0
  66. package/dist/subscribers/created-by-updated-by.subscriber.js +67 -0
  67. package/dist/subscribers/created-by-updated-by.subscriber.js.map +1 -0
  68. package/dist/subscribers/model.subscriber.d.ts +4 -1
  69. package/dist/subscribers/model.subscriber.d.ts.map +1 -1
  70. package/dist/subscribers/model.subscriber.js +20 -67
  71. package/dist/subscribers/model.subscriber.js.map +1 -1
  72. package/dist/subscribers/{softDeleteAwareEventSubscriber.subscriber.d.ts → soft-delete-aware-event.subscriber.d.ts} +1 -1
  73. package/dist/subscribers/soft-delete-aware-event.subscriber.d.ts.map +1 -0
  74. package/dist/subscribers/{softDeleteAwareEventSubscriber.subscriber.js → soft-delete-aware-event.subscriber.js} +1 -1
  75. package/dist/subscribers/soft-delete-aware-event.subscriber.js.map +1 -0
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +1 -1
  78. package/src/controllers/setting.controller.ts +3 -2
  79. package/src/dtos/update-settings.dto.ts +2 -3
  80. package/src/entities/common.entity.ts +8 -2
  81. package/src/entities/menu-item-metadata.entity.ts +1 -1
  82. package/src/helpers/field-crud-managers/PasswordFieldCrudManager.ts +5 -1
  83. package/src/helpers/model-metadata-helper.service.ts +109 -0
  84. package/src/helpers/schematic.service.ts +10 -11
  85. package/src/helpers/solid-registry.ts +6 -1
  86. package/src/index.ts +2 -2
  87. package/src/seeders/module-metadata-seeder.service.ts +6 -0
  88. package/src/seeders/system-fields-seeder.service.ts +53 -0
  89. package/src/services/authentication.service.ts +4 -4
  90. package/src/services/computed-fields/concat-computed-field-provider.service.ts +3 -0
  91. package/src/services/crud.service.ts +7 -6
  92. package/src/services/model-metadata.service.ts +1 -1
  93. package/src/services/setting.service.ts +30 -1
  94. package/src/solid-core.module.ts +8 -1
  95. package/src/subscribers/audit.subscriber.ts +10 -11
  96. package/src/subscribers/created-by-updated-by.subscriber.ts +54 -0
  97. package/src/subscribers/model.subscriber.ts +16 -70
  98. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.d.ts.map +0 -1
  99. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.js.map +0 -1
  100. package/src/services/pending_import_issues +0 -3
  101. /package/src/subscribers/{softDeleteAwareEventSubscriber.subscriber.ts → soft-delete-aware-event.subscriber.ts} +0 -0
@@ -0,0 +1,54 @@
1
+ import { Injectable } from "@nestjs/common";
2
+ import { InjectDataSource } from "@nestjs/typeorm";
3
+ import { User } from "src/entities/user.entity";
4
+ import { ActiveUserData } from "src/interfaces/active-user-data.interface";
5
+ import { RequestContextService } from "src/services/request-context.service";
6
+ import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from "typeorm";
7
+
8
+ @Injectable()
9
+ @EventSubscriber()
10
+ export class CreatedByUpdatedBySubscriber implements EntitySubscriberInterface {
11
+ constructor(
12
+ @InjectDataSource()
13
+ private readonly dataSource: DataSource,
14
+ private readonly requestContextService: RequestContextService,
15
+ ) {
16
+ this.dataSource.subscribers.push(this);
17
+ }
18
+
19
+ async beforeInsert(event: InsertEvent<any>) {
20
+ await this.stampUserField(event, true);
21
+ }
22
+
23
+ async beforeUpdate(event: UpdateEvent<any>) {
24
+ await this.stampUserField(event, false);
25
+ }
26
+
27
+ private async stampUserField(event: InsertEvent<any> | UpdateEvent<any>, isInsert: boolean){
28
+ if (!event.entity) {
29
+ return;
30
+ }
31
+ // Get the current active user details from the request context
32
+ const activeUserOrUndefined = this.requestContextService.getActiveUser();
33
+ if (!activeUserOrUndefined) {
34
+ return;
35
+ }
36
+
37
+ const loadedUser = await this.loadUser(activeUserOrUndefined as unknown as ActiveUserData);
38
+ if (isInsert) {
39
+ event.entity.createdBy = loadedUser;
40
+ event.entity.updatedBy = loadedUser; // For insert, we set both createdBy and updatedBy to the same user
41
+ }
42
+ else {
43
+ event.entity.updatedBy = loadedUser;
44
+ }
45
+ }
46
+
47
+ private async loadUser(activeUser: ActiveUserData): Promise<User> {
48
+ const userRepo = this.dataSource.getRepository(User); // Assuming 'User' is the entity name for users in your application
49
+ const loadedUser = await userRepo.findOne({
50
+ where: { id: activeUser.sub }, // Assuming 'sub' is the user ID in the JWT token
51
+ });
52
+ return loadedUser;;
53
+ }
54
+ }
@@ -1,9 +1,9 @@
1
- import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from 'typeorm';
2
- import { ModelMetadata } from '../entities/model-metadata.entity';
3
- import { FieldMetadata } from '../entities/field-metadata.entity';
4
1
  import { Injectable, Logger, NotFoundException } from '@nestjs/common';
5
2
  import { InjectDataSource } from '@nestjs/typeorm';
6
- import { RemoveFieldsCommand } from '../commands/remove-fields.command';
3
+ import { ModelMetadataHelperService } from 'src/helpers/model-metadata-helper.service';
4
+ import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm';
5
+ import { FieldMetadata } from '../entities/field-metadata.entity';
6
+ import { ModelMetadata } from '../entities/model-metadata.entity';
7
7
 
8
8
  @EventSubscriber()
9
9
  @Injectable()
@@ -13,7 +13,7 @@ export class ModelSubscriber implements EntitySubscriberInterface<ModelMetadata>
13
13
  constructor(
14
14
  @InjectDataSource()
15
15
  private readonly dataSource: DataSource,
16
-
16
+ private readonly modelHelperService: ModelMetadataHelperService,
17
17
  ) {
18
18
  this.dataSource.subscribers.push(this);
19
19
  }
@@ -25,76 +25,22 @@ export class ModelSubscriber implements EntitySubscriberInterface<ModelMetadata>
25
25
  async afterInsert(event: InsertEvent<ModelMetadata>): Promise<void> {
26
26
  this.logger.debug(`[ModelSubscriber] getting invoked for insert on model: ${event.entity.singularName}`);
27
27
 
28
- // const fieldMetadataRepo = event.manager.getRepository(FieldMetadata);
29
- // const fieldMetadataRepo = this.dataSource.getRepository(FieldMetadata);
30
28
  const transactionManager = event.queryRunner?.manager;
31
29
  if (!transactionManager) {
32
30
  throw new NotFoundException(`Trnasaction Manager not found`);
33
-
34
31
  }
35
32
 
36
- const systemFieldsMetadata = [
37
- {
38
- name: "id",
39
- displayName: "Id",
40
- type: "int",
41
- ormType: "bigint",
42
- isSystem: true,
43
- model: event.entity,
44
- },
45
- {
46
- name: "createdAt",
47
- displayName: "Created At",
48
- type: "datetime",
49
- ormType: "timestamp",
50
- isSystem: true,
51
- model: event.entity,
52
- },
53
- {
54
- name: "updatedAt",
55
- displayName: "Updated At",
56
- type: "datetime",
57
- ormType: "timestamp",
58
- isSystem: true,
59
- model: event.entity,
60
- },
61
- {
62
- name: "deletedAt",
63
- displayName: "Deleted At",
64
- type: "datetime",
65
- ormType: "timestamp",
66
- isSystem: true,
67
- model: event.entity,
68
- },
69
- {
70
- name: "publishedAt",
71
- displayName: "Published At",
72
- type: "datetime",
73
- ormType: "timestamp",
74
- isSystem: true,
75
- model: event.entity,
76
- },
77
- {
78
- name: "localeName",
79
- displayName: "Locale",
80
- type: "shortText",
81
- ormType: "varchar",
82
- isSystem: true,
83
- model: event.entity,
84
- },
85
- {
86
- name: "defaultEntityLocaleId",
87
- displayName: "Default Entity Locale Id",
88
- type: "int",
89
- ormType: "integer",
90
- isSystem: true,
91
- model: event.entity,
92
- }
93
- ];
94
- await transactionManager.save(FieldMetadata, systemFieldsMetadata);
95
- // Save to the database.
96
- // fieldMetadataRepo.save(systemFieldsMetadata);
97
-
33
+ await transactionManager.save(FieldMetadata, this.systemFieldMetadataToBeAdded(event));
98
34
  }
99
35
 
36
+
37
+ private systemFieldMetadataToBeAdded(event: InsertEvent<ModelMetadata>) {
38
+ const systemFieldsDefaultMetadata = this.modelHelperService.getSystemFieldsMetadata();
39
+ // map and add the model as event.entity for the above metadata
40
+ const systemFieldsMetadata = systemFieldsDefaultMetadata.map(field => ({
41
+ ...field,
42
+ model: event.entity,
43
+ }));
44
+ return systemFieldsMetadata;
45
+ }
100
46
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"softDeleteAwareEventSubscriber.subscriber.d.ts","sourceRoot":"","sources":["../../src/subscribers/softDeleteAwareEventSubscriber.subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAmB,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAGhH,qBAEa,8BAA+B,YAAW,yBAAyB;IAIxE,OAAO,CAAC,QAAQ,CAAC,UAAU;IAH/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmD;gBAGrD,UAAU,EAAE,UAAU;IAK3C,gBAAgB,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;IAclE,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;CAM/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"softDeleteAwareEventSubscriber.subscriber.js","sourceRoot":"","sources":["../../src/subscribers/softDeleteAwareEventSubscriber.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAuE;AACvE,6CAAmD;AACnD,qCAAgH;AAKzG,IAAM,8BAA8B,sCAApC,MAAM,8BAA8B;IAEvC,YAEI,UAAuC;QAAtB,eAAU,GAAV,UAAU,CAAY;QAH1B,WAAM,GAAG,IAAI,eAAM,CAAC,gCAA8B,CAAC,IAAI,CAAC,CAAC;QAKtE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,KAA2B;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,cAAc,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,cAAc,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAEpE,CAAC;IAED,aAAa,CAAC,KAAwB;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,MAAM,CAAC,cAAc,GAAG,aAAa,CAAC;IAC1C,CAAC;CAEJ,CAAA;AA7BY,wEAA8B;yCAA9B,8BAA8B;IAF1C,IAAA,yBAAe,GAAE;IACjB,IAAA,mBAAU,GAAE;IAIJ,WAAA,IAAA,0BAAgB,GAAE,CAAA;qCACU,oBAAU;GAJlC,8BAA8B,CA6B1C"}
@@ -1,3 +0,0 @@
1
- 1. fileLocation -> file
2
- 2. Change the import response to return proper shape.
3
- 3. Change the urls to reflect proper semantics.