@mondaydotcomorg/monday-authorization 3.6.0-feat-shaime-support-entity-attributes-3-edf2a0b → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/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 -28
  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 -28
  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/validation.mjs +2 -2
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +2 -0
  37. package/dist/resource-attribute-assignment.d.ts.map +1 -1
  38. package/dist/resource-attribute-assignment.js +7 -0
  39. package/dist/resource-attributes-constants.d.ts +2 -1
  40. package/dist/resource-attributes-constants.d.ts.map +1 -1
  41. package/dist/resource-attributes-constants.js +1 -0
  42. package/dist/utils/validation.js +2 -2
  43. package/package.json +1 -1
  44. package/src/authorization-attributes-ms-service.ts +19 -31
  45. package/src/authorization-attributes-service.ts +18 -16
  46. package/src/authorization-attributes-sns-service.ts +15 -23
  47. package/src/base-authorization-attributes-service.ts +90 -0
  48. package/src/index.ts +1 -1
  49. package/src/resource-attribute-assignment.ts +7 -0
  50. package/src/resource-attributes-constants.ts +1 -0
  51. package/src/utils/validation.ts +2 -2
  52. package/dist/esm/types/authorization-attributes-service.interface.d.ts +0 -32
  53. package/dist/esm/types/authorization-attributes-service.interface.d.ts.map +0 -1
  54. package/dist/esm/types/authorization-attributes-service.interface.mjs +0 -1
  55. package/dist/types/authorization-attributes-service.interface.d.ts +0 -32
  56. package/dist/types/authorization-attributes-service.interface.d.ts.map +0 -1
  57. package/dist/types/authorization-attributes-service.interface.js +0 -1
  58. package/src/types/authorization-attributes-service.interface.ts +0 -63
@@ -3,42 +3,44 @@ import { AuthorizationAttributesSnsService } from './authorization-attributes-sn
3
3
 
4
4
  /**
5
5
  * Main service class for managing resource and entity attributes.
6
- * Provides access to both direct (MS) and SNS operations.
6
+ * Provides access to both HTTP (direct microservice) and SNS (async messaging) operations.
7
7
  *
8
8
  * @example
9
9
  * const service = new AuthorizationAttributesService();
10
10
  *
11
- * // Use direct operations
12
- * await service.direct().upsertResourceAttributes(accountId, assignments);
11
+ * // Use HTTP operations (direct calls to microservice)
12
+ * await service.http().updateResourceAttributes(accountId, appName, actionId, operation);
13
13
  *
14
- * // Use SNS operations
15
- * await service.sns().upsertResourceAttributes(accountId, assignments, appName, actionId);
14
+ * // Use SNS operations (async messaging, then to microservice)
15
+ * await service.sns().updateResourceAttributes(accountId, appName, actionId, operation);
16
16
  * ```
17
17
  */
