@m1cro/server-sdk 0.1.1-beta.6 → 0.1.1-beta.8

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.
@@ -0,0 +1,354 @@
1
+ import { SetCookie } from 'cookie';
2
+
3
+ interface Crypto {
4
+ deriveKey(seed: string, length: number): Uint8Array;
5
+ aesGcmEncrypt<T>(data: T): Uint8Array;
6
+ aesGcmDecrypt<T>(data: Uint8Array): T;
7
+ argon2Hash(algorithm: Argon2Algorithm, password: string, options?: Argon2Options): string;
8
+ argon2Verify(algorithm: Argon2Algorithm, password: string, hash: string, options?: Argon2Options): boolean;
9
+ }
10
+ type Argon2Algorithm = 'argon2d' | 'argon2i' | 'argon2id';
11
+ interface Argon2Options {
12
+ mCost?: number;
13
+ tCost?: number;
14
+ pCost?: number;
15
+ outputLen?: number;
16
+ }
17
+
18
+ type Record$1<K extends string | number | symbol = string, V = any> = {
19
+ [key in K]: V;
20
+ };
21
+ type Variant<K extends PropertyKey, T extends object> = {
22
+ [P in keyof T]: {
23
+ [Q in K]: P;
24
+ } & T[P] extends infer U ? {
25
+ [Q in keyof U]: U[Q];
26
+ } : never;
27
+ }[keyof T];
28
+ type EventHandler = <T>(event: string, data: T) => void | Promise<void>;
29
+ type Visibility = 'private' | 'platform' | 'vendor' | 'public';
30
+ interface Tenant {
31
+ id: string;
32
+ host: string;
33
+ }
34
+ interface AppId {
35
+ get name(): string;
36
+ get namespace(): Namespace;
37
+ toString(separator?: string): string;
38
+ }
39
+ declare const AppId: {
40
+ parse(input: string): AppId;
41
+ };
42
+ type Namespace = 'system' | 'platform' | {
43
+ vendor: string;
44
+ };
45
+ type AppRole = Variant<'type', AppRoleData>;
46
+ type AppRoleData = {
47
+ provider: {
48
+ group: string;
49
+ };
50
+ test: void;
51
+ };
52
+ interface Auth {
53
+ subject: Subject;
54
+ permissions: Permissions;
55
+ }
56
+ interface Subject {
57
+ id: string;
58
+ email: string;
59
+ roles: string[];
60
+ }
61
+ interface Permissions {
62
+ [key: string]: string[];
63
+ }
64
+ interface HookEventMap {
65
+ start: [];
66
+ install: [];
67
+ }
68
+
69
+ interface FindQuery<T extends Record$1 = Record$1> extends PromiseLike<T[]> {
70
+ limit(limit: number): this;
71
+ offset(offset: number): this;
72
+ sort(sort: Sorting): this;
73
+ }
74
+ interface FindOneQuery<T extends Record$1 = Record$1> extends PromiseLike<T | undefined> {
75
+ offset(offset: number): this;
76
+ sort(sort: Sorting): this;
77
+ }
78
+
79
+ type InsertReturnMode = 'insertedIds' | 'documents';
80
+ type InsertReturnType<T extends Record$1, R extends InsertReturnMode> = R extends 'insertedIds' ? string[] : R extends 'documents' ? T[] : never;
81
+ interface InsertQuery<T extends Record$1 = Record$1, R extends InsertReturnMode = 'insertedIds'> extends PromiseLike<InsertReturnType<T, R>> {
82
+ return(mode: 'insertedIds'): InsertQuery<T, 'insertedIds'>;
83
+ return(mode: 'documents'): InsertQuery<T, 'documents'>;
84
+ return(mode: InsertReturnMode): InsertQuery<T, typeof mode>;
85
+ }
86
+ type InsertOneReturnMode = 'insertedId' | 'document';
87
+ type InsertOneReturnType<T extends Record$1, R extends InsertOneReturnMode> = R extends 'insertedId' ? string : R extends 'document' ? T : never;
88
+ interface InsertOneQuery<T extends Record$1 = Record$1, R extends InsertOneReturnMode = 'insertedId'> extends PromiseLike<InsertOneReturnType<T, R>> {
89
+ return(mode: 'insertedId'): InsertOneQuery<T, 'insertedId'>;
90
+ return(mode: 'document'): InsertOneQuery<T, 'document'>;
91
+ return(mode: InsertOneReturnMode): InsertOneQuery<T, typeof mode>;
92
+ }
93
+
94
+ type UpdateReturnMode = 'affectedRows' | 'oldDocuments' | 'newDocuments';
95
+ type UpdateReturnType<T, R extends UpdateReturnMode> = R extends 'affectedRows' ? bigint : R extends 'oldDocuments' | 'newDocuments' ? T[] : never;
96
+ interface UpdateQuery<T extends Record$1 = Record$1, R extends UpdateReturnMode = 'affectedRows'> extends PromiseLike<UpdateReturnType<T, R>> {
97
+ limit(limit: number): this;
98
+ offset(offset: number): this;
99
+ sort(sort: Sorting): this;
100
+ return(mode: 'affectedRows'): UpdateQuery<T, 'affectedRows'>;
101
+ return(mode: 'oldDocuments'): UpdateQuery<T, 'oldDocuments'>;
102
+ return(mode: 'newDocuments'): UpdateQuery<T, 'newDocuments'>;
103
+ return(mode: UpdateReturnMode): UpdateQuery<T, typeof mode>;
104
+ }
105
+ type UpdateOneReturnMode = 'success' | 'oldDocument' | 'newDocument';
106
+ type UpdateOneReturnType<T, R extends UpdateOneReturnMode> = R extends 'success' ? boolean : R extends 'oldDocument' | 'newDocument' ? T | undefined : never;
107
+ interface UpdateOneQuery<T extends Record$1 = Record$1, R extends UpdateOneReturnMode = 'success'> extends PromiseLike<UpdateOneReturnType<T, R>> {
108
+ offset(offset: number): this;
109
+ sort(sort: Sorting): this;
110
+ upsert(upsert: boolean): this;
111
+ return(mode: 'success'): UpdateOneQuery<T, 'success'>;
112
+ return(mode: 'oldDocument'): UpdateOneQuery<T, 'oldDocument'>;
113
+ return(mode: 'newDocument'): UpdateOneQuery<T, 'newDocument'>;
114
+ return(mode: UpdateOneReturnMode): UpdateOneQuery<T, typeof mode>;
115
+ }
116
+
117
+ type RemoveReturnMode = 'affectedRows' | 'documents';
118
+ type RemoveReturnType<T, R extends RemoveReturnMode> = R extends 'affectedRows' ? bigint : R extends 'documents' ? T[] : never;
119
+ interface RemoveQuery<T extends Record$1 = Record$1, R extends RemoveReturnMode = 'affectedRows'> extends PromiseLike<RemoveReturnType<T, R>> {
120
+ limit(limit: number): this;
121
+ offset(offset: number): this;
122
+ sort(sort: Sorting): this;
123
+ return(mode: 'affectedRows'): RemoveQuery<T, 'affectedRows'>;
124
+ return(mode: 'documents'): RemoveQuery<T, 'documents'>;
125
+ return(mode: RemoveReturnMode): RemoveQuery<T, typeof mode>;
126
+ }
127
+ type RemoveOneReturnMode = 'success' | 'document';
128
+ type RemoveOneReturnType<T, R extends RemoveOneReturnMode> = R extends 'success' ? boolean : R extends 'document' ? T | undefined : never;
129
+ interface RemoveOneQuery<T extends Record$1 = Record$1, R extends RemoveOneReturnMode = 'success'> extends PromiseLike<RemoveOneReturnType<T, R>> {
130
+ offset(offset: number): this;
131
+ sort(sort: Sorting): this;
132
+ return(mode: 'success'): RemoveOneQuery<T, 'success'>;
133
+ return(mode: 'document'): RemoveOneQuery<T, 'document'>;
134
+ return(mode: RemoveOneReturnMode): RemoveOneQuery<T, typeof mode>;
135
+ }
136
+
137
+ interface Entity<T extends object = Record$1<string, unknown>> {
138
+ get name(): string;
139
+ find(query?: Record$1): FindQuery<T>;
140
+ findOne(query?: Record$1): FindOneQuery<T>;
141
+ insert(docs: T[]): InsertQuery<T>;
142
+ insertOne(doc: T): InsertOneQuery<T>;
143
+ update(query: Record$1, update: Record$1): UpdateQuery<T>;
144
+ updateOne(query: Record$1, update: Record$1): UpdateOneQuery<T>;
145
+ remove(query: Record$1): RemoveQuery<T>;
146
+ removeOne(query: Record$1): RemoveOneQuery<T>;
147
+ }
148
+ interface Sorting {
149
+ [field: string]: 'asc' | 'desc';
150
+ }
151
+
152
+ interface SetOptions {
153
+ ttl?: number;
154
+ existenceCheck?: 'nx' | 'xx';
155
+ }
156
+ interface KeyValueStore {
157
+ get<T>(key: string): Promise<T>;
158
+ getDel<T>(key: string): Promise<T>;
159
+ set<T>(key: string, value: T, options?: SetOptions): Promise<void>;
160
+ delete(key: string): Promise<void>;
161
+ }
162
+
163
+ interface Artifacts {
164
+ get<T>(key: string): T | undefined;
165
+ set<T>(key: string, value: T): void;
166
+ delete(key: string): void;
167
+ get auth(): Auth | undefined;
168
+ }
169
+
170
+ type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';
171
+ declare enum StatusCode {
172
+ Continue = 100,
173
+ SwitchingProtocols = 101,
174
+ Processing = 102,
175
+ EarlyHints = 103,
176
+ OK = 200,
177
+ Created = 201,
178
+ Accepted = 202,
179
+ NonAuthoritativeInformation = 203,
180
+ NoContent = 204,
181
+ ResetContent = 205,
182
+ PartialContent = 206,
183
+ MultiStatus = 207,
184
+ AlreadyReported = 208,
185
+ IMUsed = 226,
186
+ MultipleChoices = 300,
187
+ MovedPermanently = 301,
188
+ Found = 302,
189
+ SeeOther = 303,
190
+ NotModified = 304,
191
+ UseProxy = 305,
192
+ TemporaryRedirect = 307,
193
+ PermanentRedirect = 308,
194
+ BadRequest = 400,
195
+ Unauthorized = 401,
196
+ PaymentRequired = 402,
197
+ Forbidden = 403,
198
+ NotFound = 404,
199
+ MethodNotAllowed = 405,
200
+ NotAcceptable = 406,
201
+ ProxyAuthenticationRequired = 407,
202
+ RequestTimeout = 408,
203
+ Conflict = 409,
204
+ Gone = 410,
205
+ LengthRequired = 411,
206
+ PreconditionFailed = 412,
207
+ ContentTooLarge = 413,
208
+ URITooLong = 414,
209
+ UnsupportedMediaType = 415,
210
+ RangeNotSatisfiable = 416,
211
+ ExpectationFailed = 417,
212
+ ImATeapot = 418,
213
+ MisdirectedRequest = 421,
214
+ UnprocessableEntity = 422,
215
+ Locked = 423,
216
+ FailedDependency = 424,
217
+ TooEarly = 425,
218
+ UpgradeRequired = 426,
219
+ PreconditionRequired = 428,
220
+ TooManyRequests = 429,
221
+ RequestHeaderFieldsTooLarge = 431,
222
+ UnavailableForLegalReasons = 451,
223
+ InternalServerError = 500,
224
+ NotImplemented = 501,
225
+ BadGateway = 502,
226
+ ServiceUnavailable = 503,
227
+ GatewayTimeout = 504,
228
+ HTTPVersionNotSupported = 505,
229
+ VariantAlsoNegotiates = 506,
230
+ InsufficientStorage = 507,
231
+ LoopDetected = 508,
232
+ NotExtended = 510,
233
+ NetworkAuthenticationRequired = 511
234
+ }
235
+ type RequestHandler = (req: Request, res: ResponseBuilder) => void | Promise<void>;
236
+ type Middleware = (req: Request, res: ResponseBuilder, next: () => Promise<void>) => void | Promise<void>;
237
+ interface Router {
238
+ scope(path: string): Router;
239
+ route(method: Method, path: string, handler: RequestHandler, options?: RouteOptions): Router;
240
+ middleware(handler: Middleware, options?: MiddlewareOptions): Router;
241
+ get(path: string, handler: RequestHandler, options?: RouteOptions): Router;
242
+ post(path: string, handler: RequestHandler, options?: RouteOptions): Router;
243
+ put(path: string, handler: RequestHandler, options?: RouteOptions): Router;
244
+ patch(path: string, handler: RequestHandler, options?: RouteOptions): Router;
245
+ delete(path: string, handler: RequestHandler, options?: RouteOptions): Router;
246
+ }
247
+ interface RouteOptions {
248
+ timeoutMs?: number;
249
+ permissions?: string[];
250
+ authenticated?: boolean;
251
+ visibility?: Visibility;
252
+ }
253
+ interface MiddlewareOptions {
254
+ path?: string;
255
+ priority?: number;
256
+ }
257
+ interface Request {
258
+ get artifacts(): Artifacts;
259
+ get method(): Method;
260
+ get url(): URL;
261
+ get params(): Record<string, string>;
262
+ get headers(): Headers;
263
+ cookie(name: string): string | undefined;
264
+ body(): Promise<Uint8Array>;
265
+ text(): Promise<string>;
266
+ json<T>(): Promise<T>;
267
+ }
268
+ interface RequestBuilder {
269
+ method(method: Method): this;
270
+ url(url: string | URL): this;
271
+ header(name: string, value: string): this;
272
+ headers(headers: HeadersInit): this;
273
+ cookie(name: string, value: string): this;
274
+ body(bytes: Uint8Array): this;
275
+ text(text: string): this;
276
+ json<T>(json: T): this;
277
+ }
278
+ interface Response {
279
+ get status(): number;
280
+ get headers(): Headers;
281
+ cookie(name: string): SetCookie | undefined;
282
+ body(): Promise<Uint8Array>;
283
+ text(): Promise<string>;
284
+ json<T>(): Promise<T>;
285
+ }
286
+ interface ResponseBuilder {
287
+ status(status: number): this;
288
+ header(name: string, value: string): this;
289
+ headers(headers: HeadersInit): this;
290
+ cookie(name: string, value?: string, options?: SetCookieOptions): this;
291
+ body(bytes: Uint8Array): this;
292
+ text(text: string): this;
293
+ json<T>(json: T): this;
294
+ }
295
+ interface SetCookieOptions {
296
+ encode?: (s: string) => string;
297
+ maxAge?: number;
298
+ expires?: Date;
299
+ domain?: string;
300
+ path?: string;
301
+ httpOnly?: boolean;
302
+ secure?: boolean;
303
+ partitioned?: boolean;
304
+ priority?: 'low' | 'medium' | 'high';
305
+ sameSite?: boolean | 'lax' | 'strict' | 'none';
306
+ }
307
+
308
+ interface RPC {
309
+ call(url: string, method: Method): Call;
310
+ get(url: string): Call;
311
+ post(url: string): Call;
312
+ put(url: string): Call;
313
+ patch(url: string): Call;
314
+ delete(url: string): Call;
315
+ }
316
+ interface Call extends RequestBuilder, PromiseLike<Response> {
317
+ }
318
+
319
+ interface Providers {
320
+ list(group: string): Provider[];
321
+ }
322
+ interface Provider {
323
+ get app(): AppId;
324
+ get group(): string;
325
+ get id(): string;
326
+ call(path: string, method: Method): Call;
327
+ get(path: string): Call;
328
+ post(path: string): Call;
329
+ put(path: string): Call;
330
+ patch(path: string): Call;
331
+ delete(path: string): Call;
332
+ }
333
+ declare const Provider: {
334
+ fromId(id: string): Provider;
335
+ };
336
+
337
+ interface SSE {
338
+ push<T>(event: T, targets: string[]): Promise<void>;
339
+ }
340
+
341
+ interface Bridge {
342
+ get tenant(): Tenant;
343
+ get providers(): Providers;
344
+ settings<T>(): T | undefined;
345
+ crd<T>(key: string): T | undefined;
346
+ get rpc(): RPC;
347
+ get kv(): KeyValueStore;
348
+ get sse(): SSE;
349
+ get crypto(): Crypto;
350
+ entity<T extends object>(name: string): Entity<T>;
351
+ publish<T extends object>(event: string, payload: T, visibility?: Visibility[]): void;
352
+ }
353
+
354
+ export { type AppRole as A, type Bridge as B, type EventHandler as E, type HookEventMap as H, type Method as M, type Namespace as N, Provider as P, type Router as R, StatusCode as S, type Tenant as T, type Visibility as V, AppId as a, type Artifacts as b, type Auth as c, type Entity as d, type Middleware as e, type Providers as f, type Request as g, type RequestBuilder as h, type RequestHandler as i, type Response as j, type ResponseBuilder as k, type RouteOptions as l, type Subject as m };
package/dist/globals.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  import * as console from 'node:console';
2
+ import { B as Bridge } from './bridge-BD4H31JR.js';
3
+ import 'cookie';
2
4
 
