@inkbox/sdk 0.2.10 → 0.2.11
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 +4 -4
- package/dist/_http.d.ts +24 -2
- package/dist/_http.d.ts.map +1 -1
- package/dist/_http.js +76 -15
- package/dist/_http.js.map +1 -1
- package/dist/agent_identity.d.ts.map +1 -1
- package/dist/agent_identity.js +3 -0
- package/dist/agent_identity.js.map +1 -1
- package/dist/contacts/index.d.ts +3 -0
- package/dist/contacts/index.d.ts.map +1 -0
- package/dist/contacts/index.js +2 -0
- package/dist/contacts/index.js.map +1 -0
- package/dist/contacts/resources/contactAccess.d.ts +21 -0
- package/dist/contacts/resources/contactAccess.d.ts.map +1 -0
- package/dist/contacts/resources/contactAccess.js +32 -0
- package/dist/contacts/resources/contactAccess.js.map +1 -0
- package/dist/contacts/resources/contacts.d.ts +82 -0
- package/dist/contacts/resources/contacts.d.ts.map +1 -0
- package/dist/contacts/resources/contacts.js +143 -0
- package/dist/contacts/resources/contacts.js.map +1 -0
- package/dist/contacts/resources/vcards.d.ts +23 -0
- package/dist/contacts/resources/vcards.d.ts.map +1 -0
- package/dist/contacts/resources/vcards.js +31 -0
- package/dist/contacts/resources/vcards.js.map +1 -0
- package/dist/contacts/types.d.ts +177 -0
- package/dist/contacts/types.d.ts.map +1 -0
- package/dist/contacts/types.js +144 -0
- package/dist/contacts/types.js.map +1 -0
- package/dist/identities/types.d.ts +21 -0
- package/dist/identities/types.d.ts.map +1 -1
- package/dist/identities/types.js +11 -0
- package/dist/identities/types.js.map +1 -1
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/inkbox.d.ts +16 -0
- package/dist/inkbox.d.ts.map +1 -1
- package/dist/inkbox.js +20 -0
- package/dist/inkbox.js.map +1 -1
- package/dist/mail/resources/contactRules.d.ts +40 -0
- package/dist/mail/resources/contactRules.d.ts.map +1 -0
- package/dist/mail/resources/contactRules.js +74 -0
- package/dist/mail/resources/contactRules.js.map +1 -0
- package/dist/mail/resources/mailboxes.d.ts +2 -1
- package/dist/mail/resources/mailboxes.d.ts.map +1 -1
- package/dist/mail/resources/mailboxes.js +3 -0
- package/dist/mail/resources/mailboxes.js.map +1 -1
- package/dist/mail/resources/messages.d.ts +1 -1
- package/dist/mail/resources/messages.js +1 -1
- package/dist/mail/resources/threads.d.ts +32 -5
- package/dist/mail/resources/threads.d.ts.map +1 -1
- package/dist/mail/resources/threads.js +51 -6
- package/dist/mail/resources/threads.js.map +1 -1
- package/dist/mail/types.d.ts +93 -0
- package/dist/mail/types.d.ts.map +1 -1
- package/dist/mail/types.js +68 -0
- package/dist/mail/types.js.map +1 -1
- package/dist/notes/resources/noteAccess.d.ts +15 -0
- package/dist/notes/resources/noteAccess.d.ts.map +1 -0
- package/dist/notes/resources/noteAccess.js +26 -0
- package/dist/notes/resources/noteAccess.js.map +1 -0
- package/dist/notes/resources/notes.d.ts +40 -0
- package/dist/notes/resources/notes.d.ts.map +1 -0
- package/dist/notes/resources/notes.js +62 -0
- package/dist/notes/resources/notes.js.map +1 -0
- package/dist/notes/types.d.ts +40 -0
- package/dist/notes/types.d.ts.map +1 -0
- package/dist/notes/types.js +26 -0
- package/dist/notes/types.js.map +1 -0
- package/dist/phone/resources/contactRules.d.ts +41 -0
- package/dist/phone/resources/contactRules.d.ts.map +1 -0
- package/dist/phone/resources/contactRules.js +74 -0
- package/dist/phone/resources/contactRules.js.map +1 -0
- package/dist/phone/resources/numbers.d.ts +2 -0
- package/dist/phone/resources/numbers.d.ts.map +1 -1
- package/dist/phone/resources/numbers.js +3 -0
- package/dist/phone/resources/numbers.js.map +1 -1
- package/dist/phone/types.d.ts +42 -0
- package/dist/phone/types.d.ts.map +1 -1
- package/dist/phone/types.js +29 -0
- package/dist/phone/types.js.map +1 -1
- package/dist/whoami/types.d.ts +9 -0
- package/dist/whoami/types.d.ts.map +1 -1
- package/dist/whoami/types.js +9 -0
- package/dist/whoami/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* inkbox-mail/resources/threads.ts
|
|
3
3
|
*
|
|
4
|
-
* Thread operations: list (auto-paginated), get with messages,
|
|
4
|
+
* Thread operations: list (auto-paginated), get with messages, folder
|
|
5
|
+
* listing, per-thread update, and delete.
|
|
5
6
|
*/
|
|
6
|
-
import { parseThread, parseThreadDetail, } from "../types.js";
|
|
7
|
+
import { ThreadFolder, parseThread, parseThreadDetail, } from "../types.js";
|
|
7
8
|
const DEFAULT_PAGE_SIZE = 50;
|
|
8
9
|
export class ThreadsResource {
|
|
9
10
|
http;
|
|
@@ -11,14 +12,18 @@ export class ThreadsResource {
|
|
|
11
12
|
this.http = http;
|
|
12
13
|
}
|
|
13
14
|
/**
|
|
14
|
-
* Async iterator over
|
|
15
|
+
* Async iterator over threads in a mailbox, most recent activity first.
|
|
15
16
|
*
|
|
16
17
|
* Pagination is handled automatically — just iterate.
|
|
17
18
|
*
|
|
19
|
+
* @param options.folder - Optional folder filter. When omitted, the server
|
|
20
|
+
* returns all visible folders for the caller.
|
|
21
|
+
* @param options.pageSize - Number of threads fetched per API call (1–100).
|
|
22
|
+
*
|
|
18
23
|
* @example
|
|
19
24
|
* ```ts
|
|
20
|
-
* for await (const thread of client.threads.list(emailAddress)) {
|
|
21
|
-
* console.log(thread.subject, thread.
|
|
25
|
+
* for await (const thread of client.threads.list(emailAddress, { folder: ThreadFolder.BLOCKED })) {
|
|
26
|
+
* console.log(thread.subject, thread.folder);
|
|
22
27
|
* }
|
|
23
28
|
* ```
|
|
24
29
|
*/
|
|
@@ -26,7 +31,14 @@ export class ThreadsResource {
|
|
|
26
31
|
const limit = options?.pageSize ?? DEFAULT_PAGE_SIZE;
|
|
27
32
|
let cursor;
|
|
28
33
|
while (true) {
|
|
29
|
-
const
|
|
34
|
+
const params = {
|
|
35
|
+
limit,
|
|
36
|
+
cursor,
|
|
37
|
+
};
|
|
38
|
+
if (options?.folder !== undefined) {
|
|
39
|
+
params.folder = options.folder;
|
|
40
|
+
}
|
|
41
|
+
const page = await this.http.get(`/mailboxes/${emailAddress}/threads`, params);
|
|
30
42
|
for (const item of page.items) {
|
|
31
43
|
yield parseThread(item);
|
|
32
44
|
}
|
|
@@ -35,6 +47,17 @@ export class ThreadsResource {
|
|
|
35
47
|
cursor = page.next_cursor ?? undefined;
|
|
36
48
|
}
|
|
37
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Return the distinct folders that have at least one thread in this
|
|
52
|
+
* mailbox.
|
|
53
|
+
*
|
|
54
|
+
* @returns Sorted list of {@link ThreadFolder} values that currently hold
|
|
55
|
+
* at least one non-deleted thread.
|
|
56
|
+
*/
|
|
57
|
+
async listFolders(emailAddress) {
|
|
58
|
+
const data = await this.http.get(`/mailboxes/${emailAddress}/threads/folders`);
|
|
59
|
+
return data.map((f) => f);
|
|
60
|
+
}
|
|
38
61
|
/**
|
|
39
62
|
* Get a thread with all its messages inlined.
|
|
40
63
|
*
|
|
@@ -45,6 +68,28 @@ export class ThreadsResource {
|
|
|
45
68
|
const data = await this.http.get(`/mailboxes/${emailAddress}/threads/${threadId}`);
|
|
46
69
|
return parseThreadDetail(data);
|
|
47
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Update mutable thread fields.
|
|
73
|
+
*
|
|
74
|
+
* Returns a bare {@link Thread} (no inlined messages). Use {@link get} to
|
|
75
|
+
* refetch the thread with messages attached.
|
|
76
|
+
*
|
|
77
|
+
* @param options.folder - New folder. `ThreadFolder.BLOCKED` is
|
|
78
|
+
* server-assigned and cannot be set by clients; passing it throws
|
|
79
|
+
* synchronously without making an HTTP call.
|
|
80
|
+
*/
|
|
81
|
+
async update(emailAddress, threadId, options = {}) {
|
|
82
|
+
const body = {};
|
|
83
|
+
if (options.folder !== undefined) {
|
|
84
|
+
if (options.folder === ThreadFolder.BLOCKED) {
|
|
85
|
+
throw new Error("folder='blocked' is server-assigned and cannot be set by clients " +
|
|
86
|
+
"— the server will reject this PATCH.");
|
|
87
|
+
}
|
|
88
|
+
body["folder"] = options.folder;
|
|
89
|
+
}
|
|
90
|
+
const data = await this.http.patch(`/mailboxes/${emailAddress}/threads/${threadId}`, body);
|
|
91
|
+
return parseThread(data);
|
|
92
|
+
}
|
|
48
93
|
/** Delete a thread. */
|
|
49
94
|
async delete(emailAddress, threadId) {
|
|
50
95
|
await this.http.delete(`/mailboxes/${emailAddress}/threads/${threadId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/mail/resources/threads.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/mail/resources/threads.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAKL,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,CAAC,IAAI,CACT,YAAoB,EACpB,OAAsD;QAEtD,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,CAAC;QACrD,IAAI,MAA0B,CAAC;QAE/B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAgD;gBAC1D,KAAK;gBACL,MAAM;aACP,CAAC;YACF,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YACjC,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,cAAc,YAAY,UAAU,EACpC,MAAM,CACP,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,MAAM;YAC1B,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,YAAoB;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,cAAc,YAAY,kBAAkB,CAC7C,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAiB,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,YAAoB,EAAE,QAAgB;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,cAAc,YAAY,YAAY,QAAQ,EAAE,CACjD,CAAC;QACF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CACV,YAAoB,EACpB,QAAgB,EAChB,UAAqC,EAAE;QAEvC,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CACb,mEAAmE;oBACjE,sCAAsC,CACzC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAChC,cAAc,YAAY,YAAY,QAAQ,EAAE,EAChD,IAAI,CACL,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,MAAM,CAAC,YAAoB,EAAE,QAAgB;QACjD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,YAAY,YAAY,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
package/dist/mail/types.d.ts
CHANGED
|
@@ -8,13 +8,74 @@ export declare enum MessageDirection {
|
|
|
8
8
|
/** Email sent by the mailbox. */
|
|
9
9
|
OUTBOUND = "outbound"
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Contact-rule filter mode on a mailbox or phone number.
|
|
13
|
+
*
|
|
14
|
+
* `WHITELIST` — only addresses that match an `allow` rule are delivered.
|
|
15
|
+
* `BLACKLIST` — everything is delivered except matches against a
|
|
16
|
+
* `block` rule. This is the default.
|
|
17
|
+
*/
|
|
18
|
+
export declare enum FilterMode {
|
|
19
|
+
WHITELIST = "whitelist",
|
|
20
|
+
BLACKLIST = "blacklist"
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Logical folder a thread lives in.
|
|
24
|
+
*
|
|
25
|
+
* `BLOCKED` is server-assigned and is not client-settable — PATCH will
|
|
26
|
+
* reject it.
|
|
27
|
+
*/
|
|
28
|
+
export declare enum ThreadFolder {
|
|
29
|
+
INBOX = "inbox",
|
|
30
|
+
SPAM = "spam",
|
|
31
|
+
BLOCKED = "blocked",
|
|
32
|
+
ARCHIVE = "archive"
|
|
33
|
+
}
|
|
34
|
+
/** Whether a matching address is allowed through or blocked. */
|
|
35
|
+
export declare enum MailRuleAction {
|
|
36
|
+
ALLOW = "allow",
|
|
37
|
+
BLOCK = "block"
|
|
38
|
+
}
|
|
39
|
+
/** What a mail contact rule matches on. */
|
|
40
|
+
export declare enum MailRuleMatchType {
|
|
41
|
+
EXACT_EMAIL = "exact_email",
|
|
42
|
+
DOMAIN = "domain"
|
|
43
|
+
}
|
|
44
|
+
/** Whether a contact rule is currently enforced. */
|
|
45
|
+
export declare enum ContactRuleStatus {
|
|
46
|
+
ACTIVE = "active",
|
|
47
|
+
PAUSED = "paused"
|
|
48
|
+
}
|
|
49
|
+
export interface FilterModeChangeNotice {
|
|
50
|
+
/** The mode the resource was just flipped to. */
|
|
51
|
+
newFilterMode: FilterMode;
|
|
52
|
+
/**
|
|
53
|
+
* Action whose rules are now redundant under `newFilterMode` —
|
|
54
|
+
* `"block"` under whitelist, `"allow"` under blacklist. Typed as a
|
|
55
|
+
* free-form string to tolerate new server values.
|
|
56
|
+
*/
|
|
57
|
+
redundantRuleAction: string;
|
|
58
|
+
/**
|
|
59
|
+
* Count of active rules whose `action` equals `redundantRuleAction`.
|
|
60
|
+
* `0` is a clean flip. Paused / deleted rules are not counted.
|
|
61
|
+
*/
|
|
62
|
+
redundantRuleCount: number;
|
|
63
|
+
}
|
|
11
64
|
export interface Mailbox {
|
|
12
65
|
id: string;
|
|
13
66
|
emailAddress: string;
|
|
14
67
|
displayName: string | null;
|
|
15
68
|
webhookUrl: string | null;
|
|
69
|
+
filterMode: FilterMode;
|
|
70
|
+
/**
|
|
71
|
+
* UUID of the owning agent identity, or `null` if the mailbox is
|
|
72
|
+
* standalone (not tied to any agent). Always present on every mailbox
|
|
73
|
+
* response shape.
|
|
74
|
+
*/
|
|
75
|
+
agentIdentityId: string | null;
|
|
16
76
|
createdAt: Date;
|
|
17
77
|
updatedAt: Date;
|
|
78
|
+
filterModeChangeNotice: FilterModeChangeNotice | null;
|
|
18
79
|
}
|
|
19
80
|
export interface Message {
|
|
20
81
|
id: string;
|
|
@@ -51,6 +112,7 @@ export interface Thread {
|
|
|
51
112
|
id: string;
|
|
52
113
|
mailboxId: string;
|
|
53
114
|
subject: string | null;
|
|
115
|
+
folder: ThreadFolder;
|
|
54
116
|
messageCount: number;
|
|
55
117
|
lastMessageAt: Date;
|
|
56
118
|
createdAt: Date;
|
|
@@ -59,11 +121,29 @@ export interface ThreadDetail extends Thread {
|
|
|
59
121
|
/** All messages in the thread, oldest-first */
|
|
60
122
|
messages: Message[];
|
|
61
123
|
}
|
|
124
|
+
export interface MailContactRule {
|
|
125
|
+
id: string;
|
|
126
|
+
mailboxId: string;
|
|
127
|
+
action: MailRuleAction;
|
|
128
|
+
matchType: MailRuleMatchType;
|
|
129
|
+
matchTarget: string;
|
|
130
|
+
status: ContactRuleStatus;
|
|
131
|
+
createdAt: Date;
|
|
132
|
+
updatedAt: Date;
|
|
133
|
+
}
|
|
134
|
+
export interface RawFilterModeChangeNotice {
|
|
135
|
+
new_filter_mode: string;
|
|
136
|
+
redundant_rule_action: string;
|
|
137
|
+
redundant_rule_count: number;
|
|
138
|
+
}
|
|
62
139
|
export interface RawMailbox {
|
|
63
140
|
id: string;
|
|
64
141
|
email_address: string;
|
|
65
142
|
display_name: string | null;
|
|
66
143
|
webhook_url: string | null;
|
|
144
|
+
filter_mode?: string;
|
|
145
|
+
agent_identity_id?: string | null;
|
|
146
|
+
filter_mode_change_notice?: RawFilterModeChangeNotice | null;
|
|
67
147
|
created_at: string;
|
|
68
148
|
updated_at: string;
|
|
69
149
|
}
|
|
@@ -96,19 +176,32 @@ export interface RawThread {
|
|
|
96
176
|
id: string;
|
|
97
177
|
mailbox_id: string;
|
|
98
178
|
subject: string | null;
|
|
179
|
+
folder?: string;
|
|
99
180
|
message_count: number;
|
|
100
181
|
last_message_at: string;
|
|
101
182
|
created_at: string;
|
|
102
183
|
messages?: RawMessage[];
|
|
103
184
|
}
|
|
185
|
+
export interface RawMailContactRule {
|
|
186
|
+
id: string;
|
|
187
|
+
mailbox_id: string;
|
|
188
|
+
action: string;
|
|
189
|
+
match_type: string;
|
|
190
|
+
match_target: string;
|
|
191
|
+
status?: string;
|
|
192
|
+
created_at: string;
|
|
193
|
+
updated_at: string;
|
|
194
|
+
}
|
|
104
195
|
export interface RawCursorPage<T> {
|
|
105
196
|
items: T[];
|
|
106
197
|
next_cursor: string | null;
|
|
107
198
|
has_more: boolean;
|
|
108
199
|
}
|
|
200
|
+
export declare function parseFilterModeChangeNotice(r: RawFilterModeChangeNotice): FilterModeChangeNotice;
|
|
109
201
|
export declare function parseMailbox(r: RawMailbox): Mailbox;
|
|
110
202
|
export declare function parseMessage(r: RawMessage): Message;
|
|
111
203
|
export declare function parseMessageDetail(r: RawMessage): MessageDetail;
|
|
112
204
|
export declare function parseThread(r: RawThread): Thread;
|
|
113
205
|
export declare function parseThreadDetail(r: RawThread): ThreadDetail;
|
|
206
|
+
export declare function parseMailContactRule(r: RawMailContactRule): MailContactRule;
|
|
114
207
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/mail/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mail/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gEAAgE;AAChE,oBAAY,gBAAgB;IAC1B,8CAA8C;IAC9C,OAAO,YAAY;IACnB,iCAAiC;IACjC,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mail/types.ts"],"names":[],"mappings":"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"}
|
package/dist/mail/types.js
CHANGED
|
@@ -9,15 +9,70 @@ export var MessageDirection;
|
|
|
9
9
|
/** Email sent by the mailbox. */
|
|
10
10
|
MessageDirection["OUTBOUND"] = "outbound";
|
|
11
11
|
})(MessageDirection || (MessageDirection = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Contact-rule filter mode on a mailbox or phone number.
|
|
14
|
+
*
|
|
15
|
+
* `WHITELIST` — only addresses that match an `allow` rule are delivered.
|
|
16
|
+
* `BLACKLIST` — everything is delivered except matches against a
|
|
17
|
+
* `block` rule. This is the default.
|
|
18
|
+
*/
|
|
19
|
+
export var FilterMode;
|
|
20
|
+
(function (FilterMode) {
|
|
21
|
+
FilterMode["WHITELIST"] = "whitelist";
|
|
22
|
+
FilterMode["BLACKLIST"] = "blacklist";
|
|
23
|
+
})(FilterMode || (FilterMode = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Logical folder a thread lives in.
|
|
26
|
+
*
|
|
27
|
+
* `BLOCKED` is server-assigned and is not client-settable — PATCH will
|
|
28
|
+
* reject it.
|
|
29
|
+
*/
|
|
30
|
+
export var ThreadFolder;
|
|
31
|
+
(function (ThreadFolder) {
|
|
32
|
+
ThreadFolder["INBOX"] = "inbox";
|
|
33
|
+
ThreadFolder["SPAM"] = "spam";
|
|
34
|
+
ThreadFolder["BLOCKED"] = "blocked";
|
|
35
|
+
ThreadFolder["ARCHIVE"] = "archive";
|
|
36
|
+
})(ThreadFolder || (ThreadFolder = {}));
|
|
37
|
+
/** Whether a matching address is allowed through or blocked. */
|
|
38
|
+
export var MailRuleAction;
|
|
39
|
+
(function (MailRuleAction) {
|
|
40
|
+
MailRuleAction["ALLOW"] = "allow";
|
|
41
|
+
MailRuleAction["BLOCK"] = "block";
|
|
42
|
+
})(MailRuleAction || (MailRuleAction = {}));
|
|
43
|
+
/** What a mail contact rule matches on. */
|
|
44
|
+
export var MailRuleMatchType;
|
|
45
|
+
(function (MailRuleMatchType) {
|
|
46
|
+
MailRuleMatchType["EXACT_EMAIL"] = "exact_email";
|
|
47
|
+
MailRuleMatchType["DOMAIN"] = "domain";
|
|
48
|
+
})(MailRuleMatchType || (MailRuleMatchType = {}));
|
|
49
|
+
/** Whether a contact rule is currently enforced. */
|
|
50
|
+
export var ContactRuleStatus;
|
|
51
|
+
(function (ContactRuleStatus) {
|
|
52
|
+
ContactRuleStatus["ACTIVE"] = "active";
|
|
53
|
+
ContactRuleStatus["PAUSED"] = "paused";
|
|
54
|
+
})(ContactRuleStatus || (ContactRuleStatus = {}));
|
|
12
55
|
// ---- parsers ----
|
|
56
|
+
export function parseFilterModeChangeNotice(r) {
|
|
57
|
+
return {
|
|
58
|
+
newFilterMode: r.new_filter_mode,
|
|
59
|
+
redundantRuleAction: r.redundant_rule_action,
|
|
60
|
+
redundantRuleCount: r.redundant_rule_count,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
13
63
|
export function parseMailbox(r) {
|
|
14
64
|
return {
|
|
15
65
|
id: r.id,
|
|
16
66
|
emailAddress: r.email_address,
|
|
17
67
|
displayName: r.display_name,
|
|
18
68
|
webhookUrl: r.webhook_url,
|
|
69
|
+
filterMode: r.filter_mode ?? FilterMode.BLACKLIST,
|
|
70
|
+
agentIdentityId: r.agent_identity_id ?? null,
|
|
19
71
|
createdAt: new Date(r.created_at),
|
|
20
72
|
updatedAt: new Date(r.updated_at),
|
|
73
|
+
filterModeChangeNotice: r.filter_mode_change_notice
|
|
74
|
+
? parseFilterModeChangeNotice(r.filter_mode_change_notice)
|
|
75
|
+
: null,
|
|
21
76
|
};
|
|
22
77
|
}
|
|
23
78
|
export function parseMessage(r) {
|
|
@@ -57,6 +112,7 @@ export function parseThread(r) {
|
|
|
57
112
|
id: r.id,
|
|
58
113
|
mailboxId: r.mailbox_id,
|
|
59
114
|
subject: r.subject,
|
|
115
|
+
folder: r.folder ?? ThreadFolder.INBOX,
|
|
60
116
|
messageCount: r.message_count,
|
|
61
117
|
lastMessageAt: new Date(r.last_message_at),
|
|
62
118
|
createdAt: new Date(r.created_at),
|
|
@@ -68,4 +124,16 @@ export function parseThreadDetail(r) {
|
|
|
68
124
|
messages: (r.messages ?? []).map(parseMessage),
|
|
69
125
|
};
|
|
70
126
|
}
|
|
127
|
+
export function parseMailContactRule(r) {
|
|
128
|
+
return {
|
|
129
|
+
id: r.id,
|
|
130
|
+
mailboxId: r.mailbox_id,
|
|
131
|
+
action: r.action,
|
|
132
|
+
matchType: r.match_type,
|
|
133
|
+
matchTarget: r.match_target,
|
|
134
|
+
status: r.status ?? ContactRuleStatus.ACTIVE,
|
|
135
|
+
createdAt: new Date(r.created_at),
|
|
136
|
+
updatedAt: new Date(r.updated_at),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
71
139
|
//# sourceMappingURL=types.js.map
|
package/dist/mail/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mail/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gEAAgE;AAChE,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,8CAA8C;IAC9C,uCAAmB,CAAA;IACnB,iCAAiC;IACjC,yCAAqB,CAAA;AACvB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mail/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gEAAgE;AAChE,MAAM,CAAN,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,8CAA8C;IAC9C,uCAAmB,CAAA;IACnB,iCAAiC;IACjC,yCAAqB,CAAA;AACvB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,QAK3B;AAED;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,qCAAuB,CAAA;AACzB,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;;;;;GAKG;AACH,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAED,gEAAgE;AAChE,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,2CAA2C;AAC3C,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,gDAA2B,CAAA;IAC3B,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAED,oDAAoD;AACpD,MAAM,CAAN,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;AAyKD,oBAAoB;AAEpB,MAAM,UAAU,2BAA2B,CACzC,CAA4B;IAE5B,OAAO;QACL,aAAa,EAAE,CAAC,CAAC,eAA6B;QAC9C,mBAAmB,EAAE,CAAC,CAAC,qBAAqB;QAC5C,kBAAkB,EAAE,CAAC,CAAC,oBAAoB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa;IACxC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,YAAY,EAAE,CAAC,CAAC,aAAa;QAC7B,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,UAAU,EAAG,CAAC,CAAC,WAA0B,IAAI,UAAU,CAAC,SAAS;QACjE,eAAe,EAAE,CAAC,CAAC,iBAAiB,IAAI,IAAI;QAC5C,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjC,sBAAsB,EAAE,CAAC,CAAC,yBAAyB;YACjD,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,yBAAyB,CAAC;YAC1D,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAa;IACxC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,WAAW,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACnC,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAA6B;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAa;IAC9C,OAAO;QACL,GAAG,YAAY,CAAC,CAAC,CAAC;QAClB,QAAQ,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;QAC7B,QAAQ,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;QAC7B,YAAY,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;QACrC,SAAS,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAChC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QAChC,kBAAkB,EAAE,CAAC,CAAC,mBAAmB,IAAI,IAAI;QACjD,YAAY,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;QACtC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAW,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAY;IACtC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAG,CAAC,CAAC,MAAuB,IAAI,YAAY,CAAC,KAAK;QACxD,YAAY,EAAE,CAAC,CAAC,aAAa;QAC7B,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1C,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,CAAY;IAC5C,OAAO;QACL,GAAG,WAAW,CAAC,CAAC,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAqB;IACxD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,MAAM,EAAE,CAAC,CAAC,MAAwB;QAClC,SAAS,EAAE,CAAC,CAAC,UAA+B;QAC5C,WAAW,EAAE,CAAC,CAAC,YAAY;QAC3B,MAAM,EAAG,CAAC,CAAC,MAA4B,IAAI,iBAAiB,CAAC,MAAM;QACnE,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes/resources/noteAccess.ts
|
|
3
|
+
*
|
|
4
|
+
* Per-note access grant management. No wildcards.
|
|
5
|
+
*/
|
|
6
|
+
import { HttpTransport } from "../../_http.js";
|
|
7
|
+
import { NoteAccess } from "../types.js";
|
|
8
|
+
export declare class NoteAccessResource {
|
|
9
|
+
private readonly http;
|
|
10
|
+
constructor(http: HttpTransport);
|
|
11
|
+
list(noteId: string): Promise<NoteAccess[]>;
|
|
12
|
+
grant(noteId: string, identityId: string): Promise<NoteAccess>;
|
|
13
|
+
revoke(noteId: string, identityId: string): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=noteAccess.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noteAccess.d.ts","sourceRoot":"","sources":["../../../src/notes/resources/noteAccess.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAkC,MAAM,aAAa,CAAC;AAIzE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAE1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ3C,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ9D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGhE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes/resources/noteAccess.ts
|
|
3
|
+
*
|
|
4
|
+
* Per-note access grant management. No wildcards.
|
|
5
|
+
*/
|
|
6
|
+
import { parseNoteAccess } from "../types.js";
|
|
7
|
+
const BASE = "/notes";
|
|
8
|
+
export class NoteAccessResource {
|
|
9
|
+
http;
|
|
10
|
+
constructor(http) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
}
|
|
13
|
+
async list(noteId) {
|
|
14
|
+
const data = await this.http.get(`${BASE}/${noteId}/access`);
|
|
15
|
+
const items = Array.isArray(data) ? data : data.items;
|
|
16
|
+
return items.map(parseNoteAccess);
|
|
17
|
+
}
|
|
18
|
+
async grant(noteId, identityId) {
|
|
19
|
+
const data = await this.http.post(`${BASE}/${noteId}/access`, { identity_id: identityId });
|
|
20
|
+
return parseNoteAccess(data);
|
|
21
|
+
}
|
|
22
|
+
async revoke(noteId, identityId) {
|
|
23
|
+
await this.http.delete(`${BASE}/${noteId}/access/${identityId}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=noteAccess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noteAccess.js","sourceRoot":"","sources":["../../../src/notes/resources/noteAccess.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAA6B,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAE9B,GAAG,IAAI,IAAI,MAAM,SAAS,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,UAAkB;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/B,GAAG,IAAI,IAAI,MAAM,SAAS,EAC1B,EAAE,WAAW,EAAE,UAAU,EAAE,CAC5B,CAAC;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAkB;QAC7C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,WAAW,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes/resources/notes.ts
|
|
3
|
+
*
|
|
4
|
+
* Notes CRUD + per-note access subresource.
|
|
5
|
+
*/
|
|
6
|
+
import { HttpTransport } from "../../_http.js";
|
|
7
|
+
import { NoteAccessResource } from "./noteAccess.js";
|
|
8
|
+
import { Note } from "../types.js";
|
|
9
|
+
export interface ListNotesOptions {
|
|
10
|
+
q?: string;
|
|
11
|
+
identityId?: string;
|
|
12
|
+
limit?: number;
|
|
13
|
+
offset?: number;
|
|
14
|
+
order?: "recent" | "created" | string;
|
|
15
|
+
}
|
|
16
|
+
export interface CreateNoteOptions {
|
|
17
|
+
body: string;
|
|
18
|
+
title?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface UpdateNoteOptions {
|
|
21
|
+
title?: string | null;
|
|
22
|
+
body?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare class NotesResource {
|
|
25
|
+
private readonly http;
|
|
26
|
+
readonly access: NoteAccessResource;
|
|
27
|
+
constructor(http: HttpTransport);
|
|
28
|
+
list(options?: ListNotesOptions): Promise<Note[]>;
|
|
29
|
+
get(noteId: string): Promise<Note>;
|
|
30
|
+
create(options: CreateNoteOptions): Promise<Note>;
|
|
31
|
+
/**
|
|
32
|
+
* JSON-merge-patch update.
|
|
33
|
+
*
|
|
34
|
+
* `title: null` clears the title (server returns 200). Setting `body`
|
|
35
|
+
* to null is **not** a legal operation — the server rejects with 422.
|
|
36
|
+
*/
|
|
37
|
+
update(noteId: string, options: UpdateNoteOptions): Promise<Note>;
|
|
38
|
+
delete(noteId: string): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=notes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.d.ts","sourceRoot":"","sources":["../../../src/notes/resources/notes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAsB,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAEP,IAAI,EAAE,aAAa;IAI1C,IAAI,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAerD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlC,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;;;;OAKG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes/resources/notes.ts
|
|
3
|
+
*
|
|
4
|
+
* Notes CRUD + per-note access subresource.
|
|
5
|
+
*/
|
|
6
|
+
import { NoteAccessResource } from "./noteAccess.js";
|
|
7
|
+
import { parseNote } from "../types.js";
|
|
8
|
+
const BASE = "/notes";
|
|
9
|
+
export class NotesResource {
|
|
10
|
+
http;
|
|
11
|
+
access;
|
|
12
|
+
constructor(http) {
|
|
13
|
+
this.http = http;
|
|
14
|
+
this.access = new NoteAccessResource(http);
|
|
15
|
+
}
|
|
16
|
+
async list(options = {}) {
|
|
17
|
+
const params = {};
|
|
18
|
+
if (options.q !== undefined)
|
|
19
|
+
params.q = options.q;
|
|
20
|
+
if (options.identityId !== undefined)
|
|
21
|
+
params.identity_id = options.identityId;
|
|
22
|
+
if (options.limit !== undefined)
|
|
23
|
+
params.limit = options.limit;
|
|
24
|
+
if (options.offset !== undefined)
|
|
25
|
+
params.offset = options.offset;
|
|
26
|
+
if (options.order !== undefined)
|
|
27
|
+
params.order = options.order;
|
|
28
|
+
const data = await this.http.get(BASE, params);
|
|
29
|
+
const items = Array.isArray(data) ? data : data.items;
|
|
30
|
+
return items.map(parseNote);
|
|
31
|
+
}
|
|
32
|
+
async get(noteId) {
|
|
33
|
+
const data = await this.http.get(`${BASE}/${noteId}`);
|
|
34
|
+
return parseNote(data);
|
|
35
|
+
}
|
|
36
|
+
async create(options) {
|
|
37
|
+
const body = { body: options.body };
|
|
38
|
+
if (options.title !== undefined)
|
|
39
|
+
body.title = options.title;
|
|
40
|
+
const data = await this.http.post(BASE, body);
|
|
41
|
+
return parseNote(data);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* JSON-merge-patch update.
|
|
45
|
+
*
|
|
46
|
+
* `title: null` clears the title (server returns 200). Setting `body`
|
|
47
|
+
* to null is **not** a legal operation — the server rejects with 422.
|
|
48
|
+
*/
|
|
49
|
+
async update(noteId, options) {
|
|
50
|
+
const body = {};
|
|
51
|
+
if ("title" in options)
|
|
52
|
+
body.title = options.title;
|
|
53
|
+
if (options.body !== undefined)
|
|
54
|
+
body.body = options.body;
|
|
55
|
+
const data = await this.http.patch(`${BASE}/${noteId}`, body);
|
|
56
|
+
return parseNote(data);
|
|
57
|
+
}
|
|
58
|
+
async delete(noteId) {
|
|
59
|
+
await this.http.delete(`${BASE}/${noteId}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=notes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../src/notes/resources/notes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAiB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,IAAI,GAAG,QAAQ,CAAC;AAoBtB,MAAM,OAAO,aAAa;IAGK;IAFpB,MAAM,CAAqB;IAEpC,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAA4B,EAAE;QACvC,MAAM,MAAM,GAAgD,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,CAAC,KAAK,SAAS;YAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;YAAE,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;QAC9E,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACjE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9B,IAAI,EACJ,MAAM,CACP,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACtD,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA0B;QACrC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAA0B;QACrD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,OAAO,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAU,GAAG,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes TypeScript SDK — public types.
|
|
3
|
+
*/
|
|
4
|
+
export interface NoteAccess {
|
|
5
|
+
id: string;
|
|
6
|
+
noteId: string;
|
|
7
|
+
identityId: string;
|
|
8
|
+
createdAt: Date;
|
|
9
|
+
}
|
|
10
|
+
export interface Note {
|
|
11
|
+
id: string;
|
|
12
|
+
organizationId: string;
|
|
13
|
+
createdBy: string;
|
|
14
|
+
title: string | null;
|
|
15
|
+
body: string;
|
|
16
|
+
status: string;
|
|
17
|
+
createdAt: Date;
|
|
18
|
+
updatedAt: Date;
|
|
19
|
+
access: NoteAccess[];
|
|
20
|
+
}
|
|
21
|
+
export interface RawNoteAccess {
|
|
22
|
+
id: string;
|
|
23
|
+
note_id: string;
|
|
24
|
+
identity_id: string;
|
|
25
|
+
created_at: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RawNote {
|
|
28
|
+
id: string;
|
|
29
|
+
organization_id: string;
|
|
30
|
+
created_by: string;
|
|
31
|
+
title: string | null;
|
|
32
|
+
body: string;
|
|
33
|
+
status: string;
|
|
34
|
+
created_at: string;
|
|
35
|
+
updated_at: string;
|
|
36
|
+
access?: RawNoteAccess[] | null;
|
|
37
|
+
}
|
|
38
|
+
export declare function parseNoteAccess(r: RawNoteAccess): NoteAccess;
|
|
39
|
+
export declare function parseNote(r: RawNote): Note;
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notes/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAID,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;CACjC;AAID,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,GAAG,UAAU,CAO5D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAY1C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* inkbox-notes TypeScript SDK — public types.
|
|
3
|
+
*/
|
|
4
|
+
// ---- parsers ----
|
|
5
|
+
export function parseNoteAccess(r) {
|
|
6
|
+
return {
|
|
7
|
+
id: r.id,
|
|
8
|
+
noteId: r.note_id,
|
|
9
|
+
identityId: r.identity_id,
|
|
10
|
+
createdAt: new Date(r.created_at),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function parseNote(r) {
|
|
14
|
+
return {
|
|
15
|
+
id: r.id,
|
|
16
|
+
organizationId: r.organization_id,
|
|
17
|
+
createdBy: r.created_by,
|
|
18
|
+
title: r.title,
|
|
19
|
+
body: r.body,
|
|
20
|
+
status: r.status,
|
|
21
|
+
createdAt: new Date(r.created_at),
|
|
22
|
+
updatedAt: new Date(r.updated_at),
|
|
23
|
+
access: (r.access ?? []).map(parseNoteAccess),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/notes/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0CH,oBAAoB;AAEpB,MAAM,UAAU,eAAe,CAAC,CAAgB;IAC9C,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,OAAO;QACjB,UAAU,EAAE,CAAC,CAAC,WAAW;QACzB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,cAAc,EAAE,CAAC,CAAC,eAAe;QACjC,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjC,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|