@solidstarters/solid-core 1.2.123 → 1.2.125

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 (94) hide show
  1. package/dist/decorators/disallow-in-production.decorator.d.ts +6 -0
  2. package/dist/decorators/disallow-in-production.decorator.d.ts.map +1 -0
  3. package/dist/decorators/disallow-in-production.decorator.js +25 -0
  4. package/dist/decorators/disallow-in-production.decorator.js.map +1 -0
  5. package/dist/dtos/create-field-metadata.dto.d.ts +14 -0
  6. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -1
  7. package/dist/dtos/create-field-metadata.dto.js +15 -2
  8. package/dist/dtos/create-field-metadata.dto.js.map +1 -1
  9. package/dist/entities/field-metadata.entity.d.ts +2 -0
  10. package/dist/entities/field-metadata.entity.d.ts.map +1 -1
  11. package/dist/entities/field-metadata.entity.js +5 -1
  12. package/dist/entities/field-metadata.entity.js.map +1 -1
  13. package/dist/helpers/solid-registry.d.ts +15 -3
  14. package/dist/helpers/solid-registry.d.ts.map +1 -1
  15. package/dist/helpers/solid-registry.js +14 -5
  16. package/dist/helpers/solid-registry.js.map +1 -1
  17. package/dist/interfaces.d.ts +11 -0
  18. package/dist/interfaces.d.ts.map +1 -1
  19. package/dist/interfaces.js.map +1 -1
  20. package/dist/jobs/database/computed-field-evaluation-publisher.service.d.ts +12 -0
  21. package/dist/jobs/database/computed-field-evaluation-publisher.service.d.ts.map +1 -0
  22. package/dist/jobs/database/computed-field-evaluation-publisher.service.js +39 -0
  23. package/dist/jobs/database/computed-field-evaluation-publisher.service.js.map +1 -0
  24. package/dist/jobs/database/computed-field-evaluation-queue-options.d.ts +8 -0
  25. package/dist/jobs/database/computed-field-evaluation-queue-options.d.ts.map +1 -0
  26. package/dist/jobs/database/computed-field-evaluation-queue-options.js +10 -0
  27. package/dist/jobs/database/computed-field-evaluation-queue-options.js.map +1 -0
  28. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts +16 -0
  29. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts.map +1 -0
  30. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js +48 -0
  31. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js.map +1 -0
  32. package/dist/repository/field-metadata.repository.d.ts +8 -0
  33. package/dist/repository/field-metadata.repository.d.ts.map +1 -0
  34. package/dist/repository/field-metadata.repository.js +38 -0
  35. package/dist/repository/field-metadata.repository.js.map +1 -0
  36. package/dist/repository/field.repository.d.ts +1 -1
  37. package/dist/repository/field.repository.d.ts.map +1 -1
  38. package/dist/repository/field.repository.js +6 -6
  39. package/dist/repository/field.repository.js.map +1 -1
  40. package/dist/seeders/seed-data/solid-core-metadata.json +14 -1
  41. package/dist/seeders/system-fields-seeder.service.d.ts +3 -3
  42. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  43. package/dist/seeders/system-fields-seeder.service.js +5 -6
  44. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  45. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +14 -0
  46. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts.map +1 -0
  47. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js +45 -0
  48. package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.js.map +1 -0
  49. package/dist/services/crud.service.d.ts +1 -0
  50. package/dist/services/crud.service.d.ts.map +1 -1
  51. package/dist/services/crud.service.js +9 -1
  52. package/dist/services/crud.service.js.map +1 -1
  53. package/dist/services/field-metadata.service.d.ts +6 -2
  54. package/dist/services/field-metadata.service.d.ts.map +1 -1
  55. package/dist/services/field-metadata.service.js +21 -4
  56. package/dist/services/field-metadata.service.js.map +1 -1
  57. package/dist/services/model-metadata.service.d.ts.map +1 -1
  58. package/dist/services/model-metadata.service.js +7 -0
  59. package/dist/services/model-metadata.service.js.map +1 -1
  60. package/dist/services/module-metadata.service.d.ts.map +1 -1
  61. package/dist/services/module-metadata.service.js +7 -0
  62. package/dist/services/module-metadata.service.js.map +1 -1
  63. package/dist/services/view-metadata.service.js +1 -2
  64. package/dist/services/view-metadata.service.js.map +1 -1
  65. package/dist/solid-core.module.d.ts.map +1 -1
  66. package/dist/solid-core.module.js +64 -54
  67. package/dist/solid-core.module.js.map +1 -1
  68. package/dist/subscribers/computed-entity-field.subscriber.d.ts +23 -0
  69. package/dist/subscribers/computed-entity-field.subscriber.d.ts.map +1 -0
  70. package/dist/subscribers/computed-entity-field.subscriber.js +95 -0
  71. package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -0
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +1 -1
  74. package/src/# computed field pending issues.md +3 -0
  75. package/src/decorators/disallow-in-production.decorator.ts +28 -0
  76. package/src/dtos/create-field-metadata.dto.ts +18 -0
  77. package/src/entities/field-metadata.entity.ts +4 -0
  78. package/src/helpers/solid-registry.ts +46 -13
  79. package/src/interfaces.ts +18 -0
  80. package/src/jobs/database/computed-field-evaluation-publisher.service.ts +23 -0
  81. package/src/jobs/database/computed-field-evaluation-queue-options.ts +9 -0
  82. package/src/jobs/database/computed-field-evaluation-subscriber.service.ts +36 -0
  83. package/src/repository/field-metadata.repository.ts +26 -0
  84. package/src/repository/field.repository.ts +5 -2
  85. package/src/seeders/seed-data/solid-core-metadata.json +14 -1
  86. package/src/seeders/system-fields-seeder.service.ts +3 -4
  87. package/src/services/computed-fields/entity/concat-entity-computed-field-provider.service.ts +52 -0
  88. package/src/services/crud.service.ts +9 -1
  89. package/src/services/field-metadata.service.ts +38 -8
  90. package/src/services/model-metadata.service.ts +2 -0
  91. package/src/services/module-metadata.service.ts +2 -0
  92. package/src/services/view-metadata.service.ts +2 -2
  93. package/src/solid-core.module.ts +64 -54
  94. package/src/subscribers/computed-entity-field.subscriber.ts +108 -0