3
5
  declare const logLevels: readonly ["trace", "debug", "info", "warn", "error", "none"];
4
6
  type LogLevel = (typeof logLevels)[number];
5
7
 
8
+ interface M1cro {
9
+ bridge: Bridge;
10
+ }
6
11
  declare global {
12
+ var __M1CRO__: M1cro;
7
13
  interface Console extends console.Console {
8
14
  logLevel: LogLevel;
9
15
  }
package/dist/globals.js CHANGED
@@ -1,2 +0,0 @@
1
- //# sourceMappingURL=globals.js.map
2
- //# sourceMappingURL=globals.js.map
package/dist/index.d.ts CHANGED
@@ -1,308 +1,19 @@
1
+ import { R as Router, H as HookEventMap, A as AppRole, E as EventHandler, B as Bridge$1 } from './bridge-BD4H31JR.js';
2
+ export { a as AppId, b as Artifacts, c as Auth, d as Entity, M as Method, e as Middleware, N as Namespace, P as Provider, f as Providers, g as Request, h as RequestBuilder, i as RequestHandler, j as Response, k as ResponseBuilder, l as RouteOptions, S as StatusCode, m as Subject, T as Tenant, V as Visibility } from './bridge-BD4H31JR.js';
1
3
  import { JSONSchema4 } from 'json-schema';
4
+ import 'cookie';
2
5
 
3
- interface Crypto {
4
- deriveKey(seed: string, length: number): Uint8Array;
5
- aesGcmEncrypt<T>(data: T): Uint8Array;
6
- aesGcmDecrypt<T>(data: Uint8Array): T;
7
- argon2Hash(algorithm: Argon2Algorithm, password: string, options?: Argon2Options): string;
8
- argon2Verify(algorithm: Argon2Algorithm, password: string, hash: string, options?: Argon2Options): boolean;
9
- }
10
- type Argon2Algorithm = 'argon2d' | 'argon2i' | 'argon2id';
11
- interface Argon2Options {
12
- mCost?: number;
13
- tCost?: number;
14
- pCost?: number;
15
- outputLen?: number;
16
- }
17
-
18
- type Record$1<K extends string | number | symbol = string, V = any> = {
19
- [key in K]: V;
20
- };
21
- type Variant<K extends PropertyKey, T extends object> = {
22
- [P in keyof T]: {
23
- [Q in K]: P;
24
- } & T[P] extends infer U ? {
25
- [Q in keyof U]: U[Q];
26
- } : never;
27
- }[keyof T];
28
- type EventHandler = <T>(this: App, event: string, data: T) => void | Promise<void>;
29
- type Visibility = 'private' | 'platform' | 'vendor' | 'public';
30
- interface Tenant {
31
- id: string;
32
- host: string;
33
- }
34
- interface AppId {
35
- namespace: string;
36
- app: string;
37
- }
38
- type AppRole = Variant<'type', AppRoleData>;
39
- type AppRoleData = {
40
- provider: {
41
- group: string;
42
- };
43
- test: void;
44
- };
45
- interface Auth {
46
- subject: Subject;
47
- permissions: Permissions;
48
- }
49
- interface Subject {
50
- id: string;
51
- email: string;
52
- roles: string[];
53
- }
54
- interface Permissions {
55
- [key: string]: string[];
56
- }
57
- interface HookEventMap {
58
- start: [];
59
- install: [];
60
- }
61
-
62
- interface FindQuery<T extends Record$1 = Record$1> extends PromiseLike<T[]> {
63
- limit(limit: number): this;
64
- offset(offset: number): this;
65
- sort(sort: Sorting): this;
66
- }
67
- interface FindOneQuery<T extends Record$1 = Record$1> extends PromiseLike<T | undefined> {
68
- offset(offset: number): this;
69
- sort(sort: Sorting): this;
70
- }
71
-
72
- type InsertReturnMode = 'insertedIds' | 'documents';
73
- type InsertReturnType<T extends Record$1, R extends InsertReturnMode> = R extends 'insertedIds' ? string[] : R extends 'documents' ? T[] : never;
74
- interface InsertQuery<T extends Record$1 = Record$1, R extends InsertReturnMode = 'insertedIds'> extends PromiseLike<InsertReturnType<T, R>> {
75
- return(mode: 'insertedIds'): InsertQuery<T, 'insertedIds'>;
76
- return(mode: 'documents'): InsertQuery<T, 'documents'>;
77
- return(mode: InsertReturnMode): InsertQuery<T, typeof mode>;
78
- }
79
- type InsertOneReturnMode = 'insertedId' | 'document';
80
- type InsertOneReturnType<T extends Record$1, R extends InsertOneReturnMode> = R extends 'insertedId' ? string : R extends 'document' ? T : never;
81
- interface InsertOneQuery<T extends Record$1 = Record$1, R extends InsertOneReturnMode = 'insertedId'> extends PromiseLike<InsertOneReturnType<T, R>> {
82
- return(mode: 'insertedId'): InsertOneQuery<T, 'insertedId'>;
83
- return(mode: 'document'): InsertOneQuery<T, 'document'>;
84
- return(mode: InsertOneReturnMode): InsertOneQuery<T, typeof mode>;
85
- }
86
-
87
- type UpdateReturnMode = 'affectedRows' | 'oldDocuments' | 'newDocuments';
88
- type UpdateReturnType<T, R extends UpdateReturnMode> = R extends 'affectedRows' ? bigint : R extends 'oldDocuments' | 'newDocuments' ? T[] : never;
89
- interface UpdateQuery<T extends Record$1 = Record$1, R extends UpdateReturnMode = 'affectedRows'> extends PromiseLike<UpdateReturnType<T, R>> {
90
- limit(limit: number): this;
91
- offset(offset: number): this;
92
- sort(sort: Sorting): this;
93
- return(mode: 'affectedRows'): UpdateQuery<T, 'affectedRows'>;
94
- return(mode: 'oldDocuments'): UpdateQuery<T, 'oldDocuments'>;
95
- return(mode: 'newDocuments'): UpdateQuery<T, 'newDocuments'>;
96
- return(mode: UpdateReturnMode): UpdateQuery<T, typeof mode>;
97
- }
98
- type UpdateOneReturnMode = 'success' | 'oldDocument' | 'newDocument';
99
- type UpdateOneReturnType<T, R extends UpdateOneReturnMode> = R extends 'success' ? boolean : R extends 'oldDocument' | 'newDocument' ? T | undefined : never;
100
- interface UpdateOneQuery<T extends Record$1 = Record$1, R extends UpdateOneReturnMode = 'success'> extends PromiseLike<UpdateOneReturnType<T, R>> {
101
- offset(offset: number): this;
102
- sort(sort: Sorting): this;
103
- upsert(upsert: boolean): this;
104
- return(mode: 'success'): UpdateOneQuery<T, 'success'>;
105
- return(mode: 'oldDocument'): UpdateOneQuery<T, 'oldDocument'>;
106
- return(mode: 'newDocument'): UpdateOneQuery<T, 'newDocument'>;
107
- return(mode: UpdateOneReturnMode): UpdateOneQuery<T, typeof mode>;
108
- }
109
-
110
- type RemoveReturnMode = 'affectedRows' | 'documents';
111
- type RemoveReturnType<T, R extends RemoveReturnMode> = R extends 'affectedRows' ? bigint : R extends 'documents' ? T[] : never;
112
- interface RemoveQuery<T extends Record$1 = Record$1, R extends RemoveReturnMode = 'affectedRows'> extends PromiseLike<RemoveReturnType<T, R>> {
113
- limit(limit: number): this;
114
- offset(offset: number): this;
115
- sort(sort: Sorting): this;
116
- return(mode: 'affectedRows'): RemoveQuery<T, 'affectedRows'>;
117
- return(mode: 'documents'): RemoveQuery<T, 'documents'>;
118
- return(mode: RemoveReturnMode): RemoveQuery<T, typeof mode>;
119
- }
120
- type RemoveOneReturnMode = 'success' | 'document';
121
- type RemoveOneReturnType<T, R extends RemoveOneReturnMode> = R extends 'success' ? boolean : R extends 'document' ? T | undefined : never;
122
- interface RemoveOneQuery<T extends Record$1 = Record$1, R extends RemoveOneReturnMode = 'success'> extends PromiseLike<RemoveOneReturnType<T, R>> {
123
- offset(offset: number): this;
124
- sort(sort: Sorting): this;
125
- return(mode: 'success'): RemoveOneQuery<T, 'success'>;
126
- return(mode: 'document'): RemoveOneQuery<T, 'document'>;
127
- return(mode: RemoveOneReturnMode): RemoveOneQuery<T, typeof mode>;
128
- }
129
-
130
- interface Entity<T extends object = Record$1<string, unknown>> {
131
- get name(): string;
132
- find(query?: Record$1): FindQuery<T>;
133
- findOne(query?: Record$1): FindOneQuery<T>;
134
- insert(docs: T[]): InsertQuery<T>;
135
- insertOne(doc: T): InsertOneQuery<T>;
136
- update(query: Record$1, update: Record$1): UpdateQuery<T>;
137
- updateOne(query: Record$1, update: Record$1): UpdateOneQuery<T>;
138
- remove(query: Record$1): RemoveQuery<T>;
139
- removeOne(query: Record$1): RemoveOneQuery<T>;
140
- }
141
- interface Sorting {
142
- [field: string]: 'asc' | 'desc';
143
- }
144
-
145
- interface Artifacts {
146
- get<T>(key: string): T | undefined;
147
- set<T>(key: string, value: T): void;
148
- delete(key: string): void;
149
- get auth(): Auth | undefined;
150
- }
151
-
152
- type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';
153
- declare enum StatusCode {
154
- Continue = 100,
155
- SwitchingProtocols = 101,
156
- Processing = 102,
157
- EarlyHints = 103,
158
- OK = 200,
159
- Created = 201,
160
- Accepted = 202,
161
- NonAuthoritativeInformation = 203,
162
- NoContent = 204,
163
- ResetContent = 205,
164
- PartialContent = 206,
165
- MultiStatus = 207,
166
- AlreadyReported = 208,
167
- IMUsed = 226,
168
- MultipleChoices = 300,
169
- MovedPermanently = 301,
170
- Found = 302,
171
- SeeOther = 303,
172
- NotModified = 304,
173
- UseProxy = 305,
174
- TemporaryRedirect = 307,
175
- PermanentRedirect = 308,
176
- BadRequest = 400,
177
- Unauthorized = 401,
178
- PaymentRequired = 402,
179
- Forbidden = 403,
180
- NotFound = 404,
181
- MethodNotAllowed = 405,
182
- NotAcceptable = 406,
183
- ProxyAuthenticationRequired = 407,
184
- RequestTimeout = 408,
185
- Conflict = 409,
186
- Gone = 410,
187
- LengthRequired = 411,
188
- PreconditionFailed = 412,
189
- ContentTooLarge = 413,
190
- URITooLong = 414,
191
- UnsupportedMediaType = 415,
192
- RangeNotSatisfiable = 416,
193
- ExpectationFailed = 417,
194
- ImATeapot = 418,
195
- MisdirectedRequest = 421,
196
- UnprocessableEntity = 422,
197
- Locked = 423,
198
- FailedDependency = 424,
199
- TooEarly = 425,
200
- UpgradeRequired = 426,
201
- PreconditionRequired = 428,
202
- TooManyRequests = 429,
203
- RequestHeaderFieldsTooLarge = 431,
204
- UnavailableForLegalReasons = 451,
205
- InternalServerError = 500,
206
- NotImplemented = 501,
207
- BadGateway = 502,
208
- ServiceUnavailable = 503,
209
- GatewayTimeout = 504,
210
- HTTPVersionNotSupported = 505,
211
- VariantAlsoNegotiates = 506,
212
- InsufficientStorage = 507,
213
- LoopDetected = 508,
214
- NotExtended = 510,
215
- NetworkAuthenticationRequired = 511
216
- }
217
- type RequestHandler = (this: App, req: Request, res: ResponseBuilder) => void | Promise<void>;
218
- type Middleware = (this: App, req: Request, res: ResponseBuilder, next: () => Promise<void>) => void | Promise<void>;
219
- interface Router {
220
- scope(path: string): Router;
221
- route(method: Method, path: string, handler: RequestHandler, options?: RouteOptions): Router;
222
- middleware(handler: Middleware, options?: MiddlewareOptions): Router;
223
- get(path: string, handler: RequestHandler, options?: RouteOptions): Router;
224
- post(path: string, handler: RequestHandler, options?: RouteOptions): Router;
225
- put(path: string, handler: RequestHandler, options?: RouteOptions): Router;
226
- patch(path: string, handler: RequestHandler, options?: RouteOptions): Router;
227
- delete(path: string, handler: RequestHandler, options?: RouteOptions): Router;
228
- }
229
- interface RouteOptions {
230
- timeoutMs?: number;
231
- permissions?: string[];
232
- authenticated?: boolean;
233
- visibility?: Visibility;
234
- }
235
- interface MiddlewareOptions {
236
- path?: string;
237
- priority?: number;
238
- }
239
- interface Request {
240
- get artifacts(): Artifacts;
241
- get method(): Method;
242
- get url(): URL;
243
- get params(): Record<string, string>;
244
- get headers(): Headers;
245
- body(): Promise<Uint8Array>;
246
- text(): Promise<string>;
247
- json<T>(): Promise<T>;
248
- }
249
- interface RequestBuilder {
250
- method(method: Method): RequestBuilder;
251
- url(url: string | URL): RequestBuilder;
252
- header(name: string, value: string): RequestBuilder;
253
- headers(headers: HeadersInit): RequestBuilder;
254
- body(bytes: Uint8Array): RequestBuilder;
255
- text(text: string): RequestBuilder;
256
- json<T>(json: T): RequestBuilder;
257
- }
258
- interface Response {
259
- get status(): number;
260
- get headers(): Headers;
261
- body(): Promise<Uint8Array>;
262
- text(): Promise<string>;
263
- json<T>(): Promise<T>;
264
- }
265
- interface ResponseBuilder {
266
- status(status: number): ResponseBuilder;
267
- header(name: string, value: string): ResponseBuilder;
268
- headers(headers: HeadersInit): ResponseBuilder;
269
- body(bytes: Uint8Array): ResponseBuilder;
270
- text(text: string): ResponseBuilder;
271
- json<T>(json: T): ResponseBuilder;
272
- }
273
-
274
- interface SetOptions {
275
- ttl?: number;
276
- existenceCheck?: 'nx' | 'xx';
277
- }
278
- interface KeyValueStore {
279
- get<T>(key: string): Promise<T>;
280
- getDel<T>(key: string): Promise<T>;
281
- set<T>(key: string, value: T, options?: SetOptions): Promise<void>;
282
- delete(key: string): Promise<void>;
283
- }
284
-
285
- interface Providers {
286
- list(group: string): Provider[];
287
- }
288
- interface Provider {
289
- group: string;
290
- app: AppId;
291
- }
292
-
293
- interface RPC {
294
- call(url: string, method: Method): Call;
295
- get(url: string): Call;
296
- post(url: string): Call;
297
- put(url: string): Call;
298
- patch(url: string): Call;
299
- delete(url: string): Call;
300
- }
301
- interface Call extends RequestBuilder, PromiseLike<Response> {
302
- }
303
-
304
- interface SSE {
305
- push<T>(event: T, targets: string[]): Promise<void>;
6
+ type EntryPoint = (app: App) => unknown;
7
+ interface App {
8
+ get router(): Router;
9
+ on<K extends keyof HookEventMap>(type: K, listener: (...args: HookEventMap[K]) => unknown): App;
10
+ role(role: AppRole): App;
11
+ capability(app: string, permissions: string[]): App;
12
+ capabilities(capabilities: {
13
+ [app: string]: string[];
14
+ }): App;
15
+ entity(name: string, schema: JSONSchema4): App;
16
+ subscribe(pattern: string, handler: EventHandler): App;
306
17
  }
307
18
 
308
19
  declare const _default: {
@@ -310,29 +21,6 @@ declare const _default: {
310
21
  decode<T>(data: Uint8Array): T;
311
22
  };
312
23
 
313
- type EntryPoint = (builder: AppBuilder) => unknown;
314
- interface App {
315
- get tenant(): Tenant;
316
- get providers(): Providers;
317
- settings<T>(): T | undefined;
318
- crd<T>(key: string): T | undefined;
319
- get rpc(): RPC;
320
- get kv(): KeyValueStore;
321
- get sse(): SSE;
322
- get crypto(): Crypto;
323
- entity<T extends object>(name: string): Entity<T>;
324
- publish<T extends object>(event: string, payload: T, visibility?: Visibility[]): void;
325
- }
326
- interface AppBuilder {
327
- get router(): Router;
328
- on<K extends keyof HookEventMap>(type: K, listener: (this: App, ...args: HookEventMap[K]) => unknown): AppBuilder;
329
- role(role: AppRole): AppBuilder;
330
- capability(app: string, permissions: string[]): AppBuilder;
331
- capabilities(capabilities: {
332
- [app: string]: string[];
333
- }): AppBuilder;
334
- entity(name: string, schema: JSONSchema4): AppBuilder;
335
- subscribe(pattern: string, handler: EventHandler): AppBuilder;
336
- }
24
+ declare const Bridge: Bridge$1;
337
25
 
338
- export { type App, type AppBuilder, type AppId, type AppRole, type Artifacts, type Auth, type Entity, type EntryPoint, type Method, type Middleware, type Providers, type Request, type RequestBuilder, type RequestHandler, type Response, type ResponseBuilder, type RouteOptions, type Router, StatusCode, type Tenant, _default as cbor };
26
+ export { type App, AppRole, Bridge, type EntryPoint, EventHandler, Router, _default as cbor };
package/dist/index.js CHANGED
@@ -1,2 +1 @@
1
- import*as r from'cbor2';var p={encode(i){return r.encode(i)},decode(i){return r.decode(i)}};var n=(e=>(e[e.Continue=100]="Continue",e[e.SwitchingProtocols=101]="SwitchingProtocols",e[e.Processing=102]="Processing",e[e.EarlyHints=103]="EarlyHints",e[e.OK=200]="OK",e[e.Created=201]="Created",e[e.Accepted=202]="Accepted",e[e.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",e[e.NoContent=204]="NoContent",e[e.ResetContent=205]="ResetContent",e[e.PartialContent=206]="PartialContent",e[e.MultiStatus=207]="MultiStatus",e[e.AlreadyReported=208]="AlreadyReported",e[e.IMUsed=226]="IMUsed",e[e.MultipleChoices=300]="MultipleChoices",e[e.MovedPermanently=301]="MovedPermanently",e[e.Found=302]="Found",e[e.SeeOther=303]="SeeOther",e[e.NotModified=304]="NotModified",e[e.UseProxy=305]="UseProxy",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.MethodNotAllowed=405]="MethodNotAllowed",e[e.NotAcceptable=406]="NotAcceptable",e[e.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",e[e.RequestTimeout=408]="RequestTimeout",e[e.Conflict=409]="Conflict",e[e.Gone=410]="Gone",e[e.LengthRequired=411]="LengthRequired",e[e.PreconditionFailed=412]="PreconditionFailed",e[e.ContentTooLarge=413]="ContentTooLarge",e[e.URITooLong=414]="URITooLong",e[e.UnsupportedMediaType=415]="UnsupportedMediaType",e[e.RangeNotSatisfiable=416]="RangeNotSatisfiable",e[e.ExpectationFailed=417]="ExpectationFailed",e[e.ImATeapot=418]="ImATeapot",e[e.MisdirectedRequest=421]="MisdirectedRequest",e[e.UnprocessableEntity=422]="UnprocessableEntity",e[e.Locked=423]="Locked",e[e.FailedDependency=424]="FailedDependency",e[e.TooEarly=425]="TooEarly",e[e.UpgradeRequired=426]="UpgradeRequired",e[e.PreconditionRequired=428]="PreconditionRequired",e[e.TooManyRequests=429]="TooManyRequests",e[e.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",e[e.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout",e[e.HTTPVersionNotSupported=505]="HTTPVersionNotSupported",e[e.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",e[e.InsufficientStorage=507]="InsufficientStorage",e[e.LoopDetected=508]="LoopDetected",e[e.NotExtended=510]="NotExtended",e[e.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",e))(n||{});export{n as StatusCode,p as cbor};//# sourceMappingURL=index.js.map
2
- //# sourceMappingURL=index.js.map
1
+ import*as i from'cbor2';var o={encode(r){return i.encode(r)},decode(r){return i.decode(r)}};var t=(e=>(e[e.Continue=100]="Continue",e[e.SwitchingProtocols=101]="SwitchingProtocols",e[e.Processing=102]="Processing",e[e.EarlyHints=103]="EarlyHints",e[e.OK=200]="OK",e[e.Created=201]="Created",e[e.Accepted=202]="Accepted",e[e.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",e[e.NoContent=204]="NoContent",e[e.ResetContent=205]="ResetContent",e[e.PartialContent=206]="PartialContent",e[e.MultiStatus=207]="MultiStatus",e[e.AlreadyReported=208]="AlreadyReported",e[e.IMUsed=226]="IMUsed",e[e.MultipleChoices=300]="MultipleChoices",e[e.MovedPermanently=301]="MovedPermanently",e[e.Found=302]="Found",e[e.SeeOther=303]="SeeOther",e[e.NotModified=304]="NotModified",e[e.UseProxy=305]="UseProxy",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.MethodNotAllowed=405]="MethodNotAllowed",e[e.NotAcceptable=406]="NotAcceptable",e[e.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",e[e.RequestTimeout=408]="RequestTimeout",e[e.Conflict=409]="Conflict",e[e.Gone=410]="Gone",e[e.LengthRequired=411]="LengthRequired",e[e.PreconditionFailed=412]="PreconditionFailed",e[e.ContentTooLarge=413]="ContentTooLarge",e[e.URITooLong=414]="URITooLong",e[e.UnsupportedMediaType=415]="UnsupportedMediaType",e[e.RangeNotSatisfiable=416]="RangeNotSatisfiable",e[e.ExpectationFailed=417]="ExpectationFailed",e[e.ImATeapot=418]="ImATeapot",e[e.MisdirectedRequest=421]="MisdirectedRequest",e[e.UnprocessableEntity=422]="UnprocessableEntity",e[e.Locked=423]="Locked",e[e.FailedDependency=424]="FailedDependency",e[e.TooEarly=425]="TooEarly",e[e.UpgradeRequired=426]="UpgradeRequired",e[e.PreconditionRequired=428]="PreconditionRequired",e[e.TooManyRequests=429]="TooManyRequests",e[e.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",e[e.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout",e[e.HTTPVersionNotSupported=505]="HTTPVersionNotSupported",e[e.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",e[e.InsufficientStorage=507]="InsufficientStorage",e[e.LoopDetected=508]="LoopDetected",e[e.NotExtended=510]="NotExtended",e[e.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",e))(t||{});var n={get instance(){return globalThis.__M1CRO__.internals}};var p={fromId(r){return n.instance.providerFromId(r)}};var s={parse(r){return n.instance.parseAppId(r)}};var x=globalThis.__M1CRO__.bridge;export{s as AppId,x as Bridge,p as Provider,t as StatusCode,o as cbor};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m1cro/server-sdk",
3
- "version": "0.1.1-beta.6",
3
+ "version": "0.1.1-beta.8",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -9,16 +9,13 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
- },
13
- "./globals": {
14
- "types": "./dist/globals.d.ts"
15
12
  }
16
13
  },
17
14
  "publishConfig": {
18
15
  "access": "public"
19
16
  },
20
17
  "scripts": {
21
- "build": "yarn run typecheck && yarn run bundle",
18
+ "build": "yarn && yarn typecheck && yarn bundle",
22
19
  "typecheck": "tsc --noEmit",
23
20
  "bundle": "tsup --minify --treeshake smallest",
24
21
  "versioning": "yarn version --new-version",
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"globals.js","sourcesContent":[]}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cbor.ts","../src/http.ts"],"names":["cbor_default","data","StatusCode"],"mappings":"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","file":"index.js","sourcesContent":["import * as cbor2 from 'cbor2';\n\nexport default {\n encode<T>(data: T): Uint8Array {\n return cbor2.encode(data);\n },\n decode<T>(data: Uint8Array): T {\n return cbor2.decode(data);\n },\n};\n","import type { App } from '.';\nimport type { Artifacts } from './artifact';\nimport type * as types from './types';\n\nexport type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';\n\nexport enum StatusCode {\n // 1xx\n Continue = 100,\n SwitchingProtocols = 101,\n Processing = 102,\n EarlyHints = 103,\n\n // 2xx\n OK = 200,\n Created = 201,\n Accepted = 202,\n NonAuthoritativeInformation = 203,\n NoContent = 204,\n ResetContent = 205,\n PartialContent = 206,\n MultiStatus = 207,\n AlreadyReported = 208,\n IMUsed = 226,\n\n // 3xx\n MultipleChoices = 300,\n MovedPermanently = 301,\n Found = 302,\n SeeOther = 303,\n NotModified = 304,\n UseProxy = 305,\n // SwitchProxy = 306, // Deprecated\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n\n // 4xx\n BadRequest = 400,\n Unauthorized = 401,\n PaymentRequired = 402,\n Forbidden = 403,\n NotFound = 404,\n MethodNotAllowed = 405,\n NotAcceptable = 406,\n ProxyAuthenticationRequired = 407,\n RequestTimeout = 408,\n Conflict = 409,\n Gone = 410,\n LengthRequired = 411,\n PreconditionFailed = 412,\n ContentTooLarge = 413,\n URITooLong = 414,\n UnsupportedMediaType = 415,\n RangeNotSatisfiable = 416,\n ExpectationFailed = 417,\n ImATeapot = 418,\n MisdirectedRequest = 421,\n UnprocessableEntity = 422,\n Locked = 423,\n FailedDependency = 424,\n TooEarly = 425,\n UpgradeRequired = 426,\n PreconditionRequired = 428,\n TooManyRequests = 429,\n RequestHeaderFieldsTooLarge = 431,\n UnavailableForLegalReasons = 451,\n\n // 5xx\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HTTPVersionNotSupported = 505,\n VariantAlsoNegotiates = 506,\n InsufficientStorage = 507,\n LoopDetected = 508,\n NotExtended = 510,\n NetworkAuthenticationRequired = 511,\n}\n\nexport type RequestHandler = (\n this: App,\n req: Request,\n res: ResponseBuilder\n) => void | Promise<void>;\n\nexport type Middleware = (\n this: App,\n req: Request,\n res: ResponseBuilder,\n next: () => Promise<void>\n) => void | Promise<void>;\n\nexport interface Router {\n scope(path: string): Router;\n\n route(method: Method, path: string, handler: RequestHandler, options?: RouteOptions): Router;\n\n middleware(handler: Middleware, options?: MiddlewareOptions): Router;\n\n get(path: string, handler: RequestHandler, options?: RouteOptions): Router;\n\n post(path: string, handler: RequestHandler, options?: RouteOptions): Router;\n\n put(path: string, handler: RequestHandler, options?: RouteOptions): Router;\n\n patch(path: string, handler: RequestHandler, options?: RouteOptions): Router;\n\n delete(path: string, handler: RequestHandler, options?: RouteOptions): Router;\n}\n\nexport interface RouteOptions {\n timeoutMs?: number;\n permissions?: string[];\n authenticated?: boolean;\n visibility?: types.Visibility;\n}\n\nexport interface MiddlewareOptions {\n path?: string;\n priority?: number;\n}\n\nexport interface Request {\n get artifacts(): Artifacts;\n get method(): Method;\n get url(): URL;\n get params(): Record<string, string>;\n get headers(): Headers;\n body(): Promise<Uint8Array>;\n text(): Promise<string>;\n json<T>(): Promise<T>;\n}\n\nexport interface RequestBuilder {\n method(method: Method): RequestBuilder;\n url(url: string | URL): RequestBuilder;\n header(name: string, value: string): RequestBuilder;\n headers(headers: HeadersInit): RequestBuilder;\n body(bytes: Uint8Array): RequestBuilder;\n text(text: string): RequestBuilder;\n json<T>(json: T): RequestBuilder;\n}\n\nexport interface Response {\n get status(): number;\n get headers(): Headers;\n body(): Promise<Uint8Array>;\n text(): Promise<string>;\n json<T>(): Promise<T>;\n}\n\nexport interface ResponseBuilder {\n status(status: number): ResponseBuilder;\n header(name: string, value: string): ResponseBuilder;\n headers(headers: HeadersInit): ResponseBuilder;\n body(bytes: Uint8Array): ResponseBuilder;\n text(text: string): ResponseBuilder;\n json<T>(json: T): ResponseBuilder;\n}\n"]}