@jskit-ai/storage-runtime 0.1.155 → 0.1.157
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/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/storage-runtime",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.157",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
7
7
|
},
|
|
8
8
|
"exports": {
|
|
9
9
|
"./client": "./src/client/index.js",
|
|
10
|
-
"./server/providers/
|
|
10
|
+
"./server/providers/StorageProvider": "./src/server/providers/StorageProvider.js"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@jskit-ai/kernel": "0.1.
|
|
13
|
+
"@jskit-ai/kernel": "0.1.160",
|
|
14
14
|
"unstorage": "^1.17.5"
|
|
15
15
|
},
|
|
16
16
|
"jskit": {
|
|
@@ -19,15 +19,16 @@
|
|
|
19
19
|
"provides": [
|
|
20
20
|
"runtime.storage"
|
|
21
21
|
],
|
|
22
|
-
"requires": [
|
|
22
|
+
"requires": [
|
|
23
|
+
"runtime.app-root"
|
|
24
|
+
]
|
|
23
25
|
},
|
|
24
26
|
"runtime": {
|
|
25
27
|
"server": {
|
|
26
|
-
"providerEntrypoint": "src/server/providers/StorageRuntimeServiceProvider.js",
|
|
27
28
|
"providers": [
|
|
28
29
|
{
|
|
29
|
-
"entrypoint": "src/server/providers/
|
|
30
|
-
"export": "
|
|
30
|
+
"entrypoint": "src/server/providers/StorageProvider.js",
|
|
31
|
+
"export": "StorageProvider"
|
|
31
32
|
}
|
|
32
33
|
]
|
|
33
34
|
},
|
|
@@ -39,37 +40,15 @@
|
|
|
39
40
|
"apiSummary": {
|
|
40
41
|
"surfaces": [
|
|
41
42
|
{
|
|
42
|
-
"subpath": "./server/providers/
|
|
43
|
-
"summary": "
|
|
43
|
+
"subpath": "./server/providers/StorageProvider",
|
|
44
|
+
"summary": "Provides the configured runtime.storage instance."
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
47
|
"subpath": "./client",
|
|
47
48
|
"summary": "Exports no client runtime API today (reserved client entrypoint)."
|
|
48
49
|
}
|
|
49
|
-
]
|
|
50
|
-
"containerTokens": {
|
|
51
|
-
"server": [
|
|
52
|
-
"runtime.storage",
|
|
53
|
-
"jskit.storage"
|
|
54
|
-
],
|
|
55
|
-
"client": []
|
|
56
|
-
}
|
|
50
|
+
]
|
|
57
51
|
}
|
|
58
|
-
},
|
|
59
|
-
"mutations": {
|
|
60
|
-
"dependencies": {
|
|
61
|
-
"runtime": {
|
|
62
|
-
"@jskit-ai/kernel": "0.1.158",
|
|
63
|
-
"unstorage": "^1.17.3"
|
|
64
|
-
},
|
|
65
|
-
"dev": {}
|
|
66
|
-
},
|
|
67
|
-
"packageJson": {
|
|
68
|
-
"scripts": {}
|
|
69
|
-
},
|
|
70
|
-
"procfile": {},
|
|
71
|
-
"files": [],
|
|
72
|
-
"text": []
|
|
73
52
|
}
|
|
74
53
|
}
|
|
75
54
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineProvider } from "@jskit-ai/kernel/shared/capabilities";
|
|
2
|
+
import { createStorageBinding } from "../storageBinding.js";
|
|
3
|
+
|
|
4
|
+
const StorageProvider = defineProvider({
|
|
5
|
+
id: "runtime.storage",
|
|
6
|
+
requires: {
|
|
7
|
+
appRoot: "runtime.app-root",
|
|
8
|
+
env: "runtime.env"
|
|
9
|
+
},
|
|
10
|
+
provides: {
|
|
11
|
+
storage: "runtime.storage"
|
|
12
|
+
},
|
|
13
|
+
setup({ appRoot, env }) {
|
|
14
|
+
return {
|
|
15
|
+
storage: createStorageBinding({ env, rootDir: appRoot })
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { StorageProvider };
|
|
@@ -23,8 +23,7 @@ function resolveFsBasePath(fsBasePath, { rootDir } = {}) {
|
|
|
23
23
|
return path.resolve(resolvedRootDir, "data", "storage");
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
function createStorageBinding(
|
|
27
|
-
const env = scope && typeof scope.has === "function" && scope.has("jskit.env") ? scope.make("jskit.env") : {};
|
|
26
|
+
function createStorageBinding({ env = {}, rootDir = process.cwd() } = {}) {
|
|
28
27
|
const driver = normalizeStorageDriver(env?.[STORAGE_DRIVER_ENV_KEY]);
|
|
29
28
|
|
|
30
29
|
if (driver === "memory") {
|
|
@@ -1,46 +1,31 @@
|
|
|
1
|
-
import test from "node:test";
|
|
2
1
|
import assert from "node:assert/strict";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
function createSingletonApp() {
|
|
6
|
-
const singletons = new Map();
|
|
2
|
+
import test from "node:test";
|
|
7
3
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return singletons.get(token);
|
|
4
|
+
import { createCapabilityRuntime, defineProvider } from "@jskit-ai/kernel/shared/capabilities";
|
|
5
|
+
import { StorageProvider } from "../src/server/providers/StorageProvider.js";
|
|
6
|
+
|
|
7
|
+
test("StorageProvider provides the configured storage instance directly", async () => {
|
|
8
|
+
let storage;
|
|
9
|
+
const consumer = defineProvider({
|
|
10
|
+
id: "test.storage.consumer",
|
|
11
|
+
requires: { value: "runtime.storage" },
|
|
12
|
+
setup({ value }) {
|
|
13
|
+
storage = value;
|
|
14
|
+
return {};
|
|
20
15
|
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
const provider = new StorageRuntimeServiceProvider();
|
|
31
|
-
provider.register(app);
|
|
32
|
-
|
|
33
|
-
assert.equal(app.has("runtime.storage"), true);
|
|
34
|
-
assert.equal(app.has("jskit.storage"), true);
|
|
35
|
-
|
|
36
|
-
const runtimeStorageApi = app.make("runtime.storage");
|
|
37
|
-
assert.equal(typeof runtimeStorageApi.createStorageBinding, "function");
|
|
16
|
+
});
|
|
17
|
+
const runtime = createCapabilityRuntime({
|
|
18
|
+
inputs: {
|
|
19
|
+
"runtime.app-root": process.cwd(),
|
|
20
|
+
"runtime.env": { JSKIT_STORAGE_DRIVER: "memory" }
|
|
21
|
+
},
|
|
22
|
+
providers: [StorageProvider, consumer]
|
|
23
|
+
});
|
|
38
24
|
|
|
39
|
-
|
|
25
|
+
await runtime.start();
|
|
40
26
|
assert.equal(typeof storage.setItemRaw, "function");
|
|
41
27
|
assert.equal(typeof storage.getItemRaw, "function");
|
|
42
|
-
|
|
43
28
|
await storage.setItemRaw("tests/storage-runtime", Buffer.from("ok"));
|
|
44
|
-
|
|
45
|
-
|
|
29
|
+
assert.equal(Buffer.from(await storage.getItemRaw("tests/storage-runtime")).toString(), "ok");
|
|
30
|
+
await runtime.shutdown();
|
|
46
31
|
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as storageBinding from "../storageBinding.js";
|
|
2
|
-
|
|
3
|
-
const STORAGE_RUNTIME_SERVER_API = Object.freeze({
|
|
4
|
-
...storageBinding
|
|
5
|
-
});
|
|
6
|
-
|
|
7
|
-
class StorageRuntimeServiceProvider {
|
|
8
|
-
static id = "runtime.storage";
|
|
9
|
-
|
|
10
|
-
register(app) {
|
|
11
|
-
if (!app || typeof app.singleton !== "function") {
|
|
12
|
-
throw new Error("StorageRuntimeServiceProvider requires application singleton().");
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
app.singleton("runtime.storage", () => STORAGE_RUNTIME_SERVER_API);
|
|
16
|
-
app.singleton("jskit.storage", (scope) => storageBinding.createStorageBinding(scope));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
boot() {}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { StorageRuntimeServiceProvider };
|