@vobase/core 0.6.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +11 -93
- package/dist/app.d.ts.map +1 -1
- package/dist/contracts/auth.d.ts +33 -0
- package/dist/contracts/auth.d.ts.map +1 -0
- package/dist/contracts/module.d.ts +17 -0
- package/dist/contracts/module.d.ts.map +1 -0
- package/dist/contracts/notify.d.ts +46 -0
- package/dist/contracts/notify.d.ts.map +1 -0
- package/dist/contracts/storage.d.ts +54 -0
- package/dist/contracts/storage.d.ts.map +1 -0
- package/dist/ctx.d.ts +8 -4
- package/dist/ctx.d.ts.map +1 -1
- package/dist/db/index.d.ts +0 -3
- package/dist/db/index.d.ts.map +1 -1
- package/dist/index.d.ts +31 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83798 -83170
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/module.d.ts +9 -0
- package/dist/module.d.ts.map +1 -1
- package/dist/modules/audit/index.d.ts +5 -0
- package/dist/modules/audit/index.d.ts.map +1 -0
- package/dist/modules/audit/middleware.d.ts +3 -0
- package/dist/modules/audit/middleware.d.ts.map +1 -0
- package/dist/{db/system-schema.d.ts → modules/audit/schema.d.ts} +1 -76
- package/dist/modules/audit/schema.d.ts.map +1 -0
- package/dist/{audit.d.ts → modules/audit/track-changes.d.ts} +2 -2
- package/dist/modules/audit/track-changes.d.ts.map +1 -0
- package/dist/modules/auth/audit-hooks.d.ts +6 -0
- package/dist/modules/auth/audit-hooks.d.ts.map +1 -0
- package/dist/modules/auth/index.d.ts +17 -0
- package/dist/modules/auth/index.d.ts.map +1 -0
- package/dist/modules/auth/middleware.d.ts +14 -0
- package/dist/modules/auth/middleware.d.ts.map +1 -0
- package/dist/{db/auth-schema.d.ts → modules/auth/schema.d.ts} +1 -1
- package/dist/{db/auth-schema.d.ts.map → modules/auth/schema.d.ts.map} +1 -1
- package/dist/{credentials.d.ts → modules/credentials/encrypt.d.ts} +2 -8
- package/dist/modules/credentials/encrypt.d.ts.map +1 -0
- package/dist/modules/credentials/index.d.ts +4 -0
- package/dist/modules/credentials/index.d.ts.map +1 -0
- package/dist/{db/credentials-schema.d.ts → modules/credentials/schema.d.ts} +1 -5
- package/dist/modules/credentials/schema.d.ts.map +1 -0
- package/dist/modules/notify/index.d.ts +36 -0
- package/dist/modules/notify/index.d.ts.map +1 -0
- package/dist/modules/notify/providers/resend.d.ts +7 -0
- package/dist/modules/notify/providers/resend.d.ts.map +1 -0
- package/dist/modules/notify/providers/smtp.d.ts +18 -0
- package/dist/modules/notify/providers/smtp.d.ts.map +1 -0
- package/dist/modules/notify/providers/waba.d.ts +12 -0
- package/dist/modules/notify/providers/waba.d.ts.map +1 -0
- package/dist/modules/notify/schema.d.ts +337 -0
- package/dist/modules/notify/schema.d.ts.map +1 -0
- package/dist/modules/notify/service.d.ts +22 -0
- package/dist/modules/notify/service.d.ts.map +1 -0
- package/dist/modules/sequences/index.d.ts +4 -0
- package/dist/modules/sequences/index.d.ts.map +1 -0
- package/dist/{sequence.d.ts → modules/sequences/next-sequence.d.ts} +2 -2
- package/dist/modules/sequences/next-sequence.d.ts.map +1 -0
- package/dist/modules/sequences/schema.d.ts +72 -0
- package/dist/modules/sequences/schema.d.ts.map +1 -0
- package/dist/modules/storage/index.d.ts +24 -0
- package/dist/modules/storage/index.d.ts.map +1 -0
- package/dist/modules/storage/providers/local.d.ts +3 -0
- package/dist/modules/storage/providers/local.d.ts.map +1 -0
- package/dist/modules/storage/providers/s3.d.ts +3 -0
- package/dist/modules/storage/providers/s3.d.ts.map +1 -0
- package/dist/modules/storage/routes.d.ts +4 -0
- package/dist/modules/storage/routes.d.ts.map +1 -0
- package/dist/modules/storage/schema.d.ts +273 -0
- package/dist/modules/storage/schema.d.ts.map +1 -0
- package/dist/modules/storage/service.d.ts +35 -0
- package/dist/modules/storage/service.d.ts.map +1 -0
- package/dist/schemas.d.ts +17 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/throw-proxy.d.ts +7 -0
- package/dist/throw-proxy.d.ts.map +1 -0
- package/dist/webhooks-schema.d.ts +60 -0
- package/dist/webhooks-schema.d.ts.map +1 -0
- package/dist/webhooks.d.ts +5 -12
- package/dist/webhooks.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/audit.d.ts.map +0 -1
- package/dist/auth.d.ts +0 -30
- package/dist/auth.d.ts.map +0 -1
- package/dist/credentials.d.ts.map +0 -1
- package/dist/db/credentials-schema.d.ts.map +0 -1
- package/dist/db/ensure-core-tables.d.ts +0 -12
- package/dist/db/ensure-core-tables.d.ts.map +0 -1
- package/dist/db/migrator.d.ts +0 -3
- package/dist/db/migrator.d.ts.map +0 -1
- package/dist/db/system-schema.d.ts.map +0 -1
- package/dist/middleware/audit.d.ts +0 -6
- package/dist/middleware/audit.d.ts.map +0 -1
- package/dist/middleware/session.d.ts +0 -14
- package/dist/middleware/session.d.ts.map +0 -1
- package/dist/sequence.d.ts.map +0 -1
- package/dist/storage.d.ts +0 -8
- package/dist/storage.d.ts.map +0 -1
- package/dist/system/handlers.d.ts +0 -90
- package/dist/system/handlers.d.ts.map +0 -1
- package/dist/system/index.d.ts +0 -8
- package/dist/system/index.d.ts.map +0 -1
- package/dist/system/schema.d.ts +0 -2
- package/dist/system/schema.d.ts.map +0 -1
package/dist/app.d.ts
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import { type CreateAuthOptions } from './auth';
|
|
2
1
|
import { type HttpClientOptions } from './http-client';
|
|
2
|
+
import { type AuthModuleConfig } from './modules/auth';
|
|
3
|
+
import { type NotifyModuleConfig } from './modules/notify';
|
|
4
|
+
import { type StorageModuleConfig } from './modules/storage';
|
|
3
5
|
import type { VobaseModule } from './module';
|
|
4
6
|
import { type WebhookConfig } from './webhooks';
|
|
5
7
|
export interface CreateAppConfig {
|
|
6
8
|
modules: VobaseModule[];
|
|
7
9
|
database: string;
|
|
8
|
-
storage?:
|
|
9
|
-
|
|
10
|
-
};
|
|
10
|
+
storage?: StorageModuleConfig;
|
|
11
|
+
notify?: NotifyModuleConfig;
|
|
11
12
|
http?: HttpClientOptions;
|
|
12
13
|
webhooks?: Record<string, WebhookConfig>;
|
|
13
14
|
mcp?: {
|
|
14
15
|
enabled?: boolean;
|
|
15
16
|
};
|
|
16
17
|
trustedOrigins?: string[];
|
|
17
|
-
auth?: Omit<
|
|
18
|
+
auth?: Omit<AuthModuleConfig, 'trustedOrigins'>;
|
|
19
|
+
/** Enable the credentials module (encrypted credential store). Default: false */
|
|
20
|
+
credentials?: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
};
|
|
18
23
|
}
|
|
19
24
|
export declare function createApp(config: CreateAppConfig): import("hono/hono-base").HonoBase<import("hono/types").BlankEnv, {
|
|
20
25
|
"/health": {
|
|
@@ -28,92 +33,5 @@ export declare function createApp(config: CreateAppConfig): import("hono/hono-ba
|
|
|
28
33
|
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
29
34
|
};
|
|
30
35
|
};
|
|
31
|
-
}
|
|
32
|
-
"/": {
|
|
33
|
-
$get: {
|
|
34
|
-
input: {};
|
|
35
|
-
output: {
|
|
36
|
-
version: string;
|
|
37
|
-
uptime: number;
|
|
38
|
-
modules: string[];
|
|
39
|
-
};
|
|
40
|
-
outputFormat: "json";
|
|
41
|
-
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
44
|
-
} & {
|
|
45
|
-
"/health": {
|
|
46
|
-
$get: {
|
|
47
|
-
input: {};
|
|
48
|
-
output: {
|
|
49
|
-
status: string;
|
|
50
|
-
db: string;
|
|
51
|
-
uptime: number;
|
|
52
|
-
};
|
|
53
|
-
outputFormat: "json";
|
|
54
|
-
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
55
|
-
};
|
|
56
|
-
};
|
|
57
|
-
} & {
|
|
58
|
-
"/audit-log": {
|
|
59
|
-
$get: {
|
|
60
|
-
input: {};
|
|
61
|
-
output: {
|
|
62
|
-
entries: {
|
|
63
|
-
id: string;
|
|
64
|
-
event: string;
|
|
65
|
-
actorId: string | null;
|
|
66
|
-
actorEmail: string | null;
|
|
67
|
-
ip: string | null;
|
|
68
|
-
details: string | null;
|
|
69
|
-
createdAt: string;
|
|
70
|
-
}[];
|
|
71
|
-
nextCursor: string | null;
|
|
72
|
-
};
|
|
73
|
-
outputFormat: "json";
|
|
74
|
-
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
} & {
|
|
78
|
-
"/sequences": {
|
|
79
|
-
$get: {
|
|
80
|
-
input: {};
|
|
81
|
-
output: {
|
|
82
|
-
sequences: {
|
|
83
|
-
id: string;
|
|
84
|
-
prefix: string;
|
|
85
|
-
currentValue: number;
|
|
86
|
-
updatedAt: string;
|
|
87
|
-
}[];
|
|
88
|
-
};
|
|
89
|
-
outputFormat: "json";
|
|
90
|
-
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
} & {
|
|
94
|
-
"/record-audits/:table/:id": {
|
|
95
|
-
$get: {
|
|
96
|
-
input: {
|
|
97
|
-
param: {
|
|
98
|
-
table: string;
|
|
99
|
-
} & {
|
|
100
|
-
id: string;
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
output: {
|
|
104
|
-
entries: {
|
|
105
|
-
id: string;
|
|
106
|
-
tableName: string;
|
|
107
|
-
recordId: string;
|
|
108
|
-
oldData: string | null;
|
|
109
|
-
newData: string | null;
|
|
110
|
-
changedBy: string | null;
|
|
111
|
-
createdAt: string;
|
|
112
|
-
}[];
|
|
113
|
-
};
|
|
114
|
-
outputFormat: "json";
|
|
115
|
-
status: import("hono/utils/http-status").ContentfulStatusCode;
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
}, "/api/system">, "/", "/health">;
|
|
36
|
+
}, "/", "/health">;
|
|
119
37
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMzE,OAAO,EAA+C,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpG,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAElF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAqCrE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAChD,iFAAiF;IACjF,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACpC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe;;;;;;;;;;;;mBAqGhD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core contract for authentication. The auth adapter translates an incoming
|
|
3
|
+
* request into a user identity. Core uses this in the session middleware
|
|
4
|
+
* to populate ctx.user. The built-in auth module implements this via
|
|
5
|
+
* better-auth; users can swap in their own implementation.
|
|
6
|
+
*/
|
|
7
|
+
export interface AuthAdapter {
|
|
8
|
+
/**
|
|
9
|
+
* Extract user identity from a request. Returns null if unauthenticated.
|
|
10
|
+
* Must not throw — return null for invalid/expired sessions.
|
|
11
|
+
*/
|
|
12
|
+
getSession(headers: Headers): Promise<AuthSession | null>;
|
|
13
|
+
/**
|
|
14
|
+
* The raw request handler for auth routes (sign-in, sign-up, etc.)
|
|
15
|
+
* Mounted at /api/auth/* by the auth module.
|
|
16
|
+
*/
|
|
17
|
+
handler: (request: Request) => Promise<Response>;
|
|
18
|
+
}
|
|
19
|
+
export interface AuthSession {
|
|
20
|
+
user: AuthUser;
|
|
21
|
+
session: {
|
|
22
|
+
id: string;
|
|
23
|
+
expiresAt: Date;
|
|
24
|
+
token: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface AuthUser {
|
|
28
|
+
id: string;
|
|
29
|
+
email: string;
|
|
30
|
+
name: string;
|
|
31
|
+
role: string;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/contracts/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE1D;;;OAGG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,IAAI,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VobaseDb } from '../db/client';
|
|
2
|
+
import type { HttpClient } from '../http-client';
|
|
3
|
+
import type { NotifyService } from '../modules/notify/service';
|
|
4
|
+
import type { StorageService } from '../modules/storage/service';
|
|
5
|
+
import type { Scheduler } from '../queue';
|
|
6
|
+
/**
|
|
7
|
+
* Context passed to a module's `init` hook during app boot.
|
|
8
|
+
* Provides access to core infrastructure services.
|
|
9
|
+
*/
|
|
10
|
+
export interface ModuleInitContext {
|
|
11
|
+
db: VobaseDb;
|
|
12
|
+
scheduler: Scheduler;
|
|
13
|
+
storage: StorageService;
|
|
14
|
+
http: HttpClient;
|
|
15
|
+
notify: NotifyService;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/contracts/module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,QAAQ,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;CACvB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider interfaces for the notify module. Each channel (email, WhatsApp)
|
|
3
|
+
* has its own provider interface with channel-specific options.
|
|
4
|
+
*/
|
|
5
|
+
export interface EmailProvider {
|
|
6
|
+
send(message: EmailMessage): Promise<EmailResult>;
|
|
7
|
+
}
|
|
8
|
+
export interface EmailMessage {
|
|
9
|
+
to: string | string[];
|
|
10
|
+
subject: string;
|
|
11
|
+
html?: string;
|
|
12
|
+
text?: string;
|
|
13
|
+
from?: string;
|
|
14
|
+
cc?: string[];
|
|
15
|
+
bcc?: string[];
|
|
16
|
+
replyTo?: string;
|
|
17
|
+
attachments?: EmailAttachment[];
|
|
18
|
+
}
|
|
19
|
+
export interface EmailAttachment {
|
|
20
|
+
filename: string;
|
|
21
|
+
content: Buffer | Uint8Array;
|
|
22
|
+
contentType?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface EmailResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
messageId?: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface WhatsAppProvider {
|
|
30
|
+
send(message: WhatsAppMessage): Promise<WhatsAppResult>;
|
|
31
|
+
}
|
|
32
|
+
export interface WhatsAppMessage {
|
|
33
|
+
to: string;
|
|
34
|
+
template?: {
|
|
35
|
+
name: string;
|
|
36
|
+
language: string;
|
|
37
|
+
parameters?: string[];
|
|
38
|
+
};
|
|
39
|
+
text?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface WhatsAppResult {
|
|
42
|
+
success: boolean;
|
|
43
|
+
messageId?: string;
|
|
44
|
+
error?: string;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=notify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notify.d.ts","sourceRoot":"","sources":["../../src/contracts/notify.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider interface for storage backends. Each provider implements
|
|
3
|
+
* the physical operations; the storage module handles bucket resolution,
|
|
4
|
+
* metadata tracking, and access control on top.
|
|
5
|
+
*/
|
|
6
|
+
export interface StorageProvider {
|
|
7
|
+
upload(fullKey: string, data: Buffer | Uint8Array, opts?: UploadOptions): Promise<void>;
|
|
8
|
+
download(fullKey: string): Promise<Uint8Array>;
|
|
9
|
+
delete(fullKey: string): Promise<void>;
|
|
10
|
+
exists(fullKey: string): Promise<boolean>;
|
|
11
|
+
presign(fullKey: string, opts: PresignOptions): string;
|
|
12
|
+
list(prefix: string, opts?: ListOptions): Promise<StorageListResult>;
|
|
13
|
+
}
|
|
14
|
+
export interface UploadOptions {
|
|
15
|
+
contentType?: string;
|
|
16
|
+
metadata?: Record<string, string>;
|
|
17
|
+
/** Max upload size in bytes. Enforced server-side for direct uploads. */
|
|
18
|
+
maxSize?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PresignOptions {
|
|
21
|
+
expiresIn?: number;
|
|
22
|
+
method?: 'GET' | 'PUT';
|
|
23
|
+
}
|
|
24
|
+
export interface ListOptions {
|
|
25
|
+
cursor?: string;
|
|
26
|
+
limit?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface StorageListResult {
|
|
29
|
+
objects: StorageObjectInfo[];
|
|
30
|
+
cursor?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface StorageObjectInfo {
|
|
33
|
+
key: string;
|
|
34
|
+
size: number;
|
|
35
|
+
contentType: string;
|
|
36
|
+
lastModified: Date;
|
|
37
|
+
}
|
|
38
|
+
/** Local filesystem provider */
|
|
39
|
+
export interface LocalProviderConfig {
|
|
40
|
+
type: 'local';
|
|
41
|
+
basePath: string;
|
|
42
|
+
baseUrl?: string;
|
|
43
|
+
}
|
|
44
|
+
/** S3-compatible provider (AWS, R2, MinIO) using Bun native S3 */
|
|
45
|
+
export interface S3ProviderConfig {
|
|
46
|
+
type: 's3';
|
|
47
|
+
bucket: string;
|
|
48
|
+
region?: string;
|
|
49
|
+
endpoint?: string;
|
|
50
|
+
accessKeyId: string;
|
|
51
|
+
secretAccessKey: string;
|
|
52
|
+
}
|
|
53
|
+
export type StorageProviderConfig = LocalProviderConfig | S3ProviderConfig;
|
|
54
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/contracts/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,qBAAqB,GAAG,mBAAmB,GAAG,gBAAgB,CAAC"}
|
package/dist/ctx.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import type { Context } from 'hono';
|
|
|
2
2
|
import type { VobaseDb } from './db';
|
|
3
3
|
import type { HttpClient } from './http-client';
|
|
4
4
|
import type { Scheduler } from './queue';
|
|
5
|
-
import type {
|
|
5
|
+
import type { NotifyService } from './modules/notify/service';
|
|
6
|
+
import type { StorageService } from './modules/storage/service';
|
|
6
7
|
export interface VobaseUser {
|
|
7
8
|
id: string;
|
|
8
9
|
email: string;
|
|
@@ -13,21 +14,24 @@ export interface VobaseCtx {
|
|
|
13
14
|
db: VobaseDb;
|
|
14
15
|
user: VobaseUser | null;
|
|
15
16
|
scheduler: Scheduler;
|
|
16
|
-
storage:
|
|
17
|
+
storage: StorageService;
|
|
18
|
+
notify: NotifyService;
|
|
17
19
|
http: HttpClient;
|
|
18
20
|
}
|
|
19
21
|
declare module 'hono' {
|
|
20
22
|
interface ContextVariableMap {
|
|
21
23
|
db: VobaseDb;
|
|
22
24
|
scheduler: Scheduler;
|
|
23
|
-
storage:
|
|
25
|
+
storage: StorageService;
|
|
26
|
+
notify: NotifyService;
|
|
24
27
|
http: HttpClient;
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
export declare function contextMiddleware(deps: {
|
|
28
31
|
db: VobaseDb;
|
|
29
32
|
scheduler: Scheduler;
|
|
30
|
-
storage:
|
|
33
|
+
storage: StorageService;
|
|
34
|
+
notify: NotifyService;
|
|
31
35
|
http: HttpClient;
|
|
32
36
|
}): import("hono").MiddlewareHandler<any, string, {}, Response>;
|
|
33
37
|
export declare function getCtx(c: Context): VobaseCtx;
|
package/dist/ctx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ctx.d.ts","sourceRoot":"","sources":["../src/ctx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ctx.d.ts","sourceRoot":"","sources":["../src/ctx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,EAAE,EAAE,QAAQ,CAAC;QACb,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,cAAc,CAAC;QACxB,MAAM,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,UAAU,CAAC;KAClB;CACF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,EAAE,EAAE,QAAQ,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CAClB,+DASA;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,CAS5C"}
|
package/dist/db/index.d.ts
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
1
|
export { createDatabase, type VobaseDb } from './client';
|
|
2
2
|
export { createNanoid, DEFAULT_COLUMNS, NANOID_ALPHABET, NANOID_LENGTH, nanoidPrimaryKey, } from './helpers';
|
|
3
|
-
export { runMigrations } from './migrator';
|
|
4
|
-
export { ensureCoreTables } from './ensure-core-tables';
|
|
5
|
-
export * from './system-schema';
|
|
6
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,WAAW,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,25 +1,45 @@
|
|
|
1
1
|
export { type CreateAppConfig, createApp } from './app';
|
|
2
|
-
export { type
|
|
2
|
+
export { createAuthModule, type AuthModuleConfig, type AuthModule } from './modules/auth';
|
|
3
|
+
export { sessionMiddleware, optionalSessionMiddleware } from './modules/auth/middleware';
|
|
4
|
+
export type { AuthAdapter, AuthSession, AuthUser } from './contracts/auth';
|
|
5
|
+
export type { StorageProvider, UploadOptions, PresignOptions, ListOptions, StorageListResult, StorageObjectInfo, LocalProviderConfig, S3ProviderConfig, StorageProviderConfig, } from './contracts/storage';
|
|
6
|
+
export type { EmailProvider, EmailMessage, EmailAttachment, EmailResult, WhatsAppProvider, WhatsAppMessage, WhatsAppResult, } from './contracts/notify';
|
|
7
|
+
export type { ModuleInitContext } from './contracts/module';
|
|
3
8
|
export type { VobaseCtx, VobaseUser } from './ctx';
|
|
4
|
-
export { CircuitBreaker, type CircuitBreakerOptions } from './circuit-breaker';
|
|
5
9
|
export { contextMiddleware, getCtx } from './ctx';
|
|
10
|
+
export { CircuitBreaker, type CircuitBreakerOptions } from './circuit-breaker';
|
|
6
11
|
export { createHttpClient, type HttpClient, type HttpClientOptions, type HttpResponse, type RequestOptions, } from './http-client';
|
|
7
|
-
export {
|
|
8
|
-
export { credentialsTable } from './db/credentials-schema';
|
|
9
|
-
export { createDatabase, runMigrations, type VobaseDb } from './db';
|
|
10
|
-
export { ensureCoreTables } from './db/ensure-core-tables';
|
|
11
|
-
export { auditLog, sequences, recordAudits } from './db/system-schema';
|
|
12
|
+
export { createDatabase, type VobaseDb } from './db';
|
|
12
13
|
export { createNanoid, DEFAULT_COLUMNS, NANOID_ALPHABET, NANOID_LENGTH, nanoidPrimaryKey, } from './db/helpers';
|
|
13
14
|
export { conflict, dbBusy, ERROR_CODES, type ErrorCode, errorHandler, forbidden, notFound, unauthorized, VobaseError, validation, } from './errors';
|
|
14
15
|
export type { JobDefinition, JobHandler, WorkerOptions } from './job';
|
|
15
16
|
export { createWorker, defineJob } from './job';
|
|
16
17
|
export { logger } from './logger';
|
|
17
|
-
export {
|
|
18
|
+
export { createAuthAuditHooks } from './modules/auth/audit-hooks';
|
|
18
19
|
export type { DefineModuleConfig, VobaseModule } from './module';
|
|
19
20
|
export { defineModule } from './module';
|
|
20
21
|
export { registerModules } from './module-registry';
|
|
21
22
|
export { createScheduler, type JobOptions, type Scheduler } from './queue';
|
|
22
|
-
export {
|
|
23
|
-
export {
|
|
24
|
-
export {
|
|
23
|
+
export { createAuditModule, auditLog, recordAudits } from './modules/audit';
|
|
24
|
+
export { trackChanges } from './modules/audit/track-changes';
|
|
25
|
+
export { requestAuditMiddleware } from './modules/audit/middleware';
|
|
26
|
+
export { createSequencesModule, sequences } from './modules/sequences';
|
|
27
|
+
export { nextSequence, type SequenceOptions } from './modules/sequences/next-sequence';
|
|
28
|
+
export { createCredentialsModule, credentialsTable } from './modules/credentials';
|
|
29
|
+
export { encrypt, decrypt, getCredential, setCredential, deleteCredential } from './modules/credentials/encrypt';
|
|
30
|
+
export { getActiveSchemas, type SchemaConfig } from './schemas';
|
|
31
|
+
export { createThrowProxy } from './throw-proxy';
|
|
32
|
+
export { createStorageModule, type StorageModuleConfig } from './modules/storage';
|
|
33
|
+
export { createLocalProvider } from './modules/storage/providers/local';
|
|
34
|
+
export { createS3Provider } from './modules/storage/providers/s3';
|
|
35
|
+
export { createStorageRoutes } from './modules/storage/routes';
|
|
36
|
+
export { storageObjects } from './modules/storage/schema';
|
|
37
|
+
export type { StorageService, BucketConfig, BucketHandle, StorageObject, BucketListOptions } from './modules/storage/service';
|
|
38
|
+
export { createNotifyModule, type NotifyModuleConfig } from './modules/notify';
|
|
39
|
+
export { notifyLog } from './modules/notify/schema';
|
|
40
|
+
export { createResendProvider, type ResendConfig } from './modules/notify/providers/resend';
|
|
41
|
+
export { createSmtpProvider, type SmtpConfig } from './modules/notify/providers/smtp';
|
|
42
|
+
export { createWabaProvider, type WabaConfig } from './modules/notify/providers/waba';
|
|
43
|
+
export type { NotifyService, EmailChannel, WhatsAppChannel } from './modules/notify/service';
|
|
44
|
+
export { type WebhookConfig, verifyHmacSignature, createWebhookRoutes, webhookDedup } from './webhooks';
|
|
25
45
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|