@forge/storage 1.3.2-next.8 → 1.4.0-next.0

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.
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CustomEntityQueries = exports.UntypedQueries = void 0;
4
+ class UntypedQueries {
5
+ }
6
+ exports.UntypedQueries = UntypedQueries;
7
+ UntypedQueries.get = (contextAri, key, encrypted) => ({
8
+ query: `
9
+ query forge_app_getApplicationStorageEntity($contextAri: ID!, $key: ID!, $encrypted: Boolean!) {
10
+ appStoredEntity(contextAri: $contextAri, key: $key, encrypted: $encrypted) {
11
+ key
12
+ value
13
+ }
14
+ }
15
+ `,
16
+ variables: {
17
+ contextAri,
18
+ key,
19
+ encrypted
20
+ }
21
+ });
22
+ UntypedQueries.set = (contextAri, key, value, encrypted) => ({
23
+ query: `
24
+ mutation forge_app_setApplicationStorageEntity($input: SetAppStoredEntityMutationInput!) {
25
+ appStorage{
26
+ setAppStoredEntity(input: $input) {
27
+ success
28
+
29
+ errors {
30
+ message
31
+ extensions {
32
+ errorType
33
+ }
34
+ }
35
+ }
36
+ }
37
+ }
38
+ `,
39
+ variables: {
40
+ input: {
41
+ contextAri,
42
+ key,
43
+ value,
44
+ encrypted
45
+ }
46
+ }
47
+ });
48
+ UntypedQueries.delete = (contextAri, key, encrypted) => ({
49
+ query: `
50
+ mutation forge_app_deleteApplicationStorageEntity($input: DeleteAppStoredEntityMutationInput!) {
51
+ appStorage {
52
+ deleteAppStoredEntity(input: $input) {
53
+ success
54
+
55
+ errors {
56
+ message
57
+ extensions {
58
+ errorType
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ `,
65
+ variables: {
66
+ input: {
67
+ contextAri,
68
+ key,
69
+ encrypted
70
+ }
71
+ }
72
+ });
73
+ UntypedQueries.listQuery = (contextAri, options) => {
74
+ var _a, _b, _c;
75
+ return ({
76
+ query: `
77
+ query forge_app_getApplicationStorageEntities($contextAri: ID!, $where: [AppStoredEntityFilter!], $cursor: String, $limit: Int) {
78
+ appStoredEntities(contextAri: $contextAri, where: $where, after: $cursor, first: $limit) {
79
+ edges {
80
+ node {
81
+ value
82
+ key
83
+ }
84
+
85
+ cursor
86
+ }
87
+ }
88
+ }
89
+ `,
90
+ variables: {
91
+ contextAri,
92
+ where: (_a = options.where) !== null && _a !== void 0 ? _a : null,
93
+ cursor: (_b = options.cursor) !== null && _b !== void 0 ? _b : null,
94
+ limit: (_c = options.limit) !== null && _c !== void 0 ? _c : null
95
+ }
96
+ });
97
+ };
98
+ UntypedQueries.listQueryForCleanup = (contextAri, options) => {
99
+ var _a, _b, _c;
100
+ return ({
101
+ query: `
102
+ query forge_app_getApplicationStorageEntitiesForCleanup($contextAri: ID!, $where: [AppStoredEntityFilter!], $cursor: String, $limit: Int) {
103
+ appStoredEntitiesForCleanup(contextAri: $contextAri, where: $where, after: $cursor, first: $limit) {
104
+ edges {
105
+ node {
106
+ value
107
+ key
108
+ }
109
+
110
+ cursor
111
+ }
112
+ }
113
+ }
114
+ `,
115
+ variables: {
116
+ contextAri,
117
+ where: (_a = options.where) !== null && _a !== void 0 ? _a : null,
118
+ cursor: (_b = options.cursor) !== null && _b !== void 0 ? _b : null,
119
+ limit: (_c = options.limit) !== null && _c !== void 0 ? _c : null
120
+ }
121
+ });
122
+ };
123
+ class CustomEntityQueries {
124
+ }
125
+ exports.CustomEntityQueries = CustomEntityQueries;
126
+ CustomEntityQueries.get = (contextAri, entityName, key) => ({
127
+ query: `
128
+ query forge_app_getApplicationStorageCustomEntity ($contextAri: ID!, $key: ID!, $entityName: String!) {
129
+ appStoredCustomEntity(contextAri: $contextAri, key: $key, entityName: $entityName) {
130
+ value
131
+ entityName
132
+ key
133
+ }
134
+ }
135
+ `,
136
+ variables: {
137
+ contextAri,
138
+ entityName,
139
+ key
140
+ }
141
+ });
142
+ CustomEntityQueries.set = (contextAri, entityName, key, value) => ({
143
+ query: `
144
+ mutation forge_app_setApplicationStorageCustomEntity($input: SetAppStoredCustomEntityMutationInput!) {
145
+ appStorageCustomEntity{
146
+ setAppStoredCustomEntity(input: $input) {
147
+ success
148
+
149
+ errors {
150
+ message
151
+ extensions {
152
+ errorType
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ `,
159
+ variables: {
160
+ input: {
161
+ contextAri,
162
+ entityName,
163
+ key,
164
+ value
165
+ }
166
+ }
167
+ });
168
+ CustomEntityQueries.delete = (contextAri, entityName, key) => ({
169
+ query: `
170
+ mutation forge_app_deleteApplicationStorageCustomEntity($input: DeleteAppStoredCustomEntityMutationInput!) {
171
+ appStorageCustomEntity {
172
+ deleteAppStoredCustomEntity(input: $input) {
173
+ success
174
+
175
+ errors {
176
+ message
177
+ extensions {
178
+ errorType
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ `,
185
+ variables: {
186
+ input: {
187
+ contextAri,
188
+ entityName,
189
+ key
190
+ }
191
+ }
192
+ });
193
+ CustomEntityQueries.listQuery = (contextAri, options) => {
194
+ return {
195
+ query: `
196
+ query AppStorageCustomEntityQueries ($contextAri: ID!, $entityName: String!, $indexName: String!, $range: AppStoredCustomEntityRange, $filters: AppStoredCustomEntityFilters, $sort:SortOrder, $limit: Int, $cursor: String, $partition: [AppStoredCustomEntityFieldValue!]) {
197
+ appStoredCustomEntities(contextAri: $contextAri, entityName: $entityName, indexName: $indexName, range: $range, filters: $filters, sort:$sort, limit: $limit, cursor: $cursor, partition: $partition) {
198
+ edges {
199
+ node {
200
+ key
201
+ value
202
+ }
203
+ cursor
204
+ }
205
+ pageInfo {
206
+ hasNextPage
207
+ hasPreviousPage
208
+ }
209
+ totalCount
210
+ cursor
211
+ }
212
+ }
213
+ `,
214
+ variables: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ contextAri, entityName: options.entityName, indexName: options.indexName, range: options.range }, (options.filters && options.filters.length
215
+ ? {
216
+ filters: {
217
+ [options.filterOperator || 'and']: options.filters
218
+ }
219
+ }
220
+ : {})), (options.partition ? { partition: options.partition } : {})), (options.sort ? { sort: options.sort } : {})), (options.cursor ? { cursor: options.cursor } : {})), (options.limit ? { limit: options.limit } : {}))
221
+ };
222
+ };
package/out/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { RequestInit, Response } from 'node-fetch';
2
+ import { EntityStorageBuilder } from './entity-storage';
2
3
  import { GlobalStorage } from './global-storage';
