@mondaydotcomorg/monday-authorization 3.6.0-feat-shaime-support-entity-attributes-3-31fcbe3 → 3.6.0-feat-shaime-support-entity-attributes-3-02be333

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 (63) hide show
  1. package/dist/authorization-attributes-ms-service.d.ts +2 -2
  2. package/dist/authorization-attributes-ms-service.d.ts.map +1 -1
  3. package/dist/authorization-attributes-ms-service.js +10 -38
  4. package/dist/authorization-attributes-service.d.ts +12 -10
  5. package/dist/authorization-attributes-service.d.ts.map +1 -1
  6. package/dist/authorization-attributes-service.js +17 -15
  7. package/dist/authorization-attributes-sns-service.d.ts +2 -2
  8. package/dist/authorization-attributes-sns-service.d.ts.map +1 -1
  9. package/dist/authorization-attributes-sns-service.js +7 -23
  10. package/dist/base-authorization-attributes-service.d.ts +32 -0
  11. package/dist/base-authorization-attributes-service.d.ts.map +1 -0
  12. package/dist/base-authorization-attributes-service.js +63 -0
  13. package/dist/esm/authorization-attributes-ms-service.d.ts +2 -2
  14. package/dist/esm/authorization-attributes-ms-service.d.ts.map +1 -1
  15. package/dist/esm/authorization-attributes-ms-service.mjs +10 -38
  16. package/dist/esm/authorization-attributes-service.d.ts +12 -10
  17. package/dist/esm/authorization-attributes-service.d.ts.map +1 -1
  18. package/dist/esm/authorization-attributes-service.mjs +17 -15
  19. package/dist/esm/authorization-attributes-sns-service.d.ts +2 -2
  20. package/dist/esm/authorization-attributes-sns-service.d.ts.map +1 -1
  21. package/dist/esm/authorization-attributes-sns-service.mjs +7 -23
  22. package/dist/esm/base-authorization-attributes-service.d.ts +32 -0
  23. package/dist/esm/base-authorization-attributes-service.d.ts.map +1 -0
  24. package/dist/esm/base-authorization-attributes-service.mjs +61 -0
  25. package/dist/esm/index.d.ts +1 -1
  26. package/dist/esm/index.d.ts.map +1 -1
  27. package/dist/esm/index.mjs +1 -0
  28. package/dist/esm/resource-attribute-assignment.d.ts.map +1 -1
  29. package/dist/esm/resource-attribute-assignment.mjs +7 -0
  30. package/dist/esm/resource-attributes-constants.d.ts +2 -1
  31. package/dist/esm/resource-attributes-constants.d.ts.map +1 -1
  32. package/dist/esm/resource-attributes-constants.mjs +1 -0
  33. package/dist/esm/utils/assignment-schema.d.ts.map +1 -1
  34. package/dist/esm/utils/assignment-schema.mjs +5 -0
  35. package/dist/esm/utils/validation.mjs +2 -2
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -0
  39. package/dist/resource-attribute-assignment.d.ts.map +1 -1
  40. package/dist/resource-attribute-assignment.js +7 -0
  41. package/dist/resource-attributes-constants.d.ts +2 -1
  42. package/dist/resource-attributes-constants.d.ts.map +1 -1
  43. package/dist/resource-attributes-constants.js +1 -0
  44. package/dist/utils/assignment-schema.d.ts.map +1 -1
  45. package/dist/utils/assignment-schema.js +5 -0
  46. package/dist/utils/validation.js +2 -2
  47. package/package.json +1 -1
  48. package/src/authorization-attributes-ms-service.ts +19 -41
  49. package/src/authorization-attributes-service.ts +18 -16
  50. package/src/authorization-attributes-sns-service.ts +15 -23
  51. package/src/base-authorization-attributes-service.ts +90 -0
  52. package/src/index.ts +1 -1
  53. package/src/resource-attribute-assignment.ts +7 -0
  54. package/src/resource-attributes-constants.ts +1 -0
  55. package/src/utils/assignment-schema.ts +5 -0
  56. package/src/utils/validation.ts +2 -2
  57. package/dist/esm/types/authorization-attributes-service.interface.d.ts +0 -32
  58. package/dist/esm/types/authorization-attributes-service.interface.d.ts.map +0 -1
  59. package/dist/esm/types/authorization-attributes-service.interface.mjs +0 -1
  60. package/dist/types/authorization-attributes-service.interface.d.ts +0 -32
  61. package/dist/types/authorization-attributes-service.interface.d.ts.map +0 -1
  62. package/dist/types/authorization-attributes-service.interface.js +0 -1
  63. package/src/types/authorization-attributes-service.interface.ts +0 -63
@@ -1,12 +1,12 @@
1
1
  import { ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation } from './types/authorization-attributes-contracts';
2
2
  import { EntityType } from './entity-attributes-constants';
3
- import { AuthorizationAttributesService } from './types/authorization-attributes-service.interface';
3
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service';
4
4
  import { Resource } from './types/general';
5
5
  /**
6
6
  * Service class for managing resource attributes in the authorization microservice.
7
7
  * Provides synchronous HTTP operations to create/update and delete attributes on resources.
8
8
  */
