@forge/kvs 0.1.0-next.4 → 0.1.0-next.6
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/__test__/index.test.js +67 -4
- package/out/entity.d.ts +1 -1
- package/out/entity.d.ts.map +1 -1
- package/out/interfaces/kvs.d.ts +3 -3
- package/out/interfaces/kvs.d.ts.map +1 -1
- package/out/kvs.d.ts +2 -2
- package/out/kvs.d.ts.map +1 -1
- package/out/storage-api.d.ts +4 -3
- package/out/storage-api.d.ts.map +1 -1
- package/out/storage-api.js +32 -9
- package/package.json +4 -1
|
@@ -30,14 +30,17 @@ describe('KVS', () => {
|
|
|
30
30
|
body: JSON.stringify({ key: 'foo' })
|
|
31
31
|
}));
|
|
32
32
|
});
|
|
33
|
-
it('should
|
|
33
|
+
it('should return undefined when get receives 404', async () => {
|
|
34
34
|
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
35
35
|
status: 404,
|
|
36
|
-
statusText: 'Not Found',
|
|
37
36
|
headers: { 'x-trace-id': traceId }
|
|
38
37
|
});
|
|
39
|
-
const { sut } = prepare(response);
|
|
40
|
-
await
|
|
38
|
+
const { sut, apiClient } = prepare(response);
|
|
39
|
+
const rs = await sut.get('foo');
|
|
40
|
+
expect(rs).toBeUndefined();
|
|
41
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/get', expect.objectContaining({
|
|
42
|
+
body: JSON.stringify({ key: 'foo' })
|
|
43
|
+
}));
|
|
41
44
|
});
|
|
42
45
|
it('should handle unexpected response', async () => {
|
|
43
46
|
const response = new Response(JSON.stringify({ code: 'INTERNAL_SERVER_ERROR', message: 'An internal server error has occurred' }), {
|
|
@@ -68,6 +71,18 @@ describe('KVS', () => {
|
|
|
68
71
|
body: JSON.stringify({ key: 'foo' })
|
|
69
72
|
}));
|
|
70
73
|
});
|
|
74
|
+
it('should return undefined when getSecret receives 404', async () => {
|
|
75
|
+
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
76
|
+
status: 404,
|
|
77
|
+
headers: { 'x-trace-id': traceId }
|
|
78
|
+
});
|
|
79
|
+
const { sut, apiClient } = prepare(response);
|
|
80
|
+
const rs = await sut.getSecret('foo');
|
|
81
|
+
expect(rs).toBeUndefined();
|
|
82
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/secret/get', expect.objectContaining({
|
|
83
|
+
body: JSON.stringify({ key: 'foo' })
|
|
84
|
+
}));
|
|
85
|
+
});
|
|
71
86
|
it('should getEntity correctly', async () => {
|
|
72
87
|
const response = new Response(JSON.stringify({ key: 'foo', value: { name: 'Jane Doe' } }), {
|
|
73
88
|
status: 200,
|
|
@@ -80,6 +95,18 @@ describe('KVS', () => {
|
|
|
80
95
|
body: JSON.stringify({ entityName: 'employees', key: 'foo' })
|
|
81
96
|
}));
|
|
82
97
|
});
|
|
98
|
+
it('should return undefined when getEntity receives 404', async () => {
|
|
99
|
+
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
100
|
+
status: 404,
|
|
101
|
+
headers: { 'x-trace-id': traceId }
|
|
102
|
+
});
|
|
103
|
+
const { sut, apiClient } = prepare(response);
|
|
104
|
+
const rs = await sut.entity('employees').get('foo');
|
|
105
|
+
expect(rs).toBeUndefined();
|
|
106
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/entity/get', expect.objectContaining({
|
|
107
|
+
body: JSON.stringify({ entityName: 'employees', key: 'foo' })
|
|
108
|
+
}));
|
|
109
|
+
});
|
|
83
110
|
it('should set correctly', async () => {
|
|
84
111
|
const response = new Response(undefined, {
|
|
85
112
|
status: 204,
|
|
@@ -128,6 +155,18 @@ describe('KVS', () => {
|
|
|
128
155
|
body: JSON.stringify({ key: 'foo' })
|
|
129
156
|
}));
|
|
130
157
|
});
|
|
158
|
+
it('should return undefined when delete receives 404', async () => {
|
|
159
|
+
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
160
|
+
status: 404,
|
|
161
|
+
headers: { 'x-trace-id': traceId }
|
|
162
|
+
});
|
|
163
|
+
const { sut, apiClient } = prepare(response);
|
|
164
|
+
const rs = await sut.delete('foo');
|
|
165
|
+
expect(rs).toBeUndefined();
|
|
166
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/delete', expect.objectContaining({
|
|
167
|
+
body: JSON.stringify({ key: 'foo' })
|
|
168
|
+
}));
|
|
169
|
+
});
|
|
131
170
|
it('should deleteSecret correctly', async () => {
|
|
132
171
|
const response = new Response(undefined, {
|
|
133
172
|
status: 204,
|
|
@@ -140,6 +179,18 @@ describe('KVS', () => {
|
|
|
140
179
|
body: JSON.stringify({ key: 'foo' })
|
|
141
180
|
}));
|
|
142
181
|
});
|
|
182
|
+
it('should return undefined when deleteSecret receives 404', async () => {
|
|
183
|
+
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
184
|
+
status: 404,
|
|
185
|
+
headers: { 'x-trace-id': traceId }
|
|
186
|
+
});
|
|
187
|
+
const { sut, apiClient } = prepare(response);
|
|
188
|
+
const rs = await sut.deleteSecret('foo');
|
|
189
|
+
expect(rs).toBeUndefined();
|
|
190
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/secret/delete', expect.objectContaining({
|
|
191
|
+
body: JSON.stringify({ key: 'foo' })
|
|
192
|
+
}));
|
|
193
|
+
});
|
|
143
194
|
it('should deleteEntity correctly', async () => {
|
|
144
195
|
const response = new Response(undefined, {
|
|
145
196
|
status: 204,
|
|
@@ -152,6 +203,18 @@ describe('KVS', () => {
|
|
|
152
203
|
body: JSON.stringify({ entityName: 'employees', key: 'foo' })
|
|
153
204
|
}));
|
|
154
205
|
});
|
|
206
|
+
it('should return undefined when deleteEntity receives 404', async () => {
|
|
207
|
+
const response = new Response(JSON.stringify({ code: 'KEY_NOT_FOUND', message: 'Provided key does not exist' }), {
|
|
208
|
+
status: 404,
|
|
209
|
+
headers: { 'x-trace-id': traceId }
|
|
210
|
+
});
|
|
211
|
+
const { sut, apiClient } = prepare(response);
|
|
212
|
+
const rs = await sut.entity('employees').delete('foo');
|
|
213
|
+
expect(rs).toBeUndefined();
|
|
214
|
+
expect(apiClient).toHaveBeenCalledWith('/api/v1/entity/delete', expect.objectContaining({
|
|
215
|
+
body: JSON.stringify({ entityName: 'employees', key: 'foo' })
|
|
216
|
+
}));
|
|
217
|
+
});
|
|
155
218
|
it('should query correctly', async () => {
|
|
156
219
|
const response = new Response(JSON.stringify({ cursor: 'third-page', data: [{ key: 'foo', value: 'bar' }] }), {
|
|
157
220
|
status: 200,
|
package/out/entity.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare class EntityImpl<T> implements KvsEntity<T> {
|
|
|
5
5
|
private readonly entityName;
|
|
6
6
|
private readonly storageApi;
|
|
7
7
|
constructor(entityName: string, storageApi: StorageApi);
|
|
8
|
-
get(key: string): Promise<T>;
|
|
8
|
+
get(key: string): Promise<T | undefined>;
|
|
9
9
|
set(key: string, value: T): Promise<void>;
|
|
10
10
|
delete(key: string): Promise<void>;
|
|
11
11
|
query(): IndexQueryBuilder<T>;
|
package/out/entity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU;IAGzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../src/entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,SAAS,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,UAAU;IAGzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC;CAG9B"}
|
package/out/interfaces/kvs.d.ts
CHANGED
|
@@ -2,18 +2,18 @@ import { IndexQueryBuilder } from './entity-query';
|
|
|
2
2
|
import { QueryBuilder } from './query';
|
|
3
3
|
import { TransactionBuilder } from './transaction';
|
|
4
4
|
export interface Kvs {
|
|
5
|
-
get<T>(key: string): Promise<T>;
|
|
5
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
6
6
|
set<T>(key: string, value: T): Promise<void>;
|
|
7
7
|
delete(key: string): Promise<void>;
|
|
8
8
|
query(): QueryBuilder;
|
|
9
|
-
getSecret<T>(key: string): Promise<T>;
|
|
9
|
+
getSecret<T>(key: string): Promise<T | undefined>;
|
|
10
10
|
setSecret<T>(key: string, value: T): Promise<void>;
|
|
11
11
|
deleteSecret(key: string): Promise<void>;
|
|
12
12
|
entity<T>(entityName: string): KvsEntity<T>;
|
|
13
13
|
transact(): TransactionBuilder;
|
|
14
14
|
}
|
|
15
15
|
export interface KvsEntity<T> {
|
|
16
|
-
get(key: string): Promise<T>;
|
|
16
|
+
get(key: string): Promise<T | undefined>;
|
|
17
17
|
set(key: string, value: T): Promise<void>;
|
|
18
18
|
delete(key: string): Promise<void>;
|
|
19
19
|
query(): IndexQueryBuilder<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../../src/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,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../../src/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"}
|
package/out/kvs.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ import { StorageApi } from './storage-api';
|
|
|
5
5
|
export declare class KvsImpl implements Kvs {
|
|
6
6
|
private readonly storageApi;
|
|
7
7
|
constructor(storageApi: StorageApi);
|
|
8
|
-
get<T>(key: string): Promise<T>;
|
|
8
|
+
get<T>(key: string): Promise<T | undefined>;
|
|
9
9
|
set<T>(key: string, value: T): Promise<void>;
|
|
10
10
|
delete(key: string): Promise<void>;
|
|
11
11
|
query(): QueryBuilder;
|
|
12
|
-
getSecret<T>(key: string): Promise<T>;
|
|
12
|
+
getSecret<T>(key: string): Promise<T | undefined>;
|
|
13
13
|
setSecret<T>(key: string, value: T): Promise<void>;
|
|
14
14
|
deleteSecret(key: string): Promise<void>;
|
|
15
15
|
entity<T>(entityName: string): KvsEntity<T>;
|
package/out/kvs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../src/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,CAAC;
|
|
1
|
+
{"version":3,"file":"kvs.d.ts","sourceRoot":"","sources":["../src/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/storage-api.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ import { DeleteRequest, EntityDeleteRequest, EntityGetRequest, EntityQueryReques
|
|
|
4
4
|
export declare class StorageApi {
|
|
5
5
|
private apiClient;
|
|
6
6
|
constructor(apiClient: FetchMethod);
|
|
7
|
-
get<T>(body: GetRequest): Promise<T>;
|
|
8
|
-
getSecret<T>(body: SecretGetRequest): Promise<T>;
|
|
9
|
-
getEntity<T>(body: EntityGetRequest): Promise<T>;
|
|
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
10
|
set<T>(body: SetRequest<T>): Promise<void>;
|
|
11
11
|
setSecret<T>(body: SecretSetRequest<T>): Promise<void>;
|
|
12
12
|
setEntity<T>(body: EntitySetRequest<T>): Promise<void>;
|
|
@@ -16,6 +16,7 @@ export declare class StorageApi {
|
|
|
16
16
|
query<T>(body: QueryRequest): Promise<ListResult<T>>;
|
|
17
17
|
queryEntity<T>(body: EntityQueryRequest): Promise<ListResult<T>>;
|
|
18
18
|
transact<T>(transactionRequest: TransactionRequest<T>): Promise<void>;
|
|
19
|
+
private handleKeyNotFound;
|
|
19
20
|
private request;
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=storage-api.d.ts.map
|
package/out/storage-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-api.d.ts","sourceRoot":"","sources":["../src/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,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-api.d.ts","sourceRoot":"","sources":["../src/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"}
|
package/out/storage-api.js
CHANGED
|
@@ -9,16 +9,22 @@ class StorageApi {
|
|
|
9
9
|
this.apiClient = apiClient;
|
|
10
10
|
}
|
|
11
11
|
async get(body) {
|
|
12
|
-
const rs = await this.
|
|
13
|
-
|
|
12
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
13
|
+
return this.request('/api/v1/get', body, true);
|
|
14
|
+
});
|
|
15
|
+
return rs?.value;
|
|
14
16
|
}
|
|
15
17
|
async getSecret(body) {
|
|
16
|
-
const rs = await this.
|
|
17
|
-
|
|
18
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
19
|
+
return this.request('/api/v1/secret/get', body, true);
|
|
20
|
+
});
|
|
21
|
+
return rs?.value;
|
|
18
22
|
}
|
|
19
23
|
async getEntity(body) {
|
|
20
|
-
const rs = await this.
|
|
21
|
-
|
|
24
|
+
const rs = await this.handleKeyNotFound(async () => {
|
|
25
|
+
return this.request('/api/v1/entity/get', body, true);
|
|
26
|
+
});
|
|
27
|
+
return rs?.value;
|
|
22
28
|
}
|
|
23
29
|
async set(body) {
|
|
24
30
|
await this.request('/api/v1/set', body, false);
|
|
@@ -30,13 +36,19 @@ class StorageApi {
|
|
|
30
36
|
await this.request('/api/v1/entity/set', body, false);
|
|
31
37
|
}
|
|
32
38
|
async delete(body) {
|
|
33
|
-
await this.
|
|
39
|
+
await this.handleKeyNotFound(async () => {
|
|
40
|
+
return this.request('/api/v1/delete', body, false);
|
|
41
|
+
});
|
|
34
42
|
}
|
|
35
43
|
async deleteSecret(body) {
|
|
36
|
-
await this.
|
|
44
|
+
await this.handleKeyNotFound(async () => {
|
|
45
|
+
return this.request('/api/v1/secret/delete', body, false);
|
|
46
|
+
});
|
|
37
47
|
}
|
|
38
48
|
async deleteEntity(body) {
|
|
39
|
-
await this.
|
|
49
|
+
await this.handleKeyNotFound(async () => {
|
|
50
|
+
return this.request('/api/v1/entity/delete', body, false);
|
|
51
|
+
});
|
|
40
52
|
}
|
|
41
53
|
async query(body) {
|
|
42
54
|
const rs = await this.request('/api/v1/query', body, true);
|
|
@@ -55,6 +67,17 @@ class StorageApi {
|
|
|
55
67
|
async transact(transactionRequest) {
|
|
56
68
|
await this.request('/api/v1/transaction', transactionRequest, false);
|
|
57
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
|
+
}
|
|
58
81
|
async request(path, body, isResponseExpected) {
|
|
59
82
|
const requestBody = {
|
|
60
83
|
method: 'POST',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/kvs",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.6",
|
|
4
4
|
"description": "Forge Key Value Store SDK",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -20,5 +20,8 @@
|
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@forge/api": "^5.1.0-next.7"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"registry": "https://packages.atlassian.com/api/npm/npm-public/"
|
|
23
26
|
}
|
|
24
27
|
}
|