@fireproof/core-test 0.23.11 → 0.23.15-dev-windows

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.
@@ -0,0 +1,202 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { hashStringSync, hashObjectSync } from "@fireproof/core-runtime";
3
+ describe("Hash functions", () => {
4
+ describe("hashStringSync", () => {
5
+ it("should hash a simple string", () => {
6
+ const result = hashStringSync("hello");
7
+ expect(result).toEqual(expect.any(String));
8
+ expect(result.length).toBeGreaterThan(0);
9
+ });
10
+ it("should produce consistent hashes for the same input", () => {
11
+ const input = "test string";
12
+ const hash1 = hashStringSync(input);
13
+ const hash2 = hashStringSync(input);
14
+ expect(hash1).toBe(hash2);
15
+ });
16
+ it("should produce different hashes for different inputs", () => {
17
+ const hash1 = hashStringSync("hello");
18
+ const hash2 = hashStringSync("world");
19
+ expect(hash1).not.toBe(hash2);
20
+ });
21
+ it("should handle empty string", () => {
22
+ const result = hashStringSync("");
23
+ expect(result).toEqual(expect.any(String));
24
+ expect(result.length).toBeGreaterThan(0);
25
+ });
26
+ it("should handle unicode characters", () => {
27
+ const result = hashStringSync("=%>�");
28
+ expect(result).toEqual(expect.any(String));
29
+ expect(result.length).toBeGreaterThan(0);
30
+ });
31
+ it("should handle long strings", () => {
32
+ const longString = "a".repeat(10000);
33
+ const result = hashStringSync(longString);
34
+ expect(result).toEqual(expect.any(String));
35
+ expect(result.length).toBeGreaterThan(0);
36
+ });
37
+ it("should produce different hashes for strings with different whitespace", () => {
38
+ const hash1 = hashStringSync("hello world");
39
+ const hash2 = hashStringSync("hello world");
40
+ const hash3 = hashStringSync("hello\tworld");
41
+ const hash4 = hashStringSync("hello\nworld");
42
+ expect(hash1).not.toBe(hash2);
43
+ expect(hash1).not.toBe(hash3);
44
+ expect(hash1).not.toBe(hash4);
45
+ expect(hash2).not.toBe(hash3);
46
+ expect(hash2).not.toBe(hash4);
47
+ expect(hash3).not.toBe(hash4);
48
+ });
49
+ it("should be case sensitive", () => {
50
+ const hash1 = hashStringSync("Hello");
51
+ const hash2 = hashStringSync("hello");
52
+ expect(hash1).not.toBe(hash2);
53
+ });
54
+ it("should handle special characters and symbols", () => {
55
+ const specialChars = "!@#$%^&*()_+-=[]{}|;:,.<>?";
56
+ const result = hashStringSync(specialChars);
57
+ expect(result).toEqual(expect.any(String));
58
+ expect(result.length).toBeGreaterThan(0);
59
+ });
60
+ });
61
+ describe("hashObjectSync", () => {
62
+ it("should hash a simple object", () => {
63
+ const obj = { name: "test", value: 42 };
64
+ const result = hashObjectSync(obj);
65
+ expect(result).toEqual(expect.any(String));
66
+ expect(result.length).toBeGreaterThan(0);
67
+ });
68
+ it("should produce consistent hashes for the same object", () => {
69
+ const obj = { name: "test", value: 42 };
70
+ const hash1 = hashObjectSync(obj);
71
+ const hash2 = hashObjectSync(obj);
72
+ expect(hash1).toBe(hash2);
73
+ });
74
+ it("should produce same hash for objects with same properties in different order", () => {
75
+ const obj1 = { name: "test", value: 42 };
76
+ const obj2 = { value: 42, name: "test" };
77
+ const hash1 = hashObjectSync(obj1);
78
+ const hash2 = hashObjectSync(obj2);
79
+ expect(hash1).toBe(hash2);
80
+ });
81
+ it("should produce different hashes for objects with different values", () => {
82
+ const obj1 = { name: "test", value: 42 };
83
+ const obj2 = { name: "test", value: 43 };
84
+ const hash1 = hashObjectSync(obj1);
85
+ const hash2 = hashObjectSync(obj2);
86
+ expect(hash1).not.toBe(hash2);
87
+ });
88
+ it("should handle nested objects", () => {
89
+ const obj = {
90
+ user: {
91
+ name: "John",
92
+ details: {
93
+ age: 30,
94
+ address: {
95
+ city: "New York",
96
+ zip: "10001",
97
+ },
98
+ },
99
+ },
100
+ };
101
+ const result = hashObjectSync(obj);
102
+ expect(result).toEqual(expect.any(String));
103
+ expect(result.length).toBeGreaterThan(0);
104
+ });
105
+ it("should handle arrays", () => {
106
+ const obj = {
107
+ items: ["apple", "banana", "cherry"],
108
+ numbers: [1, 2, 3],
109
+ };
110
+ const result = hashObjectSync(obj);
111
+ expect(result).toEqual(expect.any(String));
112
+ expect(result.length).toBeGreaterThan(0);
113
+ });
114
+ it("should produce different hashes for arrays with same elements in different order", () => {
115
+ const obj1 = { items: ["apple", "banana", "cherry"] };
116
+ const obj2 = { items: ["banana", "apple", "cherry"] };
117
+ const hash1 = hashObjectSync(obj1);
118
+ const hash2 = hashObjectSync(obj2);
119
+ expect(hash1).not.toBe(hash2);
120
+ });
121
+ it("should handle empty object", () => {
122
+ const result = hashObjectSync({});
123
+ expect(result).toEqual(expect.any(String));
124
+ expect(result.length).toBeGreaterThan(0);
125
+ });
126
+ it("should handle null and undefined values", () => {
127
+ const obj = {
128
+ nullValue: null,
129
+ undefinedValue: undefined,
130
+ normalValue: "test",
131
+ };
132
+ const result = hashObjectSync(obj);
133
+ expect(result).toEqual(expect.any(String));
134
+ expect(result.length).toBeGreaterThan(0);
135
+ });
136
+ it("should handle boolean values", () => {
137
+ const obj = {
138
+ isTrue: true,
139
+ isFalse: false,
140
+ name: "test",
141
+ };
142
+ const result = hashObjectSync(obj);
143
+ expect(result).toEqual(expect.any(String));
144
+ expect(result.length).toBeGreaterThan(0);
145
+ });
146
+ it("should handle mixed data types", () => {
147
+ const obj = {
148
+ string: "hello",
149
+ number: 42,
150
+ boolean: true,
151
+ array: [1, "two", { three: 3 }],
152
+ nested: {
153
+ date: "2023-01-01",
154
+ count: 0,
155
+ },
156
+ };
157
+ const result = hashObjectSync(obj);
158
+ expect(result).toEqual(expect.any(String));
159
+ expect(result.length).toBeGreaterThan(0);
160
+ });
161
+ it("should produce different hashes when properties are added", () => {
162
+ const obj1 = { name: "test" };
163
+ const obj2 = { name: "test", extra: "property" };
164
+ const hash1 = hashObjectSync(obj1);
165
+ const hash2 = hashObjectSync(obj2);
166
+ expect(hash1).not.toBe(hash2);
167
+ });
168
+ it("should produce different hashes when properties are removed", () => {
169
+ const obj1 = { name: "test", value: 42 };
170
+ const obj2 = { name: "test" };
171
+ const hash1 = hashObjectSync(obj1);
172
+ const hash2 = hashObjectSync(obj2);
173
+ expect(hash1).not.toBe(hash2);
174
+ });
175
+ it("should handle objects with many properties", () => {
176
+ const largeObj = {};
177
+ for (let i = 0; i < 100; i++) {
178
+ largeObj[`prop${i}`] = `value${i}`;
179
+ }
180
+ const result = hashObjectSync(largeObj);
181
+ expect(result).toEqual(expect.any(String));
182
+ expect(result.length).toBeGreaterThan(0);
183
+ });
184
+ });
185
+ describe("Cross-function consistency", () => {
186
+ it("should produce different hashes for string vs object with same content", () => {
187
+ const str = "hello";
188
+ const obj = { value: "hello" };
189
+ const stringHash = hashStringSync(str);
190
+ const objectHash = hashObjectSync(obj);
191
+ expect(stringHash).not.toBe(objectHash);
192
+ });
193
+ it("should produce different hashes for number as string vs number", () => {
194
+ const strObj = { value: "42" };
195
+ const numObj = { value: 42 };
196
+ const stringHash = hashObjectSync(strObj);
197
+ const numberHash = hashObjectSync(numObj);
198
+ expect(stringHash).not.toBe(numberHash);
199
+ });
200
+ });
201
+ });
202
+ //# sourceMappingURL=hash.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../jsr/runtime/hash.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;QAC/B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,aAAa,CAAC;YAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC3B,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE,CAAC;YAChF,MAAM,KAAK,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;YAE7C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE,CAAC;YACvD,MAAM,YAAY,GAAG,4BAA4B,CAAC;YAClD,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC;QAC/B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE,CAAC;YAC/D,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC3B,CAAC,CAAC;QAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE,CAAC;YACvF,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC3B,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE,CAAC;YAC5E,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;wBACP,GAAG,EAAE,EAAE;wBACP,OAAO,EAAE;4BACP,IAAI,EAAE,UAAU;4BAChB,GAAG,EAAE,OAAO;yBACb;qBACF;iBACF;aACF,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG;gBACV,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;gBACpC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACnB,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE,CAAC;YAC3F,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG;gBACV,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,SAAS;gBACzB,WAAW,EAAE,MAAM;aACpB,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG;gBACV,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,MAAM;aACb,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG;gBACV,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC/B,MAAM,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,CAAC;iBACT;aACF,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE,CAAC;YACpE,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAA,CAC/B,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAAC;YACrD,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;YACrC,CAAC;YACD,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAAA,CAC1C,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAAC;QAC3C,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE,CAAC;YACjF,MAAM,GAAG,GAAG,OAAO,CAAC;YACpB,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAA,CACzC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE,CAAC;YACzE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAA,CACzC,CAAC,CAAC;IAAA,CACJ,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
@@ -1,9 +1,22 @@
1
- import { URI } from "@adviser/cement";
1
+ import { BuildURI, URI } from "@adviser/cement";
2
+ import { DeviceIdKey } from "@fireproof/core-device-id";
2
3
  import { getKeyBag, KeyBagProviderMemory } from "@fireproof/core-keybag";