9
- export declare class AuthorizationAttributesMsService implements AuthorizationAttributesService {
9
+ export declare class AuthorizationAttributesMsService extends BaseAuthorizationAttributesService {
10
10
  private static LOG_TAG;
11
11
  private static httpClient;
12
12
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"authorization-attributes-ms-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-ms-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C;;;GAGG;AACH,qBAAa,gCAAiC,YAAW,8BAA8B;IACrF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiC;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqD;;IAW9E;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IA0B5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,8BAA8B,CAAC;IAqB1C;;;;;;;OAOG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IA0B5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IA4B1C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAQhC;;OAEG;mBACkB,oBAAoB;IAiEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA+ChC;;OAEG;mBACkB,oBAAoB;CA4D1C"}
1
+ {"version":3,"file":"authorization-attributes-ms-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-ms-service.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,kCAAkC;IACtF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiC;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqD;;IAY9E;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAoB5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,8BAA8B,CAAC;IAqB1C;;;;;;;OAOG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IAqB5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IAsB1C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAQhC;;OAEG;mBACkB,oBAAoB;IA6DzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA+ChC;;OAEG;mBACkB,oBAAoB;CA4D1C"}
@@ -4,11 +4,10 @@ const tridentBackendApi = require('@mondaydotcomorg/trident-backend-api');
4
4
  const mondayJwt = require('@mondaydotcomorg/monday-jwt');
5
5
  const resourceAttributeAssignment = require('./resource-attribute-assignment.js');
6
6
  const entityAttributeAssignment = require('./entity-attribute-assignment.js');
7
- const types_authorizationAttributesContracts = require('./types/authorization-attributes-contracts.js');
8
7
  const authorizationInternalService = require('./authorization-internal-service.js');
9
8
  const attributionsService = require('./attributions-service.js');
10
9
  const constants = require('./constants.js');
11
- const utils_validation = require('./utils/validation.js');
10
+ const baseAuthorizationAttributesService = require('./base-authorization-attributes-service.js');
12
11
 
13
12
  const INTERNAL_APP_NAME = 'internal_ms';
14
13
  const UPSERT_RESOURCE_ATTRIBUTES_PATH = '/attributes/{accountId}/resource';
@@ -19,10 +18,11 @@ const DELETE_ENTITY_ATTRIBUTES_PATH = '/attributes/{accountId}/entity/{entityTyp
19
18
  * Service class for managing resource attributes in the authorization microservice.
20
19
  * Provides synchronous HTTP operations to create/update and delete attributes on resources.
21
20
  */
22
- class AuthorizationAttributesMsService {
21
+ class AuthorizationAttributesMsService extends baseAuthorizationAttributesService.BaseAuthorizationAttributesService {
23
22
  static LOG_TAG = 'authorization_attributes_ms';
24
23
  static httpClient = tridentBackendApi.Api.getPart('httpClient');
25
24
  constructor() {
25
+ super();
26
26
  if (!AuthorizationAttributesMsService.httpClient) {
27
27
  AuthorizationAttributesMsService.httpClient = tridentBackendApi.Api.getPart('httpClient');
28
28
  if (!AuthorizationAttributesMsService.httpClient) {
@@ -38,22 +38,12 @@ class AuthorizationAttributesMsService {
38
38
  * @returns Promise<ResourceAttributeDeleteOperation>
39
39
  */
40
40
  async deleteResourceAttributes(accountId, resource, attributeKey, _appName, _callerActionIdentifier) {
41
- utils_validation.ValidationUtils.validateResource(resource);
42
- utils_validation.ValidationUtils.validatDeleteResourceAssignment({
43
- resourceType: resource.type,
44
- resourceId: resource.id,
45
- key: attributeKey,
46
- });
41
+ const operation = await super.deleteResourceAttributes(accountId, resource, attributeKey);
47
42
  await AuthorizationAttributesMsService.executeDeleteRequest(accountId, DELETE_RESOURCE_ATTRIBUTES_PATH, {
48
43
  resourceType: resource.type,
49
44
  resourceId: resource.id,
50
45
  }, [attributeKey], 'resource', 'deleteResourceAttributesSync');
51
- return {
52
- resourceType: resource.type,
53
- resourceId: resource.id,
54
- key: attributeKey,
55
- operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
56
- };
46
+ return operation;
57
47
  }
58
48
  /**
59
49
  * Deletes a specific attribute from an entity synchronously.
@@ -64,17 +54,12 @@ class AuthorizationAttributesMsService {
64
54
  * @returns Promise<EntityAttributeDeleteOperation>
65
55
  */
66
56
  async deleteEntityAttributes(accountId, entityType, entityId, attributeKey, _appName, _callerActionIdentifier) {
67
- utils_validation.ValidationUtils.validateInteger(accountId);
57
+ const operation = await super.deleteEntityAttributes(accountId, entityType, entityId, attributeKey);
68
58
  await AuthorizationAttributesMsService.executeDeleteRequest(accountId, DELETE_ENTITY_ATTRIBUTES_PATH, {
69
59
  entityType,
70
60
  entityId,
71
61
  }, [attributeKey], 'entity', 'deleteEntityAttributesSync');
72
- return {
73
- entityType,
74
- entityId,
75
- key: attributeKey,
76
- operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
77
- };
62
+ return operation;
78
63
  }
79
64
  /**
80
65
  * Updates a resource attribute (single operation - upsert only).
@@ -85,14 +70,9 @@ class AuthorizationAttributesMsService {
85
70
  * @returns Promise<ResourceAttributeUpsertOperation> Processed operation
86
71
  */
87
72
  async updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation) {
88
- utils_validation.ValidationUtils.validatUpsertResourceAssignment({
89
- resourceId: resourceAttributeOperation.resourceId,
90
- resourceType: resourceAttributeOperation.resourceType,
91
- key: resourceAttributeOperation.key,
92
- value: resourceAttributeOperation.value,
93
- });
73
+ await super.updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation);
94
74
  await AuthorizationAttributesMsService.executeUpsertRequest(accountId, [
95
- new resourceAttributeAssignment.ResourceAttributeAssignment(resourceAttributeOperation.resourceId, resourceAttributeOperation.resourceType, resourceAttributeOperation.key, resourceAttributeOperation.value || ''),
75
+ new resourceAttributeAssignment.ResourceAttributeAssignment(resourceAttributeOperation.resourceId, resourceAttributeOperation.resourceType, resourceAttributeOperation.key, resourceAttributeOperation.value),
96
76
  ], UPSERT_RESOURCE_ATTRIBUTES_PATH, 'resourceAttributeAssignments', 'resource', 'updateResourceAttributesSync');
97
77
  return resourceAttributeOperation;
98
78
  }
@@ -106,12 +86,7 @@ class AuthorizationAttributesMsService {
106
86
  */
107
87
  async updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation) {
108
88
  // Validate before processing
109
- utils_validation.ValidationUtils.validatUpsertEntityAssignment({
110
- entityId: entityAttributeOperation.entityId,
111
- entityType: entityAttributeOperation.entityType,
112
- key: entityAttributeOperation.key,
113
- value: entityAttributeOperation.value,
114
- });
89
+ await super.updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation);
115
90
  await AuthorizationAttributesMsService.executeUpsertRequest(accountId, [
116
91
  new entityAttributeAssignment.EntityAttributeAssignment(entityAttributeOperation.entityId, entityAttributeOperation.entityType, entityAttributeOperation.key, entityAttributeOperation.value),
117
92
  ], UPSERT_ENTITY_ATTRIBUTES_PATH, 'entityAttributeAssignments', 'entity', 'upsertEntityAttributesSync');
@@ -134,9 +109,6 @@ class AuthorizationAttributesMsService {
134
109
  * Generic helper for executing delete requests
135
110
  */
136
111
  static async executeDeleteRequest(accountId, pathTemplate, pathParams, keys, logPrefix, methodName) {
137
- // Validate inputs
138
- utils_validation.ValidationUtils.validateInteger(accountId);
139
- utils_validation.ValidationUtils.validateStringArray(keys);
140
112
  if (!keys.length) {
141
113
  authorizationInternalService.logger.warn({ tag: this.LOG_TAG, accountId, ...pathParams }, `${methodName} called with empty keys array`);
142
114
  return;
@@ -1,29 +1,31 @@
1
- import { AuthorizationAttributesService as IAuthorizationAttributesService } from './types/authorization-attributes-service.interface';
1
+ import { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
2
2
  /**
3
3
  * Main service class for managing resource and entity attributes.
4
- * Provides access to both direct (MS) and SNS operations.
4
+ * Provides access to both HTTP (direct microservice) and SNS (async messaging) operations.
5
5
  *
6
6
  * @example
7
7
  * const service = new AuthorizationAttributesService();
8
8
  *
9
- * // Use direct operations
10
- * await service.direct().upsertResourceAttributes(accountId, assignments);
9
+ * // Use HTTP operations (direct calls to microservice)
10
+ * await service.http().updateResourceAttributes(accountId, appName, actionId, operation);
11
11
  *
12
- * // Use SNS operations
13
- * await service.sns().upsertResourceAttributes(accountId, assignments, appName, actionId);
12
+ * // Use SNS operations (async messaging, then to microservice)
13
+ * await service.sns().updateResourceAttributes(accountId, appName, actionId, operation);
14
14
  * ```
15
15
  */
16
16
  export declare class AuthorizationAttributesService {
17
- private _directService;
18
- private _snsService;
17
+ private httpService;
18
+ private snsService;
19
19
  /**
20
- * Gets the direct (MS) service instance.
20
+ * Gets the HTTP service instance.
21
+ * Performs direct HTTP calls to the authorization microservice.
21
22
  * Initializes the service on first access (lazy initialization).
22
23
  * @returns IAuthorizationAttributesService instance
23
24
  */
24
- direct(): IAuthorizationAttributesService;
25
+ http(): IAuthorizationAttributesService;
25
26
  /**
26
27
  * Gets the SNS service instance.
28
+ * Sends operations via SNS messaging, which are then processed by the microservice asynchronously.
27
29
  * Initializes the service on first access (lazy initialization).
28
30
  * @returns IAuthorizationAttributesService instance
29
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"authorization-attributes-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAEvI;;;;;;;;;;;;;GAaG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,WAAW,CAAkD;IAErE;;;;OAIG;IACH,MAAM,IAAI,+BAA+B;IAOzC;;;;OAIG;IACH,GAAG,IAAI,+BAA+B;CAMvC"}
1
+ {"version":3,"file":"authorization-attributes-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kCAAkC,IAAI,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAEhI;;;;;;;;;;;;;GAaG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,WAAW,CAAiD;IACpE,OAAO,CAAC,UAAU,CAAkD;IAEpE;;;;;OAKG;IACH,IAAI,IAAI,+BAA+B;IAOvC;;;;;OAKG;IACH,GAAG,IAAI,+BAA+B;CAMvC"}
@@ -5,42 +5,44 @@ const authorizationAttributesSnsService = require('./authorization-attributes-sn
5
5
 
6
6
  /**
7
7
  * Main service class for managing resource and entity attributes.
8
- * Provides access to both direct (MS) and SNS operations.
8
+ * Provides access to both HTTP (direct microservice) and SNS (async messaging) operations.
9
9
  *
10
10
  * @example
11
11
  * const service = new AuthorizationAttributesService();
12
12
  *
13
- * // Use direct operations
14
- * await service.direct().upsertResourceAttributes(accountId, assignments);
13
+ * // Use HTTP operations (direct calls to microservice)
14
+ * await service.http().updateResourceAttributes(accountId, appName, actionId, operation);
15
15
  *
16
- * // Use SNS operations
17
- * await service.sns().upsertResourceAttributes(accountId, assignments, appName, actionId);
16
+ * // Use SNS operations (async messaging, then to microservice)
17
+ * await service.sns().updateResourceAttributes(accountId, appName, actionId, operation);
18
18
  * ```
19
19
  */
20
20
  class AuthorizationAttributesService {
21
- _directService = null;
22
- _snsService = null;
21
+ httpService = null;
22
+ snsService = null;
23
23
  /**
24
- * Gets the direct (MS) service instance.
24
+ * Gets the HTTP service instance.
25
+ * Performs direct HTTP calls to the authorization microservice.
25
26
  * Initializes the service on first access (lazy initialization).
26
27
  * @returns IAuthorizationAttributesService instance
27
28
  */
28
- direct() {
29
- if (this._directService === null) {
30
- this._directService = new authorizationAttributesMsService.AuthorizationAttributesMsService();
29
+ http() {
30
+ if (this.httpService === null) {
31
+ this.httpService = new authorizationAttributesMsService.AuthorizationAttributesMsService();
31
32
  }
32
- return this._directService;
33
+ return this.httpService;
33
34
  }
34
35
  /**
35
36
  * Gets the SNS service instance.
37
+ * Sends operations via SNS messaging, which are then processed by the microservice asynchronously.
36
38
  * Initializes the service on first access (lazy initialization).
37
39
  * @returns IAuthorizationAttributesService instance
38
40
  */
39
41
  sns() {
40
- if (this._snsService === null) {
41
- this._snsService = new authorizationAttributesSnsService.AuthorizationAttributesSnsService();
42
+ if (this.snsService === null) {
43
+ this.snsService = new authorizationAttributesSnsService.AuthorizationAttributesSnsService();
42
44
  }
43
- return this._snsService;
45
+ return this.snsService;
44
46
  }
45
47
  }
46
48
 
@@ -1,12 +1,12 @@
1
1
  import { ResourceAttributeUpsertOperation, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation, ResourceAttributeDeleteOperation } from './types/authorization-attributes-contracts';
2
2
  import { Resource } from './types/general';
3
- import { AuthorizationAttributesService } from './types/authorization-attributes-service.interface';
3
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service';
4
4
  import { EntityType } from './entity-attributes-constants';
5
5
  /**
6
6
  * Service class for managing resource attributes asynchronously via SNS.
7
7
  * Provides asynchronous operations to create/update and delete attributes on resources.
8
8
  */
9
- export declare class AuthorizationAttributesSnsService implements AuthorizationAttributesService {
9
+ export declare class AuthorizationAttributesSnsService extends BaseAuthorizationAttributesService {
10
10
  private static LOG_TAG;
11
11
  private resourceSnsArn;
12
12
  private entitySnsArn;
@@ -1 +1 @@
1
- {"version":3,"file":"authorization-attributes-sns-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-sns-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC9B,gCAAgC,EACjC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAa3C,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D;;;GAGG;AACH,qBAAa,iCAAkC,YAAW,8BAA8B;IACtF,OAAO,CAAC,MAAM,CAAC,OAAO,CAA8B;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;;IAMH;;;;;;;;;OASG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,gCAAgC,CAAC;IA4B5C;;;;;;;;;;OAUG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAwB1C;;;;;;;UAOM;IACA,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,EAC9B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IAe5C;;;;;;;UAOM;IACA,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,EAC9B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IAe1C;;;;;;;;;;;;OAYG;YACW,mBAAmB;YAkCnB,oBAAoB;IAiClC,OAAO,CAAC,MAAM,CAAC,cAAc;IA0B7B;;;;;;;OAOG;IACG,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;CAoB7D"}
1
+ {"version":3,"file":"authorization-attributes-sns-service.d.ts","sourceRoot":"","sources":["../src/authorization-attributes-sns-service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC9B,gCAAgC,EACjC,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAa3C,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D;;;GAGG;AACH,qBAAa,iCAAkC,SAAQ,kCAAkC;IACvF,OAAO,CAAC,MAAM,CAAC,OAAO,CAA8B;IACpD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAE7B;;OAEG;;IAOH;;;;;;;;;OASG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,gCAAgC,CAAC;IAsB5C;;;;;;;;;;OAUG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAuB1C;;;;;;;UAOM;IACA,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,EAC9B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IAe5C;;;;;;;UAOM;IACA,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,sBAAsB,EAAE,MAAM,EAC9B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IAe1C;;;;;;;;;;;;OAYG;YACW,mBAAmB;YAkCnB,oBAAoB;IAiClC,OAAO,CAAC,MAAM,CAAC,cAAc;IA0B7B;;;;;;;OAOG;IACG,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;CAoB7D"}
@@ -2,10 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const chunk = require('lodash/chunk.js');
4
4
  const mondaySns = require('@mondaydotcomorg/monday-sns');
5
- const types_authorizationAttributesContracts = require('./types/authorization-attributes-contracts.js');
6
5
  const authorizationInternalService = require('./authorization-internal-service.js');
7
6
  const constants_sns = require('./constants/sns.js');
8
- const utils_validation = require('./utils/validation.js');
7
+ const baseAuthorizationAttributesService = require('./base-authorization-attributes-service.js');
9
8
 
10
9
  const _interopDefault = e => e && e.__esModule ? e : { default: e };
11
10
 
@@ -15,7 +14,7 @@ const chunk__default = /*#__PURE__*/_interopDefault(chunk);
15
14
  * Service class for managing resource attributes asynchronously via SNS.
16
15
  * Provides asynchronous operations to create/update and delete attributes on resources.
17
16
  */
18
- class AuthorizationAttributesSnsService {
17
+ class AuthorizationAttributesSnsService extends baseAuthorizationAttributesService.BaseAuthorizationAttributesService {
19
18
  static LOG_TAG = 'authorization_attributes';
20
19
  resourceSnsArn;
21
20
  entitySnsArn;
@@ -23,6 +22,7 @@ class AuthorizationAttributesSnsService {
23
22
  * Public constructor to create the AuthorizationAttributesSnsService instance.
24
23
  */
25
24
  constructor() {
25
+ super();
26
26
  this.resourceSnsArn = AuthorizationAttributesSnsService.getSnsTopicArn(constants_sns.SnsTopicType.RESOURCE);
27
27
  this.entitySnsArn = AuthorizationAttributesSnsService.getSnsTopicArn(constants_sns.SnsTopicType.ENTITY);
28
28
  }
@@ -40,17 +40,7 @@ class AuthorizationAttributesSnsService {
40
40
  if (!appName || !callerActionIdentifier) {
41
41
  throw new Error('appName and callerActionIdentifier are required for SNS service');
42
42
  }
43
- utils_validation.ValidationUtils.validatDeleteResourceAssignment({
44
- resourceType: resource.type,
45
- resourceId: resource.id,
46
- key: attributeKey,
47
- });
48
- const operation = {
49
- resourceType: resource.type,
50
- resourceId: resource.id,
51
- key: attributeKey,
52
- operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
53
- };
43
+ const operation = await super.deleteResourceAttributes(accountId, resource, attributeKey);
54
44
  const [result] = await this.sendOperationsToSns(this.resourceSnsArn, accountId, appName, callerActionIdentifier, [operation], constants_sns.ASYNC_RESOURCE_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, constants_sns.RESOURCE_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization resource attributes async delete: failed to send operations to SNS');
55
45
  return result;
56
46
  }
@@ -69,13 +59,7 @@ class AuthorizationAttributesSnsService {
69
59
  if (!appName || !callerActionIdentifier) {
70
60
  throw new Error('appName and callerActionIdentifier are required for SNS service');
71
61
  }
72
- utils_validation.ValidationUtils.validatDeleteEntityAssignment({ entityId, entityType, key: attributeKey });
73
- const operation = {
74
- entityType: entityType,
75
- entityId,
76
- key: attributeKey,
77
- operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
78
- };
62
+ const operation = await super.deleteEntityAttributes(accountId, entityType, entityId, attributeKey);
79
63
  const [result] = await this.sendOperationsToSns(this.entitySnsArn, accountId, appName, callerActionIdentifier, [operation], constants_sns.ASYNC_ENTITY_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, constants_sns.ENTITY_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization entity attributes async delete: failed to send operations to SNS');
80
64
  return result;
81
65
  }
@@ -88,7 +72,7 @@ class AuthorizationAttributesSnsService {
88
72
  * @return {Promise<ResourceAttributeUpsertOperation>} Sent operation
89
73
  * */
90
74
  async updateResourceAttributes(accountId, appName, callerActionIdentifier, resourceAttributeOperation) {
91
- utils_validation.ValidationUtils.validatUpsertResourceAssignment(resourceAttributeOperation);
75
+ await super.updateResourceAttributes(accountId, appName, callerActionIdentifier, resourceAttributeOperation);
92
76
  const [result] = await this.sendOperationsToSns(this.resourceSnsArn, accountId, appName, callerActionIdentifier, [resourceAttributeOperation], constants_sns.ASYNC_RESOURCE_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, constants_sns.RESOURCE_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization resource attributes async update: failed to send operations to SNS');
93
77
  return result;
94
78
  }
@@ -101,7 +85,7 @@ class AuthorizationAttributesSnsService {
101
85
  * @return {Promise<EntityAttributeUpsertOperation>} Sent operation
102
86
  * */
103
87
  async updateEntityAttributes(accountId, appName, callerActionIdentifier, entityAttributeOperation) {
104
- utils_validation.ValidationUtils.validatUpsertEntityAssignment(entityAttributeOperation);
88
+ await super.updateEntityAttributes(accountId, appName, callerActionIdentifier, entityAttributeOperation);
105
89
  const [result] = await this.sendOperationsToSns(this.entitySnsArn, accountId, appName, callerActionIdentifier, [entityAttributeOperation], constants_sns.ASYNC_ENTITY_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, constants_sns.ENTITY_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization entity attributes async update: failed to send operations to SNS');
106
90
  return result;
107
91
  }
@@ -0,0 +1,32 @@
1
+ import { EntityType } from './entity-attributes-constants';
2
+ import { ResourceAttributeDeleteOperation, EntityAttributeDeleteOperation, ResourceAttributeUpsertOperation, EntityAttributeUpsertOperation } from './types/authorization-attributes-contracts';
3
+ import { Resource } from './types/general';
4
+ /**
5
+ * Abstract base class for authorization attributes operations.
6
+ * Both MS (HTTP) and SNS (async) services extend this class.
7
+ */
8
+ export declare abstract class BaseAuthorizationAttributesService {
9
+ /**
10
+ * Deletes a resource attribute.
11
+ * Returns Promise<ResourceAttributeDeleteOperation>
12
+ */
13
+ deleteResourceAttributes(accountId: number, resource: Resource, attributeKey: string, _appName?: string, _callerActionIdentifier?: string): Promise<ResourceAttributeDeleteOperation>;
14
+ /**
15
+ * Deletes an entity attribute.
16
+ * Returns Promise<EntityAttributeDeleteOperation>
17
+ */
18
+ deleteEntityAttributes(accountId: number, entityType: EntityType, entityId: number, attributeKey: string): Promise<EntityAttributeDeleteOperation>;
19
+ /**
20
+ * Updates a resource attribute (single operation - upsert only).
21
+ * For MS service: performs upsert operation
22
+ * For SNS service: returns Promise<ResourceAttributeUpsertOperation>
23
+ */
24
+ updateResourceAttributes(accountId: number, _appName: string, _callerActionIdentifier: string, resourceAttributeOperation: ResourceAttributeUpsertOperation): Promise<ResourceAttributeUpsertOperation>;
25
+ /**
26
+ * Updates an entity attribute (single operation - upsert only).
27
+ * For MS service: performs upsert operation
28
+ * For SNS service: returns Promise<EntityAttributeUpsertOperation>
29
+ */
30
+ updateEntityAttributes(accountId: number, _appName: string, _callerActionIdentifier: string, entityAttributeOperation: EntityAttributeUpsertOperation): Promise<EntityAttributeUpsertOperation>;
31
+ }
32
+ //# sourceMappingURL=base-authorization-attributes-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-authorization-attributes-service.d.ts","sourceRoot":"","sources":["../src/base-authorization-attributes-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,EAChC,8BAA8B,EAE/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C;;;GAGG;AACH,8BAAsB,kCAAkC;IACtD;;;OAGG;IACH,wBAAwB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAY5C;;;OAGG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,8BAA8B,CAAC;IAY1C;;;;OAIG;IACH,wBAAwB,CACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IAK5C;;;;OAIG;IACH,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;CAK3C"}
@@ -0,0 +1,63 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ const types_authorizationAttributesContracts = require('./types/authorization-attributes-contracts.js');
4
+ const utils_validation = require('./utils/validation.js');
5
+
6
+ /**
7
+ * Abstract base class for authorization attributes operations.
8
+ * Both MS (HTTP) and SNS (async) services extend this class.
9
+ */
10
+ class BaseAuthorizationAttributesService {
11
+ /**
12
+ * Deletes a resource attribute.
13
+ * Returns Promise<ResourceAttributeDeleteOperation>
14
+ */
15
+ deleteResourceAttributes(accountId, resource, attributeKey, _appName, _callerActionIdentifier) {
16
+ const operation = {
17
+ resourceType: resource.type,
18
+ resourceId: resource.id,
19
+ key: attributeKey,
20
+ operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
21
+ };
22
+ utils_validation.ValidationUtils.validateInteger(accountId);
23
+ utils_validation.ValidationUtils.validatDeleteResourceAssignment(operation);
24
+ return Promise.resolve(operation);
25
+ }
26
+ /**
27
+ * Deletes an entity attribute.
28
+ * Returns Promise<EntityAttributeDeleteOperation>
29
+ */
30
+ deleteEntityAttributes(accountId, entityType, entityId, attributeKey) {
31
+ const operation = {
32
+ entityType: entityType,
33
+ entityId: entityId,
34
+ key: attributeKey,
35
+ operationType: types_authorizationAttributesContracts.AttributeOperation.DELETE,
36
+ };
37
+ utils_validation.ValidationUtils.validateInteger(accountId);
38
+ utils_validation.ValidationUtils.validatDeleteEntityAssignment(operation);
39
+ return Promise.resolve(operation);
40
+ }
41
+ /**
42
+ * Updates a resource attribute (single operation - upsert only).
43
+ * For MS service: performs upsert operation
44
+ * For SNS service: returns Promise<ResourceAttributeUpsertOperation>
45
+ */
46
+ updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation) {
47
+ utils_validation.ValidationUtils.validateInteger(accountId);
48
+ utils_validation.ValidationUtils.validatUpsertResourceAssignment(resourceAttributeOperation);
49
+ return Promise.resolve(resourceAttributeOperation);
50
+ }
51
+ /**
52
+ * Updates an entity attribute (single operation - upsert only).
53
+ * For MS service: performs upsert operation
54
+ * For SNS service: returns Promise<EntityAttributeUpsertOperation>
55
+ */
56
+ updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation) {
57
+ utils_validation.ValidationUtils.validateInteger(accountId);
58
+ utils_validation.ValidationUtils.validatUpsertEntityAssignment(entityAttributeOperation);
59
+ return Promise.resolve(entityAttributeOperation);
60
+ }
61
+ }
62
+
63
+ exports.BaseAuthorizationAttributesService = BaseAuthorizationAttributesService;
@@ -1,12 +1,12 @@
1
1
  import { ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation } from './types/authorization-attributes-contracts';
2
2
  import { EntityType } from './entity-attributes-constants';
3
- import { AuthorizationAttributesService } from './types/authorization-attributes-service.interface';
3
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service';
4
4
  import { Resource } from './types/general';
5
5
  /**
6
6
  * Service class for managing resource attributes in the authorization microservice.
7
7
  * Provides synchronous HTTP operations to create/update and delete attributes on resources.
8
8
  */
9
- export declare class AuthorizationAttributesMsService implements AuthorizationAttributesService {
9
+ export declare class AuthorizationAttributesMsService extends BaseAuthorizationAttributesService {
10
10
  private static LOG_TAG;
11
11
  private static httpClient;
12
12
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"authorization-attributes-ms-service.d.ts","sourceRoot":"","sources":["../../src/authorization-attributes-ms-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C;;;GAGG;AACH,qBAAa,gCAAiC,YAAW,8BAA8B;IACrF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiC;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqD;;IAW9E;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IA0B5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,8BAA8B,CAAC;IAqB1C;;;;;;;OAOG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IA0B5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IA4B1C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAQhC;;OAEG;mBACkB,oBAAoB;IAiEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA+ChC;;OAEG;mBACkB,oBAAoB;CA4D1C"}
1
+ {"version":3,"file":"authorization-attributes-ms-service.d.ts","sourceRoot":"","sources":["../../src/authorization-attributes-ms-service.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,kCAAkC;IACtF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAiC;IACvD,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqD;;IAY9E;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,gCAAgC,CAAC;IAoB5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAAC,8BAA8B,CAAC;IAqB1C;;;;;;;OAOG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,0BAA0B,EAAE,gCAAgC,GAC3D,OAAO,CAAC,gCAAgC,CAAC;IAqB5C;;;;;;;OAOG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,uBAAuB,EAAE,MAAM,EAC/B,wBAAwB,EAAE,8BAA8B,GACvD,OAAO,CAAC,8BAA8B,CAAC;IAsB1C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAQhC;;OAEG;mBACkB,oBAAoB;IA6DzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA+ChC;;OAEG;mBACkB,oBAAoB;CA4D1C"}
@@ -2,11 +2,10 @@ import { Api } from '@mondaydotcomorg/trident-backend-api';
2
2
  import { signAuthorizationHeader } from '@mondaydotcomorg/monday-jwt';
3
3
  import { ResourceAttributeAssignment } from './resource-attribute-assignment.mjs';
4
4
  import { EntityAttributeAssignment } from './entity-attribute-assignment.mjs';
5
- import { AttributeOperation } from './types/authorization-attributes-contracts.mjs';
6
5
  import { logger, AuthorizationInternalService } from './authorization-internal-service.mjs';
7
6
  import { getAttributionsFromApi } from './attributions-service.mjs';
8
7
  import { APP_NAME } from './constants.mjs';
9
- import { ValidationUtils } from './utils/validation.mjs';
8
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service.mjs';
10
9
 
11
10
  const INTERNAL_APP_NAME = 'internal_ms';
12
11
  const UPSERT_RESOURCE_ATTRIBUTES_PATH = '/attributes/{accountId}/resource';
@@ -17,10 +16,11 @@ const DELETE_ENTITY_ATTRIBUTES_PATH = '/attributes/{accountId}/entity/{entityTyp
17
16
  * Service class for managing resource attributes in the authorization microservice.
18
17
  * Provides synchronous HTTP operations to create/update and delete attributes on resources.
19
18
  */
20
- class AuthorizationAttributesMsService {
19
+ class AuthorizationAttributesMsService extends BaseAuthorizationAttributesService {
21
20
  static LOG_TAG = 'authorization_attributes_ms';
22
21
  static httpClient = Api.getPart('httpClient');
23
22
  constructor() {
23
+ super();
24
24
  if (!AuthorizationAttributesMsService.httpClient) {
25
25
  AuthorizationAttributesMsService.httpClient = Api.getPart('httpClient');
26
26
  if (!AuthorizationAttributesMsService.httpClient) {
@@ -36,22 +36,12 @@ class AuthorizationAttributesMsService {
36
36
  * @returns Promise<ResourceAttributeDeleteOperation>
37
37
  */
38
38
  async deleteResourceAttributes(accountId, resource, attributeKey, _appName, _callerActionIdentifier) {
39
- ValidationUtils.validateResource(resource);
40
- ValidationUtils.validatDeleteResourceAssignment({
41
- resourceType: resource.type,
42
- resourceId: resource.id,
43
- key: attributeKey,
44
- });
39
+ const operation = await super.deleteResourceAttributes(accountId, resource, attributeKey);
45
40
  await AuthorizationAttributesMsService.executeDeleteRequest(accountId, DELETE_RESOURCE_ATTRIBUTES_PATH, {
46
41
  resourceType: resource.type,
47
42
  resourceId: resource.id,
48
43
  }, [attributeKey], 'resource', 'deleteResourceAttributesSync');
49
- return {
50
- resourceType: resource.type,
51
- resourceId: resource.id,
52
- key: attributeKey,
53
- operationType: AttributeOperation.DELETE,
54
- };
44
+ return operation;
55
45
  }
56
46
  /**
57
47
  * Deletes a specific attribute from an entity synchronously.
@@ -62,17 +52,12 @@ class AuthorizationAttributesMsService {
62
52
  * @returns Promise<EntityAttributeDeleteOperation>
63
53
  */
64
54
  async deleteEntityAttributes(accountId, entityType, entityId, attributeKey, _appName, _callerActionIdentifier) {
65
- ValidationUtils.validateInteger(accountId);
55
+ const operation = await super.deleteEntityAttributes(accountId, entityType, entityId, attributeKey);
66
56
  await AuthorizationAttributesMsService.executeDeleteRequest(accountId, DELETE_ENTITY_ATTRIBUTES_PATH, {
67
57
  entityType,
68
58
  entityId,
69
59
  }, [attributeKey], 'entity', 'deleteEntityAttributesSync');
70
- return {
71
- entityType,
72
- entityId,
73
- key: attributeKey,
74
- operationType: AttributeOperation.DELETE,
75
- };
60
+ return operation;
76
61
  }
77
62
  /**
78
63
  * Updates a resource attribute (single operation - upsert only).
@@ -83,14 +68,9 @@ class AuthorizationAttributesMsService {
83
68
  * @returns Promise<ResourceAttributeUpsertOperation> Processed operation
84
69
  */
85
70
  async updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation) {
86
- ValidationUtils.validatUpsertResourceAssignment({
87
- resourceId: resourceAttributeOperation.resourceId,
88
- resourceType: resourceAttributeOperation.resourceType,
89
- key: resourceAttributeOperation.key,
90
- value: resourceAttributeOperation.value,
91
- });
71
+ await super.updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation);
92
72
  await AuthorizationAttributesMsService.executeUpsertRequest(accountId, [
93
- new ResourceAttributeAssignment(resourceAttributeOperation.resourceId, resourceAttributeOperation.resourceType, resourceAttributeOperation.key, resourceAttributeOperation.value || ''),
73
+ new ResourceAttributeAssignment(resourceAttributeOperation.resourceId, resourceAttributeOperation.resourceType, resourceAttributeOperation.key, resourceAttributeOperation.value),
94
74
  ], UPSERT_RESOURCE_ATTRIBUTES_PATH, 'resourceAttributeAssignments', 'resource', 'updateResourceAttributesSync');
95
75
  return resourceAttributeOperation;
96
76
  }
@@ -104,12 +84,7 @@ class AuthorizationAttributesMsService {
104
84
  */
105
85
  async updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation) {
106
86
  // Validate before processing
107
- ValidationUtils.validatUpsertEntityAssignment({
108
- entityId: entityAttributeOperation.entityId,
109
- entityType: entityAttributeOperation.entityType,
110
- key: entityAttributeOperation.key,
111
- value: entityAttributeOperation.value,
112
- });
87
+ await super.updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation);
113
88
  await AuthorizationAttributesMsService.executeUpsertRequest(accountId, [
114
89
  new EntityAttributeAssignment(entityAttributeOperation.entityId, entityAttributeOperation.entityType, entityAttributeOperation.key, entityAttributeOperation.value),
115
90
  ], UPSERT_ENTITY_ATTRIBUTES_PATH, 'entityAttributeAssignments', 'entity', 'upsertEntityAttributesSync');
@@ -132,9 +107,6 @@ class AuthorizationAttributesMsService {
132
107
  * Generic helper for executing delete requests
133
108
  */
134
109
  static async executeDeleteRequest(accountId, pathTemplate, pathParams, keys, logPrefix, methodName) {
135
- // Validate inputs
136
- ValidationUtils.validateInteger(accountId);
137
- ValidationUtils.validateStringArray(keys);
138
110
  if (!keys.length) {
139
111
  logger.warn({ tag: this.LOG_TAG, accountId, ...pathParams }, `${methodName} called with empty keys array`);
140
112
  return;
@@ -1,29 +1,31 @@
1
- import { AuthorizationAttributesService as IAuthorizationAttributesService } from './types/authorization-attributes-service.interface';
1
+ import { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
2
2
  /**
3
3
  * Main service class for managing resource and entity attributes.
4
- * Provides access to both direct (MS) and SNS operations.
4
+ * Provides access to both HTTP (direct microservice) and SNS (async messaging) operations.
5
5
  *
6
6
  * @example
7
7
  * const service = new AuthorizationAttributesService();
8
8
  *
9
- * // Use direct operations
10
- * await service.direct().upsertResourceAttributes(accountId, assignments);
9
+ * // Use HTTP operations (direct calls to microservice)
10
+ * await service.http().updateResourceAttributes(accountId, appName, actionId, operation);
11
11
  *
12
- * // Use SNS operations
13
- * await service.sns().upsertResourceAttributes(accountId, assignments, appName, actionId);
12
+ * // Use SNS operations (async messaging, then to microservice)
13
+ * await service.sns().updateResourceAttributes(accountId, appName, actionId, operation);
14
14
  * ```
15
15
  */
16
16
  export declare class AuthorizationAttributesService {
17
- private _directService;
18
- private _snsService;
17
+ private httpService;
18
+ private snsService;
19
19
  /**
20
- * Gets the direct (MS) service instance.
20
+ * Gets the HTTP service instance.
21
+ * Performs direct HTTP calls to the authorization microservice.
21
22
  * Initializes the service on first access (lazy initialization).
22
23
  * @returns IAuthorizationAttributesService instance
23
24
  */
24
- direct(): IAuthorizationAttributesService;
25
+ http(): IAuthorizationAttributesService;
25
26
  /**
26
27
  * Gets the SNS service instance.
28
+ * Sends operations via SNS messaging, which are then processed by the microservice asynchronously.
27
29
  * Initializes the service on first access (lazy initialization).
28
30
  * @returns IAuthorizationAttributesService instance
29
31
  */