@forge/kvs

2.0.5-next.12.0.5-next.1-experimental-e9e08bb
~

Modified (4 files)

Index: package/out/index.js
===================================================================
--- package/out/index.js
+++ package/out/index.js
@@ -4,8 +4,11 @@
 const tslib_1 = require("tslib");
 const kvs_1 = require("./kvs");
 const storage_api_1 = require("./storage-api");
 function getFetchClient() {
+    const localClient = getLocalStorageFetchClient();
+    if (localClient)
+        return localClient;
     const runtime = global.__forge_runtime__;
     if (runtime?.kvs?.url && runtime?.kvs?.host) {
         const { proxy, kvs, tracing } = runtime;
         return async function (path, options) {
@@ -28,8 +31,36 @@
             remote: 'kvs'
         }, path, options);
     };
 }
+function getLocalStorageFetchClient() {
+    if (process.env.FORGE_LOCAL_STORAGE !== '1')
+        return undefined;
+    const baseUrl = process.env.FORGE_LOCAL_KVS_URL;
+    const appId = process.env.FORGE_LOCAL_STORAGE_APP_ID;
+    const environmentId = process.env.FORGE_LOCAL_STORAGE_ENVIRONMENT_ID;
+    const installationId = process.env.FORGE_LOCAL_STORAGE_INSTALLATION_ID;
+    if (!baseUrl || !appId || !environmentId || !installationId) {
+        throw new Error('Forge local KVS routing is enabled but its local namespace is incomplete.');
+    }
+    if (baseUrl !== 'http://127.0.0.1:18090') {
+        throw new Error('Forge local KVS endpoint must be http://127.0.0.1:18090.');
+    }
+    const fetchImplementation = globalThis.__forge_local_fetch__;
+    if (typeof fetchImplementation !== 'function') {
+        throw new Error('Forge local KVS routing requires the tunnel local-fetch bridge.');
+    }
+    const endpoint = new URL(baseUrl);
+    return async (requestPath, options) => (await fetchImplementation(new URL(requestPath, endpoint), {
+        ...options,
+        headers: {
+            ...options?.headers,
+            'x-forge-app-id': appId,
+            'x-forge-environment-id': environmentId,
+            'x-forge-installation-id': installationId
+        }
+    }));
+}
 const storageApi = new storage_api_1.StorageApi(getFetchClient());
 const kvs = new kvs_1.KvsImpl(storageApi);
 exports.kvs = kvs;
 var conditions_1 = require("./conditions");
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/kvs",
-  "version": "2.0.5-next.1",
+  "version": "2.0.5-next.1-experimental-e9e08bb",
   "description": "Forge Key Value Store SDK",
   "author": "Atlassian",
   "license": "SEE LICENSE IN LICENSE.txt",
   "main": "out/index.js",
@@ -16,9 +16,9 @@
     "@types/node": "20.19.1",
     "typescript": "5.9.2"
   },
   "dependencies": {
-    "@forge/api": "^8.0.5-next.0"
+    "@forge/api": "^8.0.5-next.1-experimental-e9e08bb"
   },
   "publishConfig": {
     "registry": "https://packages.atlassian.com/api/npm/npm-public/"
   },
Index: package/out/index.d.ts.map
===================================================================
--- package/out/index.d.ts.map
+++ package/out/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAqChC,QAAA,MAAM,GAAG,SAA0B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,eAAe,GAAG,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAqEhC,QAAA,MAAM,GAAG,SAA0B,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAChE,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,CAAC;AACf,eAAe,GAAG,CAAC"}
\ No newline at end of file
Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,16 @@
 # @forge/kvs
 
+## 2.0.5-next.1-experimental-e9e08bb
+
+### Patch Changes
+
+- 067c20a: Add manifest-driven Docker local storage, seeding, reset, status, persistent lifecycle, and local
+  SDK routing for Forge tunnels. Simplify `forge storage entities indexes list` to
+  `forge storage indexes list`.
+- 01e9f12: Include package changelogs in published artifacts.
+  - @forge/[email protected]
+
 ## 2.0.5-next.1
 
 ### Patch Changes