@@ -83,14 +83,14 @@ import { SolidRegistry } from './helpers/solid-registry';
83
83
  import { LoggingInterceptor } from './interceptors/logging.interceptor';
84
84
  import { ApiEmailQueuePublisher } from './jobs/api-email-publisher.service';
85
85
  import { ApiEmailQueueSubscriber } from './jobs/api-email-subscriber.service';
86
+ import { TestQueueDbPublisher } from './jobs/database/queue-test-db-publisher.service';
87
+ import { TestQueueDbSubscriber } from './jobs/database/queue-test-db-subscriber.service';
86
88
  import { EmailQueuePublisher } from './jobs/email-publisher.service';
87
89
  import { EmailQueueSubscriber } from './jobs/email-subscriber.service';
88
90
  import { OTPQueuePublisher } from './jobs/otp-publisher.service';
89
91
  import { OTPQueueSubscriber } from './jobs/otp-subscriber.service';
90
92
  import { TestQueuePublisher } from './jobs/queue-test-publisher.service';
91
- import { TestQueueDbPublisher } from './jobs/database/queue-test-db-publisher.service';
92
93
  import { TestQueueSubscriber } from './jobs/queue-test-subscriber.service';
93
- import { TestQueueDbSubscriber } from './jobs/database/queue-test-db-subscriber.service';
94
94
  import { SmsQueuePublisher } from './jobs/sms-publisher.service';
95
95
  import { SmsQueueSubscriber } from './jobs/sms-subscriber.service';
96
96
  import { WhatsappQueuePublisher } from './jobs/whatsapp-publisher.service';
@@ -127,70 +127,75 @@ import { PermissionMetadataController } from './controllers/permission-metadata.
127
127
  import { PermissionMetadata } from './entities/permission-metadata.entity';
