@medicine-wheel/community-identity 0.15.3 → 0.15.4
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/README.md +8 -0
- package/dist/invitations.d.ts +33 -17
- package/dist/invitations.d.ts.map +1 -1
- package/dist/invitations.js +20 -3
- package/dist/invitations.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -17,4 +17,12 @@ const { token } = await creds.issue(node.id, 'laptop'); // show
|
|
|
17
17
|
const record = await creds.verify(token); // who is calling
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
An invitation code opens one circle. A code minted without `expires_at` lives `DEFAULT_INVITATION_TTL_HOURS` (96). `intended_email` records where it was sent. `publicInvitation()` is what a code holder may see before registering: no address, no acceptances.
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
const invites = new JsonlInvitationStore('/srv/miadi/identity/invitations.jsonl');
|
|
24
|
+
const inv = await invites.create({ circle_id: circle.id, invited_by: node.id, intended_for: 'Jane', intended_email: 'jane@example.org' });
|
|
25
|
+
publicInvitation(inv, { circle_name: 'Ep349 circle', invited_by_name: 'Guillaume' }); // { code, role, state, circle_name, …, has_email: true }
|
|
26
|
+
```
|
|
27
|
+
|
|
20
28
|
Added in 0.14.0 for jgwill/Miadi#647 (episode 349). Spec: `rispecs/community-identity.spec.md`.
|
package/dist/invitations.d.ts
CHANGED
|
@@ -14,23 +14,30 @@ export interface InvitationRecord {
|
|
|
14
14
|
circle_id: string;
|
|
15
15
|
invited_by: string;
|
|
16
16
|
role: CircleRole;
|
|
17
|
-
/**
|
|
17
|
+
/** The name the invitation was meant for; informational. */
|
|
18
18
|
intended_for?: string;
|
|
19
|
+
/** The address the code was sent to. Never part of the public view. */
|
|
20
|
+
intended_email?: string;
|
|
19
21
|
created_at: string;
|
|
20
22
|
expires_at?: string;
|
|
21
23
|
max_uses: number;
|
|
22
24
|
accepted_by: string[];
|
|
23
25
|
revoked_at?: string;
|
|
24
26
|
}
|
|
27
|
+
export interface InvitationInput {
|
|
28
|
+
circle_id: string;
|
|
29
|
+
invited_by: string;
|
|
30
|
+
role?: CircleRole;
|
|
31
|
+
intended_for?: string;
|
|
32
|
+
intended_email?: string;
|
|
33
|
+
/** ISO date. Without it the code lives DEFAULT_INVITATION_TTL_HOURS. */
|
|
34
|
+
expires_at?: string;
|
|
35
|
+
max_uses?: number;
|
|
36
|
+
}
|
|
37
|
+
/** How long a code stays open when its minter names no expiry. */
|
|
38
|
+
export declare const DEFAULT_INVITATION_TTL_HOURS = 96;
|
|
25
39
|
export interface InvitationStore {
|
|
26
|
-
create(input:
|
|
27
|
-
circle_id: string;
|
|
28
|
-
invited_by: string;
|
|
29
|
-
role?: CircleRole;
|
|
30
|
-
intended_for?: string;
|
|
31
|
-
expires_at?: string;
|
|
32
|
-
max_uses?: number;
|
|
33
|
-
}): Promise<InvitationRecord>;
|
|
40
|
+
create(input: InvitationInput): Promise<InvitationRecord>;
|
|
34
41
|
get(code: string): Promise<InvitationRecord | null>;
|
|
35
42
|
listForCircle(circle_id: string): Promise<InvitationRecord[]>;
|
|
36
43
|
/** Record an acceptance. Returns the record, or a reason it could not be accepted. */
|
|
@@ -45,19 +52,28 @@ export interface InvitationStore {
|
|
|
45
52
|
}
|
|
46
53
|
export declare function mintInvitationCode(length?: number): string;
|
|
47
54
|
export declare function invitationState(record: InvitationRecord, now?: number): 'open' | 'revoked' | 'expired' | 'exhausted';
|
|
55
|
+
/** What a code holder may see before registering: no address, no acceptances. */
|
|
56
|
+
export interface PublicInvitation {
|
|
57
|
+
code: string;
|
|
58
|
+
role: CircleRole;
|
|
59
|
+
state: ReturnType<typeof invitationState>;
|
|
60
|
+
circle_name: string;
|
|
61
|
+
invited_by_name?: string;
|
|
62
|
+
intended_for?: string;
|
|
63
|
+
expires_at?: string;
|
|
64
|
+
/** True when the invitation names an address the registration may take. */
|
|
65
|
+
has_email: boolean;
|
|
66
|
+
}
|
|
67
|
+
export declare function publicInvitation(record: InvitationRecord, names: {
|
|
68
|
+
circle_name: string;
|
|
69
|
+
invited_by_name?: string;
|
|
70
|
+
}, now?: number): PublicInvitation;
|
|
48
71
|
export declare class JsonlInvitationStore implements InvitationStore {
|
|
49
72
|
private readonly file;
|
|
50
73
|
constructor(file: string);
|
|
51
74
|
private readAll;
|
|
52
75
|
private writeAll;
|
|
53
|
-
create(input:
|
|
54
|
-
circle_id: string;
|
|
55
|
-
invited_by: string;
|
|
56
|
-
role?: CircleRole;
|
|
57
|
-
intended_for?: string;
|
|
58
|
-
expires_at?: string;
|
|
59
|
-
max_uses?: number;
|
|
60
|
-
}): Promise<InvitationRecord>;
|
|
76
|
+
create(input: InvitationInput): Promise<InvitationRecord>;
|
|
61
77
|
get(code: string): Promise<InvitationRecord | null>;
|
|
62
78
|
listForCircle(circle_id: string): Promise<InvitationRecord[]>;
|
|
63
79
|
accept(code: string, person_id: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../src/invitations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"invitations.d.ts","sourceRoot":"","sources":["../src/invitations.ts"],"names":[],"mappings":"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"}
|
package/dist/invitations.js
CHANGED
|
@@ -10,12 +10,15 @@
|
|
|
10
10
|
* `member_of` edge, which is the relational fact.
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.JsonlInvitationStore = void 0;
|
|
13
|
+
exports.JsonlInvitationStore = exports.DEFAULT_INVITATION_TTL_HOURS = void 0;
|
|
14
14
|
exports.mintInvitationCode = mintInvitationCode;
|
|
15
15
|
exports.invitationState = invitationState;
|
|
16
|
+
exports.publicInvitation = publicInvitation;
|
|
16
17
|
const node_crypto_1 = require("node:crypto");
|
|
17
18
|
const node_fs_1 = require("node:fs");
|
|
18
19
|
const node_path_1 = require("node:path");
|
|
20
|
+
/** How long a code stays open when its minter names no expiry. */
|
|
21
|
+
exports.DEFAULT_INVITATION_TTL_HOURS = 96;
|
|
19
22
|
const ALPHABET = 'ABCDEFGHJKMNPQRSTUVWXYZ23456789';
|
|
20
23
|
function mintInvitationCode(length = 8) {
|
|
21
24
|
const bytes = (0, node_crypto_1.randomBytes)(length);
|
|
@@ -33,6 +36,18 @@ function invitationState(record, now = Date.now()) {
|
|
|
33
36
|
return 'exhausted';
|
|
34
37
|
return 'open';
|
|
35
38
|
}
|
|
39
|
+
function publicInvitation(record, names, now = Date.now()) {
|
|
40
|
+
return {
|
|
41
|
+
code: record.code,
|
|
42
|
+
role: record.role,
|
|
43
|
+
state: invitationState(record, now),
|
|
44
|
+
circle_name: names.circle_name,
|
|
45
|
+
...(names.invited_by_name ? { invited_by_name: names.invited_by_name } : {}),
|
|
46
|
+
...(record.intended_for ? { intended_for: record.intended_for } : {}),
|
|
47
|
+
...(record.expires_at ? { expires_at: record.expires_at } : {}),
|
|
48
|
+
has_email: Boolean(record.intended_email),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
36
51
|
class JsonlInvitationStore {
|
|
37
52
|
file;
|
|
38
53
|
constructor(file) {
|
|
@@ -51,14 +66,16 @@ class JsonlInvitationStore {
|
|
|
51
66
|
(0, node_fs_1.writeFileSync)(this.file, records.map((r) => JSON.stringify(r)).join('\n') + (records.length ? '\n' : ''));
|
|
52
67
|
}
|
|
53
68
|
async create(input) {
|
|
69
|
+
const now = Date.now();
|
|
54
70
|
const record = {
|
|
55
71
|
code: mintInvitationCode(),
|
|
56
72
|
circle_id: input.circle_id,
|
|
57
73
|
invited_by: input.invited_by,
|
|
58
74
|
role: input.role ?? 'member',
|
|
59
75
|
...(input.intended_for ? { intended_for: input.intended_for } : {}),
|
|
60
|
-
|
|
61
|
-
|
|
76
|
+
...(input.intended_email ? { intended_email: input.intended_email.trim().toLowerCase() } : {}),
|
|
77
|
+
created_at: new Date(now).toISOString(),
|
|
78
|
+
expires_at: input.expires_at ?? new Date(now + exports.DEFAULT_INVITATION_TTL_HOURS * 3600_000).toISOString(),
|
|
62
79
|
max_uses: input.max_uses && input.max_uses > 0 ? input.max_uses : 1,
|
|
63
80
|
accepted_by: [],
|
|
64
81
|
};
|
package/dist/invitations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invitations.js","sourceRoot":"","sources":["../src/invitations.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;
|
|
1
|
+
{"version":3,"file":"invitations.js","sourceRoot":"","sources":["../src/invitations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medicine-wheel/community-identity",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.4",
|
|
4
4
|
"description": "Who is in the circle: people as wheel nodes, roles with a permission map, circles and memberships as relations, invitations and self-issued credentials kept by the consumer — so a Medicine Wheel can tell two people apart.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"directory": "src/community-identity"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@medicine-wheel/ontology-core": "^0.15.
|
|
44
|
+
"@medicine-wheel/ontology-core": "^0.15.4",
|
|
45
45
|
"zod": "^3.23.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|