@forge/cache 0.3.2-next.0 → 0.4.0-next.1

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/README.md CHANGED
@@ -17,4 +17,6 @@ const result = await cacheClient.incrementAndGet("hello");
17
17
  const result = await cacheClient.decrementAndGet("hello");
18
18
 
19
19
  const result = await cacheClient.delete("hello");
20
+
21
+ const result = await cacheClient.scan("hello*", { cursor: "10", count: 10 });
20
22
  ```
@@ -226,4 +226,36 @@ describe('Cache', () => {
226
226
  expect(fetch.mock.lastCall).toMatchSnapshot();
227
227
  });
228
228
  });
229
+ describe('scan', () => {
230
+ it('handles success', async () => {
231
+ const { cache, fetch } = buildCache();
232
+ const expectedResponse = { cursor: '0', keys: ['key1', 'key2'] };
233
+ fetch.mockResolvedValueOnce({ ok: true, text: async () => JSON.stringify(expectedResponse), status: 200 });
234
+ const actualResponse = await cache.scan('key*');
235
+ expect(actualResponse).toEqual(expectedResponse);
236
+ expect(fetch.mock.lastCall).toMatchSnapshot();
237
+ });
238
+ it('handles success with cursor', async () => {
239
+ const { cache, fetch } = buildCache();
240
+ const expectedResponse = { cursor: '0', keys: ['key2'] };
241
+ fetch.mockResolvedValueOnce({ ok: true, text: async () => JSON.stringify(expectedResponse), status: 200 });
242
+ const actualResponse = await cache.scan('key*', { cursor: '1' });
243
+ expect(actualResponse).toEqual(expectedResponse);
244
+ expect(fetch.mock.lastCall).toMatchSnapshot();
245
+ });
246
+ it('handles success with count', async () => {
247
+ const { cache, fetch } = buildCache();
248
+ const expectedResponse = { cursor: '0', keys: ['key1'] };
249
+ fetch.mockResolvedValueOnce({ ok: true, text: async () => JSON.stringify(expectedResponse), status: 200 });
250
+ const actualResponse = await cache.scan('key*', { count: 1 });
251
+ expect(actualResponse).toEqual(expectedResponse);
252
+ expect(fetch.mock.lastCall).toMatchSnapshot();
253
+ });
254
+ it('handles failure', async () => {
255
+ const { cache, fetch } = buildCache();
256
+ fetch.mockResolvedValueOnce({ ok: false, text: async () => 'Not allowed', status: 403 });
257
+ await expect(cache.scan('key*', { cursor: '0', count: 2 })).rejects.toMatchError(new api_1.HttpError('403: Not allowed'));
258
+ expect(fetch.mock.lastCall).toMatchSnapshot();
259
+ });
260
+ });
229
261
  });
package/out/cache.d.ts CHANGED
@@ -15,6 +15,10 @@ export declare class Cache {
15
15
  incrementAndGet(key: string): Promise<number>;
16
16
  decrementAndGet(key: string): Promise<number>;
17
17
  delete(key: string): Promise<number>;
18
+ scan(pattern: string, opt?: {
19
+ cursor?: string;
20
+ count?: number;
21
+ }): Promise<JSON>;
18
22
  }
19
23
  export declare function getFetchRmsRuntimeV1(): ((path: string, options?: RequestInit) => Promise<Response>) | undefined;
20
24
  export declare function createFetchRmsRuntimeV2(): (path: string, options?: RequestInit) => Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAkB,EAAE,WAAW,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAInF,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;AAGzE,wBAAsB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAYtE;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC;IAGtF,OAAO,CAAC,YAAY;IAUP,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAO9F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAMlD;AAED,wBAAgB,oBAAoB,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAE/G;AAID,wBAAgB,uBAAuB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2BpG;AAED,wBAAgB,OAAO,UAItB"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAkB,EAAE,WAAW,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAInF,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC;AAGzE,wBAAsB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAYtE;AAED,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC;IAGtF,OAAO,CAAC,YAAY;IAUP,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5E,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAO9F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOjC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO7C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAM7F;AAED,wBAAgB,oBAAoB,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAE/G;AAID,wBAAgB,uBAAuB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CA2BpG;AAED,wBAAgB,OAAO,UAItB"}
package/out/cache.js CHANGED
@@ -58,6 +58,11 @@ class Cache {
58
58
  const { response: result } = await getResponseBody(response);
59
59
  return result;
60
60
  }
61
+ async scan(pattern, opt) {
62
+ const { cursor, count } = opt || {};
63
+ const response = await this.client('rms/store/scan', this.buildRequest({ cursor, pattern, count }));
64
+ return await getResponseBody(response);
65
+ }
61
66
  }
62
67
  exports.Cache = Cache;
63
68
  function getFetchRmsRuntimeV1() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/cache",
3
- "version": "0.3.2-next.0",
3
+ "version": "0.4.0-next.1",
4
4
  "description": "Forge Cache methods",
5
5
  "author": "Atlassian",
6
6
  "license": "UNLICENSED",