@argentic/chest-sdk 0.1.1 → 0.2.0
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 +381 -35
- package/client/index.ts +10 -5
- package/client/src/api.ts +81 -0
- package/client/src/errors.ts +14 -3
- package/client/src/events.ts +228 -0
- package/client/src/files.ts +93 -88
- package/client/src/member.ts +40 -17
- package/client/src/members.ts +167 -0
- package/client/src/notifications.ts +148 -0
- package/client/src/testing.ts +417 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/src/api.d.ts +9 -0
- package/dist/src/api.d.ts.map +1 -0
- package/dist/src/api.js +88 -0
- package/dist/src/api.js.map +1 -0
- package/dist/src/errors.d.ts +3 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +13 -3
- package/dist/src/errors.js.map +1 -1
- package/dist/src/events.d.ts +56 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +193 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/files.d.ts +17 -1
- package/dist/src/files.d.ts.map +1 -1
- package/dist/src/files.js +95 -92
- package/dist/src/files.js.map +1 -1
- package/dist/src/member.d.ts +6 -3
- package/dist/src/member.d.ts.map +1 -1
- package/dist/src/member.js +22 -11
- package/dist/src/member.js.map +1 -1
- package/dist/src/members.d.ts +34 -0
- package/dist/src/members.d.ts.map +1 -0
- package/dist/src/members.js +146 -0
- package/dist/src/members.js.map +1 -0
- package/dist/src/notifications.d.ts +25 -0
- package/dist/src/notifications.d.ts.map +1 -0
- package/dist/src/notifications.js +121 -0
- package/dist/src/notifications.js.map +1 -0
- package/dist/src/testing.d.ts +70 -0
- package/dist/src/testing.d.ts.map +1 -0
- package/dist/src/testing.js +419 -0
- package/dist/src/testing.js.map +1 -0
- package/package.json +28 -4
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { IncomingMessage } from "node:http";
|
|
2
|
+
export type MemberChange = "name" | "photo" | "role" | "groups" | "email";
|
|
3
|
+
export type MemberUpdated = {
|
|
4
|
+
id: string;
|
|
5
|
+
type: "member.updated";
|
|
6
|
+
occurredAt: string;
|
|
7
|
+
data: {
|
|
8
|
+
id: string;
|
|
9
|
+
changed: MemberChange[];
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export type AccessRevoked = {
|
|
13
|
+
id: string;
|
|
14
|
+
type: "access.revoked";
|
|
15
|
+
occurredAt: string;
|
|
16
|
+
data: {
|
|
17
|
+
id: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type MemberRemoved = {
|
|
21
|
+
id: string;
|
|
22
|
+
type: "member.removed";
|
|
23
|
+
occurredAt: string;
|
|
24
|
+
data: {
|
|
25
|
+
id: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export type MemberErased = {
|
|
29
|
+
id: string;
|
|
30
|
+
type: "member.erased";
|
|
31
|
+
occurredAt: string;
|
|
32
|
+
data: {
|
|
33
|
+
id: string;
|
|
34
|
+
erasure: string;
|
|
35
|
+
deadline: string;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
export type ChestEvent = MemberUpdated | AccessRevoked | MemberRemoved | MemberErased;
|
|
39
|
+
export type ChestEventType = ChestEvent["type"];
|
|
40
|
+
export type Handlers = {
|
|
41
|
+
[K in ChestEventType]?: (event: Extract<ChestEvent, {
|
|
42
|
+
type: K;
|
|
43
|
+
}>) => void | Promise<void>;
|
|
44
|
+
};
|
|
45
|
+
export type Seen = {
|
|
46
|
+
has(id: string): boolean | Promise<boolean>;
|
|
47
|
+
add(id: string): void | Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
export declare function memorySeen(limit?: number): Seen;
|
|
50
|
+
export declare const erasureIdPattern: RegExp;
|
|
51
|
+
export declare function verify(request: IncomingMessage | Request): Promise<ChestEvent | null>;
|
|
52
|
+
export declare function handle(request: IncomingMessage | Request, handlers: Handlers, options?: {
|
|
53
|
+
seen?: Seen;
|
|
54
|
+
}): Promise<number>;
|
|
55
|
+
export declare function acknowledgeErasure(erasure: string): Promise<void>;
|
|
56
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../client/src/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AA4BjD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1E,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAEtI,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE7G,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAG7G,MAAM,MAAM,YAAY,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE9I,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAAG,YAAY,CAAC;AACtF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAGhD,MAAM,MAAM,QAAQ,GAAG;KAAG,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAAE,CAAC;AAWrH,MAAM,MAAM,IAAI,GAAG;IAAE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAI1G,wBAAgB,UAAU,CAAC,KAAK,SAAQ,GAAG,IAAI,CAU9C;AAcD,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAoGtD,wBAAsB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG3F;AAWD,wBAAsB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,IAAI,CAAA;CAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAanI;AAQD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASvE"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
|
|
2
|
+
import { ask, refusal } from "./api.js";
|
|
3
|
+
import { ChestError, Unavailable } from "./errors.js";
|
|
4
|
+
import { memberIdPattern } from "./member.js";
|
|
5
|
+
import { forget } from "./members.js";
|
|
6
|
+
// memorySeen keeps the last limit ids in this process: lost at a restart,
|
|
7
|
+
// enough for a tool whose handlers are idempotent anyway.
|
|
8
|
+
export function memorySeen(limit = 10000) {
|
|
9
|
+
const ids = new Set();
|
|
10
|
+
return {
|
|
11
|
+
has: id => ids.has(id),
|
|
12
|
+
add: id => {
|
|
13
|
+
ids.delete(id);
|
|
14
|
+
ids.add(id);
|
|
15
|
+
while (ids.size > limit)
|
|
16
|
+
ids.delete(ids.values().next().value);
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
// The key of the events is HMAC-SHA256 of this label under the text of
|
|
21
|
+
// CHEST_TOKEN, exactly as the Chest derives it (chest/toolfront): neither the
|
|
22
|
+
// token itself nor the key of the Chest-Member assertion.
|
|
23
|
+
const label = "Chest-Event v1";
|
|
24
|
+
const claims = ["aud", "iat", "exp", "jti", "digest"];
|
|
25
|
+
// Clocks of the Chest and of the container may differ by this much, in seconds.
|
|
26
|
+
const skew = 5;
|
|
27
|
+
const maxSignature = 2048;
|
|
28
|
+
const maxBody = 64 << 10;
|
|
29
|
+
const compact = /^([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/u;
|
|
30
|
+
const eventIdPattern = /^evt_[a-z2-7]{26}$/u;
|
|
31
|
+
// The grammar of an erasure's identifier, as the Chest mints it.
|
|
32
|
+
export const erasureIdPattern = /^era_[a-z2-7]{26}$/u;
|
|
33
|
+
const changes = ["name", "photo", "role", "groups", "email"];
|
|
34
|
+
function object(value) {
|
|
35
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
36
|
+
}
|
|
37
|
+
function json(raw) {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(raw);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const instant = (v) => typeof v === "string" && v.length <= 40 && !Number.isNaN(Date.parse(v));
|
|
46
|
+
function headerOf(request) {
|
|
47
|
+
const headers = request.headers;
|
|
48
|
+
const value = typeof headers.get === "function" ? headers.get("chest-event") : headers["chest-event"];
|
|
49
|
+
return typeof value === "string" && value.length <= maxSignature ? value : null;
|
|
50
|
+
}
|
|
51
|
+
// bodyOf reads the body, 64 KiB at most; null beyond, or when it was read
|
|
52
|
+
// already.
|
|
53
|
+
async function bodyOf(request) {
|
|
54
|
+
try {
|
|
55
|
+
if (request instanceof Request) {
|
|
56
|
+
if (request.bodyUsed || Number(request.headers.get("content-length") ?? "0") > maxBody)
|
|
57
|
+
return null;
|
|
58
|
+
const raw = Buffer.from(await request.arrayBuffer());
|
|
59
|
+
return raw.length <= maxBody ? raw : null;
|
|
60
|
+
}
|
|
61
|
+
const chunks = [];
|
|
62
|
+
let size = 0;
|
|
63
|
+
for await (const chunk of request) {
|
|
64
|
+
size += chunk.length;
|
|
65
|
+
if (size > maxBody)
|
|
66
|
+
return null;
|
|
67
|
+
chunks.push(chunk);
|
|
68
|
+
}
|
|
69
|
+
return Buffer.concat(chunks);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// envelope reads a signed delivery: the envelope when the signature, the tool,
|
|
76
|
+
// the time and the digest of the body hold; known says its type is one this
|
|
77
|
+
// SDK reads.
|
|
78
|
+
async function envelope(request) {
|
|
79
|
+
const token = process.env["CHEST_TOKEN"];
|
|
80
|
+
const tool = process.env["CHEST_TOOL"];
|
|
81
|
+
if (!token || !/^[A-Za-z0-9_-]{43,512}$/u.test(token) || !tool || request.method !== "POST")
|
|
82
|
+
return null;
|
|
83
|
+
const signature = headerOf(request);
|
|
84
|
+
const parts = signature === null ? null : compact.exec(signature);
|
|
85
|
+
if (!parts)
|
|
86
|
+
return null;
|
|
87
|
+
const [, encodedHeader = "", encodedPayload = "", encodedSignature = ""] = parts;
|
|
88
|
+
const header = object(json(Buffer.from(encodedHeader, "base64url").toString("utf8")));
|
|
89
|
+
if (!header || Object.keys(header).length !== 2 || header["alg"] !== "HS256" || header["typ"] !== "JWT")
|
|
90
|
+
return null;
|
|
91
|
+
const key = createHmac("sha256", Buffer.from(token, "utf8")).update(label).digest();
|
|
92
|
+
const expected = createHmac("sha256", key).update(encodedHeader + "." + encodedPayload).digest();
|
|
93
|
+
const given = Buffer.from(encodedSignature, "base64url");
|
|
94
|
+
if (given.length !== expected.length || !timingSafeEqual(given, expected))
|
|
95
|
+
return null;
|
|
96
|
+
const payload = object(json(Buffer.from(encodedPayload, "base64url").toString("utf8")));
|
|
97
|
+
if (!payload || Object.keys(payload).length !== claims.length || !claims.every(name => Object.hasOwn(payload, name)))
|
|
98
|
+
return null;
|
|
99
|
+
const { aud, iat, exp, jti, digest } = payload;
|
|
100
|
+
if (aud !== tool || typeof jti !== "string" || !eventIdPattern.test(jti) || typeof digest !== "string")
|
|
101
|
+
return null;
|
|
102
|
+
if (typeof iat !== "number" || !Number.isSafeInteger(iat) || typeof exp !== "number" || !Number.isSafeInteger(exp) || exp <= iat)
|
|
103
|
+
return null;
|
|
104
|
+
const now = Math.floor(Date.now() / 1000);
|
|
105
|
+
if (iat > now + skew || exp <= now - skew)
|
|
106
|
+
return null;
|
|
107
|
+
const body = await bodyOf(request);
|
|
108
|
+
if (body === null)
|
|
109
|
+
return null;
|
|
110
|
+
const sum = createHash("sha256").update(body).digest();
|
|
111
|
+
const told = Buffer.from(digest, "base64url");
|
|
112
|
+
if (told.length !== sum.length || !timingSafeEqual(told, sum))
|
|
113
|
+
return null;
|
|
114
|
+
const e = object(json(body.toString("utf8")));
|
|
115
|
+
if (!e || Object.keys(e).length !== 4 || e["id"] !== jti || typeof e["type"] !== "string" || !instant(e["occurredAt"]))
|
|
116
|
+
return null;
|
|
117
|
+
const data = object(e["data"]);
|
|
118
|
+
if (!data || typeof data["id"] !== "string" || !memberIdPattern.test(data["id"]))
|
|
119
|
+
return null;
|
|
120
|
+
const keys = Object.keys(data).sort().join(",");
|
|
121
|
+
const base = { id: jti, occurredAt: e["occurredAt"] };
|
|
122
|
+
switch (e["type"]) {
|
|
123
|
+
case "member.updated": {
|
|
124
|
+
const changed = data["changed"];
|
|
125
|
+
if (keys !== "changed,id" || !Array.isArray(changed) || changed.length < 1 || changed.length > changes.length || !changed.every(c => typeof c === "string" && changes.includes(c)) || new Set(changed).size !== changed.length)
|
|
126
|
+
return null;
|
|
127
|
+
return { known: true, event: { ...base, type: "member.updated", data: { id: data["id"], changed: [...changed] } } };
|
|
128
|
+
}
|
|
129
|
+
case "access.revoked":
|
|
130
|
+
case "member.removed":
|
|
131
|
+
return keys === "id" ? { known: true, event: { ...base, type: e["type"], data: { id: data["id"] } } } : null;
|
|
132
|
+
case "member.erased":
|
|
133
|
+
if (keys !== "deadline,erasure,id" || typeof data["erasure"] !== "string" || !erasureIdPattern.test(data["erasure"]) || !instant(data["deadline"]))
|
|
134
|
+
return null;
|
|
135
|
+
return { known: true, event: { ...base, type: "member.erased", data: { id: data["id"], erasure: data["erasure"], deadline: data["deadline"] } } };
|
|
136
|
+
}
|
|
137
|
+
// A type of a later Chest: signed, so the tool accepts it, and ignores it.
|
|
138
|
+
return { known: false, event: { id: jti } };
|
|
139
|
+
}
|
|
140
|
+
// verify returns the event a delivery carries, or null when it is not one
|
|
141
|
+
// the Chest made for this tool — no or another signature, for another tool,
|
|
142
|
+
// expired, a body that is not the one signed, not a POST — or when it is of a
|
|
143
|
+
// type this SDK does not know. It reads the body (64 KiB at most): call it
|
|
144
|
+
// before anything else reads it. It never throws for what a request carries.
|
|
145
|
+
export async function verify(request) {
|
|
146
|
+
const read = await envelope(request);
|
|
147
|
+
return read?.known ? read.event : null;
|
|
148
|
+
}
|
|
149
|
+
const remembered = memorySeen();
|
|
150
|
+
// handle verifies one delivery and hands the event to its handler, once:
|
|
151
|
+
// the status to answer the Chest. 401 for a delivery that is not the
|
|
152
|
+
// Chest's; 204 for an event handled, one already seen (seen.has), a type
|
|
153
|
+
// without a handler or one this SDK does not know. A handler that throws
|
|
154
|
+
// leaves the event unseen and handle throws: answer 500, the Chest delivers
|
|
155
|
+
// it again. seen is the store of the ids handled (memorySeen by default,
|
|
156
|
+
// lost at a restart: give a durable one).
|
|
157
|
+
export async function handle(request, handlers, options = {}) {
|
|
158
|
+
const read = await envelope(request);
|
|
159
|
+
if (!read)
|
|
160
|
+
return 401;
|
|
161
|
+
if (!read.known)
|
|
162
|
+
return 204;
|
|
163
|
+
const seen = options.seen ?? remembered;
|
|
164
|
+
const event = read.event;
|
|
165
|
+
if (await seen.has(event.id))
|
|
166
|
+
return 204;
|
|
167
|
+
// A member changed or left: what lookup kept of them is stale.
|
|
168
|
+
forget();
|
|
169
|
+
const handler = handlers[event.type];
|
|
170
|
+
if (handler)
|
|
171
|
+
await handler(event);
|
|
172
|
+
await seen.add(event.id);
|
|
173
|
+
return 204;
|
|
174
|
+
}
|
|
175
|
+
// acknowledgeErasure tells the Chest the tool deleted or anonymised what it
|
|
176
|
+
// kept of the person of that erasure (member.erased): the owner sees it done.
|
|
177
|
+
// Acknowledging again is harmless. Errors: ChestError erasure_not_found
|
|
178
|
+
// (404, an erasure this tool was not told of), invalid_id (400),
|
|
179
|
+
// CapabilityNotGranted (403: the version does not receive member events),
|
|
180
|
+
// Unavailable.
|
|
181
|
+
export async function acknowledgeErasure(erasure) {
|
|
182
|
+
if (typeof erasure !== "string" || !erasureIdPattern.test(erasure))
|
|
183
|
+
throw new ChestError("invalid_id", 400, "invalid erasure identifier");
|
|
184
|
+
const response = await ask("events", "POST", `/erasures/${erasure}/done`);
|
|
185
|
+
if (response.status === 204)
|
|
186
|
+
return;
|
|
187
|
+
if (response.status < 400) {
|
|
188
|
+
await response.body?.cancel();
|
|
189
|
+
throw new Unavailable();
|
|
190
|
+
}
|
|
191
|
+
throw await refusal(response, "events");
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../client/src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/src/files.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type FileObject = {
|
|
|
3
3
|
type: string;
|
|
4
4
|
size: number;
|
|
5
5
|
updated: string;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
6
8
|
};
|
|
7
9
|
export type FileData = {
|
|
8
10
|
data: Uint8Array;
|
|
@@ -21,8 +23,22 @@ export declare function list(options?: {
|
|
|
21
23
|
}): Promise<FilePage>;
|
|
22
24
|
declare function remove(name: string): Promise<boolean>;
|
|
23
25
|
export { remove as delete };
|
|
24
|
-
export declare function
|
|
26
|
+
export declare function stat(name: string): Promise<FileObject | null>;
|
|
27
|
+
export declare function move(from: string, to: string): Promise<FileObject>;
|
|
28
|
+
export declare function url(name: string, options?: {
|
|
29
|
+
thumbnail?: 256 | 1024;
|
|
30
|
+
download?: boolean;
|
|
31
|
+
}): Promise<{
|
|
25
32
|
url: string;
|
|
26
33
|
expiresIn: number;
|
|
27
34
|
}>;
|
|
35
|
+
export declare function uploadUrl(name: string, options?: {
|
|
36
|
+
maxSize?: number;
|
|
37
|
+
types?: string[];
|
|
38
|
+
expiresIn?: number;
|
|
39
|
+
}): Promise<{
|
|
40
|
+
url: string;
|
|
41
|
+
method: "PUT";
|
|
42
|
+
expiresIn: number;
|
|
43
|
+
}>;
|
|
28
44
|
//# sourceMappingURL=files.d.ts.map
|
package/dist/src/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../client/src/files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../client/src/files.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACxH,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAuCpE,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CASrG;AAGD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAUhE;AAKD,wBAAsB,IAAI,CAAC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAa/F;AAGD,iBAAe,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASpD;AACD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;AAI5B,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAWnE;AAID,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAQxE;AAQD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAYjJ;AAUD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAclL"}
|
package/dist/src/files.js
CHANGED
|
@@ -1,105 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
1
|
+
import { json, read, ask as chest, refusal as refused } from "./api.js";
|
|
2
|
+
import { ChestError, TooLarge, Unavailable } from "./errors.js";
|
|
3
|
+
// The largest object a manifest may ask; the Chest holds each tool to its own.
|
|
4
|
+
const maxObject = 512 << 20;
|
|
5
5
|
// The grammar of a name, the same as the Chest's (chest/toolfiles, name).
|
|
6
6
|
const namePattern = /^[A-Za-z0-9][A-Za-z0-9._-]{0,99}(\/[A-Za-z0-9][A-Za-z0-9._-]{0,99}){0,7}$/u;
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
// A media type an upload accepts: without parameters, "family/*" for a whole
|
|
8
|
+
// family (RFC 6838 names).
|
|
9
|
+
const typePattern = /^[a-z0-9][a-z0-9!#$&^_.+-]{0,62}\/(\*|[a-z0-9][a-z0-9!#$&^_.+-]{0,62})$/u;
|
|
10
|
+
// Where the team host serves a link, and where it takes an upload.
|
|
11
|
+
const linkPattern = /^https:\/\/[A-Za-z0-9.-]{1,253}(:[0-9]{1,5})?\/_chest\/files\/([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+)$/u;
|
|
12
|
+
const uploadPattern = /^https:\/\/[A-Za-z0-9.-]{1,253}(:[0-9]{1,5})?\/_chest\/files\/upload\/([A-Za-z0-9_-]+\.[A-Za-z0-9_-]+)$/u;
|
|
13
|
+
// The longest an upload may wait, in seconds.
|
|
14
|
+
const uploadLife = 900;
|
|
15
15
|
function checkName(name) {
|
|
16
16
|
if (typeof name !== "string" || !namePattern.test(name))
|
|
17
17
|
throw new ChestError("invalid_name", 400, "invalid file name");
|
|
18
18
|
return name;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const headers = {};
|
|
23
|
-
if (init.type !== undefined)
|
|
24
|
-
headers["Content-Type"] = init.type;
|
|
25
|
-
try {
|
|
26
|
-
return await fetch(base() + path, { method, headers, ...(init.body !== undefined ? { body: init.body } : {}), redirect: "error", signal: AbortSignal.timeout(deadline) });
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
if (error instanceof ChestError)
|
|
30
|
-
throw error;
|
|
31
|
-
throw new Unavailable();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// read takes a body of limit bytes at most; beyond, or cut, the answer is not
|
|
35
|
-
// the Chest's.
|
|
36
|
-
async function read(response, limit) {
|
|
37
|
-
const declared = Number(response.headers.get("content-length") ?? "0");
|
|
38
|
-
if (declared > limit)
|
|
39
|
-
throw new Unavailable();
|
|
40
|
-
const chunks = [];
|
|
41
|
-
let size = 0;
|
|
42
|
-
try {
|
|
43
|
-
for await (const chunk of response.body ?? []) {
|
|
44
|
-
size += chunk.byteLength;
|
|
45
|
-
if (size > limit)
|
|
46
|
-
throw new Unavailable();
|
|
47
|
-
chunks.push(chunk);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
throw new Unavailable();
|
|
52
|
-
}
|
|
53
|
-
const all = new Uint8Array(size);
|
|
54
|
-
let at = 0;
|
|
55
|
-
for (const chunk of chunks) {
|
|
56
|
-
all.set(chunk, at);
|
|
57
|
-
at += chunk.byteLength;
|
|
58
|
-
}
|
|
59
|
-
return all;
|
|
60
|
-
}
|
|
61
|
-
async function json(response) {
|
|
62
|
-
try {
|
|
63
|
-
return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(await read(response, maxAnswer)));
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
if (error instanceof ChestError)
|
|
67
|
-
throw error;
|
|
68
|
-
throw new Unavailable();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// refusal turns an answer that is not a success into what the tool tests.
|
|
72
|
-
async function refusal(response) {
|
|
73
|
-
if (response.status === 403)
|
|
74
|
-
return new CapabilityNotGranted("files");
|
|
75
|
-
if (response.status === 413)
|
|
76
|
-
return new TooLarge();
|
|
77
|
-
if (response.status === 429)
|
|
78
|
-
return new QuotaExceeded();
|
|
79
|
-
if (response.status >= 500)
|
|
80
|
-
return new Unavailable();
|
|
81
|
-
let code = "refused";
|
|
82
|
-
try {
|
|
83
|
-
const body = await json(response);
|
|
84
|
-
const given = body?.error;
|
|
85
|
-
if (typeof given === "string" && /^[a-z_]{1,40}$/u.test(given))
|
|
86
|
-
code = given;
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// The code stays "refused".
|
|
90
|
-
}
|
|
91
|
-
return new ChestError(code, response.status, `the Chest refused: ${code}`);
|
|
92
|
-
}
|
|
20
|
+
const ask = (method, path, init) => chest("files", method, path, init);
|
|
21
|
+
const refusal = (response) => refused(response, "files");
|
|
93
22
|
function isObject(value) {
|
|
94
23
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
95
24
|
return false;
|
|
96
25
|
const o = value;
|
|
97
|
-
return typeof o["name"] === "string" && namePattern.test(o["name"]) && typeof o["type"] === "string" && o["type"].length <= 200 && typeof o["size"] === "number" && Number.isSafeInteger(o["size"]) && o["size"] >= 0 && typeof o["updated"] === "string";
|
|
26
|
+
return typeof o["name"] === "string" && namePattern.test(o["name"]) && typeof o["type"] === "string" && o["type"].length <= 200 && typeof o["size"] === "number" && Number.isSafeInteger(o["size"]) && o["size"] >= 0 && typeof o["updated"] === "string" && isSide(o["width"]) && isSide(o["height"]) && (o["width"] === undefined) === (o["height"] === undefined);
|
|
27
|
+
}
|
|
28
|
+
// isSide accepts a side of an image the Chest measured, or none.
|
|
29
|
+
function isSide(value) {
|
|
30
|
+
return value === undefined || (typeof value === "number" && Number.isInteger(value) && value >= 1 && value <= 65536);
|
|
98
31
|
}
|
|
99
32
|
function object(value) {
|
|
100
33
|
if (!isObject(value))
|
|
101
34
|
throw new Unavailable();
|
|
102
|
-
return { name: value.name, type: value.type, size: value.size, updated: value.updated };
|
|
35
|
+
return { name: value.name, type: value.type, size: value.size, updated: value.updated, ...(value.width !== undefined ? { width: value.width, height: value.height } : {}) };
|
|
103
36
|
}
|
|
104
37
|
// put keeps data as the file name, of type type (application/octet-stream
|
|
105
38
|
// when none), replacing the one of that name.
|
|
@@ -107,6 +40,8 @@ export async function put(name, data, type) {
|
|
|
107
40
|
checkName(name);
|
|
108
41
|
if (!(data instanceof Uint8Array) && typeof data !== "string")
|
|
109
42
|
throw new TypeError("data must be bytes or text");
|
|
43
|
+
if (data instanceof Uint8Array && data.byteLength > maxObject)
|
|
44
|
+
throw new TooLarge();
|
|
110
45
|
const body = typeof data === "string" ? new TextEncoder().encode(data) : new Uint8Array(data);
|
|
111
46
|
if (body.byteLength > maxObject)
|
|
112
47
|
throw new TooLarge();
|
|
@@ -162,18 +97,86 @@ async function remove(name) {
|
|
|
162
97
|
throw await refusal(response);
|
|
163
98
|
}
|
|
164
99
|
export { remove as delete };
|
|
100
|
+
// stat says what the tool keeps as the file name, without reading it; null
|
|
101
|
+
// when it has none of that name.
|
|
102
|
+
export async function stat(name) {
|
|
103
|
+
checkName(name);
|
|
104
|
+
const response = await ask("GET", "/files/" + name + "?stat");
|
|
105
|
+
if (response.status === 404) {
|
|
106
|
+
await response.body?.cancel();
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
if (response.status !== 200)
|
|
110
|
+
throw await refusal(response);
|
|
111
|
+
const found = object(await json(response));
|
|
112
|
+
if (found.name !== name)
|
|
113
|
+
throw new Unavailable();
|
|
114
|
+
return found;
|
|
115
|
+
}
|
|
116
|
+
// move renames the file from as to, at once, replacing the one named to;
|
|
117
|
+
// ChestError not_found when the tool has none named from.
|
|
118
|
+
export async function move(from, to) {
|
|
119
|
+
checkName(from);
|
|
120
|
+
checkName(to);
|
|
121
|
+
const response = await ask("POST", "/files/move", { body: JSON.stringify({ from, to }), type: "application/json" });
|
|
122
|
+
if (response.status !== 200)
|
|
123
|
+
throw await refusal(response);
|
|
124
|
+
const moved = object(await json(response));
|
|
125
|
+
if (moved.name !== to)
|
|
126
|
+
throw new Unavailable();
|
|
127
|
+
return moved;
|
|
128
|
+
}
|
|
165
129
|
// url signs a link to the file as it is now, on the tool's team host: anyone
|
|
166
130
|
// who has it opens the file, without signing in, for expiresIn seconds
|
|
167
|
-
// (15 minutes), or until the file changes or goes.
|
|
168
|
-
//
|
|
169
|
-
|
|
131
|
+
// (15 minutes), or until the file changes or goes. thumbnail links to the
|
|
132
|
+
// image reduced to 256 or 1024 pixels (JPEG, PNG, GIF, WebP; ChestError
|
|
133
|
+
// no_thumbnail otherwise); download has it saved rather than shown. Give it
|
|
134
|
+
// to a member's browser, never to a public page.
|
|
135
|
+
export async function url(name, options = {}) {
|
|
170
136
|
checkName(name);
|
|
171
|
-
const
|
|
137
|
+
const { thumbnail, download } = options;
|
|
138
|
+
if (thumbnail !== undefined && thumbnail !== 256 && thumbnail !== 1024)
|
|
139
|
+
throw new ChestError("invalid_body", 400, "a thumbnail is 256 or 1024 pixels");
|
|
140
|
+
if (download !== undefined && typeof download !== "boolean")
|
|
141
|
+
throw new TypeError("download must be true or false");
|
|
142
|
+
const command = { name, ...(thumbnail !== undefined ? { thumbnail } : {}), ...(download !== undefined ? { download } : {}) };
|
|
143
|
+
const response = await ask("POST", "/files/url", { body: JSON.stringify(command), type: "application/json" });
|
|
172
144
|
if (response.status !== 200)
|
|
173
145
|
throw await refusal(response);
|
|
174
146
|
const body = (await json(response));
|
|
175
|
-
|
|
147
|
+
const token = body && typeof body.url === "string" ? linkPattern.exec(body.url)?.[2] : undefined;
|
|
148
|
+
if (!body || token === undefined || token.length > 1536 || typeof body.expires_in !== "number" || !Number.isInteger(body.expires_in) || body.expires_in <= 0)
|
|
176
149
|
throw new Unavailable();
|
|
177
150
|
return { url: body.url, expiresIn: body.expires_in };
|
|
178
151
|
}
|
|
152
|
+
// uploadUrl authorises one upload from a member's browser, which sends the
|
|
153
|
+
// file itself to url, the tool's team host, with its session:
|
|
154
|
+
// fetch(up.url, { method: "PUT", body: file, headers: { "Content-Type": file.type } })
|
|
155
|
+
// name is the object's, or a folder ending in '/' where the Chest names it;
|
|
156
|
+
// maxSize bytes at most (the tool's largest object when not said), of types
|
|
157
|
+
// (up to 8, "image/*" for a family; any when not said), within expiresIn
|
|
158
|
+
// seconds (1–900, 900 when not said), once. Call it from a /chest route,
|
|
159
|
+
// after member(); then stat the name before recording it.
|
|
160
|
+
export async function uploadUrl(name, options = {}) {
|
|
161
|
+
if (typeof name !== "string" || !(name.endsWith("/") ? namePattern.test(name.slice(0, -1)) && name.split("/").length <= 8 : namePattern.test(name)))
|
|
162
|
+
throw new ChestError("invalid_name", 400, "invalid file or folder name");
|
|
163
|
+
const { maxSize, types, expiresIn } = options;
|
|
164
|
+
if (maxSize !== undefined && (typeof maxSize !== "number" || !Number.isSafeInteger(maxSize) || maxSize < 1))
|
|
165
|
+
throw new ChestError("invalid_body", 400, "maxSize is a number of bytes");
|
|
166
|
+
if (maxSize !== undefined && maxSize > maxObject)
|
|
167
|
+
throw new TooLarge();
|
|
168
|
+
if (types !== undefined && (!Array.isArray(types) || types.length > 8 || types.some((t, i) => typeof t !== "string" || t.length > 100 || !typePattern.test(t) || types.indexOf(t) !== i)))
|
|
169
|
+
throw new ChestError("invalid_type", 400, "invalid media types");
|
|
170
|
+
if (expiresIn !== undefined && (typeof expiresIn !== "number" || !Number.isInteger(expiresIn) || expiresIn < 1 || expiresIn > uploadLife))
|
|
171
|
+
throw new ChestError("invalid_body", 400, "expiresIn is 1 to 900 seconds");
|
|
172
|
+
const command = { name, ...(maxSize !== undefined ? { max_size: maxSize } : {}), ...(types !== undefined ? { types } : {}), ...(expiresIn !== undefined ? { expires_in: expiresIn } : {}) };
|
|
173
|
+
const response = await ask("POST", "/files/upload-url", { body: JSON.stringify(command), type: "application/json" });
|
|
174
|
+
if (response.status !== 200)
|
|
175
|
+
throw await refusal(response);
|
|
176
|
+
const body = (await json(response));
|
|
177
|
+
const token = body && typeof body.url === "string" ? uploadPattern.exec(body.url)?.[2] : undefined;
|
|
178
|
+
if (!body || token === undefined || token.length > 2048 || body.method !== "PUT" || typeof body.expires_in !== "number" || !Number.isInteger(body.expires_in) || body.expires_in < 1 || body.expires_in > uploadLife)
|
|
179
|
+
throw new Unavailable();
|
|
180
|
+
return { url: body.url, method: "PUT", expiresIn: body.expires_in };
|
|
181
|
+
}
|
|
179
182
|
//# sourceMappingURL=files.js.map
|
package/dist/src/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../client/src/files.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../client/src/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwBhE,+EAA+E;AAC/E,MAAM,SAAS,GAAG,GAAG,IAAI,EAAE,CAAC;AAC5B,0EAA0E;AAC1E,MAAM,WAAW,GAAG,4EAA4E,CAAC;AACjG,6EAA6E;AAC7E,2BAA2B;AAC3B,MAAM,WAAW,GAAG,0EAA0E,CAAC;AAC/F,mEAAmE;AACnE,MAAM,WAAW,GAAG,kGAAkG,CAAC;AACvH,MAAM,aAAa,GAAG,0GAA0G,CAAC;AACjI,8CAA8C;AAC9C,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;IACxH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,IAAiE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACpJ,MAAM,OAAO,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEnE,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,CAAC;AACvW,CAAC;AACD,iEAAiE;AACjE,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC;AACvH,CAAC;AACD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/K,CAAC;AAED,0EAA0E;AAC1E,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,IAAyB,EAAE,IAAa;IAC9E,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,IAAI,CAAC,CAAC,IAAI,YAAY,UAAU,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;IACjH,IAAI,IAAI,YAAY,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS;QAAE,MAAM,IAAI,QAAQ,EAAE,CAAC;IACpF,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9F,IAAI,IAAI,CAAC,UAAU,GAAG,SAAS;QAAE,MAAM,IAAI,QAAQ,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IACnK,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY;IACpC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACnH,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAO,GAAwC,EAAE;IAC1E,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1D,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACnL,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAkD,CAAC;IAChE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IACxL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,oEAAoE;AACpE,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AACD,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAC;AAE5B,2EAA2E;AAC3E,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY;IACrC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;IAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,EAAU;IACjD,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACpH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IAC/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,4EAA4E;AAC5E,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAY,EAAE,OAAO,GAAmD,EAAE;IAClG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACxC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,mCAAmC,CAAC,CAAC;IACvJ,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACnH,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7H,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9G,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAmD,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IACtL,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAa,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACjE,CAAC;AAED,2EAA2E;AAC3E,8DAA8D;AAC9D,yFAAyF;AACzF,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,OAAO,GAA+D,EAAE;IACpH,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAC9N,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9C,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC;IACvL,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,SAAS;QAAE,MAAM,IAAI,QAAQ,EAAE,CAAC;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAC5P,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,+BAA+B,CAAC,CAAC;IACtN,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5L,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAqE,CAAC;IACxG,MAAM,KAAK,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU;QAAE,MAAM,IAAI,WAAW,EAAE,CAAC;IAC9O,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAa,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AAChF,CAAC"}
|
package/dist/src/member.d.ts
CHANGED
|
@@ -4,11 +4,14 @@ export type Member = {
|
|
|
4
4
|
firstName: string;
|
|
5
5
|
lastName: string;
|
|
6
6
|
name: string;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
role?: string;
|
|
7
|
+
photo: string | null;
|
|
8
|
+
role: string | null;
|
|
10
9
|
isAdmin: boolean;
|
|
11
10
|
isBuilder: boolean;
|
|
11
|
+
groups: string[];
|
|
12
|
+
email?: string;
|
|
12
13
|
};
|
|
14
|
+
export declare const memberIdPattern: RegExp;
|
|
15
|
+
export declare const groupIdPattern: RegExp;
|
|
13
16
|
export declare function member(request: IncomingMessage | Request): Member | null;
|
|
14
17
|
//# sourceMappingURL=member.d.ts.map
|
package/dist/src/member.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../client/src/member.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"member.d.ts","sourceRoot":"","sources":["../../client/src/member.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgBjD,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,eAAO,MAAM,eAAe,QAAwB,CAAC;AACrD,eAAO,MAAM,cAAc,QAAwB,CAAC;AAwCpD,wBAAgB,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAwBxE"}
|