128
128
  import { PermissionMetadataService } from './services/permission-metadata.service';
129
129
 
130
+ import { ClsModule } from 'nestjs-cls';
131
+ import { ChatterMessageDetailsController } from './controllers/chatter-message-details.controller';
132
+ import { ChatterMessageController } from './controllers/chatter-message.controller';
133
+ import { ExportTemplateController } from './controllers/export-template.controller';
134
+ import { ExportTransactionController } from './controllers/export-transaction.controller';
135
+ import { ImportTransactionErrorLogController } from './controllers/import-transaction-error-log.controller';
136
+ import { ImportTransactionController } from './controllers/import-transaction.controller';
137
+ import { ListOfValuesController } from './controllers/list-of-values.controller';
138
+ import { LocaleController } from './controllers/locale.controller';
130
139
  import { RoleMetadataController } from './controllers/role-metadata.controller';
140
+ import { SavedFiltersController } from './controllers/saved-filters.controller';
141
+ import { SecurityRuleController } from './controllers/security-rule.controller';
142
+ import { SettingController } from './controllers/setting.controller';
143
+ import { UserActivityHistoryController } from './controllers/user-activity-history.controller';
144
+ import { UserViewMetadataController } from './controllers/user-view-metadata.controller';
131
145
  import { UserController } from './controllers/user.controller';
146
+ import { ChatterMessageDetails } from './entities/chatter-message-details.entity';
147
+ import { ChatterMessage } from './entities/chatter-message.entity';
148
+ import { ExportTemplate } from './entities/export-template.entity';
149
+ import { ExportTransaction } from './entities/export-transaction.entity';
150
+ import { ImportTransactionErrorLog } from './entities/import-transaction-error-log.entity';
151
+ import { ImportTransaction } from './entities/import-transaction.entity';
152
+ import { Locale } from './entities/locale.entity';
132
153
  import { RoleMetadata } from './entities/role-metadata.entity';
