@forge/storage 0.0.0-experimental-d18f8dd → 0.0.0-experimental-bacec77

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 (40) hide show
  1. package/out/__test__/global-storage.test.js +292 -11
  2. package/out/__test__/list-api.test.js +584 -2
  3. package/out/eap/conditions.d.ts +40 -0
  4. package/out/eap/conditions.d.ts.map +1 -0
  5. package/out/eap/conditions.js +112 -0
  6. package/out/eap/index.d.ts +2 -0
  7. package/out/eap/index.d.ts.map +1 -0
  8. package/out/eap/index.js +4 -0
  9. package/out/entity-storage/index.d.ts +2 -0
  10. package/out/entity-storage/index.d.ts.map +1 -0
  11. package/out/entity-storage/index.js +5 -0
  12. package/out/entity-storage/query-api.d.ts +49 -0
  13. package/out/entity-storage/query-api.d.ts.map +1 -0
  14. package/out/entity-storage/query-api.js +122 -0
  15. package/out/entity-storage/storage-builder.d.ts +20 -0
  16. package/out/entity-storage/storage-builder.d.ts.map +1 -0
  17. package/out/entity-storage/storage-builder.js +23 -0
  18. package/out/errors.js +6 -4
  19. package/out/global-storage.d.ts +9 -3
  20. package/out/global-storage.d.ts.map +1 -1
  21. package/out/global-storage.js +45 -14
  22. package/out/gql-queries.d.ts +106 -0
  23. package/out/gql-queries.d.ts.map +1 -0
  24. package/out/gql-queries.js +244 -0
  25. package/out/index.d.ts +6 -1
  26. package/out/index.d.ts.map +1 -1
  27. package/out/index.js +10 -3
  28. package/out/query-api.d.ts +2 -2
  29. package/out/query-api.d.ts.map +1 -1
  30. package/out/query-api.js +2 -6
  31. package/out/query-interfaces.d.ts +121 -0
  32. package/out/query-interfaces.d.ts.map +1 -0
  33. package/out/query-interfaces.js +8 -0
  34. package/out/storage-adapter.d.ts +28 -6
  35. package/out/storage-adapter.d.ts.map +1 -1
  36. package/package.json +3 -3
  37. package/CHANGELOG.md +0 -108
  38. package/out/queries.d.ts +0 -58
  39. package/out/queries.d.ts.map +0 -1
  40. package/out/queries.js +0 -119
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterConditions = exports.WhereConditions = exports.isIn = exports.isNotEqualTo = void 0;
4
+ function isNotEqualTo(value) {
5
+ return {
6
+ condition: 'NOT_EQUAL_TO',
7
+ value
8
+ };
9
+ }
10
+ exports.isNotEqualTo = isNotEqualTo;
11
+ function isIn(values) {
12
+ return {
13
+ condition: 'IN',
14
+ value: values
15
+ };
16
+ }
17
+ exports.isIn = isIn;
18
+ function beginsWith(value) {
19
+ return {
20
+ condition: 'BEGINS_WITH',
21
+ values: [value]
22
+ };
23
+ }
24
+ function between(values) {
25
+ return {
26
+ condition: 'BETWEEN',
27
+ values
28
+ };
29
+ }
30
+ function exists() {
31
+ return {
32
+ condition: 'EXISTS',
33
+ values: [true]
34
+ };
35
+ }
36
+ function doesNotExist() {
37
+ return {
38
+ condition: 'NOT_EXISTS',
39
+ values: [true]
40
+ };
41
+ }
42
+ function isGreaterThan(value) {
43
+ return {
44
+ condition: 'GREATER_THAN',
45
+ values: [value]
46
+ };
47
+ }
48
+ function isGreaterThanEqualTo(value) {
49
+ return {
50
+ condition: 'GREATER_THAN_EQUAL_TO',
51
+ values: [value]
52
+ };
53
+ }
54
+ function isLessThan(value) {
55
+ return {
56
+ condition: 'LESS_THAN',
57
+ values: [value]
58
+ };
59
+ }
60
+ function isLessThanEqualTo(value) {
61
+ return {
62
+ condition: 'LESS_THAN_EQUAL_TO',
63
+ values: [value]
64
+ };
65
+ }
66
+ function contains(value) {
67
+ return {
68
+ condition: 'CONTAINS',
69
+ values: [value]
70
+ };
71
+ }
72
+ function doesNotContain(value) {
73
+ return {
74
+ condition: 'NOT_CONTAINS',
75
+ values: [value]
76
+ };
77
+ }
78
+ function equalsTo(value) {
79
+ return {
80
+ condition: 'EQUAL_TO',
81
+ values: [value]
82
+ };
83
+ }
84
+ function notEqualsTo(value) {
85
+ return {
86
+ condition: 'NOT_EQUAL_TO',
87
+ values: [value]
88
+ };
89
+ }
90
+ exports.WhereConditions = {
91
+ beginsWith,
92
+ between,
93
+ equalsTo,
94
+ isGreaterThan,
95
+ isGreaterThanEqualTo,
96
+ isLessThan,
97
+ isLessThanEqualTo
98
+ };
99
+ exports.FilterConditions = {
100
+ beginsWith,
101
+ between,
102
+ contains,
103
+ doesNotContain,
104
+ equalsTo,
105
+ notEqualsTo,
106
+ exists,
107
+ doesNotExist,
108
+ isGreaterThan,
109
+ isGreaterThanEqualTo,
110
+ isLessThan,
111
+ isLessThanEqualTo
112
+ };
@@ -0,0 +1,2 @@
1
+ export * from './conditions';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eap/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./conditions"), exports);
@@ -0,0 +1,2 @@
1
+ export { EntityStorageBuilder, EntityStorageBuilderType } from './storage-builder';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityStorageBuilder = void 0;
4
+ var storage_builder_1 = require("./storage-builder");
5
+ Object.defineProperty(exports, "EntityStorageBuilder", { enumerable: true, get: function () { return storage_builder_1.EntityStorageBuilder; } });
@@ -0,0 +1,49 @@
1
+ import { GlobalStorage } from '../global-storage';
2
+ import { CustomEntityPartitionValue, CustomEntityListOptions, SortOrder } from '../query-interfaces';
3
+ import { Result, ListResult, WherePredicate, FilterPredicate } from '../storage-adapter';
4
+ declare class CustomEntityQueryBuilder {
5
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
6
+ protected queryOptions: CustomEntityListOptions;
7
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
8
+ private clone;
9
+ partition(name: CustomEntityPartitionValue[]): this;
10
+ where(condition: WherePredicate): this;
11
+ sortOrder(sort: SortOrder): this;
12
+ cursor(cursor: string): this;
13
+ limit(limit: number): this;
14
+ getOne(): Promise<Result | undefined>;
15
+ getMany(): Promise<ListResult>;
16
+ }
17
+ declare class CustomEntityAndFilterQueryBuilder extends CustomEntityQueryBuilder {
18
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
19
+ protected queryOptions: CustomEntityListOptions;
20
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
21
+ andFilter(field: string, condition: FilterPredicate): CustomEntityAndFilterQueryBuilder;
22
+ }
23
+ declare class CustomEntityOrFilterQueryBuilder extends CustomEntityQueryBuilder {
24
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
25
+ protected queryOptions: CustomEntityListOptions;
26
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
27
+ orFilter(field: string, condition: FilterPredicate): CustomEntityOrFilterQueryBuilder;
28
+ }
29
+ declare class CustomEntityFilterQueryBuilder extends CustomEntityQueryBuilder {
30
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
31
+ protected queryOptions: CustomEntityListOptions;
32
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
33
+ andFilter(field: string, condition: FilterPredicate): CustomEntityAndFilterQueryBuilder;
34
+ orFilter(field: string, condition: FilterPredicate): CustomEntityOrFilterQueryBuilder;
35
+ }
36
+ export declare class CustomEntityIndexBuilder {
37
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
38
+ protected queryOptions: CustomEntityListOptions;
39
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
40
+ index(name: string): CustomEntityFilterQueryBuilder;
41
+ }
42
+ export declare class CustomEntityBuilder {
43
+ protected globalStorage: Pick<GlobalStorage, 'listCustomEntities'>;
44
+ protected queryOptions: CustomEntityListOptions;
45
+ constructor(globalStorage: Pick<GlobalStorage, 'listCustomEntities'>, queryOptions?: CustomEntityListOptions);
46
+ entity(name: string): CustomEntityIndexBuilder;
47
+ }
48
+ export {};
49
+ //# sourceMappingURL=query-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-api.d.ts","sourceRoot":"","sources":["../../src/entity-storage/query-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEzF,cAAM,wBAAwB;IAE1B,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAOtD,OAAO,CAAC,KAAK;IAOb,SAAS,CAAC,IAAI,EAAE,0BAA0B,EAAE,GAAG,IAAI;IAMnD,KAAK,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAQtC,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAMhC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpB,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQrC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;CAkBrC;AAED,cAAM,iCAAkC,SAAQ,wBAAwB;IAEpE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAQtD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,iCAAiC;CAUxF;AAED,cAAM,gCAAiC,SAAQ,wBAAwB;IAEnE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAQtD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,gCAAgC;CAUtF;AAED,cAAM,8BAA+B,SAAQ,wBAAwB;IAEjE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAQtD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,iCAAiC;IAIvF,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,gCAAgC;CAGtF;AAED,qBAAa,wBAAwB;IAEjC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAOtD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,8BAA8B;CAMpD;AAED,qBAAa,mBAAmB;IAE5B,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAClE,SAAS,CAAC,YAAY,EAAE,uBAAuB;gBADrC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,oBAAoB,CAAC,EACxD,YAAY,GAAE,uBAA4B;IAOtD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB;CAM/C"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomEntityBuilder = exports.CustomEntityIndexBuilder = void 0;
4
+ class CustomEntityQueryBuilder {
5
+ constructor(globalStorage, queryOptions = {}) {
6
+ this.globalStorage = globalStorage;
7
+ this.queryOptions = queryOptions;
8
+ this.queryOptions = Object.assign({}, queryOptions);
9
+ }
10
+ clone(overrides) {
11
+ return new (Object.getPrototypeOf(this).constructor)(this.globalStorage, Object.assign(Object.assign({}, this.queryOptions), overrides));
12
+ }
13
+ partition(name) {
14
+ return this.clone({
15
+ partition: name
16
+ });
17
+ }
18
+ where(condition) {
19
+ return this.clone({
20
+ range: Object.assign({}, condition)
21
+ });
22
+ }
23
+ sortOrder(sort) {
24
+ return this.clone({
25
+ sort
26
+ });
27
+ }
28
+ cursor(cursor) {
29
+ return this.clone({
30
+ cursor
31
+ });
32
+ }
33
+ limit(limit) {
34
+ return this.clone({
35
+ limit
36
+ });
37
+ }
38
+ async getOne() {
39
+ const { results } = await this.limit(1).getMany();
40
+ if (results && results.length > 0) {
41
+ return results[0];
42
+ }
43
+ }
44
+ async getMany() {
45
+ if (!this.queryOptions.entityName) {
46
+ throw new Error('entityName is mandatory');
47
+ }
48
+ if (!this.queryOptions.indexName) {
49
+ throw new Error('indexName is mandatory');
50
+ }
51
+ if (!this.queryOptions.filterOperator && this.queryOptions.filters) {
52
+ this.queryOptions.filterOperator = 'and';
53
+ }
54
+ return this.globalStorage.listCustomEntities(this.queryOptions);
55
+ }
56
+ }
57
+ class CustomEntityAndFilterQueryBuilder extends CustomEntityQueryBuilder {
58
+ constructor(globalStorage, queryOptions = {}) {
59
+ super(globalStorage, queryOptions);
60
+ this.globalStorage = globalStorage;
61
+ this.queryOptions = queryOptions;
62
+ this.queryOptions = Object.assign({}, queryOptions);
63
+ }
64
+ andFilter(field, condition) {
65
+ var _a;
66
+ const newQueryOptions = Object.assign({}, this.queryOptions);
67
+ newQueryOptions.filters = [...((_a = this.queryOptions.filters) !== null && _a !== void 0 ? _a : []), Object.assign({ property: field }, condition)];
68
+ newQueryOptions.filterOperator = 'and';
69
+ return new CustomEntityAndFilterQueryBuilder(this.globalStorage, newQueryOptions);
70
+ }
71
+ }
72
+ class CustomEntityOrFilterQueryBuilder extends CustomEntityQueryBuilder {
73
+ constructor(globalStorage, queryOptions = {}) {
74
+ super(globalStorage, queryOptions);
75
+ this.globalStorage = globalStorage;
76
+ this.queryOptions = queryOptions;
77
+ this.queryOptions = Object.assign({}, queryOptions);
78
+ }
79
+ orFilter(field, condition) {
80
+ var _a;
81
+ const newQueryOptions = Object.assign({}, this.queryOptions);
82
+ newQueryOptions.filters = [...((_a = this.queryOptions.filters) !== null && _a !== void 0 ? _a : []), Object.assign({ property: field }, condition)];
83
+ newQueryOptions.filterOperator = 'or';
84
+ return new CustomEntityOrFilterQueryBuilder(this.globalStorage, newQueryOptions);
85
+ }
86
+ }
87
+ class CustomEntityFilterQueryBuilder extends CustomEntityQueryBuilder {
88
+ constructor(globalStorage, queryOptions = {}) {
89
+ super(globalStorage, queryOptions);
90
+ this.globalStorage = globalStorage;
91
+ this.queryOptions = queryOptions;
92
+ this.queryOptions = Object.assign({}, queryOptions);
93
+ }
94
+ andFilter(field, condition) {
95
+ return new CustomEntityAndFilterQueryBuilder(this.globalStorage, this.queryOptions).andFilter(field, condition);
96
+ }
97
+ orFilter(field, condition) {
98
+ return new CustomEntityOrFilterQueryBuilder(this.globalStorage, this.queryOptions).orFilter(field, condition);
99
+ }
100
+ }
101
+ class CustomEntityIndexBuilder {
102
+ constructor(globalStorage, queryOptions = {}) {
103
+ this.globalStorage = globalStorage;
104
+ this.queryOptions = queryOptions;
105
+ this.queryOptions = Object.assign({}, queryOptions);
106
+ }
107
+ index(name) {
108
+ return new CustomEntityFilterQueryBuilder(this.globalStorage, Object.assign(Object.assign({}, this.queryOptions), { indexName: name }));
109
+ }
110
+ }
111
+ exports.CustomEntityIndexBuilder = CustomEntityIndexBuilder;
112
+ class CustomEntityBuilder {
113
+ constructor(globalStorage, queryOptions = {}) {
114
+ this.globalStorage = globalStorage;
115
+ this.queryOptions = queryOptions;
116
+ this.queryOptions = Object.assign({}, queryOptions);
117
+ }
118
+ entity(name) {
119
+ return new CustomEntityIndexBuilder(this.globalStorage, Object.assign(Object.assign({}, this.queryOptions), { entityName: name }));
120
+ }
121
+ }
122
+ exports.CustomEntityBuilder = CustomEntityBuilder;
@@ -0,0 +1,20 @@
1
+ import { GlobalStorage } from '../global-storage';
2
+ import { CustomEntityIndexBuilder } from './query-api';
3
+ declare type EntityGLobalStorage = Pick<GlobalStorage, 'setEntity' | 'getEntity' | 'deleteEntity' | 'listCustomEntities'>;
4
+ export interface EntityStorageBuilderType {
5
+ query<T>(): CustomEntityIndexBuilder;
6
+ get<T>(entityKey: string): Promise<T>;
7
+ set<T>(entityKey: string, value: T): Promise<void>;
8
+ delete(entityKey: string): Promise<void>;
9
+ }
10
+ export declare class EntityStorageBuilder implements EntityStorageBuilderType {
11
+ private entityName;
12
+ private globalStorage;
13
+ constructor(entityName: string, globalStorage: EntityGLobalStorage);
14
+ query<T>(): CustomEntityIndexBuilder;
15
+ get<T>(entityKey: string): Promise<T>;
16
+ set<T>(entityKey: string, value: T): Promise<void>;
17
+ delete(entityKey: string): Promise<void>;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=storage-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-builder.d.ts","sourceRoot":"","sources":["../../src/entity-storage/storage-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAuB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5E,aAAK,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,oBAAoB,CAAC,CAAC;AAClH,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,CAAC,KAAK,wBAAwB,CAAC;IACrC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,qBAAa,oBAAqB,YAAW,wBAAwB;IACvD,OAAO,CAAC,UAAU;IAAU,OAAO,CAAC,aAAa;gBAAzC,UAAU,EAAE,MAAM,EAAU,aAAa,EAAE,mBAAmB;IAElF,KAAK,CAAC,CAAC,KAAK,wBAAwB;IAIpC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityStorageBuilder = void 0;
4
+ const query_api_1 = require("./query-api");
5
+ class EntityStorageBuilder {
6
+ constructor(entityName, globalStorage) {
7
+ this.entityName = entityName;
8
+ this.globalStorage = globalStorage;
9
+ }
10
+ query() {
11
+ return new query_api_1.CustomEntityBuilder(this.globalStorage).entity(this.entityName);
12
+ }
13
+ get(entityKey) {
14
+ return this.globalStorage.getEntity(this.entityName, entityKey);
15
+ }
16
+ set(entityKey, value) {
17
+ return this.globalStorage.setEntity(this.entityName, entityKey, value);
18
+ }
19
+ delete(entityKey) {
20
+ return this.globalStorage.deleteEntity(this.entityName, entityKey);
21
+ }
22
+ }
23
+ exports.EntityStorageBuilder = EntityStorageBuilder;
package/out/errors.js CHANGED
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.APIError = exports.getErrorMessage = exports.getErrorMessageFromCode = void 0;
4
- exports.getErrorMessageFromCode = (code, message) => {
4
+ const getErrorMessageFromCode = (code, message) => {
5
5
  return message !== null && message !== void 0 ? message : code;
6
6
  };
7
- exports.getErrorMessage = (statusCode) => {
7
+ exports.getErrorMessageFromCode = getErrorMessageFromCode;
8
+ const getErrorMessage = (statusCode) => {
8
9
  switch (statusCode) {
9
10
  case 400:
10
11
  case 413:
@@ -22,15 +23,16 @@ exports.getErrorMessage = (statusCode) => {
22
23
  return `Unknown error. Received status code '${statusCode}'`;
23
24
  }
24
25
  };
26
+ exports.getErrorMessage = getErrorMessage;
25
27
  class APIError extends Error {
26
28
  constructor(message) {
27
29
  super(message);
28
30
  }
29
31
  static forStatus(status) {
30
- return new APIError(exports.getErrorMessage(status));
32
+ return new APIError((0, exports.getErrorMessage)(status));
31
33
  }
32
34
  static forErrorCode(code, message) {
33
- return new APIError(exports.getErrorMessageFromCode(code, message));
35
+ return new APIError((0, exports.getErrorMessageFromCode)(code, message));
34
36
  }
35
37
  static forUnexpected(message) {
36
38
  return new APIError(message);
@@ -1,6 +1,6 @@
1
1
  import { FetchMethod } from './index';
2
- import { ListOptions } from './queries';
3
- import { StorageAdapter } from './storage-adapter';
2
+ import { CustomEntityListOptions, CustomEntity, ListOptions } from './query-interfaces';
3
+ import { SharedStorageAdapter } from './storage-adapter';
4
4
  interface ListResults {
5
5
  results: {
6
6
  key: string;
@@ -8,7 +8,7 @@ interface ListResults {
8
8
  }[];
9
9
  nextCursor?: string;
10
10
  }
11
- export declare class GlobalStorage implements StorageAdapter {
11
+ export declare class GlobalStorage implements SharedStorageAdapter {
12
12
  private getAppContextAri;
13
13
  private apiClient;
14
14
  private readonly endpoint;
@@ -17,11 +17,17 @@ export declare class GlobalStorage implements StorageAdapter {
17
17
  get(key: string): Promise<any>;
18
18
  getSecret(key: string): Promise<any>;
19
19
  list(options: ListOptions): Promise<ListResults>;
20
+ listCustomEntities(options: CustomEntityListOptions): Promise<ListResults>;
20
21
  set(key: string, value: any): Promise<void>;
21
22
  setSecret(key: string, value: any): Promise<void>;
22
23
  delete(key: string): Promise<void>;
23
24
  deleteSecret(key: string): Promise<void>;
25
+ getEntity<T>(entityName: string, entityKey: string): Promise<T>;
26
+ setEntity<T>(entityName: string, entityKey: string, value: T): Promise<void>;
27
+ deleteEntity(entityName: string, entityKey: string): Promise<void>;
28
+ upsertCustomEntities(schemas: CustomEntity[]): Promise<void>;
24
29
  private getInternal;
30
+ private getEntityInternal;
25
31
  private buildRequest;
26
32
  private query;
27
33
  private mutation;
@@ -1 +1 @@
1
- {"version":3,"file":"global-storage.d.ts","sourceRoot":"","sources":["../src/global-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAA8C,WAAW,EAAuB,MAAM,WAAW,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,UAAU,WAAW;IACnB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4CD,qBAAa,aAAc,YAAW,cAAc;IAEtC,OAAO,CAAC,gBAAgB;IAA2B,OAAO,CAAC,SAAS;IADhF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;gBAClC,gBAAgB,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,EAAU,SAAS,EAAE,WAAW;IAE7F,OAAO,CAAC,kBAAkB;IAIpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAKhC,WAAW;IAUzB,OAAO,CAAC,YAAY;YAUN,KAAK;YAML,QAAQ;CAiBvB"}
1
+ {"version":3,"file":"global-storage.d.ts","sourceRoot":"","sources":["../src/global-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,SAAS,CAAC;AAInD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,UAAU,WAAW;IACnB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4CD,qBAAa,aAAc,YAAW,oBAAoB;IAE5C,OAAO,CAAC,gBAAgB;IAA2B,OAAO,CAAC,SAAS;IADhF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;gBAClC,gBAAgB,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,MAAM,EAAU,SAAS,EAAE,WAAW;IAE7F,OAAO,CAAC,kBAAkB;IAIpB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBhD,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAe1E,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/D,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlE,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAKpD,WAAW;YAUX,iBAAiB;IAU/B,OAAO,CAAC,YAAY;YAUN,KAAK;YAML,QAAQ;CAqBvB"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GlobalStorage = void 0;
4
4
  const errors_1 = require("./errors");
5
- const queries_1 = require("./queries");
5
+ const gql_queries_1 = require("./gql-queries");
6
6
  function assertNoErrors(errors) {
7
7
  if (errors && errors.length > 0) {
8
8
  const { message, extensions: { errorType } } = errors[0];
@@ -41,8 +41,8 @@ class GlobalStorage {
41
41
  }
42
42
  async list(options) {
43
43
  const requestBody = process.env.IS_CLEANUP_FUNCTION === 'true'
44
- ? queries_1.listQueryForCleanup(this.doGetAppContextAri(), options)
45
- : queries_1.listQuery(this.doGetAppContextAri(), options);
44
+ ? gql_queries_1.UntypedQueries.listQueryForCleanup(this.doGetAppContextAri(), options)
45
+ : gql_queries_1.UntypedQueries.listQuery(this.doGetAppContextAri(), options);
46
46
  const response = await this.query(requestBody);
47
47
  const edges = process.env.IS_CLEANUP_FUNCTION === 'true'
48
48
  ? response.appStoredEntitiesForCleanup.edges
@@ -54,27 +54,58 @@ class GlobalStorage {
54
54
  nextCursor
55
55
  };
56
56
  }
57
+ async listCustomEntities(options) {
58
+ const requestBody = gql_queries_1.CustomEntityQueries.listQuery(this.doGetAppContextAri(), options);
59
+ const response = await this.query(requestBody);
60
+ const edges = response.appStoredCustomEntities.edges;
61
+ const nextCursor = edges.length > 0 ? edges[edges.length - 1].cursor : undefined;
62
+ const results = edges.map(({ node }) => node);
63
+ return {
64
+ results,
65
+ nextCursor
66
+ };
67
+ }
57
68
  async set(key, value) {
58
- const requestBody = queries_1.setQuery(this.doGetAppContextAri(), key, value, false);
59
- await this.mutation(requestBody, 'setAppStoredEntity');
69
+ const requestBody = gql_queries_1.UntypedQueries.set(this.doGetAppContextAri(), key, value, false);
70
+ await this.mutation(requestBody, 'appStorage', 'setAppStoredEntity');
60
71
  }
61
72
  async setSecret(key, value) {
62
- const requestBody = queries_1.setQuery(this.doGetAppContextAri(), key, value, true);
63
- await this.mutation(requestBody, 'setAppStoredEntity');
73
+ const requestBody = gql_queries_1.UntypedQueries.set(this.doGetAppContextAri(), key, value, true);
74
+ await this.mutation(requestBody, 'appStorage', 'setAppStoredEntity');
64
75
  }
65
76
  async delete(key) {
66
- const requestBody = queries_1.deleteQuery(this.doGetAppContextAri(), key, false);
67
- await this.mutation(requestBody, 'deleteAppStoredEntity');
77
+ const requestBody = gql_queries_1.UntypedQueries.delete(this.doGetAppContextAri(), key, false);
78
+ await this.mutation(requestBody, 'appStorage', 'deleteAppStoredEntity');
68
79
  }
69
80
  async deleteSecret(key) {
70
- const requestBody = queries_1.deleteQuery(this.doGetAppContextAri(), key, true);
71
- await this.mutation(requestBody, 'deleteAppStoredEntity');
81
+ const requestBody = gql_queries_1.UntypedQueries.delete(this.doGetAppContextAri(), key, true);
82
+ await this.mutation(requestBody, 'appStorage', 'deleteAppStoredEntity');
83
+ }
84
+ async getEntity(entityName, entityKey) {
85
+ return this.getEntityInternal(entityName, entityKey);
86
+ }
87
+ async setEntity(entityName, entityKey, value) {
88
+ const requestBody = gql_queries_1.CustomEntityQueries.set(this.doGetAppContextAri(), entityName, entityKey, value);
89
+ await this.mutation(requestBody, 'appStorageCustomEntity', 'setAppStoredCustomEntity');
90
+ }
91
+ async deleteEntity(entityName, entityKey) {
92
+ const requestBody = gql_queries_1.CustomEntityQueries.delete(this.doGetAppContextAri(), entityName, entityKey);
93
+ await this.mutation(requestBody, 'appStorageCustomEntity', 'deleteAppStoredCustomEntity');
94
+ }
95
+ async upsertCustomEntities(schemas) {
96
+ const requestBody = gql_queries_1.CustomEntityQueries.createSchema(schemas);
97
+ await this.mutation(requestBody, 'customSchema', 'createCustomSchema');
72
98
  }
73
99
  async getInternal(key, encrypted) {
74
- const requestBody = queries_1.getQuery(this.doGetAppContextAri(), key, encrypted);
100
+ const requestBody = gql_queries_1.UntypedQueries.get(this.doGetAppContextAri(), key, encrypted);
75
101
  const { appStoredEntity: { value } } = await this.query(requestBody);
76
102
  return value !== null && value !== void 0 ? value : undefined;
77
103
  }
104
+ async getEntityInternal(entityName, entityKey) {
105
+ const requestBody = gql_queries_1.CustomEntityQueries.get(this.doGetAppContextAri(), entityName, entityKey);
106
+ const { appStoredCustomEntity: { value } } = await this.query(requestBody);
107
+ return value !== null && value !== void 0 ? value : undefined;
108
+ }
78
109
  buildRequest(requestBody) {
79
110
  return {
80
111
  method: 'POST',
@@ -88,9 +119,9 @@ class GlobalStorage {
88
119
  const response = await this.apiClient(this.endpoint, this.buildRequest(body));
89
120
  return await getResponseBody(response);
90
121
  }
91
- async mutation(body, mutationMethod) {
122
+ async mutation(body, namespace, mutationMethod) {
92
123
  const response = await this.apiClient(this.endpoint, this.buildRequest(body));
93
- const { appStorage: { [mutationMethod]: { success, errors } } } = await getResponseBody(response);
124
+ const { [namespace]: { [mutationMethod]: { success, errors } } } = await getResponseBody(response);
94
125
  assertNoErrors(errors);
95
126
  if (!success) {
96
127
  throw errors_1.APIError.forStatus(500);
@@ -0,0 +1,106 @@
1
+ import { CustomEntityListOptions, CustomEntity, ListOptions } from './query-interfaces';
2
+ export declare class UntypedQueries {
3
+ static get: (contextAri: string, key: string, encrypted: boolean) => {
4
+ query: string;
5
+ variables: {
6
+ contextAri: string;
7
+ key: string;
8
+ encrypted: boolean;
9
+ };
10
+ };
11
+ static set: (contextAri: string, key: string, value: any, encrypted: boolean) => {
12
+ query: string;
13
+ variables: {
14
+ input: {
15
+ contextAri: string;
16
+ key: string;
17
+ value: any;
18
+ encrypted: boolean;
19
+ };
20
+ };
21
+ };
22
+ static delete: (contextAri: string, key: string, encrypted: boolean) => {
23
+ query: string;
24
+ variables: {
25
+ input: {
26
+ contextAri: string;
27
+ key: string;
28
+ encrypted: boolean;
29
+ };
30
+ };
31
+ };
32
+ static listQuery: (contextAri: string, options: ListOptions) => {
33
+ query: string;
34
+ variables: {
35
+ contextAri: string;
36
+ where: import("./query-interfaces").WhereClause[] | null;
37
+ cursor: string | null;
38
+ limit: number | null;
39
+ };
40
+ };
41
+ static listQueryForCleanup: (contextAri: string, options: ListOptions) => {
42
+ query: string;
43
+ variables: {
44
+ contextAri: string;
45
+ where: import("./query-interfaces").WhereClause[] | null;
46
+ cursor: string | null;
47
+ limit: number | null;
48
+ };
49
+ };
50
+ }
51
+ export declare class CustomEntityQueries {
52
+ static get: (contextAri: string, entityName: string, key: string) => {
53
+ query: string;
54
+ variables: {
55
+ contextAri: string;
56
+ entityName: string;
57
+ key: string;
58
+ };
59
+ };
60
+ static set: (contextAri: string, entityName: string, key: string, value: any) => {
61
+ query: string;
62
+ variables: {
63
+ input: {
64
+ contextAri: string;
65
+ entityName: string;
66
+ key: string;
67
+ value: any;
68
+ };
69
+ };
70
+ };
71
+ static delete: (contextAri: string, entityName: string, key: string) => {
72
+ query: string;
73
+ variables: {
74
+ input: {
75
+ contextAri: string;
76
+ entityName: string;
77
+ key: string;
78
+ };
79
+ };
80
+ };
81
+ static listQuery: (contextAri: string, options: CustomEntityListOptions) => {
82
+ query: string;
83
+ variables: {
84
+ limit?: number | undefined;
85
+ cursor?: string | undefined;
86
+ sort?: import("./query-interfaces").SortOrder | undefined;
87
+ partition?: import("./query-interfaces").CustomEntityPartitionValue[] | undefined;
88
+ filters?: {
89
+ [x: string]: import("./query-interfaces").FilterClause[];
90
+ } | undefined;
91
+ contextAri: string;
92
+ entityName: string | undefined;
93
+ indexName: string | undefined;
94
+ range: import("./query-interfaces").RangeClause | undefined;
95
+ };
96
+ };
97
+ static createSchema: (schemas: CustomEntity[]) => {
98
+ query: string;
99
+ variables: {
100
+ input: {
101
+ schemas: CustomEntity[];
102
+ };
103
+ };
104
+ };
105
+ }
106
+ //# sourceMappingURL=gql-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gql-queries.d.ts","sourceRoot":"","sources":["../src/gql-queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAExF,qBAAa,cAAc;IACzB,OAAc,GAAG,eAAgB,MAAM,OAAO,MAAM,aAAa,OAAO;;;;;;;MAcrE;IAEH,OAAc,GAAG,eAAgB,MAAM,OAAO,MAAM,SAAS,GAAG,aAAa,OAAO;;;;;;;;;;MAyBjF;IAEH,OAAc,MAAM,eAAgB,MAAM,OAAO,MAAM,aAAa,OAAO;;;;;;;;;MAwBxE;IAEH,OAAc,SAAS,eAAgB,MAAM,WAAW,WAAW;;;;;;;;MAuBhE;IAEH,OAAc,mBAAmB,eAAgB,MAAM,WAAW,WAAW;;;;;;;;MAuB1E;CACJ;AAED,qBAAa,mBAAmB;IAC9B,OAAc,GAAG,eAAgB,MAAM,cAAc,MAAM,OAAO,MAAM;;;;;;;MAerE;IAEH,OAAc,GAAG,eAAgB,MAAM,cAAc,MAAM,OAAO,MAAM,SAAS,GAAG;;;;;;;;;;MAyBjF;IAEH,OAAc,MAAM,eAAgB,MAAM,cAAc,MAAM,OAAO,MAAM;;;;;;;;;MAwBxE;IAEH,OAAc,SAAS,eAAgB,MAAM,WAAW,uBAAuB;;;;;;;;;;;;;;;MAuC7E;IAEF,OAAc,YAAY,YAAa,YAAY,EAAE;;;;;;;MAqBlD;CACJ"}