@monorise/core 3.0.0 → 3.0.2

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 (206) hide show
  1. package/dist/index.d.ts +4759 -27
  2. package/dist/index.js +7940 -31
  3. package/dist/index.js.map +1 -1
  4. package/package.json +4 -4
  5. package/dist/configs/service.config.d.ts +0 -5
  6. package/dist/configs/service.config.d.ts.map +0 -1
  7. package/dist/configs/service.config.js +0 -5
  8. package/dist/configs/service.config.js.map +0 -1
  9. package/dist/constants/table.d.ts +0 -3
  10. package/dist/constants/table.d.ts.map +0 -1
  11. package/dist/constants/table.js +0 -3
  12. package/dist/constants/table.js.map +0 -1
  13. package/dist/controllers/entity/create-entity.controller.d.ts +0 -7
  14. package/dist/controllers/entity/create-entity.controller.d.ts.map +0 -1
  15. package/dist/controllers/entity/create-entity.controller.js +0 -64
  16. package/dist/controllers/entity/create-entity.controller.js.map +0 -1
  17. package/dist/controllers/entity/delete-entity.controller.d.ts +0 -7
  18. package/dist/controllers/entity/delete-entity.controller.d.ts.map +0 -1
  19. package/dist/controllers/entity/delete-entity.controller.js +0 -38
  20. package/dist/controllers/entity/delete-entity.controller.js.map +0 -1
  21. package/dist/controllers/entity/get-entity-by-unique-field-value.controller.d.ts +0 -7
  22. package/dist/controllers/entity/get-entity-by-unique-field-value.controller.d.ts.map +0 -1
  23. package/dist/controllers/entity/get-entity-by-unique-field-value.controller.js +0 -36
  24. package/dist/controllers/entity/get-entity-by-unique-field-value.controller.js.map +0 -1
  25. package/dist/controllers/entity/get-entity.controller.d.ts +0 -7
  26. package/dist/controllers/entity/get-entity.controller.d.ts.map +0 -1
  27. package/dist/controllers/entity/get-entity.controller.js +0 -37
  28. package/dist/controllers/entity/get-entity.controller.js.map +0 -1
  29. package/dist/controllers/entity/list-entities.controller.d.ts +0 -7
  30. package/dist/controllers/entity/list-entities.controller.d.ts.map +0 -1
  31. package/dist/controllers/entity/list-entities.controller.js +0 -61
  32. package/dist/controllers/entity/list-entities.controller.js.map +0 -1
  33. package/dist/controllers/entity/update-entity.controller.d.ts +0 -7
  34. package/dist/controllers/entity/update-entity.controller.d.ts.map +0 -1
  35. package/dist/controllers/entity/update-entity.controller.js +0 -62
  36. package/dist/controllers/entity/update-entity.controller.js.map +0 -1
  37. package/dist/controllers/entity/upsert-entity.controller.d.ts +0 -11
  38. package/dist/controllers/entity/upsert-entity.controller.d.ts.map +0 -1
  39. package/dist/controllers/entity/upsert-entity.controller.js +0 -84
  40. package/dist/controllers/entity/upsert-entity.controller.js.map +0 -1
  41. package/dist/controllers/mutual/create-mutual.controller.d.ts +0 -7
  42. package/dist/controllers/mutual/create-mutual.controller.d.ts.map +0 -1
  43. package/dist/controllers/mutual/create-mutual.controller.js +0 -60
  44. package/dist/controllers/mutual/create-mutual.controller.js.map +0 -1
  45. package/dist/controllers/mutual/delete-mutual.controller.d.ts +0 -7
  46. package/dist/controllers/mutual/delete-mutual.controller.d.ts.map +0 -1
  47. package/dist/controllers/mutual/delete-mutual.controller.js +0 -40
  48. package/dist/controllers/mutual/delete-mutual.controller.js.map +0 -1
  49. package/dist/controllers/mutual/get-mutual.controller.d.ts +0 -7
  50. package/dist/controllers/mutual/get-mutual.controller.d.ts.map +0 -1
  51. package/dist/controllers/mutual/get-mutual.controller.js +0 -36
  52. package/dist/controllers/mutual/get-mutual.controller.js.map +0 -1
  53. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts +0 -7
  54. package/dist/controllers/mutual/list-entities-by-entity.controller.d.ts.map +0 -1
  55. package/dist/controllers/mutual/list-entities-by-entity.controller.js +0 -72
  56. package/dist/controllers/mutual/list-entities-by-entity.controller.js.map +0 -1
  57. package/dist/controllers/mutual/update-mutual.controller.d.ts +0 -7
  58. package/dist/controllers/mutual/update-mutual.controller.d.ts.map +0 -1
  59. package/dist/controllers/mutual/update-mutual.controller.js +0 -54
  60. package/dist/controllers/mutual/update-mutual.controller.js.map +0 -1
  61. package/dist/controllers/setupRoutes.d.ts +0 -4
  62. package/dist/controllers/setupRoutes.d.ts.map +0 -1
  63. package/dist/controllers/setupRoutes.js +0 -32
  64. package/dist/controllers/setupRoutes.js.map +0 -1
  65. package/dist/controllers/tag/list-tags.controller.d.ts +0 -7
  66. package/dist/controllers/tag/list-tags.controller.d.ts.map +0 -1
  67. package/dist/controllers/tag/list-tags.controller.js +0 -57
  68. package/dist/controllers/tag/list-tags.controller.js.map +0 -1
  69. package/dist/data/DbUtils.d.ts +0 -7
  70. package/dist/data/DbUtils.d.ts.map +0 -1
  71. package/dist/data/DbUtils.js +0 -34
  72. package/dist/data/DbUtils.js.map +0 -1
  73. package/dist/data/Entity.d.ts +0 -77
  74. package/dist/data/Entity.d.ts.map +0 -1
  75. package/dist/data/Entity.js +0 -504
  76. package/dist/data/Entity.js.map +0 -1
  77. package/dist/data/EventUtils.d.ts +0 -15
  78. package/dist/data/EventUtils.d.ts.map +0 -1
  79. package/dist/data/EventUtils.js +0 -43
  80. package/dist/data/EventUtils.js.map +0 -1
  81. package/dist/data/FileObject.d.ts +0 -62
  82. package/dist/data/FileObject.d.ts.map +0 -1
  83. package/dist/data/FileObject.js +0 -13
  84. package/dist/data/FileObject.js.map +0 -1
  85. package/dist/data/Mutual.d.ts +0 -93
  86. package/dist/data/Mutual.d.ts.map +0 -1
  87. package/dist/data/Mutual.js +0 -439
  88. package/dist/data/Mutual.js.map +0 -1
  89. package/dist/data/ProjectionExpression.d.ts +0 -6
  90. package/dist/data/ProjectionExpression.d.ts.map +0 -1
  91. package/dist/data/ProjectionExpression.js +0 -5
  92. package/dist/data/ProjectionExpression.js.map +0 -1
  93. package/dist/data/Tag.d.ts +0 -77
  94. package/dist/data/Tag.d.ts.map +0 -1
  95. package/dist/data/Tag.js +0 -329
  96. package/dist/data/Tag.js.map +0 -1
  97. package/dist/data/abstract/Item.base.d.ts +0 -11
  98. package/dist/data/abstract/Item.base.d.ts.map +0 -1
  99. package/dist/data/abstract/Item.base.js +0 -9
  100. package/dist/data/abstract/Item.base.js.map +0 -1
  101. package/dist/data/abstract/Repository.base.d.ts +0 -11
  102. package/dist/data/abstract/Repository.base.d.ts.map +0 -1
  103. package/dist/data/abstract/Repository.base.js +0 -51
  104. package/dist/data/abstract/Repository.base.js.map +0 -1
  105. package/dist/errors/api-error.d.ts +0 -23
  106. package/dist/errors/api-error.d.ts.map +0 -1
  107. package/dist/errors/api-error.js +0 -26
  108. package/dist/errors/api-error.js.map +0 -1
  109. package/dist/errors/extendable-error.d.ts +0 -18
  110. package/dist/errors/extendable-error.d.ts.map +0 -1
  111. package/dist/errors/extendable-error.js +0 -15
  112. package/dist/errors/extendable-error.js.map +0 -1
  113. package/dist/errors/standard-error.d.ts +0 -33
  114. package/dist/errors/standard-error.d.ts.map +0 -1
  115. package/dist/errors/standard-error.js +0 -39
  116. package/dist/errors/standard-error.js.map +0 -1
  117. package/dist/handles/app.d.ts +0 -16
  118. package/dist/handles/app.d.ts.map +0 -1
  119. package/dist/handles/app.js +0 -31
  120. package/dist/handles/app.js.map +0 -1
  121. package/dist/helpers/dependencies.d.ts +0 -8
  122. package/dist/helpers/dependencies.d.ts.map +0 -1
  123. package/dist/helpers/dependencies.js +0 -10
  124. package/dist/helpers/dependencies.js.map +0 -1
  125. package/dist/helpers/event.d.ts +0 -22
  126. package/dist/helpers/event.d.ts.map +0 -1
  127. package/dist/helpers/event.js +0 -48
  128. package/dist/helpers/event.js.map +0 -1
  129. package/dist/helpers/fromLastKeyQuery.d.ts +0 -3
  130. package/dist/helpers/fromLastKeyQuery.d.ts.map +0 -1
  131. package/dist/helpers/fromLastKeyQuery.js +0 -7
  132. package/dist/helpers/fromLastKeyQuery.js.map +0 -1
  133. package/dist/helpers/sleep.d.ts +0 -2
  134. package/dist/helpers/sleep.d.ts.map +0 -1
  135. package/dist/helpers/sleep.js +0 -2
  136. package/dist/helpers/sleep.js.map +0 -1
  137. package/dist/helpers/toLastKeyResponse.d.ts +0 -3
  138. package/dist/helpers/toLastKeyResponse.d.ts.map +0 -1
  139. package/dist/helpers/toLastKeyResponse.js +0 -7
  140. package/dist/helpers/toLastKeyResponse.js.map +0 -1
  141. package/dist/index.d.ts.map +0 -1
  142. package/dist/middlewares/api-key-auth.d.ts +0 -3
  143. package/dist/middlewares/api-key-auth.d.ts.map +0 -1
  144. package/dist/middlewares/api-key-auth.js +0 -32
  145. package/dist/middlewares/api-key-auth.js.map +0 -1
  146. package/dist/middlewares/entity-type-check.d.ts +0 -3
  147. package/dist/middlewares/entity-type-check.d.ts.map +0 -1
  148. package/dist/middlewares/entity-type-check.js +0 -22
  149. package/dist/middlewares/entity-type-check.js.map +0 -1
  150. package/dist/middlewares/general-error-handler.d.ts +0 -7
  151. package/dist/middlewares/general-error-handler.d.ts.map +0 -1
  152. package/dist/middlewares/general-error-handler.js +0 -40
  153. package/dist/middlewares/general-error-handler.js.map +0 -1
  154. package/dist/middlewares/mutual-type-check.d.ts +0 -3
  155. package/dist/middlewares/mutual-type-check.d.ts.map +0 -1
  156. package/dist/middlewares/mutual-type-check.js +0 -23
  157. package/dist/middlewares/mutual-type-check.js.map +0 -1
  158. package/dist/processors/create-entity-processor.d.ts +0 -6
  159. package/dist/processors/create-entity-processor.d.ts.map +0 -1
  160. package/dist/processors/create-entity-processor.js +0 -44
  161. package/dist/processors/create-entity-processor.js.map +0 -1
  162. package/dist/processors/mutual-processor.d.ts +0 -16
  163. package/dist/processors/mutual-processor.d.ts.map +0 -1
  164. package/dist/processors/mutual-processor.js +0 -142
  165. package/dist/processors/mutual-processor.js.map +0 -1
  166. package/dist/processors/prejoin-processor.d.ts +0 -13
  167. package/dist/processors/prejoin-processor.d.ts.map +0 -1
  168. package/dist/processors/prejoin-processor.js +0 -161
  169. package/dist/processors/prejoin-processor.js.map +0 -1
  170. package/dist/processors/replication-processor.d.ts +0 -9
  171. package/dist/processors/replication-processor.d.ts.map +0 -1
  172. package/dist/processors/replication-processor.js +0 -180
  173. package/dist/processors/replication-processor.js.map +0 -1
  174. package/dist/processors/tag-processor.d.ts +0 -12
  175. package/dist/processors/tag-processor.d.ts.map +0 -1
  176. package/dist/processors/tag-processor.js +0 -118
  177. package/dist/processors/tag-processor.js.map +0 -1
  178. package/dist/services/DependencyContainer.d.ts +0 -67
  179. package/dist/services/DependencyContainer.d.ts.map +0 -1
  180. package/dist/services/DependencyContainer.js +0 -121
  181. package/dist/services/DependencyContainer.js.map +0 -1
  182. package/dist/services/entity-service-lifecycle.d.ts +0 -12
  183. package/dist/services/entity-service-lifecycle.d.ts.map +0 -1
  184. package/dist/services/entity-service-lifecycle.js +0 -41
  185. package/dist/services/entity-service-lifecycle.js.map +0 -1
  186. package/dist/services/entity.service.d.ts +0 -34
  187. package/dist/services/entity.service.d.ts.map +0 -1
  188. package/dist/services/entity.service.js +0 -120
  189. package/dist/services/entity.service.js.map +0 -1
  190. package/dist/services/mutual.service.d.ts +0 -64
  191. package/dist/services/mutual.service.d.ts.map +0 -1
  192. package/dist/services/mutual.service.js +0 -141
  193. package/dist/services/mutual.service.js.map +0 -1
  194. package/dist/tsconfig.tsbuildinfo +0 -1
  195. package/dist/types/entity.type.d.ts +0 -20
  196. package/dist/types/entity.type.d.ts.map +0 -1
  197. package/dist/types/entity.type.js +0 -2
  198. package/dist/types/entity.type.js.map +0 -1
  199. package/dist/types/event.d.ts +0 -73
  200. package/dist/types/event.d.ts.map +0 -1
  201. package/dist/types/event.js +0 -74
  202. package/dist/types/event.js.map +0 -1
  203. package/dist/vitest.config.d.ts +0 -3
  204. package/dist/vitest.config.d.ts.map +0 -1
  205. package/dist/vitest.config.js +0 -10
  206. package/dist/vitest.config.js.map +0 -1