133
- import { User } from './entities/user.entity';
134
- import { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';
135
- import { RoleMetadataService } from './services/role-metadata.service';
136
- import { UserService } from './services/user.service';
154
+ import { SavedFilters } from './entities/saved-filters.entity';
155
+ import { SecurityRule } from './entities/security-rule.entity';
137
156
  import { Setting } from './entities/setting.entity';
138
- import { SettingService } from './services/setting.service';
139
- import { SettingController } from './controllers/setting.controller';
157
+ import { UserActivityHistory } from './entities/user-activity-history.entity';
158
+ import { UserViewMetadata } from './entities/user-view-metadata.entity';
159
+ import { User } from './entities/user.entity';
160
+ import { ModelMetadataHelperService } from './helpers/model-metadata-helper.service';
140
161
  import { ModuleMetadataHelperService } from './helpers/module-metadata-helper.service';
141
- import { ConcatComputedFieldProvider } from './services/computed-fields/concat-computed-field-provider.service';
142
- import { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-storage-provider';
143
- import { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';
162
+ import { ComputedFieldEvaluationPublisher } from './jobs/database/computed-field-evaluation-publisher.service';
163
+ import { ComputedFieldEvaluationSubscriber } from './jobs/database/computed-field-evaluation-subscriber.service';
164
+ import { GenerateCodePublisher } from './jobs/database/generate-code-publisher.service';
165
+ import { GenerateCodeSubscriber } from './jobs/database/generate-code-subscriber.service';
166
+ import { FieldMetadataRepository } from './repository/field-metadata.repository';
167
+ import { FieldRepository } from './repository/field.repository';
144
168
  import { MediaRepository } from './repository/media.repository';
145
- import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
146
- import { SavedFilters } from './entities/saved-filters.entity';
147
- import { SavedFiltersService } from './services/saved-filters.service';
148
- import { SavedFiltersController } from './controllers/saved-filters.controller';
149
- import { UserViewMetadata } from './entities/user-view-metadata.entity';
150
- import { UserViewMetadataService } from './services/user-view-metadata.service';
151
- import { UserViewMetadataController } from './controllers/user-view-metadata.controller';
152
- import { SecurityRule } from './entities/security-rule.entity';
153
- import { SecurityRuleService } from './services/security-rule.service';
154
- import { SecurityRuleController } from './controllers/security-rule.controller';
155
- import { RequestContextService } from './services/request-context.service';
156
169
  import { SecurityRuleRepository } from './repository/security-rule.repository';
157
- import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
158
- import { ListOfValuesController } from './controllers/list-of-values.controller';
159
- import { ChatterMessage } from './entities/chatter-message.entity';
160
- import { ChatterMessageService } from './services/chatter-message.service';
161
- import { ChatterMessageController } from './controllers/chatter-message.controller';
162
- import { ChatterMessageDetails } from './entities/chatter-message-details.entity';
170
+ import { PermissionMetadataSeederService } from './seeders/permission-metadata-seeder.service';
171
+ import { SystemFieldsSeederService } from './seeders/system-fields-seeder.service';
163
172
  import { ChatterMessageDetailsService } from './services/chatter-message-details.service';
164
- import { ChatterMessageDetailsController } from './controllers/chatter-message-details.controller';
165
- import { Locale } from './entities/locale.entity';
166
- import { LocaleService } from './services/locale.service';
167
- import { LocaleController } from './controllers/locale.controller';
168
- import { AuditSubscriber } from './subscribers/audit.subscriber';
169
- import { ExportTemplate } from './entities/export-template.entity';
173
+ import { ChatterMessageService } from './services/chatter-message.service';
174
+ import { ConcatComputedFieldProvider } from './services/computed-fields/concat-computed-field-provider.service';
175
+ import { ConcatEntityComputedFieldProvider } from './services/computed-fields/entity/concat-entity-computed-field-provider.service';
176
+ import { CsvService } from './services/csv.service';
177
+ import { ExcelService } from './services/excel.service';
170
178
  import { ExportTemplateService } from './services/export-template.service';
171
- import { ExportTemplateController } from './controllers/export-template.controller';
172
- import { ExportTransaction } from './entities/export-transaction.entity';
173
179
  import { ExportTransactionService } from './services/export-transaction.service';
174
- import { ExportTransactionController } from './controllers/export-transaction.controller';
175
- import { ExcelService } from './services/excel.service';
176
- import { CsvService } from './services/csv.service';
177
- import { ClsModule } from 'nestjs-cls';
178
- import { FieldRepository } from './repository/field.repository';
179
- import { ImportTransaction } from './entities/import-transaction.entity';
180
- import { ImportTransactionService } from './services/import-transaction.service';
181
- import { ImportTransactionController } from './controllers/import-transaction.controller';
182
- import { ImportTransactionErrorLog } from './entities/import-transaction-error-log.entity';
183
180
  import { ImportTransactionErrorLogService } from './services/import-transaction-error-log.service';
184
- import { ImportTransactionErrorLogController } from './controllers/import-transaction-error-log.controller';
181
+ import { ImportTransactionService } from './services/import-transaction.service';
182
+ import { LocaleService } from './services/locale.service';
183
+ import { FileS3StorageProvider } from './services/mediaStorageProviders/file-s3-storage-provider';
184
+ import { FileStorageProvider } from './services/mediaStorageProviders/file-storage-provider';
185
+ import { RequestContextService } from './services/request-context.service';
186
+ import { RoleMetadataService } from './services/role-metadata.service';
187
+ import { SavedFiltersService } from './services/saved-filters.service';
188
+ import { SecurityRuleService } from './services/security-rule.service';
185
189
  import { LocaleListSelectionProvider } from './services/selection-providers/locale-list-selection-provider.service';
186
- import { CreatedByUpdatedBySubscriber } from './subscribers/created-by-updated-by.subscriber';
187
- import { SystemFieldsSeederService } from './seeders/system-fields-seeder.service';
188
- import { ModelMetadataHelperService } from './helpers/model-metadata-helper.service';
189
- import { GenerateCodePublisher } from './jobs/database/generate-code-publisher.service';
190
- import { GenerateCodeSubscriber } from './jobs/database/generate-code-subscriber.service';
191
- import { UserActivityHistory } from './entities/user-activity-history.entity';
190
+ import { SettingService } from './services/setting.service';
192
191
  import { UserActivityHistoryService } from './services/user-activity-history.service';
193
- import { UserActivityHistoryController } from './controllers/user-activity-history.controller';
192
+ import { UserViewMetadataService } from './services/user-view-metadata.service';
193
+ import { UserService } from './services/user.service';
194
+ import { AuditSubscriber } from './subscribers/audit.subscriber';
195
+ import { ComputedEntityFieldSubscriber } from './subscribers/computed-entity-field.subscriber';
196
+ import { CreatedByUpdatedBySubscriber } from './subscribers/created-by-updated-by.subscriber';
197
+ import { SecurityRuleSubscriber } from './subscribers/security-rule.subscriber';
198
+ import { ViewMetadataSubsciber } from './subscribers/view-metadata.subscriber';
194
199
 
195
200
 
196
201
  @Global()
@@ -405,6 +410,11 @@ import { UserActivityHistoryController } from './controllers/user-activity-histo
405
410
  ImportTransactionErrorLogService,
406
411
  CreatedByUpdatedBySubscriber,
407
412
  SystemFieldsSeederService,
413
+ FieldMetadataRepository,
414
+ ComputedEntityFieldSubscriber,
415
+ ComputedFieldEvaluationPublisher,
416
+ ComputedFieldEvaluationSubscriber,
417
+ ConcatEntityComputedFieldProvider,
408
418
  UserActivityHistoryService,
409
419
 
410
420
  ],
@@ -437,7 +447,7 @@ import { UserActivityHistoryController } from './controllers/user-activity-histo
437
447
  RequestContextService,
438
448
  SecurityRuleRepository,
439
449
  FieldRepository,
440
- UserActivityHistoryService
450
+ UserActivityHistoryService,
441
451
  ],
442
452
  })
