@peers-app/peers-sdk 0.27.5 → 0.28.1
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/context/user-context.d.ts +7 -1
- package/dist/context/user-context.js +4 -9
- package/dist/contracts/contract-proxy.d.ts +5 -0
- package/dist/contracts/contract-proxy.js +2 -2
- package/dist/contracts/contract-resolvers.d.ts +2 -2
- package/dist/contracts/contract-resolvers.js +14 -15
- package/dist/contracts/system/network-contracts.d.ts +1 -1
- package/dist/contracts/tool-catalog-service.js +1 -1
- package/dist/data/assistants.d.ts +3 -3
- package/dist/data/authority-write-checks.d.ts +42 -0
- package/dist/data/authority-write-checks.js +324 -0
- package/dist/data/change-tracking.d.ts +4 -4
- package/dist/data/create-group.js +1 -0
- package/dist/data/devices.d.ts +27 -4
- package/dist/data/devices.js +31 -0
- package/dist/data/group-authority.d.ts +111 -0
- package/dist/data/group-authority.js +281 -0
- package/dist/data/group-members.d.ts +8 -2
- package/dist/data/group-members.js +41 -18
- package/dist/data/group-permissions.d.ts +15 -31
- package/dist/data/group-permissions.js +25 -95
- package/dist/data/group-resign.d.ts +38 -0
- package/dist/data/group-resign.js +71 -0
- package/dist/data/groups.d.ts +11 -0
- package/dist/data/groups.js +31 -13
- package/dist/data/index.d.ts +3 -0
- package/dist/data/index.js +3 -0
- package/dist/data/invites.d.ts +14 -0
- package/dist/data/orm/index.d.ts +1 -0
- package/dist/data/orm/index.js +1 -0
- package/dist/data/orm/sql.data-source.d.ts +2 -2
- package/dist/data/orm/sql.data-source.js +24 -22
- package/dist/data/orm/table-container.js +20 -11
- package/dist/data/orm/write-checks.d.ts +89 -0
- package/dist/data/orm/write-checks.js +115 -0
- package/dist/data/package-table-identity.d.ts +21 -0
- package/dist/data/package-table-identity.js +87 -0
- package/dist/data/package-version-resolver.d.ts +15 -0
- package/dist/data/package-version-resolver.js +70 -3
- package/dist/data/package-versions.d.ts +20 -14
- package/dist/data/package-versions.js +15 -9
- package/dist/data/packages.d.ts +6 -1
- package/dist/data/packages.js +15 -20
- package/dist/data/persistent-vars.js +2 -39
- package/dist/data/sync-recovery-queue.d.ts +4 -4
- package/dist/data/sync-recovery-queue.js +7 -1
- package/dist/data/tool-access-approvals.d.ts +3 -3
- package/dist/data/user-permissions.d.ts +33 -2
- package/dist/data/user-permissions.js +87 -10
- package/dist/data/users.d.ts +49 -12
- package/dist/data/users.js +21 -1
- package/dist/data/workflows.d.ts +1 -1
- package/dist/define/index.d.ts +1 -1
- package/dist/define/index.js +2 -1
- package/dist/define/manifest.js +9 -1
- package/dist/define/table.d.ts +15 -0
- package/dist/device/binary-peer-connection-v2.d.ts +1 -1
- package/dist/device/binary-peer-connection-v2.js +1 -1
- package/dist/device/connection.d.ts +1 -1
- package/dist/device/frame-cipher.d.ts +1 -1
- package/dist/device/frame-cipher.js +1 -1
- package/dist/device/get-trust-level-fn.js +3 -6
- package/dist/device-pairing/types.d.ts +26 -26
- package/dist/identity/user-row-change.d.ts +3 -1
- package/dist/identity/user-row-change.js +33 -18
- package/dist/invites/group-approval.js +23 -24
- package/dist/invites/invite-messages.d.ts +250 -28
- package/dist/invites/invite-token.d.ts +18 -0
- package/dist/invites/invite-token.js +2 -0
- package/dist/keys.d.ts +7 -0
- package/dist/keys.js +27 -0
- package/dist/package-installer/package-installer.d.ts +1 -1
- package/dist/package-installer/package-installer.js +8 -3
- package/dist/package-installer/package-propagation.d.ts +2 -0
- package/dist/package-installer/package-propagation.js +20 -38
- package/dist/package-installer/package-remote-checker.js +15 -3
- package/dist/package-loader/isolated-artifact.d.ts +14 -0
- package/dist/package-loader/isolated-artifact.js +3 -3
- package/dist/package-loader/isolated-runtime.d.ts +3 -1
- package/dist/package-loader/isolated-table-gateway.js +4 -1
- package/dist/package-loader/package-loader.js +6 -0
- package/dist/peer-id.d.ts +19 -0
- package/dist/peer-id.js +41 -0
- package/dist/types/peer-device.d.ts +2 -0
- package/dist/types/workflow.d.ts +2 -2
- package/dist/utils.js +13 -32
- package/package.json +1 -1
- package/dist/data/package-permissions.d.ts +0 -14
- package/dist/data/package-permissions.js +0 -26
- package/dist/data/package-version-permissions.d.ts +0 -14
- package/dist/data/package-version-permissions.js +0 -30
package/dist/utils.js
CHANGED
|
@@ -20,18 +20,18 @@ exports.retryOnErrorOrTimeout = retryOnErrorOrTimeout;
|
|
|
20
20
|
exports.readResponseTextCapped = readResponseTextCapped;
|
|
21
21
|
exports.getFullTableName = getFullTableName;
|
|
22
22
|
const _ = require("lodash");
|
|
23
|
-
const
|
|
23
|
+
const peer_id_1 = require("./peer-id");
|
|
24
24
|
const peer_device_1 = require("./types/peer-device");
|
|
25
25
|
const stableStringify = require("fast-json-stable-stringify");
|
|
26
|
-
var
|
|
27
|
-
Object.defineProperty(exports, "cryptoRandomString", { enumerable: true, get: function () { return
|
|
28
|
-
Object.defineProperty(exports, "idDate", { enumerable: true, get: function () { return
|
|
29
|
-
Object.defineProperty(exports, "idRandNums", { enumerable: true, get: function () { return
|
|
30
|
-
Object.defineProperty(exports, "idTime", { enumerable: true, get: function () { return
|
|
31
|
-
Object.defineProperty(exports, "isid", { enumerable: true, get: function () { return
|
|
32
|
-
Object.defineProperty(exports, "MAX_ID", { enumerable: true, get: function () { return
|
|
33
|
-
Object.defineProperty(exports, "MIN_ID", { enumerable: true, get: function () { return
|
|
34
|
-
Object.defineProperty(exports, "newid", { enumerable: true, get: function () { return
|
|
26
|
+
var peer_id_2 = require("./peer-id");
|
|
27
|
+
Object.defineProperty(exports, "cryptoRandomString", { enumerable: true, get: function () { return peer_id_2.cryptoRandomString; } });
|
|
28
|
+
Object.defineProperty(exports, "idDate", { enumerable: true, get: function () { return peer_id_2.idDate; } });
|
|
29
|
+
Object.defineProperty(exports, "idRandNums", { enumerable: true, get: function () { return peer_id_2.idRandNums; } });
|
|
30
|
+
Object.defineProperty(exports, "idTime", { enumerable: true, get: function () { return peer_id_2.idTime; } });
|
|
31
|
+
Object.defineProperty(exports, "isid", { enumerable: true, get: function () { return peer_id_2.isid; } });
|
|
32
|
+
Object.defineProperty(exports, "MAX_ID", { enumerable: true, get: function () { return peer_id_2.MAX_ID; } });
|
|
33
|
+
Object.defineProperty(exports, "MIN_ID", { enumerable: true, get: function () { return peer_id_2.MIN_ID; } });
|
|
34
|
+
Object.defineProperty(exports, "newid", { enumerable: true, get: function () { return peer_id_2.newid; } });
|
|
35
35
|
/** Fast non-cryptographic 32-bit string hash (sign-insensitive) for display keys and bucketing. */
|
|
36
36
|
function simpleHash(str) {
|
|
37
37
|
let hash = 0;
|
|
@@ -52,25 +52,6 @@ const DETERMINISTIC_PVAR_PREFIX = "000pvar0";
|
|
|
52
52
|
const DETERMINISTIC_TABLE_PREFIX = "000tbl00";
|
|
53
53
|
/** Well-known prefix for deterministic group-membership IDs. */
|
|
54
54
|
const DETERMINISTIC_GROUP_MEMBER_PREFIX = "000gmbr0";
|
|
55
|
-
/**
|
|
56
|
-
* Converts a byte array to a base-36 string of the requested length, using unbiased modular reduction.
|
|
57
|
-
* Bytes >= 252 are skipped to avoid bias (same technique as {@link cryptoRandomString}).
|
|
58
|
-
*/
|
|
59
|
-
function bytesToBase36(bytes, length) {
|
|
60
|
-
let s = "";
|
|
61
|
-
for (let i = 0; i < bytes.length && s.length < length; i++) {
|
|
62
|
-
const n = bytes[i];
|
|
63
|
-
if (n >= 252)
|
|
64
|
-
continue;
|
|
65
|
-
s += (n % 36).toString(36);
|
|
66
|
-
}
|
|
67
|
-
return s.substring(0, length);
|
|
68
|
-
}
|
|
69
|
-
function deterministicPeerId(prefix, input) {
|
|
70
|
-
const hashSuffixLength = 25 - prefix.length;
|
|
71
|
-
const hash = nacl.hash(new TextEncoder().encode(input));
|
|
72
|
-
return prefix + bytesToBase36(hash, hashSuffixLength);
|
|
73
|
-
}
|
|
74
55
|
/**
|
|
75
56
|
* Generates a deterministic 25-character peer ID for a persistent variable.
|
|
76
57
|
* The ID has the fixed prefix `000pvar0` (8 chars) followed by 17 base-36 characters
|
|
@@ -81,7 +62,7 @@ function deterministicPeerId(prefix, input) {
|
|
|
81
62
|
* (already includes group suffixes for groupDevice/groupUser scopes)
|
|
82
63
|
*/
|
|
83
64
|
function deterministicPvarId(name) {
|
|
84
|
-
return deterministicPeerId(DETERMINISTIC_PVAR_PREFIX, name);
|
|
65
|
+
return (0, peer_id_1.deterministicPeerId)(DETERMINISTIC_PVAR_PREFIX, name);
|
|
85
66
|
}
|
|
86
67
|
/**
|
|
87
68
|
* Returns whether a peer ID was generated by {@link deterministicPvarId}
|
|
@@ -99,7 +80,7 @@ function isDeterministicPvarId(id) {
|
|
|
99
80
|
* @param identity Stable package-scoped table identity.
|
|
100
81
|
*/
|
|
101
82
|
function deterministicTableId(identity) {
|
|
102
|
-
return deterministicPeerId(DETERMINISTIC_TABLE_PREFIX, identity);
|
|
83
|
+
return (0, peer_id_1.deterministicPeerId)(DETERMINISTIC_TABLE_PREFIX, identity);
|
|
103
84
|
}
|
|
104
85
|
/**
|
|
105
86
|
* Return whether a peer ID was generated by {@link deterministicTableId}.
|
|
@@ -120,7 +101,7 @@ function isDeterministicTableId(id) {
|
|
|
120
101
|
* @param userId The member.
|
|
121
102
|
*/
|
|
122
103
|
function deterministicGroupMemberId(groupId, userId) {
|
|
123
|
-
return deterministicPeerId(DETERMINISTIC_GROUP_MEMBER_PREFIX, `${groupId}:${userId}`);
|
|
104
|
+
return (0, peer_id_1.deterministicPeerId)(DETERMINISTIC_GROUP_MEMBER_PREFIX, `${groupId}:${userId}`);
|
|
124
105
|
}
|
|
125
106
|
/**
|
|
126
107
|
* Return whether a peer ID was generated by {@link deterministicGroupMemberId}.
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { IPackage } from "./packages";
|
|
2
|
-
/**
|
|
3
|
-
* Verifies that a package update signature is valid.
|
|
4
|
-
*
|
|
5
|
-
* Writers can create or update packages that have a dev active version.
|
|
6
|
-
* Admins are required for packages with beta or stable active versions.
|
|
7
|
-
*
|
|
8
|
-
* @param packageObj The package record to verify
|
|
9
|
-
* @param opts.isDevVersion When true, allows Writer role (for dev version operations)
|
|
10
|
-
* @throws Error if signature is invalid or unauthorized
|
|
11
|
-
*/
|
|
12
|
-
export declare function verifyPackageSignature(packageObj: IPackage, groupId: string, opts?: {
|
|
13
|
-
isDevVersion?: boolean;
|
|
14
|
-
}): Promise<void>;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyPackageSignature = verifyPackageSignature;
|
|
4
|
-
const keys_1 = require("../keys");
|
|
5
|
-
const group_permissions_1 = require("./group-permissions");
|
|
6
|
-
/**
|
|
7
|
-
* Verifies that a package update signature is valid.
|
|
8
|
-
*
|
|
9
|
-
* Writers can create or update packages that have a dev active version.
|
|
10
|
-
* Admins are required for packages with beta or stable active versions.
|
|
11
|
-
*
|
|
12
|
-
* @param packageObj The package record to verify
|
|
13
|
-
* @param opts.isDevVersion When true, allows Writer role (for dev version operations)
|
|
14
|
-
* @throws Error if signature is invalid or unauthorized
|
|
15
|
-
*/
|
|
16
|
-
async function verifyPackageSignature(packageObj, groupId, opts) {
|
|
17
|
-
(0, keys_1.verifyObjectSignature)(packageObj);
|
|
18
|
-
const signerPublicKey = (0, keys_1.getPublicKeyFromObjectSignature)(packageObj) ?? "";
|
|
19
|
-
const signerRole = await (0, group_permissions_1.getUserRoleFromPublicKey)(groupId, signerPublicKey);
|
|
20
|
-
const requiredRole = opts?.isDevVersion ? group_permissions_1.GroupMemberRole.Writer : group_permissions_1.GroupMemberRole.Admin;
|
|
21
|
-
if (signerRole < requiredRole) {
|
|
22
|
-
throw new Error(opts?.isDevVersion
|
|
23
|
-
? "Only group writers or above can create or update dev packages"
|
|
24
|
-
: "Only group admins can create or update packages");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { GroupMemberRole } from "./group-permissions";
|
|
2
|
-
import type { IPackageVersion } from "./package-versions";
|
|
3
|
-
/**
|
|
4
|
-
* Verifies that a package version update signature is valid.
|
|
5
|
-
*
|
|
6
|
-
* Dev versions (`versionTag === "dev"`) require Writer role.
|
|
7
|
-
* Beta and stable versions require Admin role.
|
|
8
|
-
*
|
|
9
|
-
* @param packageVersion The package version record to verify
|
|
10
|
-
* @param groupId The group context to check roles against
|
|
11
|
-
* @param signerRole Optional pre-resolved role (skips `getUserRoleFromPublicKey` lookup; useful in tests)
|
|
12
|
-
* @throws Error if signature is invalid or unauthorized
|
|
13
|
-
*/
|
|
14
|
-
export declare function verifyPackageVersionSignature(packageVersion: IPackageVersion, groupId: string, signerRole?: GroupMemberRole): Promise<void>;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyPackageVersionSignature = verifyPackageVersionSignature;
|
|
4
|
-
const keys_1 = require("../keys");
|
|
5
|
-
const group_permissions_1 = require("./group-permissions");
|
|
6
|
-
/**
|
|
7
|
-
* Verifies that a package version update signature is valid.
|
|
8
|
-
*
|
|
9
|
-
* Dev versions (`versionTag === "dev"`) require Writer role.
|
|
10
|
-
* Beta and stable versions require Admin role.
|
|
11
|
-
*
|
|
12
|
-
* @param packageVersion The package version record to verify
|
|
13
|
-
* @param groupId The group context to check roles against
|
|
14
|
-
* @param signerRole Optional pre-resolved role (skips `getUserRoleFromPublicKey` lookup; useful in tests)
|
|
15
|
-
* @throws Error if signature is invalid or unauthorized
|
|
16
|
-
*/
|
|
17
|
-
async function verifyPackageVersionSignature(packageVersion, groupId, signerRole) {
|
|
18
|
-
(0, keys_1.verifyObjectSignature)(packageVersion);
|
|
19
|
-
if (signerRole === undefined) {
|
|
20
|
-
const signerPublicKey = (0, keys_1.getPublicKeyFromObjectSignature)(packageVersion) ?? "";
|
|
21
|
-
signerRole = await (0, group_permissions_1.getUserRoleFromPublicKey)(groupId, signerPublicKey);
|
|
22
|
-
}
|
|
23
|
-
const isDevVersion = packageVersion.versionTag === "dev";
|
|
24
|
-
const requiredRole = isDevVersion ? group_permissions_1.GroupMemberRole.Writer : group_permissions_1.GroupMemberRole.Admin;
|
|
25
|
-
if (signerRole < requiredRole) {
|
|
26
|
-
throw new Error(isDevVersion
|
|
27
|
-
? "Only group writers or above can create dev package versions"
|
|
28
|
-
: "Only group admins can create or update beta/stable package versions");
|
|
29
|
-
}
|
|
30
|
-
}
|