@forge/cache 1.0.3-next.0 → 1.0.3-next.0-experimental-ab129b0-experimental-f18cf39
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.
- package/out/cache.d.ts +6 -1
- package/out/cache.d.ts.map +1 -1
- package/out/cache.js +20 -0
- package/out/interfaces/cache.d.ts +4 -0
- package/out/interfaces/cache.d.ts.map +1 -1
- package/out/kvs/conditions.d.ts +38 -0
- package/out/kvs/conditions.d.ts.map +1 -0
- package/out/kvs/conditions.js +98 -0
- package/out/kvs/entity-query.d.ts +26 -0
- package/out/kvs/entity-query.d.ts.map +1 -0
- package/out/kvs/entity-query.js +102 -0
- package/out/kvs/entity.d.ts +13 -0
- package/out/kvs/entity.d.ts.map +1 -0
- package/out/kvs/entity.js +35 -0
- package/out/kvs/errors.d.ts +21 -0
- package/out/kvs/errors.d.ts.map +1 -0
- package/out/kvs/errors.js +26 -0
- package/out/kvs/index.d.ts +10 -0
- package/out/kvs/index.d.ts.map +1 -0
- package/out/kvs/index.js +42 -0
- package/out/kvs/interfaces/entity-query.d.ts +41 -0
- package/out/kvs/interfaces/entity-query.d.ts.map +1 -0
- package/out/kvs/interfaces/entity-query.js +2 -0
- package/out/kvs/interfaces/kvs-api.d.ts +95 -0
- package/out/kvs/interfaces/kvs-api.d.ts.map +1 -0
- package/out/kvs/interfaces/kvs-api.js +2 -0
- package/out/kvs/interfaces/kvs.d.ts +21 -0
- package/out/kvs/interfaces/kvs.d.ts.map +1 -0
- package/out/kvs/interfaces/kvs.js +2 -0
- package/out/kvs/interfaces/query.d.ts +17 -0
- package/out/kvs/interfaces/query.d.ts.map +1 -0
- package/out/kvs/interfaces/query.js +2 -0
- package/out/kvs/interfaces/transaction.d.ts +29 -0
- package/out/kvs/interfaces/transaction.d.ts.map +1 -0
- package/out/kvs/interfaces/transaction.js +2 -0
- package/out/kvs/interfaces/types.d.ts +64 -0
- package/out/kvs/interfaces/types.d.ts.map +1 -0
- package/out/kvs/interfaces/types.js +8 -0
- package/out/kvs/kvs.d.ts +18 -0
- package/out/kvs/kvs.d.ts.map +1 -0
- package/out/kvs/kvs.js +40 -0
- package/out/kvs/query.d.ts +14 -0
- package/out/kvs/query.d.ts.map +1 -0
- package/out/kvs/query.js +38 -0
- package/out/kvs/storage-api.d.ts +22 -0
- package/out/kvs/storage-api.d.ts.map +1 -0
- package/out/kvs/storage-api.js +103 -0
- package/out/kvs/transaction-api.d.ts +14 -0
- package/out/kvs/transaction-api.d.ts.map +1 -0
- package/out/kvs/transaction-api.js +66 -0
- package/out/kvs/utils/error-handling.d.ts +7 -0
- package/out/kvs/utils/error-handling.d.ts.map +1 -0
- package/out/kvs/utils/error-handling.js +42 -0
- package/out/kvs/utils/transaction-request-builder.d.ts +6 -0
- package/out/kvs/utils/transaction-request-builder.d.ts.map +1 -0
- package/out/kvs/utils/transaction-request-builder.js +49 -0
- package/out/tunnel.d.ts +4 -0
- package/out/tunnel.d.ts.map +1 -1
- package/out/tunnel.js +12 -0
- package/package.json +2 -2
- package/out/__test__/cache.test.d.ts +0 -2
- package/out/__test__/cache.test.d.ts.map +0 -1
- package/out/__test__/cache.test.js +0 -358
- package/out/__test__/tunnel.test.d.ts +0 -2
- package/out/__test__/tunnel.test.d.ts.map +0 -1
- package/out/__test__/tunnel.test.js +0 -176
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
declare type KeySchema = {
|
|
2
|
+
key: string;
|
|
3
|
+
};
|
|
4
|
+
declare type KeyValueSchema<T> = KeySchema & {
|
|
5
|
+
value: T;
|
|
6
|
+
};
|
|
7
|
+
export declare type GetRequest = KeySchema;
|
|
8
|
+
export declare type GetResponse<T> = KeyValueSchema<T>;
|
|
9
|
+
export declare type SetRequest<T> = KeyValueSchema<T>;
|
|
10
|
+
export declare type SetResponse = void;
|
|
11
|
+
export declare type DeleteRequest = KeySchema;
|
|
12
|
+
export declare type DeleteResponse = void;
|
|
13
|
+
declare type QueryWhere = {
|
|
14
|
+
condition: 'BEGINS_WITH';
|
|
15
|
+
property: 'key';
|
|
16
|
+
values: Array<unknown>;
|
|
17
|
+
};
|
|
18
|
+
export declare type QueryRequest = {
|
|
19
|
+
limit?: number;
|
|
20
|
+
after?: string;
|
|
21
|
+
where?: Array<QueryWhere>;
|
|
22
|
+
};
|
|
23
|
+
export declare type QueryResponse<T> = {
|
|
24
|
+
data: Array<KeyValueSchema<T>>;
|
|
25
|
+
cursor?: string;
|
|
26
|
+
};
|
|
27
|
+
export declare type SecretGetRequest = KeySchema;
|
|
28
|
+
export declare type SecretGetResponse<T> = KeyValueSchema<T>;
|
|
29
|
+
export declare type SecretSetRequest<T> = KeyValueSchema<T>;
|
|
30
|
+
export declare type SecretSetResponse = void;
|
|
31
|
+
export declare type SecretDeleteRequest = KeySchema;
|
|
32
|
+
export declare type SecretDeleteResponse = void;
|
|
33
|
+
declare type EntityKeySchema = {
|
|
34
|
+
entityName: string;
|
|
35
|
+
key: string;
|
|
36
|
+
};
|
|
37
|
+
declare type EntityKeyValueSchema<T> = EntityKeySchema & {
|
|
38
|
+
value: T;
|
|
39
|
+
};
|
|
40
|
+
export declare type EntityGetRequest = EntityKeySchema;
|
|
41
|
+
export declare type EntityGetResponse<T> = EntityKeyValueSchema<T>;
|
|
42
|
+
export declare type EntitySetRequest<T> = EntityKeyValueSchema<T>;
|
|
43
|
+
export declare type EntitySetResponse = void;
|
|
44
|
+
export declare type EntityDeleteRequest = EntityKeySchema;
|
|
45
|
+
export declare type EntityDeleteResponse = void;
|
|
46
|
+
export declare type EntityQueryFilter = {
|
|
47
|
+
condition: 'BEGINS_WITH' | 'BETWEEN' | 'CONTAINS' | 'EQUAL_TO' | 'EXISTS' | 'GREATER_THAN' | 'GREATER_THAN_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_EQUAL_TO' | 'NOT_CONTAINS' | 'NOT_EQUAL_TO' | 'NOT_EXISTS';
|
|
48
|
+
property: string;
|
|
49
|
+
values: Array<unknown>;
|
|
50
|
+
};
|
|
51
|
+
export declare type EntityQueryFilters = {
|
|
52
|
+
or?: Array<EntityQueryFilter>;
|
|
53
|
+
and?: Array<EntityQueryFilter>;
|
|
54
|
+
};
|
|
55
|
+
export declare type EntityQueryRequest = {
|
|
56
|
+
limit?: number;
|
|
57
|
+
cursor?: string;
|
|
58
|
+
range?: {
|
|
59
|
+
condition: 'BEGINS_WITH' | 'BETWEEN' | 'EQUAL_TO' | 'GREATER_THAN' | 'GREATER_THAN_EQUAL_TO' | 'LESS_THAN' | 'LESS_THAN_EQUAL_TO';
|
|
60
|
+
values: Array<unknown>;
|
|
61
|
+
};
|
|
62
|
+
filters?: EntityQueryFilters;
|
|
63
|
+
sort?: 'ASC' | 'DESC';
|
|
64
|
+
partition?: Array<unknown>;
|
|
65
|
+
entityName: string;
|
|
66
|
+
indexName: string;
|
|
67
|
+
};
|
|
68
|
+
export declare type EntityQueryResponse<T> = {
|
|
69
|
+
data: Array<KeyValueSchema<T>>;
|
|
70
|
+
cursor?: string;
|
|
71
|
+
};
|
|
72
|
+
export declare type TransactionCondition = EntityQueryFilters;
|
|
73
|
+
export declare type RequestSet<T> = {
|
|
74
|
+
key: string;
|
|
75
|
+
value: T;
|
|
76
|
+
entityName?: string;
|
|
77
|
+
conditions?: TransactionCondition;
|
|
78
|
+
};
|
|
79
|
+
export declare type RequestDelete = {
|
|
80
|
+
key: string;
|
|
81
|
+
entityName?: string;
|
|
82
|
+
conditions?: TransactionCondition;
|
|
83
|
+
};
|
|
84
|
+
export declare type RequestCheck = {
|
|
85
|
+
key: string;
|
|
86
|
+
entityName?: string;
|
|
87
|
+
conditions: TransactionCondition;
|
|
88
|
+
};
|
|
89
|
+
export declare type TransactionRequest<T> = {
|
|
90
|
+
set?: RequestSet<T>[];
|
|
91
|
+
delete?: RequestDelete[];
|
|
92
|
+
check?: RequestCheck[];
|
|
93
|
+
};
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=kvs-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvs-api.d.ts","sourceRoot":"","sources":["../../../src/kvs/interfaces/kvs-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IndexQueryBuilder } from './entity-query';
|
|
2
|
+
import { QueryBuilder } from './query';
|
|
3
|
+
import { TransactionBuilder } from './transaction';
|
|
4
|
+
export interface Kvs {
|
|
5
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
6
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
7
|
+
delete(key: string): Promise<void>;
|
|
8
|
+
query(): QueryBuilder;
|
|
9
|
+
getSecret<T>(key: string): Promise<T | undefined>;
|
|
10
|
+
setSecret<T>(key: string, value: T): Promise<void>;
|
|
11
|
+
deleteSecret(key: string): Promise<void>;
|
|
12
|
+
entity<T>(entityName: string): KvsEntity<T>;
|
|
13
|
+
transact(): TransactionBuilder;
|
|
14
|
+
}
|
|
15
|
+
export interface KvsEntity<T> {
|
|
16
|
+
get(key: string): Promise<T | undefined>;
|
|
17
|
+
set(key: string, value: T): Promise<void>;
|
|
18
|
+
delete(key: string): Promise<void>;
|
|
19
|
+
query(): IndexQueryBuilder<T>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=kvs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../../../src/kvs/interfaces/kvs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,WAAW,GAAG;IAClB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,YAAY,CAAC;IAEtB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAClD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAE5C,QAAQ,IAAI,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BeginsWithClause, ListResult, Result } from './types';
|
|
2
|
+
export declare type WhereClause = BeginsWithClause;
|
|
3
|
+
export interface QueryBuilder {
|
|
4
|
+
where(property: 'key', condition: WhereClause): QueryBuilder;
|
|
5
|
+
cursor(cursor: string): QueryBuilder;
|
|
6
|
+
limit(limit: number): QueryBuilder;
|
|
7
|
+
getMany<T>(): Promise<ListResult<T>>;
|
|
8
|
+
getOne<T>(): Promise<Result<T> | undefined>;
|
|
9
|
+
}
|
|
10
|
+
export interface QueryOptions {
|
|
11
|
+
where?: Array<{
|
|
12
|
+
property: 'key';
|
|
13
|
+
} & WhereClause>;
|
|
14
|
+
cursor?: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/kvs/interfaces/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/D,oBAAY,WAAW,GAAG,gBAAgB,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,CAAC;IAC7D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,GAAG,WAAW,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { BaseFilter } from '../entity-query';
|
|
2
|
+
export interface TransactSet<T> {
|
|
3
|
+
key: string;
|
|
4
|
+
value: T;
|
|
5
|
+
entity?: EntityConditions<T>;
|
|
6
|
+
}
|
|
7
|
+
export interface TransactDelete<T> {
|
|
8
|
+
key: string;
|
|
9
|
+
entity?: EntityConditions<T>;
|
|
10
|
+
}
|
|
11
|
+
export interface TransactCheck<T> {
|
|
12
|
+
key: string;
|
|
13
|
+
entity: EntityRequiredConditions<T>;
|
|
14
|
+
}
|
|
15
|
+
export declare type EntityConditions<T> = {
|
|
16
|
+
entityName: string;
|
|
17
|
+
conditions?: BaseFilter<T>;
|
|
18
|
+
};
|
|
19
|
+
export declare type EntityRequiredConditions<T> = Omit<EntityConditions<T>, 'conditions'> & {
|
|
20
|
+
conditions: BaseFilter<T>;
|
|
21
|
+
};
|
|
22
|
+
export declare type StorageValue = string | number | boolean | Record<string, any> | any[];
|
|
23
|
+
export interface TransactionBuilder {
|
|
24
|
+
set<T>(key: string, value: T, entity?: EntityConditions<T>): this;
|
|
25
|
+
delete<T>(key: string, entity?: EntityConditions<T>): this;
|
|
26
|
+
check<T>(key: string, entity: EntityRequiredConditions<T>): this;
|
|
27
|
+
execute(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/kvs/interfaces/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC9B;AAKD,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC9B;AAKD,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;CACrC;AAKD,oBAAY,gBAAgB,CAAC,CAAC,IAAI;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAKF,oBAAY,wBAAwB,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG;IAClF,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CAC3B,CAAC;AAKF,oBAAY,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AAMnF,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAClE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export interface Result<T> {
|
|
2
|
+
key: string;
|
|
3
|
+
value: T;
|
|
4
|
+
}
|
|
5
|
+
export interface ListResult<T> {
|
|
6
|
+
results: Result<T>[];
|
|
7
|
+
nextCursor?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare enum Sort {
|
|
10
|
+
ASC = "ASC",
|
|
11
|
+
DESC = "DESC"
|
|
12
|
+
}
|
|
13
|
+
export declare type StringOrNumberOrBoolean = string | number | boolean;
|
|
14
|
+
export declare type StringOrNumber = string | number;
|
|
15
|
+
export interface BetweenClause<T extends StringOrNumber> {
|
|
16
|
+
condition: 'BETWEEN';
|
|
17
|
+
values: [T, T];
|
|
18
|
+
}
|
|
19
|
+
export interface BeginsWithClause {
|
|
20
|
+
condition: 'BEGINS_WITH';
|
|
21
|
+
values: [StringOrNumber];
|
|
22
|
+
}
|
|
23
|
+
export interface ExistsClause {
|
|
24
|
+
condition: 'EXISTS';
|
|
25
|
+
values: [true];
|
|
26
|
+
}
|
|
27
|
+
export interface NotExistsClause {
|
|
28
|
+
condition: 'NOT_EXISTS';
|
|
29
|
+
values: [true];
|
|
30
|
+
}
|
|
31
|
+
export interface GreaterThanClause {
|
|
32
|
+
condition: 'GREATER_THAN';
|
|
33
|
+
values: [StringOrNumber];
|
|
34
|
+
}
|
|
35
|
+
export interface GreaterThanEqualToClause {
|
|
36
|
+
condition: 'GREATER_THAN_EQUAL_TO';
|
|
37
|
+
values: [StringOrNumber];
|
|
38
|
+
}
|
|
39
|
+
export interface LessThanClause {
|
|
40
|
+
condition: 'LESS_THAN';
|
|
41
|
+
values: [StringOrNumber];
|
|
42
|
+
}
|
|
43
|
+
export interface LessThanEqualToClause {
|
|
44
|
+
condition: 'LESS_THAN_EQUAL_TO';
|
|
45
|
+
values: [StringOrNumber];
|
|
46
|
+
}
|
|
47
|
+
export interface ContainsClause {
|
|
48
|
+
condition: 'CONTAINS';
|
|
49
|
+
values: [string];
|
|
50
|
+
}
|
|
51
|
+
export interface NotContainsClause {
|
|
52
|
+
condition: 'NOT_CONTAINS';
|
|
53
|
+
values: [string];
|
|
54
|
+
}
|
|
55
|
+
export interface EqualToClause {
|
|
56
|
+
condition: 'EQUAL_TO';
|
|
57
|
+
values: [StringOrNumberOrBoolean];
|
|
58
|
+
}
|
|
59
|
+
export interface NotEqualToClause {
|
|
60
|
+
condition: 'NOT_EQUAL_TO';
|
|
61
|
+
values: [StringOrNumberOrBoolean];
|
|
62
|
+
}
|
|
63
|
+
export declare type FilterOperator = 'or' | 'and';
|
|
64
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/kvs/interfaces/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oBAAY,IAAI;IACd,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,oBAAY,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAChE,oBAAY,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,cAAc;IACrD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,YAAY,CAAC;IACxB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,oBAAoB,CAAC;IAChC,MAAM,EAAE,CAAC,cAAc,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,CAAC,uBAAuB,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,CAAC,uBAAuB,CAAC,CAAC;CACnC;AAED,oBAAY,cAAc,GAAG,IAAI,GAAG,KAAK,CAAC"}
|
package/out/kvs/kvs.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { KvsEntity, Kvs } from './interfaces/kvs';
|
|
2
|
+
import { QueryBuilder } from './interfaces/query';
|
|
3
|
+
import { TransactionBuilder } from './interfaces/transaction';
|
|
4
|
+
import { StorageApi } from './storage-api';
|
|
5
|
+
export declare class KvsImpl implements Kvs {
|
|
6
|
+
private readonly storageApi;
|
|
7
|
+
constructor(storageApi: StorageApi);
|
|
8
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
9
|
+
set<T>(key: string, value: T): Promise<void>;
|
|
10
|
+
delete(key: string): Promise<void>;
|
|
11
|
+
query(): QueryBuilder;
|
|
12
|
+
getSecret<T>(key: string): Promise<T | undefined>;
|
|
13
|
+
setSecret<T>(key: string, value: T): Promise<void>;
|
|
14
|
+
deleteSecret(key: string): Promise<void>;
|
|
15
|
+
entity<T>(entityName: string): KvsEntity<T>;
|
|
16
|
+
transact(): TransactionBuilder;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=kvs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../../src/kvs/kvs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,qBAAa,OAAQ,YAAW,GAAG;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAEnD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI3C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,YAAY;IAIrB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAIjD,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAI3C,QAAQ,IAAI,kBAAkB;CAG/B"}
|
package/out/kvs/kvs.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KvsImpl = void 0;
|
|
4
|
+
const entity_1 = require("./entity");
|
|
5
|
+
const query_1 = require("./query");
|
|
6
|
+
const transaction_api_1 = require("./transaction-api");
|
|
7
|
+
class KvsImpl {
|
|
8
|
+
storageApi;
|
|
9
|
+
constructor(storageApi) {
|
|
10
|
+
this.storageApi = storageApi;
|
|
11
|
+
}
|
|
12
|
+
get(key) {
|
|
13
|
+
return this.storageApi.get({ key });
|
|
14
|
+
}
|
|
15
|
+
set(key, value) {
|
|
16
|
+
return this.storageApi.set({ key, value });
|
|
17
|
+
}
|
|
18
|
+
delete(key) {
|
|
19
|
+
return this.storageApi.delete({ key });
|
|
20
|
+
}
|
|
21
|
+
query() {
|
|
22
|
+
return new query_1.KvsQueryBuilder(this.storageApi);
|
|
23
|
+
}
|
|
24
|
+
getSecret(key) {
|
|
25
|
+
return this.storageApi.getSecret({ key });
|
|
26
|
+
}
|
|
27
|
+
setSecret(key, value) {
|
|
28
|
+
return this.storageApi.setSecret({ key, value });
|
|
29
|
+
}
|
|
30
|
+
deleteSecret(key) {
|
|
31
|
+
return this.storageApi.deleteSecret({ key });
|
|
32
|
+
}
|
|
33
|
+
entity(entityName) {
|
|
34
|
+
return new entity_1.EntityImpl(entityName, this.storageApi);
|
|
35
|
+
}
|
|
36
|
+
transact() {
|
|
37
|
+
return new transaction_api_1.TransactionBuilderImpl(this.storageApi);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.KvsImpl = KvsImpl;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { QueryBuilder, QueryOptions, WhereClause } from './interfaces/query';
|
|
2
|
+
import { ListResult, Result } from './interfaces/types';
|
|
3
|
+
import { StorageApi } from './storage-api';
|
|
4
|
+
export declare class KvsQueryBuilder implements QueryBuilder {
|
|
5
|
+
private storageApi;
|
|
6
|
+
private options;
|
|
7
|
+
constructor(storageApi: StorageApi, options?: QueryOptions);
|
|
8
|
+
where(property: 'key', condition: WhereClause): this;
|
|
9
|
+
cursor(cursor: string): this;
|
|
10
|
+
limit(limit: number): this;
|
|
11
|
+
getOne<T>(): Promise<Result<T> | undefined>;
|
|
12
|
+
getMany<T>(): Promise<ListResult<T>>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/kvs/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,eAAgB,YAAW,YAAY;IAEhD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,OAAO;gBADP,UAAU,EAAE,UAAU,EACtB,OAAO,GAAE,YAAiB;IAGpC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI;IAKpD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpB,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAQjD,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAOrC"}
|
package/out/kvs/query.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KvsQueryBuilder = void 0;
|
|
4
|
+
class KvsQueryBuilder {
|
|
5
|
+
storageApi;
|
|
6
|
+
options;
|
|
7
|
+
constructor(storageApi, options = {}) {
|
|
8
|
+
this.storageApi = storageApi;
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
where(property, condition) {
|
|
12
|
+
this.options.where = [{ property, ...condition }];
|
|
13
|
+
return this;
|
|
14
|
+
}
|
|
15
|
+
cursor(cursor) {
|
|
16
|
+
this.options.cursor = cursor;
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
limit(limit) {
|
|
20
|
+
this.options.limit = limit;
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
async getOne() {
|
|
24
|
+
const { results } = await this.limit(1).getMany();
|
|
25
|
+
if (results && results.length > 0) {
|
|
26
|
+
return results[0];
|
|
27
|
+
}
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
getMany() {
|
|
31
|
+
return this.storageApi.query({
|
|
32
|
+
limit: this.options.limit,
|
|
33
|
+
after: this.options.cursor,
|
|
34
|
+
where: this.options.where
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.KvsQueryBuilder = KvsQueryBuilder;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FetchMethod } from '@forge/api';
|
|
2
|
+
import { ListResult } from './interfaces/types';
|
|
3
|
+
import { DeleteRequest, EntityDeleteRequest, EntityGetRequest, EntityQueryRequest, EntitySetRequest, GetRequest, QueryRequest, SecretDeleteRequest, SecretGetRequest, SecretSetRequest, SetRequest, TransactionRequest } from './interfaces/kvs-api';
|
|
4
|
+
export declare class StorageApi {
|
|
5
|
+
private apiClient;
|
|
6
|
+
constructor(apiClient: FetchMethod);
|
|
7
|
+
get<T>(body: GetRequest): Promise<T | undefined>;
|
|
8
|
+
getSecret<T>(body: SecretGetRequest): Promise<T | undefined>;
|
|
9
|
+
getEntity<T>(body: EntityGetRequest): Promise<T | undefined>;
|
|
10
|
+
set<T>(body: SetRequest<T>): Promise<void>;
|
|
11
|
+
setSecret<T>(body: SecretSetRequest<T>): Promise<void>;
|
|
12
|
+
setEntity<T>(body: EntitySetRequest<T>): Promise<void>;
|
|
13
|
+
delete(body: DeleteRequest): Promise<void>;
|
|
14
|
+
deleteSecret(body: SecretDeleteRequest): Promise<void>;
|
|
15
|
+
deleteEntity(body: EntityDeleteRequest): Promise<void>;
|
|
16
|
+
query<T>(body: QueryRequest): Promise<ListResult<T>>;
|
|
17
|
+
queryEntity<T>(body: EntityQueryRequest): Promise<ListResult<T>>;
|
|
18
|
+
transact<T>(transactionRequest: TransactionRequest<T>): Promise<void>;
|
|
19
|
+
private handleKeyNotFound;
|
|
20
|
+
private request;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=storage-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-api.d.ts","sourceRoot":"","sources":["../../src/kvs/storage-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EACL,aAAa,EAEb,mBAAmB,EAEnB,gBAAgB,EAEhB,kBAAkB,EAElB,gBAAgB,EAEhB,UAAU,EAEV,YAAY,EAEZ,mBAAmB,EAEnB,gBAAgB,EAEhB,gBAAgB,EAEhB,UAAU,EAEV,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,UAAU;IACT,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,WAAW;IAEpC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOhD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAO5D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAO5D,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAQpD,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAQhE,QAAQ,CAAC,CAAC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAI7D,iBAAiB;YAWjB,OAAO;CAyBtB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageApi = void 0;
|
|
4
|
+
const error_handling_1 = require("./utils/error-handling");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
class StorageApi {
|
|
7
|
+
apiClient;
|
|
8
|
+
constructor(apiClient) {
|
|
9
|
+
this.apiClient = apiClient;
|
|
10
|
+
}
|
|
11
|
+
async get(body) {
|
|
12
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
13
|
+
return this.request('/api/v1/get', body, true);
|
|
14
|
+
});
|
|
15
|
+
return rs?.value;
|
|
16
|
+
}
|
|
17
|
+
async getSecret(body) {
|
|
18
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
19
|
+
return this.request('/api/v1/secret/get', body, true);
|
|
20
|
+
});
|
|
21
|
+
return rs?.value;
|
|
22
|
+
}
|
|
23
|
+
async getEntity(body) {
|
|
24
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
25
|
+
return this.request('/api/v1/entity/get', body, true);
|
|
26
|
+
});
|
|
27
|
+
return rs?.value;
|
|
28
|
+
}
|
|
29
|
+
async set(body) {
|
|
30
|
+
await this.request('/api/v1/set', body, false);
|
|
31
|
+
}
|
|
32
|
+
async setSecret(body) {
|
|
33
|
+
await this.request('/api/v1/secret/set', body, false);
|
|
34
|
+
}
|
|
35
|
+
async setEntity(body) {
|
|
36
|
+
await this.request('/api/v1/entity/set', body, false);
|
|
37
|
+
}
|
|
38
|
+
async delete(body) {
|
|
39
|
+
await this.handleKeyNotFound(async () => {
|
|
40
|
+
return this.request('/api/v1/delete', body, false);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async deleteSecret(body) {
|
|
44
|
+
await this.handleKeyNotFound(async () => {
|
|
45
|
+
return this.request('/api/v1/secret/delete', body, false);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async deleteEntity(body) {
|
|
49
|
+
await this.handleKeyNotFound(async () => {
|
|
50
|
+
return this.request('/api/v1/entity/delete', body, false);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
async query(body) {
|
|
54
|
+
const rs = await this.request('/api/v1/query', body, true);
|
|
55
|
+
return {
|
|
56
|
+
results: rs.data,
|
|
57
|
+
nextCursor: rs.cursor
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async queryEntity(body) {
|
|
61
|
+
const rs = await this.request('/api/v1/entity/query', body, true);
|
|
62
|
+
return {
|
|
63
|
+
results: rs.data,
|
|
64
|
+
nextCursor: rs.cursor
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async transact(transactionRequest) {
|
|
68
|
+
await this.request('/api/v1/transaction', transactionRequest, false);
|
|
69
|
+
}
|
|
70
|
+
async handleKeyNotFound(fn) {
|
|
71
|
+
try {
|
|
72
|
+
return await fn();
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
if (e instanceof errors_1.ForgeKvsAPIError && e.code === 'KEY_NOT_FOUND') {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
throw e;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async request(path, body, isResponseExpected) {
|
|
82
|
+
const requestBody = {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
body: JSON.stringify(body),
|
|
85
|
+
headers: {
|
|
86
|
+
'content-type': 'application/json'
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const response = await this.apiClient(path, requestBody);
|
|
90
|
+
await (0, error_handling_1.checkResponseError)(response);
|
|
91
|
+
if (!isResponseExpected) {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
const responseText = await response.text();
|
|
95
|
+
try {
|
|
96
|
+
return JSON.parse(responseText);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
throw new errors_1.ForgeKvsError(`Unexpected error. Response was not valid JSON: ${responseText}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.StorageApi = StorageApi;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StorageApi } from './storage-api';
|
|
2
|
+
import { EntityConditions, EntityRequiredConditions, TransactCheck, TransactDelete, TransactionBuilder, TransactSet } from './interfaces/transaction';
|
|
3
|
+
export declare class TransactionBuilderImpl implements TransactionBuilder {
|
|
4
|
+
private readonly storageApi;
|
|
5
|
+
protected sets: TransactSet<unknown>[];
|
|
6
|
+
protected deletes: TransactDelete<unknown>[];
|
|
7
|
+
protected checks: TransactCheck<unknown>[];
|
|
8
|
+
constructor(storageApi: StorageApi, sets?: TransactSet<unknown>[], deletes?: TransactDelete<unknown>[], checks?: TransactCheck<unknown>[]);
|
|
9
|
+
set<T>(key: string, value: T, entity?: EntityConditions<T>): this;
|
|
10
|
+
delete<T>(key: string, entity?: EntityConditions<T>): this;
|
|
11
|
+
check<T>(key: string, { entityName, conditions }: EntityRequiredConditions<T>): this;
|
|
12
|
+
execute(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=transaction-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-api.d.ts","sourceRoot":"","sources":["../../src/kvs/transaction-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAIlC,qBAAa,sBAAuB,YAAW,kBAAkB;IAE7D,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE;IACtC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE;IAC5C,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE;gBAHzB,UAAU,EAAE,UAAU,EAC7B,IAAI,GAAE,WAAW,CAAC,OAAO,CAAC,EAAO,EACjC,OAAO,GAAE,cAAc,CAAC,OAAO,CAAC,EAAO,EACvC,MAAM,GAAE,aAAa,CAAC,OAAO,CAAC,EAAO;IAGjD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAkBjE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAiB1D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,IAAI;IAa9E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAY/B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionBuilderImpl = void 0;
|
|
4
|
+
const transaction_request_builder_1 = require("./utils/transaction-request-builder");
|
|
5
|
+
class TransactionBuilderImpl {
|
|
6
|
+
storageApi;
|
|
7
|
+
sets;
|
|
8
|
+
deletes;
|
|
9
|
+
checks;
|
|
10
|
+
constructor(storageApi, sets = [], deletes = [], checks = []) {
|
|
11
|
+
this.storageApi = storageApi;
|
|
12
|
+
this.sets = sets;
|
|
13
|
+
this.deletes = deletes;
|
|
14
|
+
this.checks = checks;
|
|
15
|
+
}
|
|
16
|
+
set(key, value, entity) {
|
|
17
|
+
const transactSet = {
|
|
18
|
+
key,
|
|
19
|
+
value
|
|
20
|
+
};
|
|
21
|
+
if (entity) {
|
|
22
|
+
transactSet.entity = {
|
|
23
|
+
entityName: entity.entityName,
|
|
24
|
+
conditions: entity.conditions
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
this.sets.push(transactSet);
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
delete(key, entity) {
|
|
31
|
+
const transactDelete = {
|
|
32
|
+
key
|
|
33
|
+
};
|
|
34
|
+
if (entity) {
|
|
35
|
+
transactDelete.entity = {
|
|
36
|
+
entityName: entity.entityName,
|
|
37
|
+
conditions: entity.conditions
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
this.deletes.push(transactDelete);
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
check(key, { entityName, conditions }) {
|
|
44
|
+
const transactCheck = {
|
|
45
|
+
key,
|
|
46
|
+
entity: {
|
|
47
|
+
entityName,
|
|
48
|
+
conditions
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
this.checks.push(transactCheck);
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
async execute() {
|
|
55
|
+
const undefineEmptyArray = (arr) => {
|
|
56
|
+
return arr.length === 0 ? undefined : arr;
|
|
57
|
+
};
|
|
58
|
+
const request = {
|
|
59
|
+
set: undefineEmptyArray(this.sets.map(transaction_request_builder_1.buildRequestSet)),
|
|
60
|
+
delete: undefineEmptyArray(this.deletes.map(transaction_request_builder_1.buildRequestDeletes)),
|
|
61
|
+
check: undefineEmptyArray(this.checks.map(transaction_request_builder_1.buildRequestChecks))
|
|
62
|
+
};
|
|
63
|
+
await this.storageApi.transact(request);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.TransactionBuilderImpl = TransactionBuilderImpl;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { APIResponse } from '@forge/api';
|
|
2
|
+
import { ForgeError } from '../errors';
|
|
3
|
+
export declare function isForgeError(body: unknown): body is ForgeError;
|
|
4
|
+
export declare function safeGetParsedBody(text: string): unknown | undefined;
|
|
5
|
+
export declare function extractTraceId(response: APIResponse): string | null;
|
|
6
|
+
export declare function checkResponseError(response: APIResponse): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=error-handling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling.d.ts","sourceRoot":"","sources":["../../../src/kvs/utils/error-handling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAA2B,UAAU,EAAoB,MAAM,WAAW,CAAC;AAElF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,UAAU,CAE9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAMnE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAEnE;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB7E"}
|