@selvajs/platform 0.15.0-beta.4 → 0.15.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/definitions/schemas.d.ts +1 -1
- package/dist/organizations/schemas.d.ts +2 -2
- package/dist/shareLinks/schemas.d.ts +1 -1
- package/dist/storage/image.js.map +1 -1
- package/dist/testing/suites/storageProviderSuite.d.ts.map +1 -1
- package/dist/testing/suites/storageProviderSuite.js +9 -4
- package/dist/testing/suites/storageProviderSuite.js.map +1 -1
- package/package.json +4 -4
- package/dist/auth.d.ts +0 -59
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -12
- package/dist/auth.js.map +0 -1
- package/dist/compute.d.ts +0 -47
- package/dist/compute.d.ts.map +0 -1
- package/dist/compute.js +0 -11
- package/dist/compute.js.map +0 -1
- package/dist/definitions/service.d.ts +0 -63
- package/dist/definitions/service.d.ts.map +0 -1
- package/dist/definitions/service.js +0 -162
- package/dist/definitions/service.js.map +0 -1
- package/dist/definitions.d.ts +0 -135
- package/dist/definitions.d.ts.map +0 -1
- package/dist/definitions.js +0 -23
- package/dist/definitions.js.map +0 -1
- package/dist/invites/schemas.d.ts +0 -24
- package/dist/invites/schemas.d.ts.map +0 -1
- package/dist/invites/schemas.js +0 -17
- package/dist/invites/schemas.js.map +0 -1
- package/dist/organizations.d.ts +0 -93
- package/dist/organizations.d.ts.map +0 -1
- package/dist/organizations.js +0 -14
- package/dist/organizations.js.map +0 -1
- package/dist/testing/adapterSuite.d.ts +0 -33
- package/dist/testing/adapterSuite.d.ts.map +0 -1
- package/dist/testing/adapterSuite.js +0 -166
- package/dist/testing/adapterSuite.js.map +0 -1
- package/dist/testing/orgStoreSuite.d.ts +0 -32
- package/dist/testing/orgStoreSuite.d.ts.map +0 -1
- package/dist/testing/orgStoreSuite.js +0 -363
- package/dist/testing/orgStoreSuite.js.map +0 -1
- package/dist/testing/storageProviderSuite.d.ts +0 -30
- package/dist/testing/storageProviderSuite.d.ts.map +0 -1
- package/dist/testing/storageProviderSuite.js +0 -122
- package/dist/testing/storageProviderSuite.js.map +0 -1
- package/dist/testing/suites/runner.d.ts +0 -21
- package/dist/testing/suites/runner.d.ts.map +0 -1
- package/dist/testing/suites/runner.js +0 -7
- package/dist/testing/suites/runner.js.map +0 -1
|
@@ -27,8 +27,8 @@ export declare const DefinitionVersionSchema: z.ZodObject<{
|
|
|
27
27
|
schemaExtractedAt: z.ZodOptional<z.ZodString>;
|
|
28
28
|
}, z.core.$strip>;
|
|
29
29
|
export declare const DefinitionChannelSchema: z.ZodEnum<{
|
|
30
|
-
live: "live";
|
|
31
30
|
draft: "draft";
|
|
31
|
+
live: "live";
|
|
32
32
|
}>;
|
|
33
33
|
/** HTTP-body validator for new-definition input. */
|
|
34
34
|
export declare const CreateDefinitionInputSchema: z.ZodObject<{
|
|
@@ -24,9 +24,9 @@ export declare function slugify(name: string): string;
|
|
|
24
24
|
/** Lowercase alphanumeric with internal hyphens, 3–63 chars, not a reserved word. */
|
|
25
25
|
export declare const SlugSchema: z.ZodString;
|
|
26
26
|
export declare const OrgRoleSchema: z.ZodEnum<{
|
|
27
|
-
member: "member";
|
|
28
|
-
owner: "owner";
|
|
29
27
|
admin: "admin";
|
|
28
|
+
owner: "owner";
|
|
29
|
+
member: "member";
|
|
30
30
|
}>;
|
|
31
31
|
export type OrgRole = z.infer<typeof OrgRoleSchema>;
|
|
32
32
|
/**
|
|
@@ -5,8 +5,8 @@ import { z } from 'zod';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare const CreateShareLinkInputSchema: z.ZodObject<{
|
|
7
7
|
channel: z.ZodDefault<z.ZodEnum<{
|
|
8
|
-
live: "live";
|
|
9
8
|
draft: "draft";
|
|
9
|
+
live: "live";
|
|
10
10
|
}>>;
|
|
11
11
|
name: z.ZodOptional<z.ZodString>;
|
|
12
12
|
allowSolve: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/storage/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AASrC,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,WAA+B,EAAE,WAAmB;IACjF,IAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,wCAAwC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC7C,OAAO,WAAW,CAAC,OAAO,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,IAAgB,EAChB,WAA+B,EAC/B,WAAmB;IAEnB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,0BAA0B,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/C,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;SAC5D,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;SACrC,QAAQ,EAAE,CAAC;IAEb,OAAO;QACN,IAAI,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC;QAChC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;KAC7B,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/storage/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AASrC,4FAA4F;AAC5F,MAAM,UAAU,aAAa,CAAC,WAA+B,EAAE,WAAmB;IACjF,IAAI,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,OAAO,wCAAwC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC7C,OAAO,WAAW,CAAC,OAAO,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,IAAgB,EAChB,WAA+B,EAC/B,WAAmB;IAEnB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,IAAI,0BAA0B,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/C,MAAM,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;SAC5D,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;SACrC,QAAQ,EAAE,CAAC;IAEb,OAAO;QACN,IAAI,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC;QAChC,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC;KAC7B,CAAC;AACH,CAAC;AAMD,IAAI,WAAW,GAAmB,IAAI,CAAC;AAEvC,KAAK,UAAU,SAAS;IACvB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAoC,CAAC;QACvE,WAAW,GAAG,GAAG,CAAC,OAAO,IAAK,GAA0B,CAAC;QACzD,OAAO,WAAW,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACd,sGAAsG,EACtG,EAAE,KAAK,EAAE,GAAY,EAAE,CACvB,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageProviderSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/storageProviderSuite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,iCAAiC;IACjD,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,aAAa,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;CAClE;AAoBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"storageProviderSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/storageProviderSuite.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,iCAAiC;IACjD,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,aAAa,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;CAClE;AAoBD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iCAAiC,GAAG,IAAI,CA2L3F"}
|
|
@@ -142,13 +142,18 @@ export function runStorageProviderConformance(opts) {
|
|
|
142
142
|
// produce a pipeline that looks correct until someone uploads a PNG.
|
|
143
143
|
it('transcodes png input to webp (path rewritten, magic bytes flipped)', async () => {
|
|
144
144
|
const storage = await createStorage();
|
|
145
|
-
// Minimal
|
|
145
|
+
// Minimal 1×1 transparent PNG (68 bytes): 8-byte signature + IHDR + IDAT + IEND.
|
|
146
|
+
// The IDAT is a real zlib stream of one scanline (filter 0 + RGBA 0,0,0,0) with a
|
|
147
|
+
// correct Adler-32. Don't hand-tweak these bytes — the previous fixture carried a
|
|
148
|
+
// truncated IDAT that older libpng tolerated and sharp >=0.35 rejects outright
|
|
149
|
+
// ("vipspng: libpng read error"). Regenerate with zlib.deflateSync if it ever needs
|
|
150
|
+
// to change.
|
|
146
151
|
const pngBytes = Uint8Array.from([
|
|
147
152
|
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44,
|
|
148
153
|
0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x06, 0x00, 0x00, 0x00, 0x1f,
|
|
149
|
-
0x15, 0xc4, 0x89, 0x00, 0x00, 0x00,
|
|
150
|
-
|
|
151
|
-
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
|
|
154
|
+
0x15, 0xc4, 0x89, 0x00, 0x00, 0x00, 0x0b, 0x49, 0x44, 0x41, 0x54, 0x78, 0x9c, 0x63, 0x60,
|
|
155
|
+
0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x01, 0x7a, 0x5e, 0xab, 0x3f, 0x00, 0x00, 0x00, 0x00,
|
|
156
|
+
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
|
|
152
157
|
]);
|
|
153
158
|
await storage.put('covers/tiny.png', pngBytes, 'image/png');
|
|
154
159
|
// Image transcoding rewrites the path to .webp — the original path is empty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageProviderSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/storageProviderSuite.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"storageProviderSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/storageProviderSuite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@selvajs/platform",
|
|
3
|
-
"version": "0.15.0
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Pure TypeScript interfaces for Selva platform providers (auth, definitions, compute)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "VektorNode",
|
|
@@ -102,10 +102,10 @@
|
|
|
102
102
|
],
|
|
103
103
|
"dependencies": {
|
|
104
104
|
"zod": "^4.3.6",
|
|
105
|
-
"@selvajs/schemas": "^4.7.0
|
|
105
|
+
"@selvajs/schemas": "^4.7.0"
|
|
106
106
|
},
|
|
107
107
|
"peerDependencies": {
|
|
108
|
-
"sharp": "^0.34.0",
|
|
108
|
+
"sharp": "^0.34.0 || ^0.35.0",
|
|
109
109
|
"vitest": "^3.2.4"
|
|
110
110
|
},
|
|
111
111
|
"peerDependenciesMeta": {
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
119
|
"devDependencies": {
|
|
120
|
-
"sharp": "^0.
|
|
120
|
+
"sharp": "^0.35.3",
|
|
121
121
|
"typescript": "^6.0.3",
|
|
122
122
|
"vitest": "^3.2.7"
|
|
123
123
|
},
|
package/dist/auth.d.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication provider interface.
|
|
3
|
-
*
|
|
4
|
-
* Implement this to plug in any auth backend:
|
|
5
|
-
* - Local HMAC sessions (built-in default)
|
|
6
|
-
* - Firebase Auth
|
|
7
|
-
* - Supabase Auth
|
|
8
|
-
* - AWS Cognito
|
|
9
|
-
* - Any OIDC/JWT provider
|
|
10
|
-
*/
|
|
11
|
-
export type UserRole = 'platform_admin' | 'user';
|
|
12
|
-
export interface AuthUser {
|
|
13
|
-
id: string;
|
|
14
|
-
email?: string;
|
|
15
|
-
role: UserRole;
|
|
16
|
-
metadata?: Record<string, unknown>;
|
|
17
|
-
}
|
|
18
|
-
export interface IAuthProvider {
|
|
19
|
-
/**
|
|
20
|
-
* Verify a token string — session cookie value, JWT, Firebase ID token, etc.
|
|
21
|
-
* Returns the authenticated user, or null if the token is invalid or expired.
|
|
22
|
-
*/
|
|
23
|
-
verifyToken(token: string): Promise<AuthUser | null>;
|
|
24
|
-
/**
|
|
25
|
-
* Look up a user by their provider-specific ID.
|
|
26
|
-
* Returns null if the user does not exist.
|
|
27
|
-
*/
|
|
28
|
-
getUser(id: string): Promise<AuthUser | null>;
|
|
29
|
-
/**
|
|
30
|
-
* Create a new opaque session token for an authenticated user.
|
|
31
|
-
* Stored in a cookie by the transport layer. Format is provider-specific:
|
|
32
|
-
* HMAC string, signed JWT, Firebase custom token, etc.
|
|
33
|
-
*/
|
|
34
|
-
createSessionToken(user: AuthUser): Promise<string>;
|
|
35
|
-
/**
|
|
36
|
-
* Verify login credentials (email + password).
|
|
37
|
-
* Returns the authenticated user, or null if credentials are invalid.
|
|
38
|
-
* Email may be an empty string for password-only auth (no users.json configured).
|
|
39
|
-
*/
|
|
40
|
-
verifyLoginCredentials(email: string, password: string): Promise<AuthUser | null>;
|
|
41
|
-
/**
|
|
42
|
-
* List all users. Returns null if this provider does not support user management
|
|
43
|
-
* (e.g. single-password mode).
|
|
44
|
-
*/
|
|
45
|
-
listUsers(): Promise<AuthUser[] | null>;
|
|
46
|
-
/**
|
|
47
|
-
* Create a new user. Returns null if not supported.
|
|
48
|
-
*/
|
|
49
|
-
createUser(email: string, password: string, role: UserRole): Promise<AuthUser | null>;
|
|
50
|
-
/**
|
|
51
|
-
* Update a user's role. Returns false if not supported or user not found.
|
|
52
|
-
*/
|
|
53
|
-
updateUserRole(id: string, role: UserRole): Promise<boolean>;
|
|
54
|
-
/**
|
|
55
|
-
* Delete a user by ID. Returns false if not supported or user not found.
|
|
56
|
-
*/
|
|
57
|
-
deleteUser(id: string): Promise<boolean>;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,QAAQ,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC7B;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAErD;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAE9C;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpD;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAIlF;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAEtF;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7D;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC"}
|
package/dist/auth.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Authentication provider interface.
|
|
3
|
-
*
|
|
4
|
-
* Implement this to plug in any auth backend:
|
|
5
|
-
* - Local HMAC sessions (built-in default)
|
|
6
|
-
* - Firebase Auth
|
|
7
|
-
* - Supabase Auth
|
|
8
|
-
* - AWS Cognito
|
|
9
|
-
* - Any OIDC/JWT provider
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
package/dist/compute.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute server provider interface.
|
|
3
|
-
*
|
|
4
|
-
* Implement to support:
|
|
5
|
-
* - Single server (built-in default)
|
|
6
|
-
* - Server pool with load balancing
|
|
7
|
-
* - Per-definition routing (e.g. definition A always goes to server B)
|
|
8
|
-
* - Dynamic provisioning
|
|
9
|
-
*/
|
|
10
|
-
export interface ComputeServerConfig {
|
|
11
|
-
/** UUID v4 primary key */
|
|
12
|
-
id: string;
|
|
13
|
-
/** Human-readable display label */
|
|
14
|
-
label: string;
|
|
15
|
-
/** Base URL of the Rhino.Compute instance, e.g. http://localhost:5000 */
|
|
16
|
-
serverUrl: string;
|
|
17
|
-
/** Optional API key sent as RhinoComputeKey header */
|
|
18
|
-
apiKey?: string;
|
|
19
|
-
/** Request timeout in milliseconds. Default: 30000 */
|
|
20
|
-
timeoutMs?: number;
|
|
21
|
-
/** Number of retries on transient failure. Default: 0 */
|
|
22
|
-
retryCount?: number;
|
|
23
|
-
}
|
|
24
|
-
export interface ComputeConfig {
|
|
25
|
-
servers: ComputeServerConfig[];
|
|
26
|
-
/** UUID of the server to use when no routing rule matches. Falls back to servers[0]. */
|
|
27
|
-
defaultServerId?: string;
|
|
28
|
-
}
|
|
29
|
-
export interface SolveRequest {
|
|
30
|
-
/** GUID of the definition being solved — enables per-definition routing */
|
|
31
|
-
definitionGuid?: string;
|
|
32
|
-
/** Arbitrary hints for routing decisions (e.g. required plugin versions) */
|
|
33
|
-
hints?: Record<string, string>;
|
|
34
|
-
}
|
|
35
|
-
export interface IComputeServerProvider {
|
|
36
|
-
/** Resolve which compute server to use for a given solve request. */
|
|
37
|
-
getServer(request?: SolveRequest): Promise<ComputeServerConfig>;
|
|
38
|
-
/** Return the default server, or undefined if none configured. */
|
|
39
|
-
getDefaultServer(): Promise<ComputeServerConfig | undefined>;
|
|
40
|
-
/** Look up a specific server by its UUID. Returns undefined if not found. */
|
|
41
|
-
getServerById(id: string): Promise<ComputeServerConfig | undefined>;
|
|
42
|
-
/** Return the full config. Used by the admin UI. */
|
|
43
|
-
getConfig(): Promise<ComputeConfig>;
|
|
44
|
-
/** Replace the full config atomically. Used by the admin UI. */
|
|
45
|
-
saveConfig(config: ComputeConfig): Promise<void>;
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=compute.d.ts.map
|
package/dist/compute.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,mBAAmB;IACnC,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,wFAAwF;IACxF,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACtC,qEAAqE;IACrE,SAAS,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhE,kEAAkE;IAClE,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAE7D,6EAA6E;IAC7E,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAEpE,oDAAoD;IACpD,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAEpC,gEAAgE;IAChE,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
|
package/dist/compute.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute server provider interface.
|
|
3
|
-
*
|
|
4
|
-
* Implement to support:
|
|
5
|
-
* - Single server (built-in default)
|
|
6
|
-
* - Server pool with load balancing
|
|
7
|
-
* - Per-definition routing (e.g. definition A always goes to server B)
|
|
8
|
-
* - Dynamic provisioning
|
|
9
|
-
*/
|
|
10
|
-
export {};
|
|
11
|
-
//# sourceMappingURL=compute.js.map
|
package/dist/compute.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { IDataProvider } from '../data/interface.js';
|
|
2
|
-
import type { IStorageProvider } from '../storage/interface.js';
|
|
3
|
-
import type { RequestContext } from '../context.js';
|
|
4
|
-
import type { DefinitionRecord, DefinitionFileExt, DefinitionMeta } from './types.js';
|
|
5
|
-
import type { UpdateMetadataInput } from './schemas.js';
|
|
6
|
-
export interface CreateDefinitionInput {
|
|
7
|
-
guid: string;
|
|
8
|
-
projectId: string;
|
|
9
|
-
ownerId: string;
|
|
10
|
-
fileExt: DefinitionFileExt;
|
|
11
|
-
meta: DefinitionMeta;
|
|
12
|
-
computeServerId?: string;
|
|
13
|
-
maxHistory?: number;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Default age threshold after which a 'pending' record is considered stale.
|
|
17
|
-
* Conservative — covers slow uploads over weak connections.
|
|
18
|
-
*/
|
|
19
|
-
export declare const PENDING_GC_AGE_MS: number;
|
|
20
|
-
/**
|
|
21
|
-
* Orchestrates writes that span IDataProvider + IStorageProvider.
|
|
22
|
-
*
|
|
23
|
-
* Ordering rules (see Phase 4 of the provider refactor):
|
|
24
|
-
*
|
|
25
|
-
* create — metadata-first:
|
|
26
|
-
* 1. Write record with status='pending'
|
|
27
|
-
* 2. Upload blob
|
|
28
|
-
* 3. Flip status to 'ready'
|
|
29
|
-
* If step 2 fails the record stays 'pending' with no blob. List queries
|
|
30
|
-
* filter 'pending' by default, so no consumer sees the half-written state.
|
|
31
|
-
* The janitor (gcStalePending) sweeps records older than PENDING_GC_AGE_MS.
|
|
32
|
-
*
|
|
33
|
-
* updateFile — best-effort, retry-safe, metadata-last:
|
|
34
|
-
* 1. Archive current file to history blob
|
|
35
|
-
* 2. Write the new file to the active blob path
|
|
36
|
-
* 3. Append history entry to the record
|
|
37
|
-
* 4. Prune: delete archive blob first, then remove history entry
|
|
38
|
-
* Ordering is chosen so a mid-flight failure never leaves a history entry
|
|
39
|
-
* pointing at a missing archive blob — that would break revertToVersion.
|
|
40
|
-
* A failure between 1 and 2 can leave an orphan archive blob; the janitor
|
|
41
|
-
* (or the next successful updateFile) reclaims it. History entries use a
|
|
42
|
-
* UUID ref so retries never collide with prior archives.
|
|
43
|
-
*/
|
|
44
|
-
export declare class DefinitionService {
|
|
45
|
-
private data;
|
|
46
|
-
private storage;
|
|
47
|
-
constructor(data: IDataProvider, storage: IStorageProvider);
|
|
48
|
-
create(ctx: RequestContext, input: CreateDefinitionInput, file: Uint8Array): Promise<DefinitionRecord>;
|
|
49
|
-
updateFile(ctx: RequestContext, guid: string, file: Uint8Array, ext: DefinitionFileExt, originalName: string): Promise<void>;
|
|
50
|
-
updateMeta(ctx: RequestContext, guid: string, patch: UpdateMetadataInput): Promise<void>;
|
|
51
|
-
saveCoverImage(ctx: RequestContext, guid: string, imageData: Uint8Array): Promise<void>;
|
|
52
|
-
revertToVersion(ctx: RequestContext, guid: string, ref: string): Promise<void>;
|
|
53
|
-
delete(ctx: RequestContext, guid: string): Promise<void>;
|
|
54
|
-
/**
|
|
55
|
-
* Janitor — delete records stuck in 'pending' for longer than ageMs and
|
|
56
|
-
* any blobs they may have written. Safe to run on a schedule.
|
|
57
|
-
* Runs under SYSTEM_CONTEXT; callers don't pass one.
|
|
58
|
-
*
|
|
59
|
-
* @returns Number of records reclaimed.
|
|
60
|
-
*/
|
|
61
|
-
gcStalePending(ageMs?: number): Promise<number>;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/definitions/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EACX,gBAAgB,EAEhB,iBAAiB,EACjB,cAAc,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAiB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;gBADP,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,gBAAgB;IAG5B,MAAM,CACX,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE,UAAU,GACd,OAAO,CAAC,gBAAgB,CAAC;IAiCtB,UAAU,CACf,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAoDV,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxF,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvF,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9E,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D;;;;;;OAMG;IACG,cAAc,CAAC,KAAK,GAAE,MAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;CASxE"}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { SYSTEM_CONTEXT } from '../context.js';
|
|
2
|
-
import { ProviderError } from '../errors.js';
|
|
3
|
-
import { definitionPaths } from './paths.js';
|
|
4
|
-
/**
|
|
5
|
-
* Default age threshold after which a 'pending' record is considered stale.
|
|
6
|
-
* Conservative — covers slow uploads over weak connections.
|
|
7
|
-
*/
|
|
8
|
-
export const PENDING_GC_AGE_MS = 30 * 60 * 1000; // 30 minutes
|
|
9
|
-
/**
|
|
10
|
-
* Orchestrates writes that span IDataProvider + IStorageProvider.
|
|
11
|
-
*
|
|
12
|
-
* Ordering rules (see Phase 4 of the provider refactor):
|
|
13
|
-
*
|
|
14
|
-
* create — metadata-first:
|
|
15
|
-
* 1. Write record with status='pending'
|
|
16
|
-
* 2. Upload blob
|
|
17
|
-
* 3. Flip status to 'ready'
|
|
18
|
-
* If step 2 fails the record stays 'pending' with no blob. List queries
|
|
19
|
-
* filter 'pending' by default, so no consumer sees the half-written state.
|
|
20
|
-
* The janitor (gcStalePending) sweeps records older than PENDING_GC_AGE_MS.
|
|
21
|
-
*
|
|
22
|
-
* updateFile — best-effort, retry-safe, metadata-last:
|
|
23
|
-
* 1. Archive current file to history blob
|
|
24
|
-
* 2. Write the new file to the active blob path
|
|
25
|
-
* 3. Append history entry to the record
|
|
26
|
-
* 4. Prune: delete archive blob first, then remove history entry
|
|
27
|
-
* Ordering is chosen so a mid-flight failure never leaves a history entry
|
|
28
|
-
* pointing at a missing archive blob — that would break revertToVersion.
|
|
29
|
-
* A failure between 1 and 2 can leave an orphan archive blob; the janitor
|
|
30
|
-
* (or the next successful updateFile) reclaims it. History entries use a
|
|
31
|
-
* UUID ref so retries never collide with prior archives.
|
|
32
|
-
*/
|
|
33
|
-
export class DefinitionService {
|
|
34
|
-
data;
|
|
35
|
-
storage;
|
|
36
|
-
constructor(data, storage) {
|
|
37
|
-
this.data = data;
|
|
38
|
-
this.storage = storage;
|
|
39
|
-
}
|
|
40
|
-
async create(ctx, input, file) {
|
|
41
|
-
const now = new Date().toISOString();
|
|
42
|
-
const record = {
|
|
43
|
-
guid: input.guid,
|
|
44
|
-
projectId: input.projectId,
|
|
45
|
-
ownerId: input.ownerId,
|
|
46
|
-
fileExt: input.fileExt,
|
|
47
|
-
meta: input.meta,
|
|
48
|
-
computeServerId: input.computeServerId,
|
|
49
|
-
history: [],
|
|
50
|
-
maxHistory: input.maxHistory ?? 10,
|
|
51
|
-
status: 'pending',
|
|
52
|
-
runCount: 0,
|
|
53
|
-
createdAt: now,
|
|
54
|
-
updatedAt: now
|
|
55
|
-
};
|
|
56
|
-
// 1. Metadata first — if this fails there's nothing to clean up.
|
|
57
|
-
await this.data.definitions.create(ctx, record);
|
|
58
|
-
// 2. Blob upload — if this fails the record stays 'pending' for the janitor.
|
|
59
|
-
await this.storage.put(definitionPaths.file(input.guid, input.fileExt), file, 'application/octet-stream');
|
|
60
|
-
// 3. Flip to draft — the record is now visible to editors.
|
|
61
|
-
await this.data.definitions.update(ctx, input.guid, { status: 'draft' });
|
|
62
|
-
return { ...record, status: 'draft' };
|
|
63
|
-
}
|
|
64
|
-
async updateFile(ctx, guid, file, ext, originalName) {
|
|
65
|
-
const existing = await this.data.definitions.get(ctx, guid);
|
|
66
|
-
if (!existing)
|
|
67
|
-
throw new ProviderError(`Definition not found: ${guid}`, 404);
|
|
68
|
-
const now = new Date().toISOString();
|
|
69
|
-
// UUID-based ref avoids collisions from identical timestamps or special chars in filenames.
|
|
70
|
-
const ref = `${crypto.randomUUID()}_${originalName.replace(/[^a-zA-Z0-9._-]/g, '_')}`;
|
|
71
|
-
// 1. Archive the current file to a UUID-keyed path.
|
|
72
|
-
let archived = false;
|
|
73
|
-
const currentFile = await this.storage.get(definitionPaths.file(guid, existing.fileExt));
|
|
74
|
-
if (currentFile) {
|
|
75
|
-
await this.storage.put(definitionPaths.archive(guid, ref), currentFile, 'application/octet-stream');
|
|
76
|
-
archived = true;
|
|
77
|
-
}
|
|
78
|
-
// 2. Write the new active blob BEFORE recording history — a mid-flight
|
|
79
|
-
// crash here leaves an orphan archive blob (janitor-reclaimable),
|
|
80
|
-
// never a history entry pointing at a missing active blob.
|
|
81
|
-
await this.storage.put(definitionPaths.file(guid, ext), file, 'application/octet-stream');
|
|
82
|
-
if (ext !== existing.fileExt) {
|
|
83
|
-
await this.storage.delete(definitionPaths.file(guid, existing.fileExt));
|
|
84
|
-
}
|
|
85
|
-
// 3. Metadata updates last. fileExt + history in separate calls is fine:
|
|
86
|
-
// if addHistoryEntry fails, retrying reuses the same ref and overwrites.
|
|
87
|
-
await this.data.definitions.update(ctx, guid, { fileExt: ext });
|
|
88
|
-
if (archived) {
|
|
89
|
-
await this.data.definitions.addHistoryEntry(ctx, guid, {
|
|
90
|
-
ref,
|
|
91
|
-
originalName,
|
|
92
|
-
archivedAt: now
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
// 4. Prune history: blob-first, then metadata. An orphan archive blob
|
|
96
|
-
// is harmless; a history entry pointing at a missing blob breaks
|
|
97
|
-
// revertToVersion.
|
|
98
|
-
const updated = await this.data.definitions.get(ctx, guid);
|
|
99
|
-
if (updated && updated.maxHistory > 0 && updated.history.length > updated.maxHistory) {
|
|
100
|
-
const toRemove = updated.history.slice(updated.maxHistory);
|
|
101
|
-
for (const entry of toRemove) {
|
|
102
|
-
await this.storage.delete(definitionPaths.archive(guid, entry.ref));
|
|
103
|
-
await this.data.definitions.removeHistoryEntry(ctx, guid, entry.ref);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
async updateMeta(ctx, guid, patch) {
|
|
108
|
-
const { maxHistory, projectId, computeServerId, status, ...metaFields } = patch;
|
|
109
|
-
const meta = Object.keys(metaFields).length > 0 ? metaFields : undefined;
|
|
110
|
-
const recordPatch = {
|
|
111
|
-
...(meta !== undefined && { meta }),
|
|
112
|
-
...(maxHistory !== undefined && { maxHistory }),
|
|
113
|
-
...(projectId !== undefined && { projectId }),
|
|
114
|
-
...(computeServerId !== undefined && { computeServerId }),
|
|
115
|
-
...(status !== undefined && { status })
|
|
116
|
-
};
|
|
117
|
-
await this.data.definitions.update(ctx, guid, recordPatch);
|
|
118
|
-
}
|
|
119
|
-
async saveCoverImage(ctx, guid, imageData) {
|
|
120
|
-
const path = definitionPaths.image(guid);
|
|
121
|
-
await this.storage.put(path, imageData, 'image/webp');
|
|
122
|
-
const url = this.storage.getPublicUrl(path);
|
|
123
|
-
await this.data.definitions.update(ctx, guid, { meta: { coverImage: url } });
|
|
124
|
-
}
|
|
125
|
-
async revertToVersion(ctx, guid, ref) {
|
|
126
|
-
const existing = await this.data.definitions.get(ctx, guid);
|
|
127
|
-
if (!existing)
|
|
128
|
-
throw new ProviderError(`Definition not found: ${guid}`, 404);
|
|
129
|
-
const entry = existing.history.find((h) => h.ref === ref);
|
|
130
|
-
if (!entry)
|
|
131
|
-
throw new ProviderError(`History entry not found: ${ref}`, 404);
|
|
132
|
-
const archived = await this.storage.get(definitionPaths.archive(guid, ref));
|
|
133
|
-
if (!archived)
|
|
134
|
-
throw new ProviderError(`Archived file not found for ref: ${ref}`, 404);
|
|
135
|
-
// Archive the current file first, then restore the old one
|
|
136
|
-
await this.updateFile(ctx, guid, archived, existing.fileExt, entry.originalName);
|
|
137
|
-
}
|
|
138
|
-
async delete(ctx, guid) {
|
|
139
|
-
// Blobs first — if this fails, record remains and retry is safe.
|
|
140
|
-
// If record delete fails after, the record points at nothing; the
|
|
141
|
-
// next get() returns null-payload semantics and the janitor cleans up.
|
|
142
|
-
await this.storage.deletePrefix(definitionPaths.prefix(guid));
|
|
143
|
-
await this.data.definitions.delete(ctx, guid);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Janitor — delete records stuck in 'pending' for longer than ageMs and
|
|
147
|
-
* any blobs they may have written. Safe to run on a schedule.
|
|
148
|
-
* Runs under SYSTEM_CONTEXT; callers don't pass one.
|
|
149
|
-
*
|
|
150
|
-
* @returns Number of records reclaimed.
|
|
151
|
-
*/
|
|
152
|
-
async gcStalePending(ageMs = PENDING_GC_AGE_MS) {
|
|
153
|
-
const cutoff = new Date(Date.now() - ageMs).toISOString();
|
|
154
|
-
const stale = await this.data.definitions.listStalePending(SYSTEM_CONTEXT, cutoff);
|
|
155
|
-
for (const record of stale) {
|
|
156
|
-
await this.storage.deletePrefix(definitionPaths.prefix(record.guid));
|
|
157
|
-
await this.data.definitions.delete(SYSTEM_CONTEXT, record.guid);
|
|
158
|
-
}
|
|
159
|
-
return stale.length;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
//# sourceMappingURL=service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/definitions/service.ts"],"names":[],"mappings":"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"}
|