@awiki/dsh-plugin 0.3.11-rc.1 → 0.3.11-rc.2
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 +12 -4
- package/README.zh.md +9 -3
- package/lib/client.js +748 -146
- package/lib/client.js.map +1 -1
- package/lib/index.js +391 -101
- package/lib/provider.js +32 -2
- package/lib/{sdk-adapter-CYcJH7sM.mjs → sdk-adapter-DpqT2en9.mjs} +17 -7
- package/lib/typert.host.js +181 -117
- package/lib/typert.remote-client.d.ts +3 -1
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +181 -117
- package/lib/types/base64.d.ts +4 -0
- package/lib/types/base64.d.ts.map +1 -0
- package/lib/types/base64.js +28 -0
- package/lib/types/base64.js.map +1 -0
- package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
- package/lib/types/client/AwikiIdentityAccess.js +55 -34
- package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
- package/lib/types/client/AwikiMail.d.ts +1 -1
- package/lib/types/client/AwikiMail.d.ts.map +1 -1
- package/lib/types/client/AwikiMail.js +139 -6
- package/lib/types/client/AwikiMail.js.map +1 -1
- package/lib/types/client/AwikiOverlay.js +1 -1
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/controller.d.ts +7 -1
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +29 -1
- package/lib/types/client/controller.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +2 -0
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/mail-attachment.d.ts +40 -0
- package/lib/types/client/mail-attachment.d.ts.map +1 -0
- package/lib/types/client/mail-attachment.js +187 -0
- package/lib/types/client/mail-attachment.js.map +1 -0
- package/lib/types/client/slots.d.ts +5 -1
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/external-http-auth.d.ts +3 -1
- package/lib/types/external-http-auth.d.ts.map +1 -1
- package/lib/types/external-http-auth.js +2 -2
- package/lib/types/external-http-auth.js.map +1 -1
- package/lib/types/identity-handle.d.ts +5 -0
- package/lib/types/identity-handle.d.ts.map +1 -0
- package/lib/types/identity-handle.js +33 -0
- package/lib/types/identity-handle.js.map +1 -0
- package/lib/types/index.d.ts +10 -2
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +81 -26
- package/lib/types/index.js.map +1 -1
- package/lib/types/mail-attachment-client.d.ts +14 -0
- package/lib/types/mail-attachment-client.d.ts.map +1 -0
- package/lib/types/mail-attachment-client.js +173 -0
- package/lib/types/mail-attachment-client.js.map +1 -0
- package/lib/types/mail.d.ts +28 -2
- package/lib/types/mail.d.ts.map +1 -1
- package/lib/types/mail.js +79 -2
- package/lib/types/mail.js.map +1 -1
- package/lib/types/package-version.generated.d.ts +1 -1
- package/lib/types/package-version.generated.js +1 -1
- package/lib/types/provider.d.ts +1 -1
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +12 -1
- package/lib/types/provider.js.map +1 -1
- package/lib/types/registration-policy.d.ts +1 -3
- package/lib/types/registration-policy.d.ts.map +1 -1
- package/lib/types/registration-policy.js +1 -9
- package/lib/types/registration-policy.js.map +1 -1
- package/lib/types/sdk-adapter.d.ts +2 -1
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +13 -4
- package/lib/types/sdk-adapter.js.map +1 -1
- package/lib/types/tools.d.ts +1 -1
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/tools.js +20 -4
- package/lib/types/tools.js.map +1 -1
- package/lib/types/types.d.ts +39 -2
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/lib/types/update-policy.d.ts +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/** Host-owned Mail HTTP transport. Identity signs exact bytes; no attachment SDK facade is needed. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { AWIKI_EXTERNAL_HTTP_MAX_BODY_BYTES, AwikiExternalHttpAuthError } from "./external-http-auth.js";
|
|
4
|
+
import { mailAttachmentContentType, mailAttachmentFileName } from "./mail.js";
|
|
5
|
+
import { standardBase64Syntax } from "./base64.js";
|
|
6
|
+
import { AwikiSdkError } from "./sdk-adapter.js";
|
|
7
|
+
/** Reserve JSON escaping, recipients, subject, body text and ten attachment metadata records. */
|
|
8
|
+
export const MAIL_HTTP_UPLOAD_MAX_BYTES = Math.floor((AWIKI_EXTERNAL_HTTP_MAX_BODY_BYTES - 512 * 1024) / 4) * 3;
|
|
9
|
+
const RESPONSE_METADATA_BYTES = 64 * 1024;
|
|
10
|
+
const TIMEOUT_MS = 30_000;
|
|
11
|
+
function invalid() { throw new AwikiSdkError('remote'); }
|
|
12
|
+
function record(value) {
|
|
13
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
14
|
+
invalid();
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
function text(value, max) {
|
|
18
|
+
if (typeof value !== 'string' || value.length === 0 || value.trim() !== value || /[\p{C}]/u.test(value) || Buffer.byteLength(value) > max)
|
|
19
|
+
invalid();
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
function integer(value) {
|
|
23
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
24
|
+
invalid();
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
/** Enforce the budget before JSON aggregation, even without Content-Length. */
|
|
28
|
+
async function bounded(response, maxBytes) {
|
|
29
|
+
const declared = response.headers.get('content-length');
|
|
30
|
+
if (declared !== null && (!/^\d+$/u.test(declared) || Number(declared) > maxBytes)) {
|
|
31
|
+
await response.body?.cancel().catch(() => { });
|
|
32
|
+
invalid();
|
|
33
|
+
}
|
|
34
|
+
if (response.body === null)
|
|
35
|
+
return new Uint8Array();
|
|
36
|
+
const reader = response.body.getReader();
|
|
37
|
+
const chunks = [];
|
|
38
|
+
let length = 0;
|
|
39
|
+
try {
|
|
40
|
+
while (true) {
|
|
41
|
+
const chunk = await reader.read();
|
|
42
|
+
if (chunk.done)
|
|
43
|
+
break;
|
|
44
|
+
length += chunk.value.byteLength;
|
|
45
|
+
if (length > maxBytes) {
|
|
46
|
+
await reader.cancel().catch(() => { });
|
|
47
|
+
invalid();
|
|
48
|
+
}
|
|
49
|
+
chunks.push(chunk.value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
reader.releaseLock();
|
|
54
|
+
}
|
|
55
|
+
const bytes = new Uint8Array(length);
|
|
56
|
+
let offset = 0;
|
|
57
|
+
for (const chunk of chunks) {
|
|
58
|
+
bytes.set(chunk, offset);
|
|
59
|
+
offset += chunk.byteLength;
|
|
60
|
+
}
|
|
61
|
+
return bytes;
|
|
62
|
+
}
|
|
63
|
+
function serviceFailure(code) {
|
|
64
|
+
if (code === 401 || code === 1401)
|
|
65
|
+
throw new AwikiSdkError('not-registered');
|
|
66
|
+
if (code === 403 || code === 1403)
|
|
67
|
+
throw new AwikiSdkError('forbidden');
|
|
68
|
+
if (code === 404 || code === 1404)
|
|
69
|
+
throw new AwikiSdkError('not-found');
|
|
70
|
+
if (code === 413 || code === 1413)
|
|
71
|
+
throw new AwikiSdkError('attachment-too-large');
|
|
72
|
+
if (code === 429 || code === 1429)
|
|
73
|
+
throw new AwikiSdkError('rate-limited');
|
|
74
|
+
invalid();
|
|
75
|
+
}
|
|
76
|
+
export class AwikiMailAttachmentClient {
|
|
77
|
+
origin;
|
|
78
|
+
auth;
|
|
79
|
+
constructor(origin, auth) {
|
|
80
|
+
this.origin = origin;
|
|
81
|
+
this.auth = auth;
|
|
82
|
+
}
|
|
83
|
+
async send(request) {
|
|
84
|
+
const result = await this.rpc('mail.send', {
|
|
85
|
+
to: request.to, cc: request.cc, subject: request.subject, body_text: request.bodyText, body_html: null,
|
|
86
|
+
attachments: request.attachments.map(value => ({
|
|
87
|
+
filename: value.fileName, content_type: value.contentType, content_base64: Buffer.from(value.bytes).toString('base64'),
|
|
88
|
+
})),
|
|
89
|
+
}, RESPONSE_METADATA_BYTES, false);
|
|
90
|
+
if (result.accepted !== true || result.status !== 'sent'
|
|
91
|
+
|| (result.ok !== undefined && result.ok !== true) || (result.success !== undefined && result.success !== true))
|
|
92
|
+
invalid();
|
|
93
|
+
const messageId = result.message_id ?? result.messageId ?? result.id;
|
|
94
|
+
const warnings = result.warnings ?? [];
|
|
95
|
+
if (!Array.isArray(warnings) || warnings.length > 100)
|
|
96
|
+
invalid();
|
|
97
|
+
return {
|
|
98
|
+
accepted: true,
|
|
99
|
+
...(messageId === undefined || messageId === null ? {} : { messageId: text(messageId, 2048) }),
|
|
100
|
+
warnings: warnings.map(value => text(value, 1024)),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
async download(request, maxBytes) {
|
|
104
|
+
const result = await this.rpc('mail.getAttachment', {
|
|
105
|
+
message_id: request.localMessageId, attachment_index: request.attachmentIndex,
|
|
106
|
+
}, Math.ceil(maxBytes / 3) * 4 + RESPONSE_METADATA_BYTES, true);
|
|
107
|
+
if (integer(result.index ?? result.attachment_index ?? result.attachmentIndex) !== request.attachmentIndex)
|
|
108
|
+
invalid();
|
|
109
|
+
const sizeBytes = integer(result.size ?? result.size_bytes ?? result.sizeBytes);
|
|
110
|
+
if (sizeBytes > maxBytes)
|
|
111
|
+
throw new AwikiSdkError('attachment-too-large');
|
|
112
|
+
let fileName;
|
|
113
|
+
let contentType;
|
|
114
|
+
try {
|
|
115
|
+
fileName = mailAttachmentFileName(result.filename ?? result.name);
|
|
116
|
+
contentType = mailAttachmentContentType(result.content_type ?? result.contentType ?? result.mime_type);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
invalid();
|
|
120
|
+
}
|
|
121
|
+
const content = result.content_base64 ?? result.contentBase64 ?? result.base64;
|
|
122
|
+
if (typeof content !== 'string' || content.length !== Math.ceil(sizeBytes / 3) * 4 || !standardBase64Syntax(content))
|
|
123
|
+
invalid();
|
|
124
|
+
const bytes = Buffer.from(content, 'base64');
|
|
125
|
+
if (bytes.byteLength !== sizeBytes || bytes.toString('base64') !== content)
|
|
126
|
+
invalid();
|
|
127
|
+
return { fileName, contentType, sizeBytes, sha256: createHash('sha256').update(bytes).digest('hex'), bytesBase64: content };
|
|
128
|
+
}
|
|
129
|
+
async rpc(method, params, maxResponseBytes, allowAuthRetry) {
|
|
130
|
+
const body = JSON.stringify({ jsonrpc: '2.0', id: 1, method, params });
|
|
131
|
+
if (Buffer.byteLength(body) > AWIKI_EXTERNAL_HTTP_MAX_BODY_BYTES)
|
|
132
|
+
throw new AwikiSdkError('attachment-too-large');
|
|
133
|
+
const abort = new AbortController();
|
|
134
|
+
const timer = setTimeout(() => abort.abort(), TIMEOUT_MS);
|
|
135
|
+
let dispatched = false;
|
|
136
|
+
try {
|
|
137
|
+
const request = new Request(new URL('/mail/rpc', this.origin), {
|
|
138
|
+
method: 'POST', headers: { accept: 'application/json', 'content-type': 'application/json' },
|
|
139
|
+
body, redirect: 'error', signal: abort.signal,
|
|
140
|
+
});
|
|
141
|
+
const response = await this.auth.dispatch(request, async (signed) => {
|
|
142
|
+
dispatched = true;
|
|
143
|
+
const raw = await fetch(signed);
|
|
144
|
+
// Bound every attempt, including authentication rejection responses.
|
|
145
|
+
const bytes = await bounded(raw, maxResponseBytes);
|
|
146
|
+
return new Response(bytes, { status: raw.status, headers: raw.headers });
|
|
147
|
+
}, { allowAuthRetry });
|
|
148
|
+
if (!response.ok)
|
|
149
|
+
serviceFailure(response.status);
|
|
150
|
+
const envelope = record(JSON.parse(await response.text()));
|
|
151
|
+
if (envelope.jsonrpc !== '2.0' || envelope.id !== 1)
|
|
152
|
+
invalid();
|
|
153
|
+
if (envelope.error != null)
|
|
154
|
+
serviceFailure(integer(record(envelope.error).code));
|
|
155
|
+
return record(envelope.result);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error instanceof AwikiSdkError)
|
|
159
|
+
throw error;
|
|
160
|
+
if (error instanceof AwikiExternalHttpAuthError) {
|
|
161
|
+
if (error.code === 'not-registered' || error.code === 'signed-out')
|
|
162
|
+
throw new AwikiSdkError(error.code);
|
|
163
|
+
if (error.code === 'body-too-large')
|
|
164
|
+
throw new AwikiSdkError('attachment-too-large');
|
|
165
|
+
}
|
|
166
|
+
throw new AwikiSdkError(dispatched && !allowAuthRetry ? 'delivery-unknown' : 'network');
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
clearTimeout(timer);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=mail-attachment-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mail-attachment-client.js","sourceRoot":"","sources":["../../src/mail-attachment-client.ts"],"names":[],"mappings":"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"}
|
package/lib/types/mail.d.ts
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
/** Host-owned validation for on-demand mail requests. */
|
|
2
|
-
import type { AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailReadRequest, AwikiMailSendRequest } from './types.ts';
|
|
2
|
+
import type { AwikiMailAttachmentDownloadRequest, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailReadRequest, AwikiMailSendRequest } from './types.ts';
|
|
3
|
+
export declare const MAIL_ATTACHMENT_SERVICE_MAX_COUNT = 10;
|
|
4
|
+
export declare const MAIL_ATTACHMENT_SERVICE_MAX_BYTES: number;
|
|
5
|
+
export declare const MAIL_ATTACHMENT_SERVICE_TOTAL_MAX_BYTES: number;
|
|
6
|
+
export interface AwikiMailAttachmentLimits {
|
|
7
|
+
readonly maxCount: number;
|
|
8
|
+
readonly maxBytes: number;
|
|
9
|
+
readonly totalMaxBytes: number;
|
|
10
|
+
}
|
|
11
|
+
export interface AwikiValidatedMailSendAttachment {
|
|
12
|
+
readonly fileName: string;
|
|
13
|
+
readonly contentType: string;
|
|
14
|
+
readonly sizeBytes: number;
|
|
15
|
+
readonly sha256: string;
|
|
16
|
+
readonly bytes: Uint8Array;
|
|
17
|
+
}
|
|
18
|
+
export interface AwikiValidatedMailSendRequest {
|
|
19
|
+
readonly to: readonly string[];
|
|
20
|
+
readonly cc: readonly string[];
|
|
21
|
+
readonly subject: string;
|
|
22
|
+
readonly bodyText: string;
|
|
23
|
+
readonly attachments: readonly AwikiValidatedMailSendAttachment[];
|
|
24
|
+
}
|
|
25
|
+
export declare const DEFAULT_MAIL_ATTACHMENT_LIMITS: AwikiMailAttachmentLimits;
|
|
26
|
+
export declare function mailAttachmentFileName(value: unknown): string;
|
|
27
|
+
export declare function mailAttachmentContentType(value: unknown): string;
|
|
3
28
|
/** Resolve mailbox defaults before the provider is invoked. */
|
|
4
29
|
export declare function mailInboxRequest(request?: AwikiMailInboxRequest): AwikiMailInboxRequest;
|
|
5
30
|
export declare function mailReadRequest(request: AwikiMailReadRequest): AwikiMailReadRequest;
|
|
6
31
|
export declare function mailMarkReadRequest(request: AwikiMailMarkReadRequest): AwikiMailMarkReadRequest;
|
|
7
|
-
export declare function mailSendRequest(request: AwikiMailSendRequest):
|
|
32
|
+
export declare function mailSendRequest(request: AwikiMailSendRequest, limits?: AwikiMailAttachmentLimits): AwikiValidatedMailSendRequest;
|
|
33
|
+
export declare function mailAttachmentDownloadRequest(request: AwikiMailAttachmentDownloadRequest): AwikiMailAttachmentDownloadRequest;
|
|
8
34
|
//# sourceMappingURL=mail.d.ts.map
|
package/lib/types/mail.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/mail.ts"],"names":[],"mappings":"AAAA,yDAAyD;
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/mail.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAMzD,OAAO,KAAK,EACV,kCAAkC,EAClC,qBAAqB,EACrB,wBAAwB,EAExB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAKnB,eAAO,MAAM,iCAAiC,KAAK,CAAA;AACnD,eAAO,MAAM,iCAAiC,QAAmB,CAAA;AACjE,eAAO,MAAM,uCAAuC,QAAmB,CAAA;AAEvE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,gCAAgC,EAAE,CAAA;CAClE;AAED,eAAO,MAAM,8BAA8B,EAAE,yBAI3C,CAAA;AAyBF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAU7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKhE;AAcD,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,qBAA0B,GAAG,qBAAqB,CAS3F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CAEnF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,wBAAwB,GAAG,wBAAwB,CAO/F;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,yBAA0D,GACjE,6BAA6B,CAiC/B;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,kCAAkC,GAC1C,kCAAkC,CAQpC"}
|
package/lib/types/mail.js
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
/** Host-owned validation for on-demand mail requests. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { standardBase64Syntax } from "./base64.js";
|
|
2
4
|
const U32_MAX = 0xffff_ffff;
|
|
3
5
|
const MAX_MESSAGE_IDS = 100;
|
|
4
6
|
const MAX_RECIPIENTS = 20;
|
|
7
|
+
export const MAIL_ATTACHMENT_SERVICE_MAX_COUNT = 10;
|
|
8
|
+
export const MAIL_ATTACHMENT_SERVICE_MAX_BYTES = 10 * 1024 * 1024;
|
|
9
|
+
export const MAIL_ATTACHMENT_SERVICE_TOTAL_MAX_BYTES = 18 * 1024 * 1024;
|
|
10
|
+
export const DEFAULT_MAIL_ATTACHMENT_LIMITS = Object.freeze({
|
|
11
|
+
maxCount: MAIL_ATTACHMENT_SERVICE_MAX_COUNT,
|
|
12
|
+
maxBytes: MAIL_ATTACHMENT_SERVICE_MAX_BYTES,
|
|
13
|
+
totalMaxBytes: MAIL_ATTACHMENT_SERVICE_TOTAL_MAX_BYTES,
|
|
14
|
+
});
|
|
5
15
|
function reject() {
|
|
6
16
|
throw new TypeError('invalid AWiki mail request');
|
|
7
17
|
}
|
|
@@ -25,6 +35,41 @@ function address(value) {
|
|
|
25
35
|
reject();
|
|
26
36
|
return value;
|
|
27
37
|
}
|
|
38
|
+
export function mailAttachmentFileName(value) {
|
|
39
|
+
if (typeof value !== 'string'
|
|
40
|
+
|| value.length === 0
|
|
41
|
+
|| value.trim() !== value
|
|
42
|
+
|| value.replace(/[. ]+$/u, '') !== value
|
|
43
|
+
|| value === '.'
|
|
44
|
+
|| value === '..'
|
|
45
|
+
|| Buffer.byteLength(value, 'utf8') > 255
|
|
46
|
+
|| /[\\/\p{C}]/u.test(value))
|
|
47
|
+
reject();
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
export function mailAttachmentContentType(value) {
|
|
51
|
+
if (value === '')
|
|
52
|
+
return 'application/octet-stream';
|
|
53
|
+
if (typeof value !== 'string'
|
|
54
|
+
|| !/^[A-Za-z0-9!#$&^_.+-]+\/[A-Za-z0-9!#$&^_.+-]+$/u.test(value))
|
|
55
|
+
reject();
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
function attachmentBytes(value, sizeBytes, maxBytes) {
|
|
59
|
+
if (typeof value !== 'string')
|
|
60
|
+
reject();
|
|
61
|
+
const expectedEncodedLength = Math.ceil(sizeBytes / 3) * 4;
|
|
62
|
+
if (value.length !== expectedEncodedLength
|
|
63
|
+
|| value.length % 4 !== 0
|
|
64
|
+
|| !standardBase64Syntax(value))
|
|
65
|
+
reject();
|
|
66
|
+
const bytes = Buffer.from(value, 'base64');
|
|
67
|
+
if (bytes.byteLength !== sizeBytes || bytes.byteLength > maxBytes)
|
|
68
|
+
reject();
|
|
69
|
+
if (Buffer.from(bytes).toString('base64') !== value)
|
|
70
|
+
reject();
|
|
71
|
+
return bytes;
|
|
72
|
+
}
|
|
28
73
|
/** Resolve mailbox defaults before the provider is invoked. */
|
|
29
74
|
export function mailInboxRequest(request = {}) {
|
|
30
75
|
const folder = token(request.folder ?? 'inbox', 64);
|
|
@@ -51,7 +96,7 @@ export function mailMarkReadRequest(request) {
|
|
|
51
96
|
messageIds: request.messageIds.map(value => token(value, 2_048)),
|
|
52
97
|
};
|
|
53
98
|
}
|
|
54
|
-
export function mailSendRequest(request) {
|
|
99
|
+
export function mailSendRequest(request, limits = DEFAULT_MAIL_ATTACHMENT_LIMITS) {
|
|
55
100
|
if (!Array.isArray(request.to) || request.to.length === 0 || !Array.isArray(request.cc ?? []))
|
|
56
101
|
reject();
|
|
57
102
|
const to = request.to.map(address);
|
|
@@ -70,6 +115,38 @@ export function mailSendRequest(request) {
|
|
|
70
115
|
|| request.bodyText.trim().length === 0
|
|
71
116
|
|| Buffer.byteLength(request.bodyText, 'utf8') > 65_536)
|
|
72
117
|
reject();
|
|
73
|
-
|
|
118
|
+
if (!Array.isArray(request.attachments ?? []) || (request.attachments?.length ?? 0) > limits.maxCount)
|
|
119
|
+
reject();
|
|
120
|
+
let totalBytes = 0;
|
|
121
|
+
const attachments = (request.attachments ?? []).map((attachment) => {
|
|
122
|
+
if (typeof attachment !== 'object' || attachment === null || Array.isArray(attachment))
|
|
123
|
+
reject();
|
|
124
|
+
if (!Number.isSafeInteger(attachment.sizeBytes)
|
|
125
|
+
|| attachment.sizeBytes < 0
|
|
126
|
+
|| attachment.sizeBytes > limits.maxBytes)
|
|
127
|
+
reject();
|
|
128
|
+
const bytes = attachmentBytes(attachment.bytesBase64, attachment.sizeBytes, limits.maxBytes);
|
|
129
|
+
totalBytes += bytes.byteLength;
|
|
130
|
+
if (!Number.isSafeInteger(totalBytes) || totalBytes > limits.totalMaxBytes)
|
|
131
|
+
reject();
|
|
132
|
+
return {
|
|
133
|
+
fileName: mailAttachmentFileName(attachment.fileName),
|
|
134
|
+
contentType: mailAttachmentContentType(attachment.contentType),
|
|
135
|
+
sizeBytes: bytes.byteLength,
|
|
136
|
+
sha256: createHash('sha256').update(bytes).digest('hex'),
|
|
137
|
+
bytes,
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
return { to, cc, subject: request.subject, bodyText: request.bodyText, attachments };
|
|
141
|
+
}
|
|
142
|
+
export function mailAttachmentDownloadRequest(request) {
|
|
143
|
+
if (!Number.isSafeInteger(request.attachmentIndex)
|
|
144
|
+
|| request.attachmentIndex < 0
|
|
145
|
+
|| request.attachmentIndex > U32_MAX)
|
|
146
|
+
reject();
|
|
147
|
+
return {
|
|
148
|
+
localMessageId: token(request.localMessageId, 2_048),
|
|
149
|
+
attachmentIndex: request.attachmentIndex,
|
|
150
|
+
};
|
|
74
151
|
}
|
|
75
152
|
//# sourceMappingURL=mail.js.map
|
package/lib/types/mail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/mail.ts"],"names":[],"mappings":"AAAA,yDAAyD;
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/mail.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAWlD,MAAM,OAAO,GAAG,WAAW,CAAA;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAA;AAC3B,MAAM,cAAc,GAAG,EAAE,CAAA;AACzB,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAA;AACnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AACjE,MAAM,CAAC,MAAM,uCAAuC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;AAwBvE,MAAM,CAAC,MAAM,8BAA8B,GAA8B,MAAM,CAAC,MAAM,CAAC;IACrF,QAAQ,EAAE,iCAAiC;IAC3C,QAAQ,EAAE,iCAAiC;IAC3C,aAAa,EAAE,uCAAuC;CACvD,CAAC,CAAA;AAEF,SAAS,MAAM;IACb,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,KAAK,CAAC,KAAc,EAAE,aAAqB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;WACxB,KAAK,CAAC,MAAM,KAAK,CAAC;WAClB,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK;WACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa;WACxC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAA;IAC1D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,EAAE,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IACvC,IAAI,MAAM,GAAG,CAAC;WACT,MAAM,GAAG,GAAG;WACZ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;WACpB,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAA;IAC5D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;WACxB,KAAK,CAAC,MAAM,KAAK,CAAC;WAClB,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK;WACtB,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,KAAK;WACtC,KAAK,KAAK,GAAG;WACb,KAAK,KAAK,IAAI;WACd,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG;WACtC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAA;IACxC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,0BAA0B,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;WACxB,CAAC,iDAAiD,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAA;IAC7E,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,SAAiB,EAAE,QAAgB;IAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,EAAE,CAAA;IACvC,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,qBAAqB;WACrC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;WACtB,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,GAAG,QAAQ;QAAE,MAAM,EAAE,CAAA;IAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK;QAAE,MAAM,EAAE,CAAA;IAC7D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,gBAAgB,CAAC,UAAiC,EAAE;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,EAAE,EAAE,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAA;IAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,EAAE,CAAA;IACtE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,OAAO;QAAE,MAAM,EAAE,CAAA;IAC7E,IAAI,OAAO,UAAU,KAAK,SAAS;QAAE,MAAM,EAAE,CAAA;IAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA6B;IAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAuB,EAAE,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAiC;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;WACjC,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;WAC/B,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,eAAe;QAAE,MAAM,EAAE,CAAA;IAC1D,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAuB,CAAC;KACvF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAA6B,EAC7B,SAAoC,8BAA8B;IAElE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QAAE,MAAM,EAAE,CAAA;IACvG,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC1C,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,cAAc;QAAE,MAAM,EAAE,CAAA;IACpD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM;QAAE,MAAM,EAAE,CAAA;IACvD,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;WAClC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;WAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,OAAO;WAC1C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK;QAAE,MAAM,EAAE,CAAA;IACjE,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;WACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WACpC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM;QAAE,MAAM,EAAE,CAAA;IACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ;QAAE,MAAM,EAAE,CAAA;IAC/G,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACjE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAAE,MAAM,EAAE,CAAA;QAChG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;eAC1C,UAAU,CAAC,SAAS,GAAG,CAAC;eACxB,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ;YAAE,MAAM,EAAE,CAAA;QACrD,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC5F,UAAU,IAAI,KAAK,CAAC,UAAU,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,MAAM,CAAC,aAAa;YAAE,MAAM,EAAE,CAAA;QACpF,OAAO;YACL,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC;YACrD,WAAW,EAAE,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC;YAC9D,SAAS,EAAE,KAAK,CAAC,UAAU;YAC3B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACxD,KAAK;SACN,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;AACtF,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAA2C;IAE3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC;WAC7C,OAAO,CAAC,eAAe,GAAG,CAAC;WAC3B,OAAO,CAAC,eAAe,GAAG,OAAO;QAAE,MAAM,EAAE,CAAA;IAChD,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAuB;QAC1E,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Generated from package.json by scripts/sync-package-versions.mjs. */
|
|
2
|
-
export declare const DSH_AWIKI_PACKAGE_VERSION: "0.3.11-rc.
|
|
2
|
+
export declare const DSH_AWIKI_PACKAGE_VERSION: "0.3.11-rc.2";
|
|
3
3
|
export declare const DSH_AWIKI_MODEL_PROXY_PACKAGE_VERSION: "0.1.7-rc.1";
|
|
4
4
|
//# sourceMappingURL=package-version.generated.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Generated from package.json by scripts/sync-package-versions.mjs. */
|
|
2
|
-
export const DSH_AWIKI_PACKAGE_VERSION = "0.3.11-rc.
|
|
2
|
+
export const DSH_AWIKI_PACKAGE_VERSION = "0.3.11-rc.2";
|
|
3
3
|
export const DSH_AWIKI_MODEL_PROXY_PACKAGE_VERSION = "0.1.7-rc.1";
|
|
4
4
|
//# sourceMappingURL=package-version.generated.js.map
|
package/lib/types/provider.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Production AWiki provider backed by the versioned Rust IM Core Node bridge. */
|
|
2
2
|
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
-
import type
|
|
3
|
+
import { type AnpIdentityServiceContract } from '@agent-network-protocol/dsh-anp-identity';
|
|
4
4
|
declare module '@deepseek-ai/cordis' {
|
|
5
5
|
interface Context {
|
|
6
6
|
anpIdentity: AnpIdentityServiceContract;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,0CAA0C,CAAA;AASjD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,WAAW,EAAE,0BAA0B,CAAA;KACxC;CACF;AAED,qDAAqD;AACrD,eAAO,MAAM,IAAI,4BAA4B,CAAA;AAC7C,gFAAgF;AAChF,eAAO,MAAM,MAAM,UAA2B,CAAA;AA2B9C,4EAA4E;AAC5E,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDvD"}
|
package/lib/types/provider.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/** Production AWiki provider backed by the versioned Rust IM Core Node bridge. */
|
|
2
2
|
import { setTimeout as delay } from 'node:timers/promises';
|
|
3
3
|
import { openImCoreNodeClient } from '@awiki/im-core-node';
|
|
4
|
+
import { AnpIdentityPluginError, } from '@agent-network-protocol/dsh-anp-identity';
|
|
5
|
+
import { syncAnpIdentityHandle } from "./identity-handle.js";
|
|
4
6
|
import { RustSdkAdapter } from "./sdk-adapter.js";
|
|
5
7
|
/** Cordis plugin name used by Loader diagnostics. */
|
|
6
8
|
export const name = 'awiki-rust-sdk-provider';
|
|
@@ -51,7 +53,16 @@ export async function apply(ctx) {
|
|
|
51
53
|
externalHttpAllowInsecureLoopbackForTesting: options.allowInsecureLoopbackForTesting,
|
|
52
54
|
identityProvider: lease,
|
|
53
55
|
};
|
|
54
|
-
return new RustSdkAdapter(openImCoreNodeClient(openOptions))
|
|
56
|
+
return new RustSdkAdapter(openImCoreNodeClient(openOptions), async (identity) => {
|
|
57
|
+
try {
|
|
58
|
+
await syncAnpIdentityHandle(ctx.anpIdentity, identity);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
// Registration is already committed; retry metadata projection on the next identity read.
|
|
62
|
+
const code = error instanceof AnpIdentityPluginError ? error.code : 'unexpected_error';
|
|
63
|
+
ctx.logger.warn('AWiki Handle synchronization failed (code=%s, did=%s, handle=%s); retrying on the next identity read.', code, identity.did, identity.handle);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
55
66
|
});
|
|
56
67
|
return async () => {
|
|
57
68
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Registration presentation and Handle normalization; admission is owned by the server. */
|
|
2
2
|
export declare const SHORT_HANDLE_INVITE_MESSAGE = "\u6CE8\u518C\u5C11\u4E8E5\u4F4D\u7684handle\u9700\u8981\u4F7F\u7528\u9080\u8BF7\u7801\uFF0C\u76EE\u524D\u6682\u4E0D\u652F\u6301\u81EA\u4E3B\u6CE8\u518C\u3002";
|
|
3
3
|
/** Return the canonical local part when the input has valid WNS local-part syntax. */
|
|
4
4
|
export declare function registrationHandleLocalPart(value: string): string | undefined;
|
|
5
|
-
/** One- through four-character Handle registrations require the unavailable invitation flow. */
|
|
6
|
-
export declare function shortHandleInviteRequired(value: string): boolean;
|
|
7
5
|
//# sourceMappingURL=registration-policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registration-policy.d.ts","sourceRoot":"","sources":["../../src/registration-policy.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"registration-policy.d.ts","sourceRoot":"","sources":["../../src/registration-policy.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,eAAO,MAAM,2BAA2B,kKAAqC,CAAA;AAI7E,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM7E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** Registration presentation and Handle normalization; admission is owned by the server. */
|
|
2
2
|
export const SHORT_HANDLE_INVITE_MESSAGE = '注册少于5位的handle需要使用邀请码,目前暂不支持自主注册。';
|
|
3
3
|
const HANDLE_LOCAL_PART = /^(?!-)(?!.*--)[a-z0-9-]{1,63}(?<!-)$/u;
|
|
4
4
|
/** Return the canonical local part when the input has valid WNS local-part syntax. */
|
|
@@ -10,12 +10,4 @@ export function registrationHandleLocalPart(value) {
|
|
|
10
10
|
const localPart = (dot < 0 ? normalized : normalized.slice(0, dot)).trim();
|
|
11
11
|
return HANDLE_LOCAL_PART.test(localPart) ? localPart : undefined;
|
|
12
12
|
}
|
|
13
|
-
/** One- through four-character Handle registrations require the unavailable invitation flow. */
|
|
14
|
-
export function shortHandleInviteRequired(value) {
|
|
15
|
-
const localPart = registrationHandleLocalPart(value);
|
|
16
|
-
if (localPart === undefined)
|
|
17
|
-
return false;
|
|
18
|
-
const length = Array.from(localPart).length;
|
|
19
|
-
return length >= 1 && length <= 4;
|
|
20
|
-
}
|
|
21
13
|
//# sourceMappingURL=registration-policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registration-policy.js","sourceRoot":"","sources":["../../src/registration-policy.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"registration-policy.js","sourceRoot":"","sources":["../../src/registration-policy.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAE5F,MAAM,CAAC,MAAM,2BAA2B,GAAG,kCAAkC,CAAA;AAE7E,MAAM,iBAAiB,GAAG,uCAAuC,CAAA;AAEjE,sFAAsF;AACtF,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3C,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACnF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,OAAO,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAClE,CAAC"}
|
|
@@ -17,6 +17,7 @@ export declare class AwikiSdkError extends Error {
|
|
|
17
17
|
}
|
|
18
18
|
/** Adapt the Rust Node bridge to the frozen Host provider interface. */
|
|
19
19
|
export declare class RustSdkAdapter implements AwikiSdkClient {
|
|
20
|
+
private readonly onIdentity?;
|
|
20
21
|
readonly trustedUserPresenceSupported: boolean;
|
|
21
22
|
private readonly client;
|
|
22
23
|
private readonly refreshingDisplayPeers;
|
|
@@ -27,7 +28,7 @@ export declare class RustSdkAdapter implements AwikiSdkClient {
|
|
|
27
28
|
readonly realtime: AwikiSdkRealtimeClient;
|
|
28
29
|
readonly agentInbox: AwikiSdkAgentInboxClient;
|
|
29
30
|
readonly listener: AwikiSdkListenerClient;
|
|
30
|
-
constructor(client: ImCoreNodeClient | Promise<ImCoreNodeClient>);
|
|
31
|
+
constructor(client: ImCoreNodeClient | Promise<ImCoreNodeClient>, onIdentity?: ((value: AwikiIdentity) => Promise<void>) | undefined);
|
|
31
32
|
private run;
|
|
32
33
|
private displayableMessages;
|
|
33
34
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/sdk-adapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,KAAK,EAGV,gBAAgB,EAgBjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACV,mBAAmB,EAEnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EAEnB,QAAQ,EACR,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EAEpB,wBAAwB,EACxB,kBAAkB,EAElB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EAGd,gBAAgB,EAEhB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAEhB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EAEnB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAG3B,wBAAwB,EACxB,sBAAsB,EAItB,2BAA2B,EAC3B,sBAAsB,EACtB,8BAA8B,EAC9B,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAE9B,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/sdk-adapter.ts"],"names":[],"mappings":"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"}
|
package/lib/types/sdk-adapter.js
CHANGED
|
@@ -13,6 +13,7 @@ const RUST_FAILURE_CODES = {
|
|
|
13
13
|
invalid_otp: 'invalid-otp',
|
|
14
14
|
challenge_expired: 'challenge-expired',
|
|
15
15
|
handle_unavailable: 'handle-unavailable',
|
|
16
|
+
short_handle_invite_required: 'short-handle-invite-required',
|
|
16
17
|
not_found: 'not-found',
|
|
17
18
|
permission_denied: 'forbidden',
|
|
18
19
|
group_not_member: 'group-membership-required',
|
|
@@ -21,7 +22,7 @@ const RUST_FAILURE_CODES = {
|
|
|
21
22
|
local_identity_recovery_required: 'identity-recovery-required',
|
|
22
23
|
conflict: 'conflict',
|
|
23
24
|
join_required: 'handle-unavailable',
|
|
24
|
-
state_in_use: '
|
|
25
|
+
state_in_use: 'state-in-use',
|
|
25
26
|
rate_limited: 'rate-limited',
|
|
26
27
|
timeout: 'network',
|
|
27
28
|
transport_unavailable: 'network',
|
|
@@ -431,6 +432,7 @@ function externalHttpAttempt(value) {
|
|
|
431
432
|
}
|
|
432
433
|
/** Adapt the Rust Node bridge to the frozen Host provider interface. */
|
|
433
434
|
export class RustSdkAdapter {
|
|
435
|
+
onIdentity;
|
|
434
436
|
trustedUserPresenceSupported = process.platform === 'darwin' && process.arch === 'x64';
|
|
435
437
|
client;
|
|
436
438
|
refreshingDisplayPeers = new Set();
|
|
@@ -463,7 +465,8 @@ export class RustSdkAdapter {
|
|
|
463
465
|
realtime;
|
|
464
466
|
agentInbox;
|
|
465
467
|
listener;
|
|
466
|
-
constructor(client) {
|
|
468
|
+
constructor(client, onIdentity) {
|
|
469
|
+
this.onIdentity = onIdentity;
|
|
467
470
|
this.client = Promise.resolve(client);
|
|
468
471
|
this.realtime = {
|
|
469
472
|
syncNow: reason => this.listenerSyncNow(reason),
|
|
@@ -758,7 +761,11 @@ export class RustSdkAdapter {
|
|
|
758
761
|
getIdentity() {
|
|
759
762
|
return this.run(async (client) => {
|
|
760
763
|
const value = await client.getDefaultIdentity();
|
|
761
|
-
|
|
764
|
+
if (value === null)
|
|
765
|
+
return null;
|
|
766
|
+
const result = identity(value);
|
|
767
|
+
await this.onIdentity?.(result);
|
|
768
|
+
return result;
|
|
762
769
|
});
|
|
763
770
|
}
|
|
764
771
|
sendRegistrationOtp(request) {
|
|
@@ -771,7 +778,9 @@ export class RustSdkAdapter {
|
|
|
771
778
|
return this.run(async (client) => {
|
|
772
779
|
const value = await client.completeRegistrationWithOutcome(request);
|
|
773
780
|
if (value.status === 'registered') {
|
|
774
|
-
|
|
781
|
+
const result = identity(value.identity);
|
|
782
|
+
await this.onIdentity?.(result);
|
|
783
|
+
return { status: 'registered', identity: result };
|
|
775
784
|
}
|
|
776
785
|
return {
|
|
777
786
|
status: 'join-required',
|