3
4
  import { DefaultQueryBuilder } from './query-api';
4
5
  export declare type APIResponse = Pick<Response, 'json' | 'text' | 'arrayBuffer' | 'ok' | 'status' | 'statusText'>;
@@ -11,9 +12,12 @@ export declare const getStorageInstanceWithQuery: (adapter: GlobalStorage) => {
11
12
  setSecret: (key: string, value: any) => Promise<void>;
12
13
  deleteSecret: (key: string) => Promise<void>;
13
14
  query: () => DefaultQueryBuilder;
15
+ entity: <T>(entityName: string) => EntityStorageBuilder<T>;
14
16
  };
15
17
  export { GlobalStorage } from './global-storage';
16
18
  export { startsWith } from './conditions';
17
- export { QueryBuilder, QueryApi, Condition, ListResult, Predicate, Result, Value } from './storage-adapter';
19
+ export { WhereConditions, FilterConditions } from './eap/conditions';
20
+ export { QueryBuilder, QueryApi, Condition, ListResult, Predicate, Result, EntityStorageApi, WherePredicate, FilterPredicate } from './storage-adapter';
21
+ export { Value } from './query-interfaces';
18
22
  export { APIError } from './errors';
19
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AAC3G,oBAAY,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAEnF,eAAO,MAAM,2BAA2B,YAAa,aAAa;;;;;;;;CAUjE,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE5G,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,oBAAY,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,IAAI,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;AAC3G,oBAAY,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAEnF,eAAO,MAAM,2BAA2B,YAAa,aAAa;;;;;;;iBAQnD,mBAAmB;4BACN,MAAM;CAEjC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC"}
package/out/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.APIError = exports.startsWith = exports.GlobalStorage = exports.getStorageInstanceWithQuery = void 0;
3
+ exports.APIError = exports.FilterConditions = exports.WhereConditions = exports.startsWith = exports.GlobalStorage = exports.getStorageInstanceWithQuery = void 0;
4
+ const entity_storage_1 = require("./entity-storage");
4
5
  const query_api_1 = require("./query-api");
