@ibgib/web-gib 0.0.64 → 0.0.66
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/dist/AUTO-GENERATED-version.d.mts +1 -1
- package/dist/AUTO-GENERATED-version.mjs +1 -1
- package/dist/api/commands/ibgib/get-ibgibs.mjs +4 -4
- package/dist/api/commands/ibgib/get-ibgibs.mjs.map +1 -1
- package/dist/identity/device-delegate-helper.mjs +5 -5
- package/dist/identity/device-delegate-helper.mjs.map +1 -1
- package/dist/identity/keystone-sync-service.mjs +3 -3
- package/dist/identity/keystone-sync-service.mjs.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/storage/storage-helpers.web.mjs +1 -1
- package/dist/storage/storage-helpers.web.mjs.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.d.mts.map +1 -1
- package/dist/ui/component/identity/add-device/add-device.mjs +1 -1
- package/dist/ui/component/identity/add-device/add-device.mjs.map +1 -1
- package/dist/ui/component/identity/identity-header/identity-header.d.mts.map +1 -1
- package/dist/ui/component/identity/identity-header/identity-header.mjs +4 -4
- package/dist/ui/component/identity/identity-header/identity-header.mjs.map +1 -1
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs +2 -2
- package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
- package/dist/ui/component/privacy-policy/index.d.mts +11 -0
- package/dist/ui/component/privacy-policy/index.d.mts.map +1 -0
- package/dist/ui/component/privacy-policy/index.mjs +16 -0
- package/dist/ui/component/privacy-policy/index.mjs.map +1 -0
- package/dist/ui/component/privacy-policy/privacy-policy.css +263 -0
- package/dist/ui/component/privacy-policy/privacy-policy.d.mts +46 -0
- package/dist/ui/component/privacy-policy/privacy-policy.d.mts.map +1 -0
- package/dist/ui/component/privacy-policy/privacy-policy.html +27 -0
- package/dist/ui/component/privacy-policy/privacy-policy.mjs +128 -0
- package/dist/ui/component/privacy-policy/privacy-policy.mjs.map +1 -0
- package/dist/ui/ui-constants.d.mts +4 -0
- package/dist/ui/ui-constants.d.mts.map +1 -1
- package/dist/ui/ui-constants.mjs +6 -0
- package/dist/ui/ui-constants.mjs.map +1 -1
- package/dist/witness/agent/gemini/gemini-helpers.mjs +4 -4
- package/dist/witness/agent/gemini/gemini-helpers.mjs.map +1 -1
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs +11 -11
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mjs.map +1 -1
- package/package.json +5 -5
- package/src/AUTO-GENERATED-version.mts +1 -1
- package/src/api/commands/ibgib/get-ibgibs.mts +4 -4
- package/src/identity/device-delegate-helper.mts +5 -5
- package/src/identity/keystone-sync-service.mts +3 -3
- package/src/index.mts +3 -0
- package/src/storage/storage-helpers.web.mts +1 -1
- package/src/ui/component/identity/add-device/add-device.mts +5 -4
- package/src/ui/component/identity/identity-header/identity-header.mts +4 -3
- package/src/ui/component/identity/keystone-details/keystone-details.mts +2 -2
- package/src/ui/component/privacy-policy/index.mts +18 -0
- package/src/ui/component/privacy-policy/privacy-policy.css +263 -0
- package/src/ui/component/privacy-policy/privacy-policy.html +27 -0
- package/src/ui/component/privacy-policy/privacy-policy.mts +168 -0
- package/src/ui/ui-constants.mts +7 -0
- package/src/witness/agent/gemini/gemini-helpers.mts +4 -4
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.mts +11 -11
- package/src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mts +6 -5
- package/tools/auto-generated-agent-skills/skills/ibgib-create-app/SKILL.md +3 -3
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app/SKILL.md +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app-core/SKILL.md +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app-core/generate-id.js +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-app-witness/SKILL.md +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-identity/SKILL.md +2 -2
- package/tools/auto-generated-agent-skills/skills/ibgib-create-client-shell/SKILL.md +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-create-server-app/SKILL.md +1 -1
- package/tools/auto-generated-agent-skills/skills/ibgib-implementation-plan/SKILL.md +7 -4
- package/tsconfig.json +2 -2
- package/dist/api/commands/command-service.respec.d.mts +0 -7
- package/dist/api/commands/command-service.respec.d.mts.map +0 -1
- package/dist/api/commands/command-service.respec.mjs +0 -66
- package/dist/api/commands/command-service.respec.mjs.map +0 -1
- package/dist/assumptions.respec.d.mts +0 -2
- package/dist/assumptions.respec.d.mts.map +0 -1
- package/dist/assumptions.respec.mjs +0 -41
- package/dist/assumptions.respec.mjs.map +0 -1
- package/dist/helpers.web.respec.d.mts +0 -2
- package/dist/helpers.web.respec.d.mts.map +0 -1
- package/dist/helpers.web.respec.mjs +0 -39
- package/dist/helpers.web.respec.mjs.map +0 -1
- package/dist/identity/device-delegate.respec.d.mts +0 -2
- package/dist/identity/device-delegate.respec.d.mts.map +0 -1
- package/dist/identity/device-delegate.respec.mjs +0 -106
- package/dist/identity/device-delegate.respec.mjs.map +0 -1
- package/dist/identity/passkey.respec.d.mts +0 -2
- package/dist/identity/passkey.respec.d.mts.map +0 -1
- package/dist/identity/passkey.respec.mjs +0 -169
- package/dist/identity/passkey.respec.mjs.map +0 -1
- package/dist/spec-helper.node.respec.d.mts +0 -13
- package/dist/spec-helper.node.respec.d.mts.map +0 -1
- package/dist/spec-helper.node.respec.mjs +0 -50
- package/dist/spec-helper.node.respec.mjs.map +0 -1
- package/dist/util/device-helper.respec.d.mts +0 -2
- package/dist/util/device-helper.respec.d.mts.map +0 -1
- package/dist/util/device-helper.respec.mjs +0 -83
- package/dist/util/device-helper.respec.mjs.map +0 -1
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.d.mts +0 -8
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.d.mts.map +0 -1
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mjs +0 -249
- package/dist/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mjs.map +0 -1
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { firstOfAll, ifWe, iReckon, respecfully } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
-
import { PathUtilsHelper } from './helpers.web.mjs';
|
|
3
|
-
const maam = `[${import.meta.url}]`, sir = maam;
|
|
4
|
-
await respecfully(sir, `PathUtilsHelper`, async () => {
|
|
5
|
-
let pathUtils;
|
|
6
|
-
firstOfAll(sir, async () => {
|
|
7
|
-
pathUtils = new PathUtilsHelper();
|
|
8
|
-
});
|
|
9
|
-
await ifWe(sir, `check isAbsolute and isRelative`, async () => {
|
|
10
|
-
iReckon(sir, pathUtils.isAbsolute('/a/b/c')).isGonnaBeTrue();
|
|
11
|
-
iReckon(sir, pathUtils.isAbsolute('/file.txt')).isGonnaBeTrue();
|
|
12
|
-
iReckon(sir, pathUtils.isAbsolute('a/b/c')).isGonnaBeFalse();
|
|
13
|
-
iReckon(sir, pathUtils.isAbsolute('file.txt')).isGonnaBeFalse();
|
|
14
|
-
iReckon(sir, pathUtils.isRelative('a/b/c')).isGonnaBeTrue();
|
|
15
|
-
iReckon(sir, pathUtils.isRelative('file.txt')).isGonnaBeTrue();
|
|
16
|
-
iReckon(sir, pathUtils.isRelative('/a/b/c')).isGonnaBeFalse();
|
|
17
|
-
});
|
|
18
|
-
await ifWe(sir, `join empty paths or single ..`, async () => {
|
|
19
|
-
iReckon(sir, pathUtils.join()).isGonnaBe('.');
|
|
20
|
-
iReckon(sir, pathUtils.join('..')).isGonnaBe('..');
|
|
21
|
-
});
|
|
22
|
-
await ifWe(sir, `join path segments`, async () => {
|
|
23
|
-
iReckon(sir, pathUtils.join('a', 'b', 'c')).isGonnaBe('a/b/c');
|
|
24
|
-
iReckon(sir, pathUtils.join('/a/', '/b/', 'c.txt')).isGonnaBe('a/b/c.txt');
|
|
25
|
-
iReckon(sir, pathUtils.join('foo', 'bar', '..')).isGonnaBe('foo');
|
|
26
|
-
iReckon(sir, pathUtils.join('foo', 'bar', '..', 'baz')).isGonnaBe('foo/baz');
|
|
27
|
-
});
|
|
28
|
-
await ifWe(sir, `extract dirname`, async () => {
|
|
29
|
-
iReckon(sir, pathUtils.dirname('a/b/c.txt')).isGonnaBe('a/b');
|
|
30
|
-
iReckon(sir, pathUtils.dirname('/root/sub/file.json')).isGonnaBe('/root/sub');
|
|
31
|
-
iReckon(sir, pathUtils.dirname('singlefile.txt')).isGonnaBe('');
|
|
32
|
-
});
|
|
33
|
-
await ifWe(sir, `extract basename`, async () => {
|
|
34
|
-
iReckon(sir, pathUtils.basename('a/b/c.txt')).isGonnaBe('c.txt');
|
|
35
|
-
iReckon(sir, pathUtils.basename('/root/sub/file.json')).isGonnaBe('file.json');
|
|
36
|
-
iReckon(sir, pathUtils.basename('standalone')).isGonnaBe('standalone');
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=helpers.web.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.web.respec.mjs","sourceRoot":"","sources":["../src/helpers.web.respec.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-delegate.respec.d.mts","sourceRoot":"","sources":["../../src/identity/device-delegate.respec.mts"],"names":[],"mappings":""}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
-
import { getIbGibGlobalThis_IbGib } from '../helpers.mjs';
|
|
3
|
-
import { getDeviceDelegateSecretKey, getDeviceDelegateSecret, setDeviceDelegateSecret, getOrCreateDeviceDelegateSecret, clearDeviceDelegateSecret, DEVICE_DELEGATE_SECRET_PREFIX } from './device-delegate-helper.mjs';
|
|
4
|
-
const sir = `[${import.meta.url}]`;
|
|
5
|
-
// Initialize global db & store names for tests
|
|
6
|
-
const globalThisIbGib = getIbGibGlobalThis_IbGib();
|
|
7
|
-
globalThisIbGib.dbName_hack = 'space_gib_db';
|
|
8
|
-
globalThisIbGib.storeName_hack = 'space_gib_store';
|
|
9
|
-
// Mock storage substrate for Node test environment
|
|
10
|
-
const inMemoryStore = new Map();
|
|
11
|
-
if (typeof globalThis.indexedDB === 'undefined') {
|
|
12
|
-
globalThis.indexedDB = {
|
|
13
|
-
open: (dbName) => {
|
|
14
|
-
const req = {};
|
|
15
|
-
setTimeout(() => {
|
|
16
|
-
const db = {
|
|
17
|
-
objectStoreNames: { contains: () => true },
|
|
18
|
-
transaction: (storeName) => ({
|
|
19
|
-
objectStore: (sName) => ({
|
|
20
|
-
get: (key) => {
|
|
21
|
-
const getReq = {};
|
|
22
|
-
setTimeout(() => {
|
|
23
|
-
const val = inMemoryStore.get(key);
|
|
24
|
-
getReq.result = val !== undefined ? { value: val } : undefined;
|
|
25
|
-
if (getReq.onsuccess)
|
|
26
|
-
getReq.onsuccess({ target: getReq });
|
|
27
|
-
}, 0);
|
|
28
|
-
return getReq;
|
|
29
|
-
},
|
|
30
|
-
put: (datum) => {
|
|
31
|
-
const putReq = {};
|
|
32
|
-
setTimeout(() => {
|
|
33
|
-
inMemoryStore.set(datum.key, datum.value);
|
|
34
|
-
if (putReq.onsuccess)
|
|
35
|
-
putReq.onsuccess({ target: putReq });
|
|
36
|
-
}, 0);
|
|
37
|
-
return putReq;
|
|
38
|
-
},
|
|
39
|
-
delete: (key) => {
|
|
40
|
-
const delReq = {};
|
|
41
|
-
setTimeout(() => {
|
|
42
|
-
inMemoryStore.delete(key);
|
|
43
|
-
if (delReq.onsuccess)
|
|
44
|
-
delReq.onsuccess({ target: delReq });
|
|
45
|
-
}, 0);
|
|
46
|
-
return delReq;
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
}),
|
|
50
|
-
close: () => { }
|
|
51
|
-
};
|
|
52
|
-
req.result = db;
|
|
53
|
-
if (req.onsuccess)
|
|
54
|
-
req.onsuccess({ target: req });
|
|
55
|
-
}, 0);
|
|
56
|
-
return req;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
await respecfully(sir, 'Device Delegate Storage & Secret Lifecycle', async () => {
|
|
61
|
-
await ifWe(sir, 'getDeviceDelegateSecretKey constructs deterministic storage key', async () => {
|
|
62
|
-
const primaryTjpAddr = 'keystone^alice_tjp_12345';
|
|
63
|
-
const key = getDeviceDelegateSecretKey({ primaryTjpAddr });
|
|
64
|
-
iReckon(sir, key).willEqual(`${DEVICE_DELEGATE_SECRET_PREFIX}${primaryTjpAddr}`);
|
|
65
|
-
});
|
|
66
|
-
await ifWe(sir, 'setDeviceDelegateSecret and getDeviceDelegateSecret persist and retrieve secret', async () => {
|
|
67
|
-
const primaryTjpAddr = 'keystone^bob_tjp_999';
|
|
68
|
-
const secret = 'super-secret-512-token-abc';
|
|
69
|
-
await setDeviceDelegateSecret({ primaryTjpAddr, delegateSecret: secret });
|
|
70
|
-
const retrieved = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
71
|
-
iReckon(sir, retrieved).willEqual(secret);
|
|
72
|
-
});
|
|
73
|
-
await ifWe(sir, 'getOrCreateDeviceDelegateSecret generates high entropy token on first call and caches it', async () => {
|
|
74
|
-
const primaryTjpAddr = 'keystone^charlie_tjp_888';
|
|
75
|
-
const token1 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
|
|
76
|
-
iReckon(sir, typeof token1 === 'string' && token1.length === 128).willEqual(true);
|
|
77
|
-
const token2 = await getOrCreateDeviceDelegateSecret({ primaryTjpAddr, deviceTag: 'laptop' });
|
|
78
|
-
iReckon(sir, token1).willEqual(token2);
|
|
79
|
-
});
|
|
80
|
-
await ifWe(sir, 'clearDeviceDelegateSecret removes stored secret', async () => {
|
|
81
|
-
const primaryTjpAddr = 'keystone^david_tjp_777';
|
|
82
|
-
await getOrCreateDeviceDelegateSecret({ primaryTjpAddr });
|
|
83
|
-
const beforeClear = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
84
|
-
iReckon(sir, !!beforeClear).willEqual(true);
|
|
85
|
-
await clearDeviceDelegateSecret({ primaryTjpAddr });
|
|
86
|
-
const afterClear = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
87
|
-
iReckon(sir, afterClear).willEqual(undefined);
|
|
88
|
-
});
|
|
89
|
-
await ifWe(sir, 'fails fast when global db or store name is uninitialized', async () => {
|
|
90
|
-
const primaryTjpAddr = 'keystone^failfast_tjp_000';
|
|
91
|
-
const savedDb = globalThisIbGib.dbName_hack;
|
|
92
|
-
globalThisIbGib.dbName_hack = undefined;
|
|
93
|
-
let threw = false;
|
|
94
|
-
try {
|
|
95
|
-
await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
threw = true;
|
|
99
|
-
}
|
|
100
|
-
finally {
|
|
101
|
-
globalThisIbGib.dbName_hack = savedDb;
|
|
102
|
-
}
|
|
103
|
-
iReckon(sir, threw).willEqual(true);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
//# sourceMappingURL=device-delegate.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-delegate.respec.mjs","sourceRoot":"","sources":["../../src/identity/device-delegate.respec.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.respec.d.mts","sourceRoot":"","sources":["../../src/identity/passkey.respec.mts"],"names":[],"mappings":""}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { respecfully, ifWe, iReckon } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
|
-
import { getIbGibGlobalThis_IbGib } from '../helpers.mjs';
|
|
3
|
-
import { bufferToHex, hexToUint8Array, normalizeSaltTo32Bytes, isPasskeyPrfSupported, createPasskeyDeviceSyncDelegate } from './passkey-helper.mjs';
|
|
4
|
-
import { getDeviceDelegateSecret } from './device-delegate-helper.mjs';
|
|
5
|
-
const sir = `[${import.meta.url}]`;
|
|
6
|
-
// Initialize global db & store names for tests
|
|
7
|
-
const globalThisIbGib = getIbGibGlobalThis_IbGib();
|
|
8
|
-
globalThisIbGib.dbName_hack = 'space_gib_db';
|
|
9
|
-
globalThisIbGib.storeName_hack = 'space_gib_store';
|
|
10
|
-
// Mock storage substrate for Node test environment
|
|
11
|
-
const inMemoryStore = new Map();
|
|
12
|
-
if (typeof globalThis.indexedDB === 'undefined') {
|
|
13
|
-
globalThis.indexedDB = {
|
|
14
|
-
open: (dbName) => {
|
|
15
|
-
const req = {};
|
|
16
|
-
setTimeout(() => {
|
|
17
|
-
const db = {
|
|
18
|
-
objectStoreNames: { contains: () => true },
|
|
19
|
-
transaction: (storeName) => ({
|
|
20
|
-
objectStore: (sName) => ({
|
|
21
|
-
get: (key) => {
|
|
22
|
-
const getReq = {};
|
|
23
|
-
setTimeout(() => {
|
|
24
|
-
const val = inMemoryStore.get(key);
|
|
25
|
-
getReq.result = val !== undefined ? { value: val } : undefined;
|
|
26
|
-
if (getReq.onsuccess)
|
|
27
|
-
getReq.onsuccess({ target: getReq });
|
|
28
|
-
}, 0);
|
|
29
|
-
return getReq;
|
|
30
|
-
},
|
|
31
|
-
put: (datum) => {
|
|
32
|
-
const putReq = {};
|
|
33
|
-
setTimeout(() => {
|
|
34
|
-
inMemoryStore.set(datum.key, datum.value);
|
|
35
|
-
if (putReq.onsuccess)
|
|
36
|
-
putReq.onsuccess({ target: putReq });
|
|
37
|
-
}, 0);
|
|
38
|
-
return putReq;
|
|
39
|
-
},
|
|
40
|
-
delete: (key) => {
|
|
41
|
-
const delReq = {};
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
inMemoryStore.delete(key);
|
|
44
|
-
if (delReq.onsuccess)
|
|
45
|
-
delReq.onsuccess({ target: delReq });
|
|
46
|
-
}, 0);
|
|
47
|
-
return delReq;
|
|
48
|
-
}
|
|
49
|
-
})
|
|
50
|
-
}),
|
|
51
|
-
close: () => { }
|
|
52
|
-
};
|
|
53
|
-
req.result = db;
|
|
54
|
-
if (req.onsuccess)
|
|
55
|
-
req.onsuccess({ target: req });
|
|
56
|
-
}, 0);
|
|
57
|
-
return req;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
// Setup environment profile
|
|
62
|
-
process.env.KEYSTONE_PROFILE_SOVEREIGN_SYNC = 'sync-profile.dev';
|
|
63
|
-
class MockIbGibSpace {
|
|
64
|
-
name;
|
|
65
|
-
store = new Map();
|
|
66
|
-
ib = 'witness space mock-space mock_space_id user';
|
|
67
|
-
constructor(name = "mock_space") {
|
|
68
|
-
this.name = name;
|
|
69
|
-
}
|
|
70
|
-
async put({ ibGib }) {
|
|
71
|
-
const addr = `${ibGib.ib}^${ibGib.gib}`;
|
|
72
|
-
this.store.set(addr, JSON.parse(JSON.stringify(ibGib)));
|
|
73
|
-
}
|
|
74
|
-
async get({ addr }) {
|
|
75
|
-
const data = this.store.get(addr);
|
|
76
|
-
return data ? JSON.parse(JSON.stringify(data)) : null;
|
|
77
|
-
}
|
|
78
|
-
async argy({ argData, ibGibs }) {
|
|
79
|
-
return {
|
|
80
|
-
ib: 'arg^gib',
|
|
81
|
-
gib: 'arg_gib',
|
|
82
|
-
data: argData,
|
|
83
|
-
ibGibs,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
async witness(arg) {
|
|
87
|
-
return { data: { success: true } };
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
class MockMetaspaceService {
|
|
91
|
-
space;
|
|
92
|
-
constructor(space) {
|
|
93
|
-
this.space = space;
|
|
94
|
-
}
|
|
95
|
-
async getLocalUserSpace({ lock } = {}) {
|
|
96
|
-
return this.space;
|
|
97
|
-
}
|
|
98
|
-
async put(args) {
|
|
99
|
-
const target = args.space || this.space;
|
|
100
|
-
return target.put(args);
|
|
101
|
-
}
|
|
102
|
-
async registerNewIbGib({ ibGib }) {
|
|
103
|
-
return this.put({ ibGib });
|
|
104
|
-
}
|
|
105
|
-
async get(args) {
|
|
106
|
-
const target = args.space || this.space;
|
|
107
|
-
if (args.addr) {
|
|
108
|
-
const x = await target.get({ addr: args.addr });
|
|
109
|
-
return { success: !!x, ibGibs: x ? [x] : [] };
|
|
110
|
-
}
|
|
111
|
-
return { success: true, ibGibs: [] };
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
const mockSpace = new MockIbGibSpace();
|
|
115
|
-
const mockMetaspace = new MockMetaspaceService(mockSpace);
|
|
116
|
-
await respecfully(sir, 'Passkey WebAuthn PRF Helper Service', async () => {
|
|
117
|
-
await ifWe(sir, 'bufferToHex and hexToUint8Array roundtrip correctly', async () => {
|
|
118
|
-
const originalBytes = new Uint8Array([0xde, 0xad, 0xbe, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]);
|
|
119
|
-
const hex = bufferToHex(originalBytes.buffer);
|
|
120
|
-
iReckon(sir, hex).willEqual('deadbeef0123456789abcdef');
|
|
121
|
-
const roundtripBytes = hexToUint8Array(hex);
|
|
122
|
-
iReckon(sir, roundtripBytes.length).willEqual(originalBytes.length);
|
|
123
|
-
for (let i = 0; i < originalBytes.length; i++) {
|
|
124
|
-
iReckon(sir, roundtripBytes[i]).willEqual(originalBytes[i]);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
await ifWe(sir, 'normalizeSaltTo32Bytes normalizes various salt inputs to 32 bytes', async () => {
|
|
128
|
-
// 1. Hex string of 64 chars (32 bytes)
|
|
129
|
-
const hex64 = '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef';
|
|
130
|
-
const normHex = normalizeSaltTo32Bytes(hex64);
|
|
131
|
-
iReckon(sir, normHex.length).willEqual(32);
|
|
132
|
-
iReckon(sir, bufferToHex(normHex.buffer)).willEqual(hex64);
|
|
133
|
-
// 2. Text string
|
|
134
|
-
const textSalt = 'ibgib_passkey_salt_domain_123';
|
|
135
|
-
const normText = normalizeSaltTo32Bytes(textSalt);
|
|
136
|
-
iReckon(sir, normText.length).willEqual(32);
|
|
137
|
-
// 3. Uint8Array
|
|
138
|
-
const rawBytes = new Uint8Array(32);
|
|
139
|
-
rawBytes.fill(0x42);
|
|
140
|
-
const normRaw = normalizeSaltTo32Bytes(rawBytes);
|
|
141
|
-
iReckon(sir, normRaw.length).willEqual(32);
|
|
142
|
-
iReckon(sir, normRaw[0]).willEqual(0x42);
|
|
143
|
-
});
|
|
144
|
-
await ifWe(sir, 'isPasskeyPrfSupported evaluates capabilities cleanly', async () => {
|
|
145
|
-
// In Node environment without window
|
|
146
|
-
const supported = await isPasskeyPrfSupported();
|
|
147
|
-
iReckon(sir, typeof supported).willEqual('boolean');
|
|
148
|
-
});
|
|
149
|
-
await ifWe(sir, 'createPasskeyDeviceSyncDelegate creates standard passkey sync delegate', async () => {
|
|
150
|
-
const username = 'alice';
|
|
151
|
-
const primaryTjpAddr = 'keystone^alice_primary_tjp.addr';
|
|
152
|
-
const passkeySecret = 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef';
|
|
153
|
-
const { delegateKeystone, deviceTag, delegateSecret } = await createPasskeyDeviceSyncDelegate({
|
|
154
|
-
username,
|
|
155
|
-
primaryTjpAddr,
|
|
156
|
-
passkeySecret,
|
|
157
|
-
transports: ['internal'],
|
|
158
|
-
metaspace: mockMetaspace,
|
|
159
|
-
space: mockSpace,
|
|
160
|
-
});
|
|
161
|
-
iReckon(sir, delegateKeystone).asTo('delegateKeystone is generated').isGonnaBeTruthy();
|
|
162
|
-
iReckon(sir, deviceTag.startsWith('passkey-alice-')).asTo('deviceTag follows passkey naming format').isGonnaBeTrue();
|
|
163
|
-
iReckon(sir, delegateSecret).asTo('delegateSecret is derived').isGonnaBeTruthy();
|
|
164
|
-
// Verify stored in IndexedDB
|
|
165
|
-
const storedSecret = await getDeviceDelegateSecret({ primaryTjpAddr });
|
|
166
|
-
iReckon(sir, storedSecret).willEqual(delegateSecret);
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
//# sourceMappingURL=passkey.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.respec.mjs","sourceRoot":"","sources":["../../src/identity/passkey.respec.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* helper function to get the filename for use in specs.
|
|
3
|
-
*
|
|
4
|
-
* @param importMetaUrl import.meta.url
|
|
5
|
-
* @returns currently executing filename sans .respec.mjs
|
|
6
|
-
*/
|
|
7
|
-
export declare function getCurrentFilename(importMetaUrl: string): Promise<string>;
|
|
8
|
-
export declare function specGetSpaceId(): Promise<string>;
|
|
9
|
-
export declare function specGetSpaceName(uuid: string): string;
|
|
10
|
-
export declare function specGetSpaceDescription(uuid: string): string;
|
|
11
|
-
export declare function specGetBaseDir(testBaseDirRoot: string, uuid: string, logalot: boolean, lc: string): string;
|
|
12
|
-
export declare function specGetBaseSubPath(testBaseDirRoot: string, uuid: string, logalot: boolean, lc: string): string;
|
|
13
|
-
//# sourceMappingURL=spec-helper.node.respec.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-helper.node.respec.d.mts","sourceRoot":"","sources":["../src/spec-helper.node.respec.mts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAQtD;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AACD,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1G;AACD,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9G"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { default as pathUtils } from 'path';
|
|
2
|
-
import { delay, getUUID, } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
3
|
-
/**
|
|
4
|
-
* helper function to get the filename for use in specs.
|
|
5
|
-
*
|
|
6
|
-
* @param importMetaUrl import.meta.url
|
|
7
|
-
* @returns currently executing filename sans .respec.mjs
|
|
8
|
-
*/
|
|
9
|
-
export async function getCurrentFilename(importMetaUrl) {
|
|
10
|
-
const lc = `[${getCurrentFilename.name}]`;
|
|
11
|
-
try {
|
|
12
|
-
const pieces = importMetaUrl.split(pathUtils.sep);
|
|
13
|
-
let filename = pieces.at(-1)?.replace(/\.respec\.mjs$/, '');
|
|
14
|
-
if (!filename) {
|
|
15
|
-
console.warn(`filename not able to be gotten?`);
|
|
16
|
-
filename = (new Date()).toTimeString() + (await getUUID());
|
|
17
|
-
}
|
|
18
|
-
return `ibgib${pathUtils.sep}${filename}`;
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
console.error(`${lc} ${error.message}`);
|
|
22
|
-
throw error;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export async function specGetSpaceId() {
|
|
26
|
-
await delay(10);
|
|
27
|
-
let uuid = await getUUID();
|
|
28
|
-
let now = new Date();
|
|
29
|
-
now.getMinutes();
|
|
30
|
-
let timeComponent = now.getMinutes().toString() + now.getSeconds().toString() + now.getMilliseconds().toString();
|
|
31
|
-
uuid = timeComponent + uuid.substring(timeComponent.length, uuid.length);
|
|
32
|
-
return uuid;
|
|
33
|
-
}
|
|
34
|
-
export function specGetSpaceName(uuid) {
|
|
35
|
-
return uuid.substring(0, 8) + '-space';
|
|
36
|
-
}
|
|
37
|
-
export function specGetSpaceDescription(uuid) {
|
|
38
|
-
return 'description for ' + uuid.substring(0, 8);
|
|
39
|
-
}
|
|
40
|
-
export function specGetBaseDir(testBaseDirRoot, uuid, logalot, lc) {
|
|
41
|
-
const dir = pathUtils.join(".", testBaseDirRoot, specGetSpaceName(uuid) + "_baseDir");
|
|
42
|
-
if (logalot) {
|
|
43
|
-
console.log(`${lc}[${specGetBaseDir.name}] dir: ${dir} (I: 410c57b7d02ac2ddf9ca32493ad19523)`);
|
|
44
|
-
}
|
|
45
|
-
return dir;
|
|
46
|
-
}
|
|
47
|
-
export function specGetBaseSubPath(testBaseDirRoot, uuid, logalot, lc) {
|
|
48
|
-
return "tmp";
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=spec-helper.node.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-helper.node.respec.mjs","sourceRoot":"","sources":["../src/spec-helper.node.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,iDAAiD,CAAC;AAElF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,aAAqB;IAC1D,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC;IAC1C,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,QAAQ,SAAS,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;IAC3B,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,GAAG,CAAC,UAAU,EAAE,CAAC;IACjB,IAAI,aAAa,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAA;IAChH,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAChD,OAAO,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,eAAuB,EAAE,IAAY,EAAE,OAAgB,EAAE,EAAU;IAC9F,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACtF,IAAI,OAAO,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,cAAc,CAAC,IAAI,UAAU,GAAG,wCAAwC,CAAC,CAAC;IAAC,CAAC;IAChH,OAAO,GAAG,CAAC;AACf,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,eAAuB,EAAE,IAAY,EAAE,OAAgB,EAAE,EAAU;IAClG,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-helper.respec.d.mts","sourceRoot":"","sources":["../../src/util/device-helper.respec.mts"],"names":[],"mappings":""}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { respecfully, iReckon, ifWe // DO NOT REMOVE ifWeMight or ifWe even if no longer used. We constantly change these when focusing tests
|
|
2
|
-
} from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
3
|
-
const maam = `[${import.meta.url}]`, sir = maam;
|
|
4
|
-
import { extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
5
|
-
import { generateDefaultDeviceTag } from './device-helper.mjs';
|
|
6
|
-
await respecfully(sir, 'device-helper', async () => {
|
|
7
|
-
await ifWe(sir, 'generate clean tag for Desktop Windows Chrome', async () => {
|
|
8
|
-
const lc = `[generate clean tag for Desktop Windows Chrome]`;
|
|
9
|
-
try {
|
|
10
|
-
const tag = generateDefaultDeviceTag({
|
|
11
|
-
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
|
|
12
|
-
userAgentData: { platform: 'Windows', mobile: false },
|
|
13
|
-
randomSuffix: 'a1b2'
|
|
14
|
-
});
|
|
15
|
-
iReckon(sir, tag).asTo('tag value').isGonnaBe('chrome-win-a1b2');
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
19
|
-
throw error;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
await ifWe(sir, 'generate clean tag for Mobile iOS Safari (iPhone)', async () => {
|
|
23
|
-
const lc = `[generate clean tag for Mobile iOS Safari (iPhone)]`;
|
|
24
|
-
try {
|
|
25
|
-
const tag = generateDefaultDeviceTag({
|
|
26
|
-
userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1',
|
|
27
|
-
userAgentData: { platform: 'iOS', mobile: true },
|
|
28
|
-
randomSuffix: '3c4d'
|
|
29
|
-
});
|
|
30
|
-
iReckon(sir, tag).asTo('tag value').isGonnaBe('mobile-safari-ios-3c4d');
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
34
|
-
throw error;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
await ifWe(sir, 'generate clean tag for Android Chrome Phone', async () => {
|
|
38
|
-
const lc = `[generate clean tag for Android Chrome Phone]`;
|
|
39
|
-
try {
|
|
40
|
-
const tag = generateDefaultDeviceTag({
|
|
41
|
-
userAgent: 'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36',
|
|
42
|
-
userAgentData: { platform: 'Android', mobile: true },
|
|
43
|
-
randomSuffix: '9e8f'
|
|
44
|
-
});
|
|
45
|
-
iReckon(sir, tag).asTo('tag value').isGonnaBe('mobile-chrome-android-9e8f');
|
|
46
|
-
}
|
|
47
|
-
catch (error) {
|
|
48
|
-
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
await ifWe(sir, 'generate clean tag for iPad / Tablet', async () => {
|
|
53
|
-
const lc = `[generate clean tag for iPad / Tablet]`;
|
|
54
|
-
try {
|
|
55
|
-
const tag = generateDefaultDeviceTag({
|
|
56
|
-
userAgent: 'Mozilla/5.0 (iPad; CPU OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1',
|
|
57
|
-
maxTouchPoints: 5,
|
|
58
|
-
screenWidth: 1024,
|
|
59
|
-
randomSuffix: '7a8b'
|
|
60
|
-
});
|
|
61
|
-
iReckon(sir, tag).asTo('tag value').isGonnaBe('tablet-safari-ios-7a8b');
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
65
|
-
throw error;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
await ifWe(sir, 'generate fallback tag with random 4-char suffix when no hints are present', async () => {
|
|
69
|
-
const lc = `[generate fallback tag with random 4-char suffix]`;
|
|
70
|
-
try {
|
|
71
|
-
const tag = generateDefaultDeviceTag({
|
|
72
|
-
userAgent: '',
|
|
73
|
-
randomSuffix: '1234'
|
|
74
|
-
});
|
|
75
|
-
iReckon(sir, tag).asTo('tag value').isGonnaBe('device-1234');
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
console.error(`${lc} ${extractErrorMsg(error)}`);
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
//# sourceMappingURL=device-helper.respec.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-helper.respec.mjs","sourceRoot":"","sources":["../../src/util/device-helper.respec.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module web-in-memory-workspace-projection-space-v1.respec
|
|
3
|
-
*
|
|
4
|
-
* Unit tests for WebInMemoryWorkspaceProjectionSpace_V1 verifying in-memory
|
|
5
|
-
* virtual tree reification, scanning, glob filtering, status observation, and deletion.
|
|
6
|
-
*/
|
|
7
|
-
export {};
|
|
8
|
-
//# sourceMappingURL=web-in-memory-workspace-projection-space-v1.respec.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"web-in-memory-workspace-projection-space-v1.respec.d.mts","sourceRoot":"","sources":["../../../../src/witness/space/web-in-memory-workspace-projection-space/web-in-memory-workspace-projection-space-v1.respec.mts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|