443
453
  export class SolidCoreModule { }
@@ -0,0 +1,108 @@
1
+ import { camelize } from "@angular-devkit/core/src/utils/strings";
2
+ import { Injectable } from "@nestjs/common";
3
+ import { InjectDataSource } from "@nestjs/typeorm";
4
+ import { ComputedFieldTriggerOperation } from "src/dtos/create-field-metadata.dto";
5
+ import { ComputedFieldMetadata, SolidRegistry } from "src/helpers/solid-registry";
6
+ import { IEntityPreComputeFieldProvider } from "src/interfaces";
7
+ import { ComputedFieldEvaluationPublisher } from "src/jobs/database/computed-field-evaluation-publisher.service";
8
+ import { DataSource, EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from "typeorm";
9
+
10
+ // Create an interface i.e ComputedFieldEvaluationPayload which has same fields as the ComputedFieldMetadata and an additional field for the database entity
11
+ export interface ComputedFieldEvaluationPayload extends ComputedFieldMetadata {
12
+ databaseEntity: any;
13
+ }
14
+
15
+ @Injectable()
16
+ @EventSubscriber()
17
+ export class ComputedEntityFieldSubscriber implements EntitySubscriberInterface {
18
+ constructor(
19
+ @InjectDataSource()
20
+ private readonly dataSource: DataSource,
21
+ private readonly solidRegistry: SolidRegistry,
22
+ private readonly computedFieldPublisher: ComputedFieldEvaluationPublisher,
23
+ ) {
24
+ this.dataSource.subscribers.push(this);
25
+ }
26
+
27
+ async beforeInsert(event: InsertEvent<any>): Promise<any> {
28
+ await this.handleComputedFieldEvaluation(event.entity, ComputedFieldTriggerOperation.beforeInsert);
29
+ }
30
+
31
+ async beforeUpdate(event: UpdateEvent<any>): Promise<any>{
32
+ await this.handleComputedFieldEvaluation(event.databaseEntity, ComputedFieldTriggerOperation.beforeUpdate);
33
+ }
34
+
35
+ async afterInsert(event: InsertEvent<any>) {
36
+ await this.handleComputedFieldEvaluationJob(event.entity, ComputedFieldTriggerOperation.afterInsert);
37
+ }
38
+
39
+ async afterUpdate(event: UpdateEvent<any>) {
40
+ await this.handleComputedFieldEvaluationJob(event.databaseEntity, ComputedFieldTriggerOperation.afterUpdate);
41
+ }
42
+
43
+ async afterRemove(event: any) {
44
+ await this.handleComputedFieldEvaluationJob(event.databaseEntity, ComputedFieldTriggerOperation.afterRemove);
45
+ }
46
+
47
+ //FIXME: Need to add support for beforeRemmove, beforeSoftRemove, afterSoftRemove, beforeRecover, afterRecover
48
+
49
+ private async handleComputedFieldEvaluation(entity: any, currentOperation: ComputedFieldTriggerOperation): Promise<void> {
50
+ if (!entity) {
51
+ return;
52
+ }
53
+ const currentModelName = camelize(entity.constructor.name); // Resolve the model name from the entity class name
54
+ const computedFieldsTobeEvaluated = this.getComputedFieldsToBeEvaluated(
55
+ this.solidRegistry.getComputedFieldMetadata(),
56
+ currentOperation,
57
+ currentModelName
58
+ );
59
+ for (const computedFieldMetadata of computedFieldsTobeEvaluated) {
60
+ const computedValue = await this.getComputedValue(computedFieldMetadata, entity); //FIXME: There should some way to check/assert if the provider actually has a postComputeAndSaveValue
61
+ entity[computedFieldMetadata.fieldName] = computedValue; // Set the computed value on the entity
62
+ }
63
+ }
64
+
65
+ private async handleComputedFieldEvaluationJob(entity: any, currentOperation: ComputedFieldTriggerOperation): Promise<void> {
66
+ if (!entity) {
67
+ return;
68
+ }
69
+ const currentModelName = camelize(entity.constructor.name); //Resolve the model name from the entity class name
70
+ const computedFieldsTobeEvaluated = this.getComputedFieldsToBeEvaluated(
71
+ this.solidRegistry.getComputedFieldMetadata(),
72
+ currentOperation,
73
+ currentModelName
74
+ );
75
+ for (const computedField of computedFieldsTobeEvaluated) {
76
+ this.enqueueComputedFieldEvaluationJob(computedField, entity);
77
+ }
78
+ }
79
+
80
+ private async getComputedValue(computedFieldMetadata: ComputedFieldMetadata<any>, entity: any) {
81
+ const provider = this.solidRegistry.getComputedFieldProvider(computedFieldMetadata.computedFieldValueProviderName);
82
+ // Get the instance of the provider and assert it is of type IEntityComputedFieldProvider
83
+ const providerInstance = provider.instance as IEntityPreComputeFieldProvider<any, any, any>; // IEntityComputedFieldProvider
84
+ const computedValue = await providerInstance.preComputeValue(entity, computedFieldMetadata); //FIXME There should some way to check/assert if the provider actually has a postComputeAndSaveValue
85
+ return computedValue;
86
+ }
87
+
88
+ private enqueueComputedFieldEvaluationJob(computedField: ComputedFieldMetadata<any>, databaseEntity: any) {
89
+ const payload = {
90
+ ...computedField,
91
+ databaseEntity,
92
+ };
93
+ this.computedFieldPublisher.publish({
94
+ payload
95
+ });
96
+ }
97
+
98
+ // Based on the current model name and current operation, identify all the computed providers that need to be evaluated
99
+ // Pass the database entity and the context to the provider of type IEntityComputedFieldProvider
100
+ private getComputedFieldsToBeEvaluated(computedFieldMetadata: ComputedFieldMetadata[], currentOperation: ComputedFieldTriggerOperation, currentModelName: string) {
101
+ return computedFieldMetadata.filter(
102
+ (computedField) => computedField.computedFieldTriggerConfig.some(
103
+ (trigger) => trigger.operations.includes(currentOperation) &&
104
+ trigger.modelName === currentModelName
105
+ )
106
+ );
107
+ }
108
+ }