18
18
  class AuthorizationAttributesService {
19
- _directService = null;
20
- _snsService = null;
19
+ httpService = null;
20
+ snsService = null;
21
21
  /**
22
- * Gets the direct (MS) service instance.
22
+ * Gets the HTTP service instance.
23
+ * Performs direct HTTP calls to the authorization microservice.
23
24
  * Initializes the service on first access (lazy initialization).
24
25
  * @returns IAuthorizationAttributesService instance
25
26
  */
26
- direct() {
27
- if (this._directService === null) {
28
- this._directService = new AuthorizationAttributesMsService();
27
+ http() {
28
+ if (this.httpService === null) {
29
+ this.httpService = new AuthorizationAttributesMsService();
29
30
  }
30
- return this._directService;
31
+ return this.httpService;
31
32
  }
32
33
  /**
33
34
  * Gets the SNS service instance.
35
+ * Sends operations via SNS messaging, which are then processed by the microservice asynchronously.
34
36
  * Initializes the service on first access (lazy initialization).
35
37
  * @returns IAuthorizationAttributesService instance
36
38
  */
37
39
  sns() {
38
- if (this._snsService === null) {
39
- this._snsService = new AuthorizationAttributesSnsService();
40
+ if (this.snsService === null) {
41
+ this.snsService = new AuthorizationAttributesSnsService();
40
42
  }
41
- return this._snsService;
43
+ return this.snsService;
42
44
  }
43
45
  }
44
46
 
@@ -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"}
@@ -1,15 +1,14 @@
1
1
  import chunk from 'lodash/chunk.js';
2
2
  import { sendToSns, getTopicAttributes } from '@mondaydotcomorg/monday-sns';
3
- import { AttributeOperation } from './types/authorization-attributes-contracts.mjs';
4
3
  import { logger } from './authorization-internal-service.mjs';
5
4
  import { SnsTopicType, ASYNC_RESOURCE_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, RESOURCE_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, ASYNC_ENTITY_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, ENTITY_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, RESOURCE_SNS_ARN_ENV_VAR_NAME, RESOURCE_SNS_DEV_TEST_NAME, ENTITY_SNS_ARN_ENV_VAR_NAME, ENTITY_SNS_DEV_TEST_NAME } from './constants/sns.mjs';
6
- import { ValidationUtils } from './utils/validation.mjs';
5
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service.mjs';
7
6
 
8
7
  /**
9
8
  * Service class for managing resource attributes asynchronously via SNS.
10
9
  * Provides asynchronous operations to create/update and delete attributes on resources.
11
10
  */
12
- class AuthorizationAttributesSnsService {
11
+ class AuthorizationAttributesSnsService extends BaseAuthorizationAttributesService {
13
12
  static LOG_TAG = 'authorization_attributes';
14
13
  resourceSnsArn;
15
14
  entitySnsArn;
@@ -17,6 +16,7 @@ class AuthorizationAttributesSnsService {
17
16
  * Public constructor to create the AuthorizationAttributesSnsService instance.
18
17
  */
19
18
  constructor() {
19
+ super();
20
20
  this.resourceSnsArn = AuthorizationAttributesSnsService.getSnsTopicArn(SnsTopicType.RESOURCE);
21
21
  this.entitySnsArn = AuthorizationAttributesSnsService.getSnsTopicArn(SnsTopicType.ENTITY);
22
22
  }
@@ -34,17 +34,7 @@ class AuthorizationAttributesSnsService {
34
34
  if (!appName || !callerActionIdentifier) {
35
35
  throw new Error('appName and callerActionIdentifier are required for SNS service');
36
36
  }
37
- ValidationUtils.validatDeleteResourceAssignment({
38
- resourceType: resource.type,
39
- resourceId: resource.id,
40
- key: attributeKey,
41
- });
42
- const operation = {
43
- resourceType: resource.type,
44
- resourceId: resource.id,
45
- key: attributeKey,
46
- operationType: AttributeOperation.DELETE,
47
- };
37
+ const operation = await super.deleteResourceAttributes(accountId, resource, attributeKey);
48
38
  const [result] = await this.sendOperationsToSns(this.resourceSnsArn, accountId, appName, callerActionIdentifier, [operation], ASYNC_RESOURCE_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, RESOURCE_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization resource attributes async delete: failed to send operations to SNS');
49
39
  return result;
50
40
  }
@@ -63,13 +53,7 @@ class AuthorizationAttributesSnsService {
63
53
  if (!appName || !callerActionIdentifier) {
64
54
  throw new Error('appName and callerActionIdentifier are required for SNS service');
65
55
  }
66
- ValidationUtils.validatDeleteEntityAssignment({ entityId, entityType, key: attributeKey });
67
- const operation = {
68
- entityType: entityType,
69
- entityId,
70
- key: attributeKey,
71
- operationType: AttributeOperation.DELETE,
72
- };
56
+ const operation = await super.deleteEntityAttributes(accountId, entityType, entityId, attributeKey);
73
57
  const [result] = await this.sendOperationsToSns(this.entitySnsArn, accountId, appName, callerActionIdentifier, [operation], ASYNC_ENTITY_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, ENTITY_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization entity attributes async delete: failed to send operations to SNS');
74
58
  return result;
75
59
  }
@@ -82,7 +66,7 @@ class AuthorizationAttributesSnsService {
82
66
  * @return {Promise<ResourceAttributeUpsertOperation>} Sent operation
83
67
  * */
84
68
  async updateResourceAttributes(accountId, appName, callerActionIdentifier, resourceAttributeOperation) {
85
- ValidationUtils.validatUpsertResourceAssignment(resourceAttributeOperation);
69
+ await super.updateResourceAttributes(accountId, appName, callerActionIdentifier, resourceAttributeOperation);
86
70
  const [result] = await this.sendOperationsToSns(this.resourceSnsArn, accountId, appName, callerActionIdentifier, [resourceAttributeOperation], ASYNC_RESOURCE_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, RESOURCE_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization resource attributes async update: failed to send operations to SNS');
87
71
  return result;
88
72
  }
@@ -95,7 +79,7 @@ class AuthorizationAttributesSnsService {
95
79
  * @return {Promise<EntityAttributeUpsertOperation>} Sent operation
96
80
  * */
97
81
  async updateEntityAttributes(accountId, appName, callerActionIdentifier, entityAttributeOperation) {
98
- ValidationUtils.validatUpsertEntityAssignment(entityAttributeOperation);
82
+ await super.updateEntityAttributes(accountId, appName, callerActionIdentifier, entityAttributeOperation);
99
83
  const [result] = await this.sendOperationsToSns(this.entitySnsArn, accountId, appName, callerActionIdentifier, [entityAttributeOperation], ASYNC_ENTITY_ATTRIBUTES_MAX_OPERATIONS_PER_MESSAGE, ENTITY_ATTRIBUTES_SNS_UPDATE_OPERATION_MESSAGE_KIND, 'Authorization entity attributes async update: failed to send operations to SNS');
100
84
  return result;
101
85
  }
@@ -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,61 @@
1
+ import { AttributeOperation } from './types/authorization-attributes-contracts.mjs';
2
+ import { ValidationUtils } from './utils/validation.mjs';
3
+
4
+ /**
5
+ * Abstract base class for authorization attributes operations.
6
+ * Both MS (HTTP) and SNS (async) services extend this class.
7
+ */
8
+ class BaseAuthorizationAttributesService {
9
+ /**
10
+ * Deletes a resource attribute.
11
+ * Returns Promise<ResourceAttributeDeleteOperation>
12
+ */
13
+ deleteResourceAttributes(accountId, resource, attributeKey, _appName, _callerActionIdentifier) {
14
+ const operation = {
15
+ resourceType: resource.type,
16
+ resourceId: resource.id,
17
+ key: attributeKey,
18
+ operationType: AttributeOperation.DELETE,
19
+ };
20
+ ValidationUtils.validateInteger(accountId);
21
+ ValidationUtils.validatDeleteResourceAssignment(operation);
22
+ return Promise.resolve(operation);
23
+ }
24
+ /**
25
+ * Deletes an entity attribute.
26
+ * Returns Promise<EntityAttributeDeleteOperation>
27
+ */
28
+ deleteEntityAttributes(accountId, entityType, entityId, attributeKey) {
29
+ const operation = {
30
+ entityType: entityType,
31
+ entityId: entityId,
32
+ key: attributeKey,
33
+ operationType: AttributeOperation.DELETE,
34
+ };
35
+ ValidationUtils.validateInteger(accountId);
36
+ ValidationUtils.validatDeleteEntityAssignment(operation);
37
+ return Promise.resolve(operation);
38
+ }
39
+ /**
40
+ * Updates a resource attribute (single operation - upsert only).
41
+ * For MS service: performs upsert operation
42
+ * For SNS service: returns Promise<ResourceAttributeUpsertOperation>
43
+ */
44
+ updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation) {
45
+ ValidationUtils.validateInteger(accountId);
46
+ ValidationUtils.validatUpsertResourceAssignment(resourceAttributeOperation);
47
+ return Promise.resolve(resourceAttributeOperation);
48
+ }
49
+ /**
50
+ * Updates an entity attribute (single operation - upsert only).
51
+ * For MS service: performs upsert operation
52
+ * For SNS service: returns Promise<EntityAttributeUpsertOperation>
53
+ */
54
+ updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation) {
55
+ ValidationUtils.validateInteger(accountId);
56
+ ValidationUtils.validatUpsertEntityAssignment(entityAttributeOperation);
57
+ return Promise.resolve(entityAttributeOperation);
58
+ }
59
+ }
60
+
61
+ export { BaseAuthorizationAttributesService };
@@ -29,6 +29,6 @@ export { AuthorizationObject, Resource, BaseRequest, ResourceGetter, ContextGett
29
29
  export { Translation, ScopedAction, ScopedActionResponseObject, ScopedActionPermit, } from './types/scoped-actions-contracts';
30
30
  export { CustomRole, BasicRole, RoleType, RoleCreateRequest, RoleUpdateRequest, RolesResponse } from './types/roles';
31
31
  export { AttributeAssignment, AttributeOperation, ResourceAttributeDeleteAssignment, ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeDeleteAssignment, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation, ResourceAttributeAssignment as ResourceAttributeAssignmentContract, EntityAttributeAssignment as EntityAttributeAssignmentContract, } from './types/authorization-attributes-contracts';
32
- export { AuthorizationAttributesService as IAuthorizationAttributesService } from './types/authorization-attributes-service.interface';
32
+ export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
33
33
  export { TestKit };
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,8BAA8B,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAEvI,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,kCAAkC,IAAI,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAEhI,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -14,6 +14,7 @@ export { RolesService } from './roles-service.mjs';
14
14
  export { MembershipsService } from './memberships.mjs';
15
15
  export { RoleType } from './types/roles.mjs';
16
16
  export { AttributeOperation } from './types/authorization-attributes-contracts.mjs';
17
+ export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service.mjs';
17
18
 
18
19
  async function init(options = {}) {
19
20
  if (options.prometheus) {
@@ -1 +1 @@
1
- {"version":3,"file":"resource-attribute-assignment.d.ts","sourceRoot":"","sources":["../../src/resource-attribute-assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAEhI,qBAAa,2BAA4B,SAAQ,uBAAuB,CACtE,YAAY,EACZ,mCAAmC,CACpC;IACC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,YAAY,EAAE,YAAY,CAAC;gBAE/B,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAMxG,oBAAoB,IAAI,mCAAmC;IAQ3D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO;CAGpD"}
1
+ {"version":3,"file":"resource-attribute-assignment.d.ts","sourceRoot":"","sources":["../../src/resource-attribute-assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAGhI,qBAAa,2BAA4B,SAAQ,uBAAuB,CACtE,YAAY,EACZ,mCAAmC,CACpC;IACC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,YAAY,EAAE,YAAY,CAAC;gBAE/B,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAYxG,oBAAoB,IAAI,mCAAmC;IAQ3D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO;CAGpD"}
@@ -1,9 +1,16 @@
1
1
  import { BaseAttributeAssignment } from './base-attribute-assignment.mjs';
2
+ import { ValidationUtils } from './utils/validation.mjs';
2
3
 
3
4
  class ResourceAttributeAssignment extends BaseAttributeAssignment {
4
5
  resourceId;
5
6
  resourceType;
6
7
  constructor(resourceId, resourceType, attributeKey, attributeValue) {
8
+ ValidationUtils.validatUpsertResourceAssignment({
9
+ resourceId,
10
+ resourceType,
11
+ key: attributeKey,
12
+ value: attributeValue,
13
+ });
7
14
  super(resourceId, resourceType, attributeKey, attributeValue);
8
15
  this.resourceId = resourceId;
9
16
  this.resourceType = this.type;
@@ -20,7 +20,8 @@ export declare enum ResourceType {
20
20
  Overview = "overview",
21
21
  Document = "document",
22
22
  Crm = "crm",
23
- Feature = "feature"
23
+ Feature = "feature",
24
+ POST = "post"
24
25
  }
25
26
  export declare const RESOURCE_TYPES: readonly ResourceType[];
26
27
  //# sourceMappingURL=resource-attributes-constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-attributes-constants.d.ts","sourceRoot":"","sources":["../../src/resource-attributes-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B;;;;;;;;;;;EAWxC,CAAC;AAEH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,cAAc,yBAA6C,CAAC"}
1
+ {"version":3,"file":"resource-attributes-constants.d.ts","sourceRoot":"","sources":["../../src/resource-attributes-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B;;;;;;;;;;;EAWxC,CAAC;AAEH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAGD,eAAO,MAAM,cAAc,yBAA6C,CAAC"}
@@ -22,6 +22,7 @@ var ResourceType;
22
22
  ResourceType["Document"] = "document";
23
23
  ResourceType["Crm"] = "crm";
24
24
  ResourceType["Feature"] = "feature";
25
+ ResourceType["POST"] = "post";
25
26
  })(ResourceType || (ResourceType = {}));
26
27
  // Define the array of strings and use 'as const' to make its contents literal types
27
28
  const RESOURCE_TYPES = Object.freeze(Object.values(ResourceType));
@@ -55,7 +55,7 @@ class ValidationUtils {
55
55
  static validatDeleteResourceAssignment(resource) {
56
56
  const valid = resourceDeleteAssignmentSchema(resource);
57
57
  if (!valid) {
58
- const errorMessage = this.formatValidationErrors(resourceUpsertAssignmentSchema.errors);
58
+ const errorMessage = this.formatValidationErrors(resourceDeleteAssignmentSchema.errors);
59
59
  throw new ArgumentError(errorMessage
60
60
  ? `Invalid resource attribute assignment: ${errorMessage}`
61
61
  : 'Invalid resource attribute assignment');
@@ -79,7 +79,7 @@ class ValidationUtils {
79
79
  * Formats AJV validation errors into a readable error message
80
80
  */
81
81
  static formatValidationErrors(errors) {
82
- if (!errors || errors.length === 0) {
82
+ if (!errors || !errors.length) {
83
83
  return '';
84
84
  }
85
85
  return errors
package/dist/index.d.ts CHANGED
@@ -29,6 +29,6 @@ export { AuthorizationObject, Resource, BaseRequest, ResourceGetter, ContextGett
29
29
  export { Translation, ScopedAction, ScopedActionResponseObject, ScopedActionPermit, } from './types/scoped-actions-contracts';
30
30
  export { CustomRole, BasicRole, RoleType, RoleCreateRequest, RoleUpdateRequest, RolesResponse } from './types/roles';
31
31
  export { AttributeAssignment, AttributeOperation, ResourceAttributeDeleteAssignment, ResourceAttributeUpsertOperation, ResourceAttributeDeleteOperation, EntityAttributeDeleteAssignment, EntityAttributeUpsertOperation, EntityAttributeDeleteOperation, ResourceAttributeAssignment as ResourceAttributeAssignmentContract, EntityAttributeAssignment as EntityAttributeAssignmentContract, } from './types/authorization-attributes-contracts';
32
- export { AuthorizationAttributesService as IAuthorizationAttributesService } from './types/authorization-attributes-service.interface';
32
+ export { BaseAuthorizationAttributesService as IAuthorizationAttributesService } from './base-authorization-attributes-service';
33
33
  export { TestKit };
34
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,8BAA8B,IAAI,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAEvI,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAqB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,iBA6BnD;AAED,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EACL,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrH,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iCAAiC,EACjC,gCAAgC,EAChC,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,8BAA8B,EAC9B,2BAA2B,IAAI,mCAAmC,EAClE,yBAAyB,IAAI,iCAAiC,GAC/D,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,kCAAkC,IAAI,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAEhI,OAAO,EAAE,OAAO,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ const rolesService = require('./roles-service.js');
14
14
  const memberships = require('./memberships.js');
15
15
  const types_roles = require('./types/roles.js');
16
16
  const types_authorizationAttributesContracts = require('./types/authorization-attributes-contracts.js');
17
+ const baseAuthorizationAttributesService = require('./base-authorization-attributes-service.js');
17
18
 
18
19
  async function init(options = {}) {
19
20
  if (options.prometheus) {
@@ -72,4 +73,5 @@ Object.defineProperty(exports, 'AttributeOperation', {
72
73
  enumerable: true,
73
74
  get: () => types_authorizationAttributesContracts.AttributeOperation
74
75
  });
76
+ exports.IAuthorizationAttributesService = baseAuthorizationAttributesService.BaseAuthorizationAttributesService;
75
77
  exports.init = init;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-attribute-assignment.d.ts","sourceRoot":"","sources":["../src/resource-attribute-assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAEhI,qBAAa,2BAA4B,SAAQ,uBAAuB,CACtE,YAAY,EACZ,mCAAmC,CACpC;IACC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,YAAY,EAAE,YAAY,CAAC;gBAE/B,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAMxG,oBAAoB,IAAI,mCAAmC;IAQ3D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO;CAGpD"}
1
+ {"version":3,"file":"resource-attribute-assignment.d.ts","sourceRoot":"","sources":["../src/resource-attribute-assignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,2BAA2B,IAAI,mCAAmC,EAAE,MAAM,4CAA4C,CAAC;AAGhI,qBAAa,2BAA4B,SAAQ,uBAAuB,CACtE,YAAY,EACZ,mCAAmC,CACpC;IACC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,YAAY,EAAE,YAAY,CAAC;gBAE/B,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAYxG,oBAAoB,IAAI,mCAAmC;IAQ3D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO;CAGpD"}
@@ -1,11 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const baseAttributeAssignment = require('./base-attribute-assignment.js');
4
+ const utils_validation = require('./utils/validation.js');
4
5
 
5
6
  class ResourceAttributeAssignment extends baseAttributeAssignment.BaseAttributeAssignment {
6
7
  resourceId;
7
8
  resourceType;
8
9
  constructor(resourceId, resourceType, attributeKey, attributeValue) {
10
+ utils_validation.ValidationUtils.validatUpsertResourceAssignment({
11
+ resourceId,
12
+ resourceType,
13
+ key: attributeKey,
14
+ value: attributeValue,
15
+ });
9
16
  super(resourceId, resourceType, attributeKey, attributeValue);
10
17
  this.resourceId = resourceId;
11
18
  this.resourceType = this.type;
@@ -20,7 +20,8 @@ export declare enum ResourceType {
20
20
  Overview = "overview",
21
21
  Document = "document",
22
22
  Crm = "crm",
23
- Feature = "feature"
23
+ Feature = "feature",
24
+ POST = "post"
24
25
  }
25
26
  export declare const RESOURCE_TYPES: readonly ResourceType[];
26
27
  //# sourceMappingURL=resource-attributes-constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource-attributes-constants.d.ts","sourceRoot":"","sources":["../src/resource-attributes-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B;;;;;;;;;;;EAWxC,CAAC;AAEH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAGD,eAAO,MAAM,cAAc,yBAA6C,CAAC"}
1
+ {"version":3,"file":"resource-attributes-constants.d.ts","sourceRoot":"","sources":["../src/resource-attributes-constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B;;;;;;;;;;;EAWxC,CAAC;AAEH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,cAAc,oBAAoB;IAClC,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAGD,eAAO,MAAM,cAAc,yBAA6C,CAAC"}
@@ -24,6 +24,7 @@ exports.ResourceType = void 0;
24
24
  ResourceType["Document"] = "document";
25
25
  ResourceType["Crm"] = "crm";
26
26
  ResourceType["Feature"] = "feature";
27
+ ResourceType["POST"] = "post";
27
28
  })(exports.ResourceType || (exports.ResourceType = {}));
28
29
  // Define the array of strings and use 'as const' to make its contents literal types
29
30
  const RESOURCE_TYPES = Object.freeze(Object.values(exports.ResourceType));
@@ -61,7 +61,7 @@ class ValidationUtils {
61
61
  static validatDeleteResourceAssignment(resource) {
62
62
  const valid = utils_assignmentSchema.resourceDeleteAssignmentSchema(resource);
63
63
  if (!valid) {
64
- const errorMessage = this.formatValidationErrors(utils_assignmentSchema.resourceUpsertAssignmentSchema.errors);
64
+ const errorMessage = this.formatValidationErrors(utils_assignmentSchema.resourceDeleteAssignmentSchema.errors);
65
65
  throw new errors_argumentError.ArgumentError(errorMessage
66
66
  ? `Invalid resource attribute assignment: ${errorMessage}`
67
67
  : 'Invalid resource attribute assignment');
@@ -85,7 +85,7 @@ class ValidationUtils {
85
85
  * Formats AJV validation errors into a readable error message
86
86
  */
87
87
  static formatValidationErrors(errors) {
88
- if (!errors || errors.length === 0) {
88
+ if (!errors || !errors.length) {
89
89
  return '';
90
90
  }
91
91
  return errors
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mondaydotcomorg/monday-authorization",
3
- "version": "3.6.0-feat-shaime-support-entity-attributes-3-edf2a0b",
3
+ "version": "3.6.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "BSD-3-Clause",
@@ -3,7 +3,6 @@ import { signAuthorizationHeader } from '@mondaydotcomorg/monday-jwt';
3
3
  import { ResourceAttributeAssignment } from './resource-attribute-assignment';
4
4
  import { EntityAttributeAssignment } from './entity-attribute-assignment';
5
5
  import {
6
- AttributeOperation,
7
6
  ResourceAttributeUpsertOperation,
8
7
  ResourceAttributeDeleteOperation,
9
8
  EntityAttributeUpsertOperation,
@@ -13,8 +12,7 @@ import { EntityType } from './entity-attributes-constants';
13
12
  import { AuthorizationInternalService, logger } from './authorization-internal-service';
14
13
  import { getAttributionsFromApi } from './attributions-service';
15
14
  import { APP_NAME } from './constants';
16
- import { ValidationUtils } from './utils/validation';
17
- import { AuthorizationAttributesService } from './types/authorization-attributes-service.interface';
15
+ import { BaseAuthorizationAttributesService } from './base-authorization-attributes-service';
18
16
  import { Resource } from './types/general';
19
17
 
20
18
  const INTERNAL_APP_NAME = 'internal_ms';
@@ -31,11 +29,12 @@ interface DeleteRequestBody {
31
29
  * Service class for managing resource attributes in the authorization microservice.
32
30
  * Provides synchronous HTTP operations to create/update and delete attributes on resources.
33
31
  */
34
- export class AuthorizationAttributesMsService implements AuthorizationAttributesService {
32
+ export class AuthorizationAttributesMsService extends BaseAuthorizationAttributesService {
35
33
  private static LOG_TAG = 'authorization_attributes_ms';
36
34
  private static httpClient: HttpClient | undefined = Api.getPart('httpClient');
37
35
 
38
36
  constructor() {
37
+ super();
39
38
  if (!AuthorizationAttributesMsService.httpClient) {
40
39
  AuthorizationAttributesMsService.httpClient = Api.getPart('httpClient');
41
40
  if (!AuthorizationAttributesMsService.httpClient) {
@@ -58,12 +57,11 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
58
57
  _appName?: string,
59
58
  _callerActionIdentifier?: string
60
59
  ): Promise<ResourceAttributeDeleteOperation> {
61
- ValidationUtils.validateResource(resource);
62
- ValidationUtils.validatDeleteResourceAssignment({
63
- resourceType: resource.type,
64
- resourceId: resource.id,
65
- key: attributeKey,
66
- });
60
+ const operation: ResourceAttributeDeleteOperation = await super.deleteResourceAttributes(
61
+ accountId,
62
+ resource,
63
+ attributeKey
64
+ );
67
65
  await AuthorizationAttributesMsService.executeDeleteRequest(
68
66
  accountId,
69
67
  DELETE_RESOURCE_ATTRIBUTES_PATH,
@@ -75,12 +73,7 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
75
73
  'resource',
76
74
  'deleteResourceAttributesSync'
77
75
  );
78
- return {
79
- resourceType: resource.type,
80
- resourceId: resource.id,
81
- key: attributeKey,
82
- operationType: AttributeOperation.DELETE,
83
- };
76
+ return operation;
84
77
  }
85
78
 
86
79
  /**
@@ -99,7 +92,12 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
99
92
  _appName?: string,
100
93
  _callerActionIdentifier?: string
101
94
  ): Promise<EntityAttributeDeleteOperation> {
102
- ValidationUtils.validateInteger(accountId);
95
+ const operation: EntityAttributeDeleteOperation = await super.deleteEntityAttributes(
96
+ accountId,
97
+ entityType,
98
+ entityId,
99
+ attributeKey
100
+ );
103
101
  await AuthorizationAttributesMsService.executeDeleteRequest(
104
102
  accountId,
105
103
  DELETE_ENTITY_ATTRIBUTES_PATH,
@@ -111,12 +109,7 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
111
109
  'entity',
112
110
  'deleteEntityAttributesSync'
113
111
  );
114
- return {
115
- entityType,
116
- entityId,
117
- key: attributeKey,
118
- operationType: AttributeOperation.DELETE,
119
- };
112
+ return operation;
120
113
  }
121
114
 
122
115
  /**
@@ -133,7 +126,7 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
133
126
  _callerActionIdentifier: string,
134
127
  resourceAttributeOperation: ResourceAttributeUpsertOperation
135
128
  ): Promise<ResourceAttributeUpsertOperation> {
136
- ValidationUtils.validatUpsertResourceAssignment(resourceAttributeOperation);
129
+ await super.updateResourceAttributes(accountId, _appName, _callerActionIdentifier, resourceAttributeOperation);
137
130
  await AuthorizationAttributesMsService.executeUpsertRequest(
138
131
  accountId,
139
132
  [
@@ -141,7 +134,7 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
141
134
  resourceAttributeOperation.resourceId,
142
135
  resourceAttributeOperation.resourceType,
143
136
  resourceAttributeOperation.key,
144
- resourceAttributeOperation.value || ''
137
+ resourceAttributeOperation.value
145
138
  ),
146
139
  ],
147
140
  UPSERT_RESOURCE_ATTRIBUTES_PATH,
@@ -168,8 +161,7 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
168
161
  entityAttributeOperation: EntityAttributeUpsertOperation
169
162
  ): Promise<EntityAttributeUpsertOperation> {
170
163
  // Validate before processing
171
- ValidationUtils.validatUpsertEntityAssignment(entityAttributeOperation);
172
-
164
+ await super.updateEntityAttributes(accountId, _appName, _callerActionIdentifier, entityAttributeOperation);
173
165
  await AuthorizationAttributesMsService.executeUpsertRequest(
174
166
  accountId,
175
167
  [
@@ -214,10 +206,6 @@ export class AuthorizationAttributesMsService implements AuthorizationAttributes
214
206
  logPrefix: string,
215
207
  methodName: string
216
208
  ): Promise<void> {
217
- // Validate inputs
218
- ValidationUtils.validateInteger(accountId);
219
- ValidationUtils.validateStringArray(keys);
220
-
221
209
  if (!keys.length) {
222
210
  logger.warn({ tag: this.LOG_TAG, accountId, ...pathParams }, `${methodName} called with empty keys array`);
223
211
  return;