5
6
  const getStorageInstanceWithQuery = (adapter) => {
6
7
  return {
@@ -10,7 +11,8 @@ const getStorageInstanceWithQuery = (adapter) => {
10
11
  getSecret: adapter.getSecret.bind(adapter),
11
12
  setSecret: adapter.setSecret.bind(adapter),
12
13
  deleteSecret: adapter.deleteSecret.bind(adapter),
13
- query: () => new query_api_1.DefaultQueryBuilder(adapter)
14
+ query: () => new query_api_1.DefaultQueryBuilder(adapter),
15
+ entity: (entityName) => new entity_storage_1.EntityStorageBuilder(entityName, adapter)
14
16
  };
15
17
  };
16
18
  exports.getStorageInstanceWithQuery = getStorageInstanceWithQuery;
@@ -18,5 +20,8 @@ var global_storage_1 = require("./global-storage");
18
20
  Object.defineProperty(exports, "GlobalStorage", { enumerable: true, get: function () { return global_storage_1.GlobalStorage; } });
19
21
  var conditions_1 = require("./conditions");
20
22
  Object.defineProperty(exports, "startsWith", { enumerable: true, get: function () { return conditions_1.startsWith; } });
23
+ var conditions_2 = require("./eap/conditions");
24
+ Object.defineProperty(exports, "WhereConditions", { enumerable: true, get: function () { return conditions_2.WhereConditions; } });
25
+ Object.defineProperty(exports, "FilterConditions", { enumerable: true, get: function () { return conditions_2.FilterConditions; } });
21
26
  var errors_1 = require("./errors");
22
27
  Object.defineProperty(exports, "APIError", { enumerable: true, get: function () { return errors_1.APIError; } });
@@ -1,5 +1,5 @@
1
1
  import { GlobalStorage } from './global-storage';
2
- import { ListOptions } from './queries';
2
+ import { ListOptions } from './query-interfaces';
3
3
  import { QueryBuilder, Condition, Result, ListResult } from './storage-adapter';
4
4
  export declare class DefaultQueryBuilder implements QueryBuilder {
5
5
  private globalStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"query-api.d.ts","sourceRoot":"","sources":["../src/query-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhF,qBAAa,mBAAoB,YAAW,YAAY;IAC1C,OAAO,CAAC,aAAa;IAA+B,OAAO,CAAC,YAAY;gBAAhE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAU,YAAY,GAAE,WAAgB;IAEtG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY;IAYnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAOpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAO5B,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQrC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;CAGrC"}
1
+ {"version":3,"file":"query-api.d.ts","sourceRoot":"","sources":["../src/query-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhF,qBAAa,mBAAoB,YAAW,YAAY;IAC1C,OAAO,CAAC,aAAa;IAA+B,OAAO,CAAC,YAAY;gBAAhE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAU,YAAY,GAAE,WAAgB;IAEtG,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,YAAY;IAYnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAOpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAO5B,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQrC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;CAGrC"}
@@ -0,0 +1,113 @@
1
+ export declare type Value = string;
2
+ export interface StartsWith {
3
+ condition: 'STARTS_WITH';
4
+ value: Value;
5
+ }
6
+ export interface NotEqualTo {
7
+ condition: 'NOT_EQUAL_TO';
8
+ value: Value[];
9
+ }
10
+ export interface In {
11
+ condition: 'IN';
12
+ value: Value[];
13
+ }
14
+ interface FieldClause {
15
+ field: string;
16
+ }
17
+ export declare type StartsWithClause = FieldClause & StartsWith;
18
+ export declare type NotEqualToClause = FieldClause & NotEqualTo;
19
+ export declare type InClause = FieldClause & In;
20
+ export declare type WhereClause = StartsWithClause | NotEqualToClause | InClause;
21
+ export interface ListOptions {
22
+ where?: Array<WhereClause>;
23
+ cursor?: string;
24
+ limit?: number;
25
+ }
26
+ export declare type CustomEntityQueryValue = string | number | boolean;
27
+ export interface BetweenClause {
28
+ condition: 'BETWEEN';
29
+ values: CustomEntityQueryValue[];
30
+ }
31
+ export interface BeginsWithClause {
32
+ condition: 'BEGINS_WITH';
33
+ values: CustomEntityQueryValue[];
34
+ }
35
+ export interface ExistsClause {
36
+ condition: 'EXISTS';
37
+ values: CustomEntityQueryValue[];
38
+ }
39
+ export interface DoesNotExistClause {
40
+ condition: 'NOT_EXISTS';
41
+ values: CustomEntityQueryValue[];
42
+ }
43
+ export interface GreaterThanClause {
44
+ condition: 'GREATER_THAN';
45
+ values: CustomEntityQueryValue[];
46
+ }
47
+ export interface GreaterThanEqualToClause {
48
+ condition: 'GREATER_THAN_EQUAL_TO';
49
+ values: CustomEntityQueryValue[];
50
+ }
51
+ export interface LessThanClause {
52
+ condition: 'LESS_THAN';
53
+ values: CustomEntityQueryValue[];
54
+ }
55
+ export interface LessThanEqualToClause {
56
+ condition: 'LESS_THAN_EQUAL_TO';
57
+ values: CustomEntityQueryValue[];
58
+ }
59
+ export interface ContainsClause {
60
+ condition: 'CONTAINS';
61
+ values: CustomEntityQueryValue[];
62
+ }
63
+ export interface DoesNotContainClause {
64
+ condition: 'NOT_CONTAINS';
65
+ values: CustomEntityQueryValue[];
66
+ }
67
+ export interface EqualToClause {
68
+ condition: 'EQUAL_TO';
69
+ values: CustomEntityQueryValue[];
70
+ }
71
+ export interface IsNotEqualToClause {
72
+ condition: 'NOT_EQUAL_TO';
73
+ values: CustomEntityQueryValue[];
74
+ }
75
+ export declare type FilterOperator = 'or' | 'and';
76
+ export interface FilterPropertyClause {
77
+ property: string;
78
+ }
79
+ export declare type BetweenFilterClause = FilterPropertyClause & BetweenClause;
80
+ export declare type BeginsWithFilterClause = FilterPropertyClause & BeginsWithClause;
81
+ export declare type ExistsFilterClause = FilterPropertyClause & ExistsClause;
82
+ export declare type DoesNotExistFilterClause = FilterPropertyClause & DoesNotExistClause;
83
+ export declare type GreaterThanFilterClause = FilterPropertyClause & GreaterThanClause;
84
+ export declare type GreaterThanEqualToFilterClause = FilterPropertyClause & GreaterThanEqualToClause;
85
+ export declare type LessThanFilterClause = FilterPropertyClause & LessThanClause;
86
+ export declare type LessThanEqualToFilterClause = FilterPropertyClause & LessThanEqualToClause;
87
+ export declare type ContainsFilterClause = FilterPropertyClause & ContainsClause;
88
+ export declare type DoesNotContainFilterClause = FilterPropertyClause & DoesNotContainClause;
89
+ export declare type EqualToFilterClause = FilterPropertyClause & EqualToClause;
90
+ export declare type IsNotEqualToFilterClause = FilterPropertyClause & IsNotEqualToClause;
91
+ export declare type RangeClause = BetweenClause | BeginsWithClause | EqualToClause | GreaterThanClause | GreaterThanEqualToClause | LessThanClause | LessThanEqualToClause;
92
+ export declare type FilterClause = BetweenFilterClause | BeginsWithFilterClause | ExistsFilterClause | DoesNotExistFilterClause | GreaterThanFilterClause | GreaterThanEqualToFilterClause | LessThanFilterClause | LessThanEqualToFilterClause | ContainsFilterClause | DoesNotContainFilterClause | EqualToFilterClause | IsNotEqualToFilterClause;
93
+ export declare enum SortOrder {
94
+ ASC = "ASC",
95
+ DESC = "DESC"
96
+ }
97
+ export interface CustomEntityQueryIndexOptions {
98
+ partition: CustomEntityPartitionValue[];
99
+ }
100
+ export declare type CustomEntityPartitionValue = string | number | boolean;
101
+ export interface CustomEntityListOptions {
102
+ sort?: SortOrder;
103
+ entityName?: string;
104
+ indexName?: string;
105
+ partition?: CustomEntityPartitionValue[];
106
+ range?: RangeClause;
107
+ filters?: FilterClause[];
108
+ filterOperator?: FilterOperator;
109
+ cursor?: string;
110
+ limit?: number;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=query-interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-interfaces.d.ts","sourceRoot":"","sources":["../src/query-interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SortOrder = void 0;
4
+ var SortOrder;
5
+ (function (SortOrder) {
6
+ SortOrder["ASC"] = "ASC";
7
+ SortOrder["DESC"] = "DESC";
8
+ })(SortOrder = exports.SortOrder || (exports.SortOrder = {}));
@@ -1,3 +1,5 @@
1
+ import { EntityStorageBuilderType } from './entity-storage';
2
+ import { BeginsWithClause, BetweenClause, ExistsClause, DoesNotExistClause, FilterOperator, GreaterThanClause, GreaterThanEqualToClause, StartsWith, NotEqualTo, In, LessThanClause, LessThanEqualToClause, ContainsClause, DoesNotContainClause, IsNotEqualToClause, EqualToClause, SortOrder, CustomEntityQueryIndexOptions } from './query-interfaces';
1
3
  export interface StorageAdapter {
2
4
  get(key: string): Promise<any>;
3
5
  set(key: string, value: any): Promise<void>;
@@ -6,21 +8,17 @@ export interface StorageAdapter {
6
8
  setSecret(key: string, value: any): Promise<void>;
7
9
  deleteSecret(key: string): Promise<void>;
8
10
  }
9
- export interface QueryApi {
10
- query(): QueryBuilder;
11
- }
12
- export declare type Value = string;
13
- export interface StartsWith {
14
- condition: 'STARTS_WITH';
15
- value: Value;
11
+ export interface EntityStorageAdapter {
12
+ getEntity<T>(entityName: string, entityKey: string): Promise<T>;
13
+ setEntity<T>(entityName: string, entityKey: string, value: T): Promise<void>;
14
+ deleteEntity(entityName: string, entityKey: string): Promise<void>;
16
15
  }
17
- export interface NotEqualTo {
18
- condition: 'NOT_EQUAL_TO';
19
- value: Value[];
16
+ export interface EntityStorageApi {
17
+ entity<T>(entityKey: string): EntityStorageBuilderType<T>;
20
18
  }
21
- export interface In {
22
- condition: 'IN';
23
- value: Value[];
19
+ export declare type SharedStorageAdapter = StorageAdapter & EntityStorageAdapter;
20
+ export interface QueryApi {
21
+ query(): QueryBuilder;
24
22
  }
25
23
  export declare type Predicate = StartsWith | NotEqualTo | In;
26
24
  export declare type Condition = Predicate;
@@ -31,12 +29,25 @@ export interface QueryBuilder {
31
29
  getMany(): Promise<ListResult>;
32
30
  getOne(): Promise<Result | undefined>;
33
31
  }
34
- export interface Result {
32
+ export declare type FilterPredicate = BetweenClause | BeginsWithClause | ExistsClause | DoesNotExistClause | GreaterThanClause | GreaterThanEqualToClause | LessThanClause | LessThanEqualToClause | ContainsClause | DoesNotContainClause | EqualToClause | IsNotEqualToClause;
33
+ export declare type WherePredicate = BetweenClause | BeginsWithClause | EqualToClause | GreaterThanClause | GreaterThanEqualToClause | LessThanClause | LessThanEqualToClause;
34
+ export interface CustomEntityQueryBuilder<T> {
35
+ index(indexName: string, indexOptions?: CustomEntityQueryIndexOptions): CustomEntityQueryBuilder<T>;
36
+ where(condition: WherePredicate): CustomEntityQueryBuilder<T>;
37
+ sort(sort: SortOrder): CustomEntityQueryBuilder<T>;
38
+ filters(property: string, condition: FilterPredicate): CustomEntityQueryBuilder<T>;
39
+ filterOperator(operator: FilterOperator): CustomEntityQueryBuilder<T>;
40
+ cursor(cursor: string): CustomEntityQueryBuilder<T>;
41
+ limit(limit: number): CustomEntityQueryBuilder<T>;
42
+ getMany(): Promise<ListResult<T>>;
43
+ getOne(): Promise<Result<T> | undefined>;
44
+ }
45
+ export interface Result<T = object> {
35
46
  key: string;
36
- value: object;
47
+ value: T;
37
48
  }
38
- export interface ListResult {
39
- results: Result[];
49
+ export interface ListResult<T = object> {
50
+ results: Result<T>[];
40
51
  nextCursor?: string;
41
52
  }
42
53
  //# sourceMappingURL=storage-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage-adapter.d.ts","sourceRoot":"","sources":["../src/storage-adapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,IAAI,YAAY,CAAC;CACvB;AAED,oBAAY,KAAK,GAAG,MAAM,CAAC;AAC3B,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;CACd;AACD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB;AACD,MAAM,WAAW,EAAE;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,KAAK,EAAE,CAAC;CAChB;AAED,oBAAY,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,EAAE,CAAC;AACrD,oBAAY,SAAS,GAAG,SAAS,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"storage-adapter.d.ts","sourceRoot":"","sources":["../src/storage-adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/storage",
3
- "version": "1.3.2-next.8",
3
+ "version": "1.4.0-next.0",
4
4
  "description": "Forge Storage methods",
5
5
  "author": "Atlassian",
6
6
  "license": "UNLICENSED",
package/out/queries.d.ts DELETED
@@ -1,69 +0,0 @@
1
- export declare const getQuery: (contextAri: string, key: string, encrypted: boolean) => {
2
- query: string;
3
- variables: {
4
- contextAri: string;
5
- key: string;
6
- encrypted: boolean;
7
- };
8
- };
9
- export interface StartsWithClause {
10
- field: string;
11
- condition: 'STARTS_WITH';
12
- value: string;
13
- }
14
- export interface NotEqualToClause {
15
- field: string;
16
- condition: 'NOT_EQUAL_TO';
17
- value: string[];
18
- }
19
- export interface InClause {
20
- field: string;
21
- condition: 'IN';
22
- value: string[];
23
- }
24
- export declare type WhereClause = StartsWithClause | NotEqualToClause | InClause;
25
- export interface ListOptions {
26
- where?: Array<WhereClause>;
27
- cursor?: string;
28
- limit?: number;
29
- }
30
- export declare const listQuery: (contextAri: string, options: ListOptions) => {
31
- query: string;
32
- variables: {
33
- contextAri: string;
34
- where: WhereClause[] | null;
35
- cursor: string | null;
36
- limit: number | null;
37
- };
38
- };
39
- export declare const listQueryForCleanup: (contextAri: string, options: ListOptions) => {
40
- query: string;
41
- variables: {
42
- contextAri: string;
43
- where: WhereClause[] | null;
44
- cursor: string | null;
45
- limit: number | null;
46
- };
47
- };
48
- export declare const setQuery: (contextAri: string, key: string, value: any, encrypted: boolean) => {
49
- query: string;
50
- variables: {
51
- input: {
52
- contextAri: string;
53
- key: string;
54
- value: any;
55
- encrypted: boolean;
56
- };
57
- };
58
- };
59
- export declare const deleteQuery: (contextAri: string, key: string, encrypted: boolean) => {
60
- query: string;
61
- variables: {
62
- input: {
63
- contextAri: string;
64
- key: string;
65
- encrypted: boolean;
66
- };
67
- };
68
- };
69
- //# sourceMappingURL=queries.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,eAAgB,MAAM,OAAO,MAAM,aAAa,OAAO;;;;;;;CAc1E,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,oBAAY,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,eAAgB,MAAM,WAAW,WAAW;;;;;;;;CAuBhE,CAAC;AAEH,eAAO,MAAM,mBAAmB,eAAgB,MAAM,WAAW,WAAW;;;;;;;;CAuB1E,CAAC;AAEH,eAAO,MAAM,QAAQ,eAAgB,MAAM,OAAO,MAAM,SAAS,GAAG,aAAa,OAAO;;;;;;;;;;CAyBtF,CAAC;AAEH,eAAO,MAAM,WAAW,eAAgB,MAAM,OAAO,MAAM,aAAa,OAAO;;;;;;;;;CAwB7E,CAAC"}