@@ -1,77 +0,0 @@
1
- import type { AttributeValue, DynamoDB } from '@aws-sdk/client-dynamodb';
2
- import type { EntitySchemaMap, Entity as EntityType } from '@monorise/base';
3
- import { Entity } from './Entity';
4
- import type { ProjectionExpressionValues } from './ProjectionExpression';
5
- import { Repository } from './abstract/Repository.base';
6
- export declare class TaggedEntity<T extends EntityType> extends Entity<T> {
7
- tagName: string;
8
- group?: string;
9
- sortValue?: string;
10
- constructor({ tagName, group, sortValue, entityType, entityId, data, createdAt, updatedAt, }: {
11
- tagName: string;
12
- group?: string;
13
- sortValue?: string;
14
- entityType: T;
15
- entityId: string;
16
- data?: Partial<EntitySchemaMap[T]>;
17
- createdAt?: Date;
18
- updatedAt?: Date;
19
- });
20
- static fromItem<T extends EntityType>(item?: Record<string, AttributeValue>): TaggedEntity<T>;
21
- get pk(): string;
22
- get sk(): string;
23
- reversedKeys(): Record<string, AttributeValue>;
24
- replicationKeys(): Record<string, AttributeValue>;
25
- toItem(): Record<string, AttributeValue>;
26
- toJSON(): Record<string, unknown>;
27
- }
28
- export declare class TagRepository extends Repository {
29
- private readonly TABLE_NAME;
30
- private readonly dynamodbClient;
31
- constructor(TABLE_NAME: string, dynamodbClient: DynamoDB);
32
- getExistingTags<T extends EntityType>({ entityType, entityId, tagName, }: {
33
- entityType: T;
34
- entityId: string;
35
- tagName: string;
36
- }): Promise<TaggedEntity<T>[]>;
37
- deleteTag({ tagName, group, sortValue, entityType, entityId, }: {
38
- tagName: string;
39
- group?: string;
40
- sortValue?: string;
41
- entityType: EntityType;
42
- entityId: string;
43
- }): Promise<void>;
44
- createTag<T extends EntityType>({ tagName, group, sortValue, entity, }: {
45
- tagName: string;
46
- group?: string;
47
- sortValue?: string;
48
- entity: Entity<T>;
49
- }): Promise<TaggedEntity<T>>;
50
- listTags<T extends EntityType>({ entityType, tagName, limit, // if this is not set, it will return all items
51
- query, group, start, end, options, }: {
52
- entityType: T;
53
- tagName: string;
54
- limit?: number;
55
- start?: string;
56
- end?: string;
57
- query?: string;
58
- group?: string;
59
- options?: {
60
- lastKey?: string;
61
- ProjectionExpression?: ProjectionExpressionValues;
62
- };
63
- }): Promise<{
64
- items: Entity<T>[];
65
- totalCount?: number;
66
- lastKey?: string;
67
- }>;
68
- createLock({ entityType, entityId, }: {
69
- entityType: EntityType;
70
- entityId: string;
71
- }): Promise<void>;
72
- deleteLock({ entityType, entityId, }: {
73
- entityType: EntityType;
74
- entityId: string;
75
- }): Promise<void>;
76
- }
77
- //# sourceMappingURL=Tag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../data/Tag.ts"],"names":[],"mappings":"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"}
package/dist/data/Tag.js DELETED
@@ -1,329 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { marshall, unmarshall } from '@aws-sdk/util-dynamodb';
11
- import { StandardError, StandardErrorCode } from '../errors/standard-error';
12
- import { fromLastKeyQuery } from '../helpers/fromLastKeyQuery';
13
- import { toLastKeyResponse } from '../helpers/toLastKeyResponse';
14
- import { Entity } from './Entity';
15
- import { Repository } from './abstract/Repository.base';
16
- export class TaggedEntity extends Entity {
17
- constructor({ tagName, group, sortValue, entityType, entityId, data, createdAt, updatedAt, }) {
18
- super(entityType, entityId, data, createdAt, updatedAt);
19
- this.tagName = tagName;
20
- this.group = group;
21
- this.sortValue = sortValue;
22
- }
23
- static fromItem(item) {
24
- if (!item)
25
- throw new StandardError(StandardErrorCode.TAG_IS_UNDEFINED, 'Tag item empty');
26
- const parsedItem = unmarshall(item);
27
- return new TaggedEntity({
28
- tagName: parsedItem.tagName,
29
- group: parsedItem.group,
30
- sortValue: parsedItem.sortValue,
31
- entityType: parsedItem.entityType,
32
- entityId: parsedItem.entityId,
33
- data: parsedItem.data,
34
- createdAt: parsedItem.createdAt
35
- ? new Date(parsedItem.createdAt)
36
- : undefined,
37
- updatedAt: parsedItem.updatedAt
38
- ? new Date(parsedItem.updatedAt)
39
- : undefined,
40
- });
41
- }
42
- get pk() {
43
- return `TAG#${this.entityType}#${this.tagName}${this.group ? `#${this.group}` : ''}`;
44
- }
45
- get sk() {
46
- return `${this.sortValue ? `${this.sortValue}#` : ''}${this.entityType}#${this.entityId}`;
47
- }
48
- reversedKeys() {
49
- return {
50
- PK: { S: `${this.entityType}#${this.entityId}` },
51
- SK: {
52
- S: this.pk,
53
- },
54
- };
55
- }
56
- replicationKeys() {
57
- const keys = this.reversedKeys();
58
- return {
59
- R1PK: keys.PK,
60
- R1SK: keys.SK,
61
- };
62
- }
63
- toItem() {
64
- return Object.assign(Object.assign({}, marshall(this.toJSON(), { removeUndefinedValues: true })), this.keys());
65
- }
66
- toJSON() {
67
- return {
68
- tagName: this.tagName,
69
- group: this.group,
70
- sortValue: this.sortValue,
71
- entityType: this.entityType,
72
- entityId: this.entityId,
73
- data: this.data,
74
- createdAt: this.createdAt,
75
- updatedAt: this.updatedAt,
76
- };
77
- }
78
- }
79
- export class TagRepository extends Repository {
80
- constructor(TABLE_NAME, dynamodbClient) {
81
- super();
82
- this.TABLE_NAME = TABLE_NAME;
83
- this.dynamodbClient = dynamodbClient;
84
- }
85
- getExistingTags(_a) {
86
- return __awaiter(this, arguments, void 0, function* ({ entityType, entityId, tagName, }) {
87
- const PK = `${entityType}#${entityId}`;
88
- const SK = `TAG#${entityType}#${tagName}`;
89
- const results = yield this.dynamodbClient.query({
90
- TableName: this.TABLE_NAME,
91
- KeyConditionExpression: '#PK = :PK and begins_with(#SK, :SK)',
92
- ExpressionAttributeNames: {
93
- '#PK': 'PK',
94
- '#SK': 'SK',
95
- },
96
- ExpressionAttributeValues: {
97
- ':PK': { S: PK },
98
- ':SK': { S: SK },
99
- },
100
- });
101
- return (results.Items || []).map((item) => {
102
- return TaggedEntity.fromItem(item);
103
- });
104
- });
105
- }
106
- deleteTag(_a) {
107
- return __awaiter(this, arguments, void 0, function* ({ tagName, group, sortValue, entityType, entityId, }) {
108
- const tag = new TaggedEntity({
109
- tagName,
110
- group,
111
- sortValue,
112
- entityType,
113
- entityId,
114
- });
115
- yield Promise.all([
116
- this.dynamodbClient.deleteItem({
117
- TableName: this.TABLE_NAME,
118
- Key: tag.keys(),
119
- }),
120
- this.dynamodbClient.deleteItem({
121
- TableName: this.TABLE_NAME,
122
- Key: tag.reversedKeys(),
123
- }),
124
- ]);
125
- return;
126
- });
127
- }
128
- createTag(_a) {
129
- return __awaiter(this, arguments, void 0, function* ({ tagName, group, sortValue, entity, }) {
130
- if (!entity.entityId) {
131
- throw new StandardError(StandardErrorCode.ENTITY_ID_IS_UNDEFINED, 'entityId is undefined');
132
- }
133
- const tag = new TaggedEntity({
134
- tagName,
135
- group,
136
- sortValue,
137
- entityType: entity.entityType,
138
- entityId: entity.entityId,
139
- data: entity.data,
140
- createdAt: entity.createdAt ? new Date(entity.createdAt) : new Date(),
141
- updatedAt: entity.updatedAt ? new Date(entity.updatedAt) : new Date(),
142
- });
143
- yield Promise.all([
144
- this.dynamodbClient.putItem({
145
- TableName: this.TABLE_NAME,
146
- Item: Object.assign(Object.assign({}, tag.toItem()), tag.replicationKeys()),
147
- }),
148
- this.dynamodbClient.putItem({
149
- TableName: this.TABLE_NAME,
150
- Item: Object.assign(Object.assign(Object.assign({}, marshall({
151
- tagName,
152
- group,
153
- sortValue,
154
- }, { removeUndefinedValues: true })), tag.reversedKeys()), tag.replicationKeys()),
155
- }),
156
- ]);
157
- return tag;
158
- });
159
- }
160
- listTags(_a) {
161
- return __awaiter(this, arguments, void 0, function* ({ entityType, tagName, limit, // if this is not set, it will return all items
162
- query, group, start, end, options = {}, }) {
163
- var _b, _c, _d;
164
- const errorContext = {
165
- entityType,
166
- tagName,
167
- limit,
168
- query,
169
- group,
170
- start,
171
- end,
172
- options,
173
- };
174
- const tag = new TaggedEntity({
175
- tagName,
176
- entityType,
177
- entityId: '',
178
- group,
179
- });
180
- let expression = null;
181
- if (query && !start && !end) {
182
- expression = {
183
- KeyConditionExpression: '#PK = :PK and begins_with(#SK, :SK)',
184
- ExpressionAttributeNames: {
185
- '#PK': 'PK',
186
- '#SK': 'SK',
187
- },
188
- ExpressionAttributeValues: {
189
- ':PK': {
190
- S: tag.pk,
191
- },
192
- ':SK': {
193
- S: `${query}#`,
194
- },
195
- },
196
- };
197
- }
198
- else if (start && end) {
199
- expression = {
200
- KeyConditionExpression: '#PK = :PK and #SK between :SKStart and :SKEnd',
201
- ExpressionAttributeNames: {
202
- '#PK': 'PK',
203
- '#SK': 'SK',
204
- },
205
- ExpressionAttributeValues: {
206
- ':PK': {
207
- S: tag.pk,
208
- },
209
- ':SKStart': {
210
- S: `${start}#`,
211
- },
212
- ':SKEnd': {
213
- S: `${end}#`,
214
- },
215
- },
216
- };
217
- }
218
- else if (start && !end) {
219
- expression = {
220
- KeyConditionExpression: '#PK = :PK and #SK >= :SK',
221
- ExpressionAttributeNames: {
222
- '#PK': 'PK',
223
- '#SK': 'SK',
224
- },
225
- ExpressionAttributeValues: {
226
- ':PK': {
227
- S: tag.pk,
228
- },
229
- ':SK': {
230
- S: `${start}#`,
231
- },
232
- },
233
- };
234
- }
235
- else if (!start && end) {
236
- expression = {
237
- KeyConditionExpression: '#PK = :PK and #SK <= :SK',
238
- ExpressionAttributeNames: {
239
- '#PK': 'PK',
240
- '#SK': 'SK',
241
- },
242
- ExpressionAttributeValues: {
243
- ':PK': {
244
- S: tag.pk,
245
- },
246
- ':SK': {
247
- S: `${end}#`,
248
- },
249
- },
250
- };
251
- }
252
- else if (group && !query && !start && !end) {
253
- expression = {
254
- KeyConditionExpression: '#PK = :PK',
255
- ExpressionAttributeNames: {
256
- '#PK': 'PK',
257
- },
258
- ExpressionAttributeValues: {
259
- ':PK': {
260
- S: tag.pk,
261
- },
262
- },
263
- };
264
- }
265
- if (!expression) {
266
- throw new StandardError(StandardErrorCode.INVALID_QUERY, 'Invalid query. Please provide a valid query', null, errorContext);
267
- }
268
- const defaultListQuery = Object.assign({ TableName: this.TABLE_NAME, Limit: limit, ScanIndexForward: false, ProjectionExpression: options === null || options === void 0 ? void 0 : options.ProjectionExpression }, expression);
269
- let lastKey = options.lastKey;
270
- let items = [];
271
- let remainingCount = limit !== null && limit !== void 0 ? limit : 0;
272
- do {
273
- const resp = yield this.dynamodbClient.query(Object.assign(Object.assign(Object.assign({}, defaultListQuery), (remainingCount && { Limit: remainingCount })), (lastKey && {
274
- ExclusiveStartKey: fromLastKeyQuery(lastKey),
275
- })));
276
- items = items.concat((_b = resp.Items) !== null && _b !== void 0 ? _b : []);
277
- lastKey = toLastKeyResponse(resp.LastEvaluatedKey);
278
- if (limit) {
279
- remainingCount = remainingCount - ((_d = (_c = resp.Items) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0);
280
- }
281
- } while (
282
- // limit is given, haven't reach limit, and there are still items to retrieve
283
- (limit && remainingCount && lastKey) ||
284
- // no limit is given and there are still items to retrieve
285
- (!limit && lastKey));
286
- return {
287
- items: (items || []).map((Entity.fromItem)),
288
- totalCount: items.length,
289
- lastKey,
290
- };
291
- });
292
- }
293
- createLock(_a) {
294
- return __awaiter(this, arguments, void 0, function* ({ entityType, entityId, }) {
295
- const oneMinuteLater = Math.floor(new Date().getTime() / 1000 + 1 * 60);
296
- yield this.dynamodbClient.putItem({
297
- TableName: this.TABLE_NAME,
298
- Item: {
299
- PK: { S: `TAG#${entityType}#${entityId}` },
300
- SK: { S: '#LOCK#' },
301
- expiresAt: {
302
- // auto delete lock after 1 minute
303
- N: `${oneMinuteLater}`,
304
- },
305
- },
306
- ConditionExpression: 'attribute_not_exists(PK)',
307
- });
308
- return;
309
- });
310
- }
311
- deleteLock(_a) {
312
- return __awaiter(this, arguments, void 0, function* ({ entityType, entityId, }) {
313
- try {
314
- yield this.dynamodbClient.deleteItem({
315
- TableName: this.TABLE_NAME,
316
- Key: {
317
- PK: { S: `TAG#${entityType}#${entityId}` },
318
- SK: { S: '#LOCK#' },
319
- },
320
- });
321
- return;
322
- }
323
- catch (error) {
324
- // if lock is not found, it's okay
325
- }
326
- });
327
- }
328
- }
329
- //# sourceMappingURL=Tag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tag.js","sourceRoot":"","sources":["../../data/Tag.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { AttributeValue } from '@aws-sdk/client-dynamodb';
2
- export declare abstract class Item {
3
- abstract get pk(): string;
4
- abstract get sk(): string;
5
- abstract get createdAt(): string | undefined;
6
- abstract get updatedAt(): string | undefined;
7
- keys(): Record<string, AttributeValue>;
8
- abstract toItem(): Record<string, AttributeValue>;
9
- abstract toJSON(): Record<string, unknown>;
10
- }
11
- //# sourceMappingURL=Item.base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Item.base.d.ts","sourceRoot":"","sources":["../../../data/abstract/Item.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,8BAAsB,IAAI;IACxB,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC;IAC1B,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC;IAC1B,QAAQ,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC;IAEtC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAO7C,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAEjD,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAC3C"}
@@ -1,9 +0,0 @@
1
- export class Item {
2
- keys() {
3
- return {
4
- PK: { S: this.pk },
5
- SK: { S: this.sk },
6
- };
7
- }
8
- }
9
- //# sourceMappingURL=Item.base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Item.base.js","sourceRoot":"","sources":["../../../data/abstract/Item.base.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,IAAI;IAMjB,IAAI;QACT,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;YAClB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;CAKF"}
@@ -1,11 +0,0 @@
1
- import type { AttributeValue } from '@aws-sdk/client-dynamodb';
2
- export declare abstract class Repository {
3
- toUpdate(parsedUpdateData: Record<string, unknown>, opts?: {
4
- maxLevel?: number;
5
- }): {
6
- UpdateExpression: string;
7
- ExpressionAttributeNames: Record<string, string>;
8
- ExpressionAttributeValues: Record<string, AttributeValue>;
9
- };
10
- }
11
- //# sourceMappingURL=Repository.base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Repository.base.d.ts","sourceRoot":"","sources":["../../../data/abstract/Repository.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAsC/D,8BAAsB,UAAU;IAC9B,QAAQ,CACN,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,IAAI,CAAC,EAAE;QAIL,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA;QACD,gBAAgB,EAAE,MAAM,CAAC;QACzB,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAC3D;CAwCF"}
@@ -1,51 +0,0 @@
1
- import { marshall } from '@aws-sdk/util-dynamodb';
2
- function flattenObject(obj, parentKey = '', result = {}, level = 1, opts) {
3
- var _a;
4
- const MAX_LEVEL = (_a = opts === null || opts === void 0 ? void 0 : opts.maxLevel) !== null && _a !== void 0 ? _a : 2;
5
- for (const key in obj) {
6
- if (obj.hasOwnProperty(key)) {
7
- const propName = parentKey ? `${parentKey}.${key}` : key;
8
- if (typeof obj[key] === 'object' &&
9
- obj[key] !== null &&
10
- !Array.isArray(obj[key]) &&
11
- level < MAX_LEVEL) {
12
- flattenObject(obj[key], propName, result, level + 1, opts);
13
- }
14
- else {
15
- result[propName] = obj[key];
16
- }
17
- }
18
- }
19
- return result;
20
- }
21
- export class Repository {
22
- toUpdate(parsedUpdateData, opts) {
23
- const flattenedData = flattenObject(parsedUpdateData, '', {}, 1, opts);
24
- let updateExpression = '';
25
- const expressionAttributeNames = {};
26
- const expressionAttributeValues = {};
27
- for (const key in flattenedData) {
28
- if (updateExpression.length > 0) {
29
- updateExpression += ', ';
30
- }
31
- const attributePath = key
32
- .split('.')
33
- .map((part) => `#${part}`)
34
- .join('.');
35
- const valuePlaceholder = `:${key.replace(/\./g, '_')}`;
36
- updateExpression += `${attributePath} = ${valuePlaceholder}`;
37
- key.split('.').forEach((part) => {
38
- expressionAttributeNames[`#${part}`] = part;
39
- });
40
- expressionAttributeValues[valuePlaceholder] = flattenedData[key];
41
- }
42
- updateExpression = `SET ${updateExpression}`;
43
- const updateAttributes = {
44
- UpdateExpression: updateExpression,
45
- ExpressionAttributeNames: Object.assign({}, expressionAttributeNames),
46
- ExpressionAttributeValues: Object.assign({}, marshall(expressionAttributeValues)),
47
- };
48
- return updateAttributes;
49
- }
50
- }
51
- //# sourceMappingURL=Repository.base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Repository.base.js","sourceRoot":"","sources":["../../../data/abstract/Repository.base.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,SAAS,aAAa,CACpB,GAA4B,EAC5B,SAAS,GAAG,EAAE,EACd,SAAkC,EAAE,EACpC,KAAK,GAAG,CAAC,EACT,IAEC;;IAED,MAAM,SAAS,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,mCAAI,CAAC,CAAC;IAEtC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACzD,IACE,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;gBACjB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxB,KAAK,GAAG,SAAS,EACjB,CAAC;gBACD,aAAa,CACX,GAAG,CAAC,GAAG,CAA4B,EACnC,QAAQ,EACR,MAAM,EACN,KAAK,GAAG,CAAC,EACT,IAAI,CACL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAgB,UAAU;IAC9B,QAAQ,CACN,gBAAyC,EACzC,IAKC;QAMD,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAEvE,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,MAAM,wBAAwB,GAA2B,EAAE,CAAC;QAC5D,MAAM,yBAAyB,GAA4B,EAAE,CAAC;QAE9D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,gBAAgB,IAAI,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,aAAa,GAAG,GAAG;iBACtB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAEvD,gBAAgB,IAAI,GAAG,aAAa,MAAM,gBAAgB,EAAE,CAAC;YAE7D,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9B,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,gBAAgB,GAAG,OAAO,gBAAgB,EAAE,CAAC;QAE7C,MAAM,gBAAgB,GAAG;YACvB,gBAAgB,EAAE,gBAAgB;YAClC,wBAAwB,oBACnB,wBAAwB,CAC5B;YACD,yBAAyB,oBACpB,QAAQ,CAAC,yBAAyB,CAAC,CACvC;SACF,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF"}
@@ -1,23 +0,0 @@
1
- import ExtendableError from './extendable-error';
2
- /**
3
- * Class representing an API error.
4
- * @extends ExtendableError
5
- */
6
- declare class APIError extends ExtendableError {
7
- /**
8
- * Creates an API error.
9
- * @param {string} message - Error message.
10
- * @param {number} status - HTTP status code of error.
11
- * @param {boolean} isPublic - Whether the message should be visible to user or not.
12
- * @param {string | undefined} stack - Stack trace.
13
- */
14
- constructor({ message, errors, stack, status, isPublic, }: {
15
- message: string;
16
- errors?: any;
17
- stack?: string;
18
- status?: number;
19
- isPublic?: boolean;
20
- });
21
- }
22
- export default APIError;
23
- //# sourceMappingURL=api-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-error.d.ts","sourceRoot":"","sources":["../../errors/api-error.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD;;;GAGG;AACH,cAAM,QAAS,SAAQ,eAAe;IACpC;;;;;;OAMG;gBACS,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAyC,EACzC,QAAgB,GACjB,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;CASF;AAED,eAAe,QAAQ,CAAC"}
@@ -1,26 +0,0 @@
1
- import * as httpStatus from 'http-status';
2
- import ExtendableError from './extendable-error';
3
- /**
4
- * Class representing an API error.
5
- * @extends ExtendableError
6
- */
7
- class APIError extends ExtendableError {
8
- /**
9
- * Creates an API error.
10
- * @param {string} message - Error message.
11
- * @param {number} status - HTTP status code of error.
12
- * @param {boolean} isPublic - Whether the message should be visible to user or not.
13
- * @param {string | undefined} stack - Stack trace.
14
- */
15
- constructor({ message, errors, stack, status = httpStatus.INTERNAL_SERVER_ERROR, isPublic = false, }) {
16
- super({
17
- message,
18
- errors,
19
- status,
20
- isPublic,
21
- stack,
22
- });
23
- }
24
- }
25
- export default APIError;
26
- //# sourceMappingURL=api-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-error.js","sourceRoot":"","sources":["../../errors/api-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAC1C,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAEjD;;;GAGG;AACH,MAAM,QAAS,SAAQ,eAAe;IACpC;;;;;;OAMG;IACH,YAAY,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,GAAG,UAAU,CAAC,qBAAqB,EACzC,QAAQ,GAAG,KAAK,GAOjB;QACC,KAAK,CAAC;YACJ,OAAO;YACP,MAAM;YACN,MAAM;YACN,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,QAAQ,CAAC"}
@@ -1,18 +0,0 @@
1
- declare class ExtendableError extends Error {
2
- name: string;
3
- message: string;
4
- errors: any;
5
- status: number;
6
- isPublic: boolean;
7
- isOperational: boolean;
8
- stack?: string;
9
- constructor({ message, errors, status, isPublic, stack, }: {
10
- message: string;
11
- errors?: any;
12
- status?: number;
13
- isPublic?: boolean;
14
- stack?: string;
15
- });
16
- }
17
- export default ExtendableError;
18
- //# sourceMappingURL=extendable-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extendable-error.d.ts","sourceRoot":"","sources":["../../errors/extendable-error.ts"],"names":[],"mappings":"AAAA,cAAM,eAAgB,SAAQ,KAAK;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEV,EACV,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,GACN,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CAWF;AAED,eAAe,eAAe,CAAC"}
@@ -1,15 +0,0 @@
1
- class ExtendableError extends Error {
2
- constructor({ message, errors, status, isPublic, stack, }) {
3
- super(message);
4
- this.name = this.constructor.name;
5
- this.message = message;
6
- this.errors = errors;
7
- this.status = status || 500; // Default value if status is not provided
8
- this.isPublic = isPublic || false; // Default value if isPublic is not provided
9
- this.isOperational = true; // This is required since bluebird 4 doesn't append it anymore.
10
- this.stack = stack;
11
- // Error.captureStackTrace(this, this.constructor.name);
12
- }
13
- }
14
- export default ExtendableError;
15
- //# sourceMappingURL=extendable-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extendable-error.js","sourceRoot":"","sources":["../../errors/extendable-error.ts"],"names":[],"mappings":"AAAA,MAAM,eAAgB,SAAQ,KAAK;IASjC,YAAY,EACV,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,KAAK,GAON;QACC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,0CAA0C;QACvE,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC,CAAC,4CAA4C;QAC/E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,+DAA+D;QAC1F,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,wDAAwD;IAC1D,CAAC;CACF;AAED,eAAe,eAAe,CAAC"}