npm package diff
Package: @forge/cache
Versions: 1.0.3-next.0 - 1.0.3-next.0-experimental-ab129b0
File: package/out/kvs/storage-api.js
Index: package/out/kvs/storage-api.js
===================================================================
--- package/out/kvs/storage-api.js
+++ package/out/kvs/storage-api.js
@@ -0,0 +1,103 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.StorageApi = void 0;
+const error_handling_1 = require("./utils/error-handling");
+const errors_1 = require("./errors");
+class StorageApi {
+ apiClient;
+ constructor(apiClient) {
+ this.apiClient = apiClient;
+ }
+ async get(body) {
+ const rs = await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/get', body, true);
+ });
+ return rs?.value;
+ }
+ async getSecret(body) {
+ const rs = await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/secret/get', body, true);
+ });
+ return rs?.value;
+ }
+ async getEntity(body) {
+ const rs = await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/entity/get', body, true);
+ });
+ return rs?.value;
+ }
+ async set(body) {
+ await this.request('/api/v1/set', body, false);
+ }
+ async setSecret(body) {
+ await this.request('/api/v1/secret/set', body, false);
+ }
+ async setEntity(body) {
+ await this.request('/api/v1/entity/set', body, false);
+ }
+ async delete(body) {
+ await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/delete', body, false);
+ });
+ }
+ async deleteSecret(body) {
+ await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/secret/delete', body, false);
+ });
+ }
+ async deleteEntity(body) {
+ await this.handleKeyNotFound(async () => {
+ return this.request('/api/v1/entity/delete', body, false);
+ });
+ }
+ async query(body) {
+ const rs = await this.request('/api/v1/query', body, true);
+ return {
+ results: rs.data,
+ nextCursor: rs.cursor
+ };
+ }
+ async queryEntity(body) {
+ const rs = await this.request('/api/v1/entity/query', body, true);
+ return {
+ results: rs.data,
+ nextCursor: rs.cursor
+ };
+ }
+ async transact(transactionRequest) {
+ await this.request('/api/v1/transaction', transactionRequest, false);
+ }
+ async handleKeyNotFound(fn) {
+ try {
+ return await fn();
+ }
+ catch (e) {
+ if (e instanceof errors_1.ForgeKvsAPIError && e.code === 'KEY_NOT_FOUND') {
+ return undefined;
+ }
+ throw e;
+ }
+ }
+ async request(path, body, isResponseExpected) {
+ const requestBody = {
+ method: 'POST',
+ body: JSON.stringify(body),
+ headers: {
+ 'content-type': 'application/json'
+ }
+ };
+ const response = await this.apiClient(path, requestBody);
+ await (0, error_handling_1.checkResponseError)(response);
+ if (!isResponseExpected) {
+ return {};
+ }
+ const responseText = await response.text();
+ try {
+ return JSON.parse(responseText);
+ }
+ catch (error) {
+ throw new errors_1.ForgeKvsError(`Unexpected error. Response was not valid JSON: ${responseText}`);
+ }
+ }
+}
+exports.StorageApi = StorageApi;