@goondan/runtime 0.0.3-alpha3 → 0.0.3-alpha5

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.
@@ -1,100 +0,0 @@
1
- import { describe, it, expect, beforeEach } from "bun:test";
2
- import { ExtensionStateManagerImpl } from "./state-manager.js";
3
- import { FileWorkspaceStorage } from "../workspace/storage.js";
4
- import { WorkspacePaths } from "../workspace/paths.js";
5
- import * as fs from "node:fs/promises";
6
- import * as path from "node:path";
7
- import * as os from "node:os";
8
- describe("ExtensionStateManager", () => {
9
- let tempDir;
10
- let storage;
11
- let paths;
12
- beforeEach(async () => {
13
- tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "ext-state-test-"));
14
- paths = new WorkspacePaths({
15
- stateRoot: tempDir,
16
- projectRoot: tempDir,
17
- });
18
- storage = new FileWorkspaceStorage(paths);
19
- await storage.initializeSystemRoot();
20
- });
21
- it("should load all extension states from storage", async () => {
22
- const instanceKey = "test-instance";
23
- await storage.initializeInstanceState(instanceKey, "test-agent");
24
- await storage.writeExtensionState(instanceKey, "ext1", { count: 1 });
25
- await storage.writeExtensionState(instanceKey, "ext2", { value: "hello" });
26
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1", "ext2"]);
27
- await manager.loadAll();
28
- const state1 = await manager.get("ext1");
29
- const state2 = await manager.get("ext2");
30
- expect(state1).toEqual({ count: 1 });
31
- expect(state2).toEqual({ value: "hello" });
32
- });
33
- it("should return null for non-existent extension state", async () => {
34
- const instanceKey = "test-instance";
35
- await storage.initializeInstanceState(instanceKey, "test-agent");
36
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, []);
37
- await manager.loadAll();
38
- const state = await manager.get("missing");
39
- expect(state).toBeNull();
40
- });
41
- it("should set and track dirty state", async () => {
42
- const instanceKey = "test-instance";
43
- await storage.initializeInstanceState(instanceKey, "test-agent");
44
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1"]);
45
- await manager.loadAll();
46
- await manager.set("ext1", { updated: true });
47
- const state = await manager.get("ext1");
48
- expect(state).toEqual({ updated: true });
49
- });
50
- it("should save only dirty states", async () => {
51
- const instanceKey = "test-instance";
52
- await storage.initializeInstanceState(instanceKey, "test-agent");
53
- await storage.writeExtensionState(instanceKey, "ext1", { original: 1 });
54
- await storage.writeExtensionState(instanceKey, "ext2", { original: 2 });
55
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1", "ext2"]);
56
- await manager.loadAll();
57
- await manager.set("ext1", { modified: true });
58
- await manager.saveAll();
59
- const saved1 = await storage.readExtensionState(instanceKey, "ext1");
60
- const saved2 = await storage.readExtensionState(instanceKey, "ext2");
61
- expect(saved1).toEqual({ modified: true });
62
- expect(saved2).toEqual({ original: 2 });
63
- });
64
- it("should clear dirty set after save", async () => {
65
- const instanceKey = "test-instance";
66
- await storage.initializeInstanceState(instanceKey, "test-agent");
67
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1"]);
68
- await manager.loadAll();
69
- await manager.set("ext1", { count: 1 });
70
- await manager.saveAll();
71
- await manager.set("ext1", { count: 2 });
72
- await manager.saveAll();
73
- const saved = await storage.readExtensionState(instanceKey, "ext1");
74
- expect(saved).toEqual({ count: 2 });
75
- });
76
- it("should throw error if state is not JsonObject", async () => {
77
- const instanceKey = "test-instance";
78
- await storage.initializeInstanceState(instanceKey, "test-agent");
79
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1"]);
80
- await manager.loadAll();
81
- await manager.set("ext1", "invalid-string");
82
- await expect(manager.saveAll()).rejects.toThrow(/must be JsonObject/);
83
- });
84
- it("should handle multiple extensions independently", async () => {
85
- const instanceKey = "test-instance";
86
- await storage.initializeInstanceState(instanceKey, "test-agent");
87
- const manager = new ExtensionStateManagerImpl(storage, instanceKey, ["ext1", "ext2", "ext3"]);
88
- await manager.loadAll();
89
- await manager.set("ext1", { a: 1 });
90
- await manager.set("ext2", { b: 2 });
91
- await manager.set("ext3", { c: 3 });
92
- const state1 = await manager.get("ext1");
93
- const state2 = await manager.get("ext2");
94
- const state3 = await manager.get("ext3");
95
- expect(state1).toEqual({ a: 1 });
96
- expect(state2).toEqual({ b: 2 });
97
- expect(state3).toEqual({ c: 3 });
98
- });
99
- });
100
- //# sourceMappingURL=state-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-manager.test.js","sourceRoot":"","sources":["../../src/extension/state-manager.test.ts"],"names":[],"mappings":"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"}