3
4
  import { ensureSuperThis } from "@fireproof/core-runtime";
5
+ import { KeyedV2StorageKeyItemSchema, } from "@fireproof/core-types-base";
4
6
  import { isKeyUpsertResultModified } from "@fireproof/core-types-blockstore";
7
+ import { UnsecuredJWT } from "jose";
5
8
  import { base58btc } from "multiformats/bases/base58";
6
- import { assert, describe, expect, it } from "vitest";
9
+ import { assert, beforeEach, describe, expect, it } from "vitest";
10
+ const v2Keybag = {
11
+ name: "@test-v1-keys-wal@",
12
+ keys: {
13
+ z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ: {
14
+ default: true,
15
+ fingerPrint: "z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ",
16
+ key: "zL89nmBmogeRptW9b7e9j7L",
17
+ },
18
+ },
19
+ };
7
20
  const v1Keybag = {
8
21
  name: "@test-v1-keys-wal@",
9
22
  key: "zL89nmBmogeRptW9b7e9j7L",
@@ -19,8 +32,8 @@ async function keyExtracted(rKbf, fingerPrint) {
19
32
  };
20
33
  }
21
34
  async function calculateFingerprint(rKbf, kb) {
22
- const item = await rKbf.Ok().get();
23
- const v2Item = await item.asV2StorageKeyItem();
35
+ const item = (await rKbf.Ok().get());
36
+ const v2Item = await item.asKeysItem();
24
37
  const keyBytes = base58btc.decode(v2Item.key);
25
38
  const hash = await kb.rt.crypto.digestSHA256(keyBytes);
26
39
  return base58btc.encode(new Uint8Array(hash));
@@ -30,14 +43,51 @@ describe("KeyBag", () => {
30
43
  const sthis = ensureSuperThis();
31
44
  await sthis.start();
32
45
  const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
33
- kp.set(v1Keybag);
46
+ await kp.set(v1Keybag.name, v1Keybag);
47
+ const kb = await getKeyBag(sthis, {
48
+ url: "memory://./dist/tests/?extractKey=_deprecated_internal_api",
49
+ });
50
+ const rKbf = await kb.getNamedKey("@test-v1-keys-wal@");
51
+ expect(rKbf.isOk()).toBeTruthy();
52
+ const fpr = await calculateFingerprint(rKbf, kb);
53
+ expect(await rKbf.Ok().asV2StorageKeyItem()).toEqual({
54
+ keys: {
55
+ z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ: {
56
+ default: true,
57
+ fingerPrint: fpr,
58
+ key: "zL89nmBmogeRptW9b7e9j7L",
59
+ },
60
+ },
61
+ name: "@test-v1-keys-wal@",
62
+ });
63
+ const kb2 = await getKeyBag(sthis, {
64
+ url: "memory://./dist/tests/?extractKey=_deprecated_internal_api",
65
+ });
66
+ for (const rkbf of [rKbf, await kb2.getNamedKey("@test-v1-keys-wal@")]) {
67
+ expect(await keyExtracted(rkbf)).toEqual({
68
+ fingerPrint: "z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ",
69
+ key: "zL89nmBmogeRptW9b7e9j7L",
70
+ });
71
+ expect(await keyExtracted(rkbf, "z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ")).toEqual({
72
+ fingerPrint: "z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ",
73
+ key: "zL89nmBmogeRptW9b7e9j7L",
74
+ });
75
+ expect(await keyExtracted(rkbf, "kaputt-x")).toBeUndefined();
76
+ }
77
+ expect(await kp.get(v1Keybag.name)).toEqual(v1Keybag);
78
+ });
79
+ it("v2 migration", async () => {
80
+ const sthis = ensureSuperThis();
81
+ await sthis.start();
82
+ const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
83
+ await kp.set(v2Keybag.name, v2Keybag);
34
84
  const kb = await getKeyBag(sthis, {
35
85
  url: "memory://./dist/tests/?extractKey=_deprecated_internal_api",
36
86
  });
37
87
  const rKbf = await kb.getNamedKey("@test-v1-keys-wal@");
38
88
  expect(rKbf.isOk()).toBeTruthy();
39
89
  const fpr = await calculateFingerprint(rKbf, kb);
40
- expect(await rKbf.Ok().asV2KeysItem()).toEqual({
90
+ expect(await rKbf.Ok().asV2StorageKeyItem()).toEqual({
41
91
  keys: {
42
92
  z7oNYUrGpALe6U5ePvhdD3ufHdLerw4wPWHJERE3383zJ: {
43
93
  default: true,
@@ -72,18 +122,44 @@ describe("KeyBag", () => {
72
122
  name: "@test-v1-keys-wal@",
73
123
  });
74
124
  });
125
+ it("don't write if on read only v1", async () => {
126
+ const sthis = ensureSuperThis();
127
+ await sthis.start();
128
+ const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
129
+ await kp.set(v1Keybag.name, v1Keybag);
130
+ const kb = await getKeyBag(sthis, {
131
+ url: "memory://./dist/tests/",
132
+ });
133
+ const rKbf = await kb.getNamedKey(v1Keybag.name);
134
+ expect(rKbf.isOk()).toBeTruthy();
135
+ const orig = await kp.get(v1Keybag.name);
136
+ expect(orig).toEqual(v1Keybag);
137
+ });
138
+ it("don't write if on read only v2", async () => {
139
+ const sthis = ensureSuperThis();
140
+ await sthis.start();
141
+ const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
142
+ await kp.set(v2Keybag.name, v2Keybag);
143
+ const kb = await getKeyBag(sthis, {
144
+ url: "memory://./dist/tests/",
145
+ });
146
+ const rKbf = await kb.getNamedKey(v2Keybag.name);
147
+ expect(rKbf.isOk()).toBeTruthy();
148
+ const orig = await kp.get(v2Keybag.name);
149
+ expect(orig).toEqual(v2Keybag);
150
+ });
75
151
  it("implicit creation", async () => {
76
152
  const sthis = ensureSuperThis();
77
153
  await sthis.start();
78
154
  const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
79
- kp.set(v1Keybag);
155
+ await kp.set(v1Keybag.name, v1Keybag);
80
156
  const kb = await getKeyBag(sthis, {
81
157
  url: "memory://./dist/tests/?extractKey=_deprecated_internal_api",
82
158
  });
83
159
  const key1Material = kb.rt.crypto.randomBytes(kb.rt.keyLength);
84
160
  const rKbf = await kb.getNamedKey("kaputt", false, key1Material);
85
161
  expect(rKbf.isOk()).toBeTruthy();
86
- const one = await rKbf.Ok().asV2KeysItem();
162
+ const one = await rKbf.Ok().asV2StorageKeyItem();
87
163
  expect(Object.keys(one.keys).length).toBe(1);
88
164
  const key1Fpr = (await rKbf.Ok().get())?.fingerPrint;
89
165
  expect(await keyExtracted(rKbf)).toEqual({
@@ -97,13 +173,13 @@ describe("KeyBag", () => {
97
173
  assert("key2 not modified");
98
174
  return;
99
175
  }
100
- const keys2 = await rKbf.Ok().asV2KeysItem();
176
+ const keys2 = await rKbf.Ok().asV2StorageKeyItem();
101
177
  expect(Object.keys(keys2.keys).length).toBe(2);
102
- expect(await kp.get("kaputt")).toEqual(keys2);
178
+ expect(KeyedV2StorageKeyItemSchema.parse(await kp.get("kaputt")).item).toEqual(keys2);
103
179
  const rKbf2 = await kb.getNamedKey("kaputt");
104
- expect(Object.keys(await rKbf2.Ok().asV2KeysItem()).length).toBe(2);
180
+ expect(Object.keys((await rKbf2.Ok().asV2StorageKeyItem()).keys).length).toBe(2);
105
181
  expect((await rKbf2.Ok().get())?.fingerPrint).toEqual(key1Fpr);
106
- const asKeysItem = await rKbf.Ok().asV2KeysItem();
182
+ const asKeysItem = await rKbf.Ok().asV2StorageKeyItem();
107
183
  expect(asKeysItem.name).toEqual("kaputt");
108
184
  expect(Array.from(Object.values(asKeysItem.keys))).toEqual([
109
185
  {
@@ -118,7 +194,7 @@ describe("KeyBag", () => {
118
194
  },
119
195
  ]);
120
196
  const key3Material = kb.rt.crypto.randomBytes(kb.rt.keyLength);
121
- const rKey3 = await rKbf2.Ok().upsert(key3Material, true);
197
+ const rKey3 = await rKbf2.Ok().upsert(key3Material, { def: true });
122
198
  const key3 = rKey3.Ok();
123
199
  if (!isKeyUpsertResultModified(key3)) {
124
200
  assert("key3 not modified");
@@ -126,10 +202,10 @@ describe("KeyBag", () => {
126
202
  }
127
203
  expect(Object.keys(await rKbf2
128
204
  .Ok()
129
- .asV2KeysItem()
205
+ .asV2StorageKeyItem()
130
206
  .then((i) => i.keys)).length).toBe(3);
131
- const v2Key3 = await key3.kfp.asV2StorageKeyItem();
132
- expect(await kp.get("kaputt")).toEqual({
207
+ const v2Key3 = await key3.kfp.asKeysItem();
208
+ expect(KeyedV2StorageKeyItemSchema.parse(await kp.get("kaputt")).item).toEqual({
133
209
  keys: {
134
210
  ...resetDefault(one.keys),
135
211
  ...resetDefault(keys2.keys),
@@ -141,19 +217,22 @@ describe("KeyBag", () => {
141
217
  it("simple default", async () => {
142
218
  const sthis = ensureSuperThis();
143
219
  await sthis.start();
144
- const kb = await getKeyBag(sthis);
220
+ const kb = (await getKeyBag(sthis));
145
221
  const keyName = "simple" + sthis.nextId().str;
146
222
  const rKbf1 = await kb.getNamedKey(keyName);
147
223
  const kfp1 = await rKbf1
148
224
  .Ok()
149
225
  .get()
150
- .then((i) => i.asV2StorageKeyItem());
226
+ .then((i) => i?.asKeysItem());
151
227
  expect(kfp1?.fingerPrint).toBeTypeOf("string");
152
228
  const rKbf2 = await kb.getNamedKey(keyName);
153
229
  expect(await rKbf2.Ok().get()).toBeDefined();
154
230
  const kfp2 = await rKbf2.Ok().get();
155
231
  expect(kfp1?.fingerPrint).toBe(kfp2?.fingerPrint);
156
- expect(await kb.rt.getBagProvider().then((i) => i.get(keyName))).toEqual({
232
+ expect(await kb.rt
233
+ .getBagProvider()
234
+ .then((i) => i.get(keyName))
235
+ .then((i) => KeyedV2StorageKeyItemSchema.parse(i).item)).toEqual({
157
236
  keys: {
158
237
  [kfp1?.fingerPrint]: {
159
238
  default: true,
@@ -168,7 +247,7 @@ describe("KeyBag", () => {
168
247
  const sthis = ensureSuperThis();
169
248
  await sthis.start();
170
249
  const kp = new KeyBagProviderMemory(URI.from("memory://./dist/tests/"), sthis);
171
- kp.set(v1Keybag);
250
+ await kp.set(v1Keybag.name, v1Keybag);
172
251
  const kb = await getKeyBag(sthis, {
173
252
  url: "memory://./dist/tests/?extractKey=_deprecated_internal_api",
174
253
  });
@@ -178,6 +257,151 @@ describe("KeyBag", () => {
178
257
  expect(await kb.getNamedKey(name).then((i) => i.Ok().id)).toEqual(rMyKey.Ok().id);
179
258
  }
180
259
  });
260
+ describe("test device id", async () => {
261
+ const sthis = ensureSuperThis();
262
+ let kb;
263
+ let key;
264
+ const fakeCert = {
265
+ certificateJWT: "JWT",
266
+ certificatePayload: {
267
+ iss: "",
268
+ sub: "",
269
+ aud: "",
270
+ iat: 0,
271
+ nbf: 0,
272
+ exp: 0,
273
+ jti: "",
274
+ certificate: {
275
+ version: "3",
276
+ serialNumber: "4711",
277
+ subject: {
278
+ commonName: "Subject",
279
+ },
280
+ issuer: {
281
+ commonName: "Issuer",
282
+ },
283
+ validity: {
284
+ notBefore: new Date().toISOString(),
285
+ notAfter: new Date().toISOString(),
286
+ },
287
+ subjectPublicKeyInfo: {
288
+ kty: "EC",
289
+ crv: "P-256",
290
+ x: "x",
291
+ y: "y",
292
+ },
293
+ signatureAlgorithm: "ES256",
294
+ keyUsage: [],
295
+ extendedKeyUsage: [],
296
+ },
297
+ },
298
+ format: "JWS",
299
+ serialNumber: "",
300
+ issuer: "",
301
+ subject: "",
302
+ validityPeriod: {
303
+ notBefore: new Date(),
304
+ notAfter: new Date(),
305
+ },
306
+ publicKey: {
307
+ kty: "EC",
308
+ crv: "P-256",
309
+ x: "x",
310
+ y: "y",
311
+ },
312
+ };
313
+ beforeEach(async () => {
314
+ await sthis.start();
315
+ const id = sthis.nextId().str;
316
+ const url = BuildURI.from(`memory://./dist/tests/${id}`).setParam("extractKey", "_deprecated_internal_api").URI();
317
+ kb = await getKeyBag(sthis, { url });
318
+ key = await DeviceIdKey.create().then((i) => i.exportPrivateJWK());
319
+ });
320
+ it("return none if not set", async () => {
321
+ const devId = await kb.getDeviceId();
322
+ expect(devId.deviceId.IsNone()).toBeTruthy();
323
+ expect(devId.cert.IsNone()).toBeTruthy();
324
+ });
325
+ it("set and get device id", async () => {
326
+ const rSet = await kb.setDeviceId(key);
327
+ expect(rSet.deviceId.IsSome()).toBeTruthy();
328
+ expect(rSet.deviceId.Unwrap()).toEqual(key);
329
+ expect(rSet.cert.IsNone()).toBeTruthy();
330
+ const rGet = await kb.getDeviceId();
331
+ expect(rGet.deviceId.IsSome()).toBeTruthy();
332
+ expect(rGet.deviceId.Unwrap()).toEqual(key);
333
+ expect(rGet.cert.IsNone()).toBeTruthy();
334
+ });
335
+ it("set and get device id with cert", async () => {
336
+ const rSet = await kb.setDeviceId(key, fakeCert);
337
+ expect(rSet.deviceId.Unwrap()).toEqual({
338
+ kty: "EC",
339
+ crv: "P-256",
340
+ d: expect.any(String),
341
+ x: expect.any(String),
342
+ y: expect.any(String),
343
+ });
344
+ expect(rSet.cert.IsSome()).toBeTruthy();
345
+ expect(rSet.cert.Unwrap()).toEqual(fakeCert);
346
+ const rGet = await kb.getDeviceId();
347
+ expect(rSet.deviceId.Unwrap()).toEqual({
348
+ kty: "EC",
349
+ crv: "P-256",
350
+ d: expect.any(String),
351
+ x: expect.any(String),
352
+ y: expect.any(String),
353
+ });
354
+ expect(rGet.cert.IsNone()).toBeFalsy();
355
+ expect(rGet.cert.Unwrap()).toEqual(fakeCert);
356
+ });
357
+ it("set and get device id stepped cert", async () => {
358
+ await kb.setDeviceId(key);
359
+ const rSet = await kb.setDeviceId(key, fakeCert);
360
+ expect(rSet.deviceId.Unwrap()).toEqual(key);
361
+ expect(rSet.cert.IsSome()).toBeTruthy();
362
+ expect(rSet.cert.Unwrap()).toEqual(fakeCert);
363
+ const rGet = await kb.getDeviceId();
364
+ expect(rGet.deviceId.Unwrap()).toEqual(key);
365
+ expect(rGet.cert.Unwrap()).toEqual(fakeCert);
366
+ });
367
+ });
368
+ describe("jwt", () => {
369
+ const sthis = ensureSuperThis();
370
+ let kb;
371
+ beforeEach(async () => {
372
+ await sthis.start();
373
+ kb = await getKeyBag(sthis, {
374
+ url: "memory://./dist/murks/?extractKey=_deprecated_internal_api",
375
+ });
376
+ });
377
+ it("set and get jwt", async () => {
378
+ const rNotForundGet = await kb.getJwt("test");
379
+ expect(rNotForundGet.isOk()).toBeFalsy();
380
+ const jwt = new UnsecuredJWT({ hello: "world" })
381
+ .setIssuedAt()
382
+ .setIssuer("fpcloud")
383
+ .setAudience("fpcloud-app")
384
+ .setExpirationTime("24h")
385
+ .setSubject("Test")
386
+ .encode();
387
+ const rSet = await kb.setJwt("test", jwt);
388
+ expect(rSet.isOk()).toBeTruthy();
389
+ const rGet = await kb.getJwt("test");
390
+ expect(rGet.isOk()).toBeTruthy();
391
+ expect(rGet.Ok()).toEqual({
392
+ key: "test",
393
+ jwt,
394
+ claims: {
395
+ hello: "world",
396
+ iss: "fpcloud",
397
+ aud: "fpcloud-app",
398
+ sub: "Test",
399
+ iat: expect.any(Number),
400
+ exp: expect.any(Number),
401
+ },
402
+ });
403
+ });
404
+ });
181
405
  });
182
406
  function resetDefault(keys) {
183
407
  return Array.from(Object.values(keys)).reduce((acc, i) => ({ ...acc, [i.fingerPrint]: { ...i, default: false } }), {});
@@ -1 +1 @@
1
- {"version":3,"file":"key-bag.test.js","sourceRoot":"","sources":["../../jsr/runtime/key-bag.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-bag.test.js","sourceRoot":"","sources":["../../jsr/runtime/key-bag.test.ts"],"names":[],"mappings":"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"}
@@ -40,16 +40,16 @@ describe("MetaKeyHack", () => {
40
40
  expect(unreg.isOk()).toBeTruthy();
41
41
  await db.put({ val: "test" });
42
42
  const dataStore = loader.attachedStores.local().active.car;
43
- const kb = new KeyBag(db.ledger.opts.keyBag);
43
+ const kb = await KeyBag.create(db.ledger.opts.keyBag);
44
44
  const rDataStoreKeyItem = await kb.getNamedKey(dataStore.url().getParam(PARAM.STORE_KEY) ?? "");
45
- await rDataStoreKeyItem.Ok().upsert("zBUFMmu5c3VdCa4r2DZTzhR", false);
46
- await rDataStoreKeyItem.Ok().upsert("zH1fyizirAiYVxoaQ2XZ3Xj", false);
45
+ await rDataStoreKeyItem.Ok().upsert("zBUFMmu5c3VdCa4r2DZTzhR", { def: false });
46
+ await rDataStoreKeyItem.Ok().upsert("zH1fyizirAiYVxoaQ2XZ3Xj", { def: false });
47
47
  expect(rDataStoreKeyItem.isOk()).toBeTruthy();
48
48
  const rUrl = await memGw.buildUrl(metaStore.url(), "main");
49
49
  const rGet = await memGw.get(rUrl.Ok(), sthis);
50
50
  const metas = JSON.parse(ctx.loader.sthis.txt.decode(rGet.Ok()));
51
51
  const keyMaterials = metas.keys;
52
- const dataStoreKeyMaterial = await rDataStoreKeyItem.Ok().asV2KeysItem();
52
+ const dataStoreKeyMaterial = await rDataStoreKeyItem.Ok().asV2StorageKeyItem();
53
53
  expect(keyMaterials.length).toBeGreaterThan(0);
54
54
  expect(dataStoreKeyMaterial).toEqual({
55
55
  keys: {