@ankhorage/studio 0.1.5 → 0.2.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/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/host/http/secretRoutes.d.ts +7 -0
- package/dist/host/http/secretRoutes.d.ts.map +1 -0
- package/dist/host/http/secretRoutes.js +165 -0
- package/dist/host/http/secretRoutes.js.map +1 -0
- package/dist/host/index.d.ts +4 -0
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js +4 -0
- package/dist/host/index.js.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.d.ts.map +1 -1
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js +9 -7
- package/dist/host/layout/auth/resolveAuthLayoutPlan.js.map +1 -1
- package/dist/host/orchestrator/infraValidation.js +1 -1
- package/dist/host/orchestrator/infraValidation.js.map +1 -1
- package/dist/host/secrets/bunSupabaseVaultClient.d.ts +12 -0
- package/dist/host/secrets/bunSupabaseVaultClient.d.ts.map +1 -0
- package/dist/host/secrets/bunSupabaseVaultClient.js +43 -0
- package/dist/host/secrets/bunSupabaseVaultClient.js.map +1 -0
- package/dist/host/secrets/projectSecretService.d.ts +81 -0
- package/dist/host/secrets/projectSecretService.d.ts.map +1 -0
- package/dist/host/secrets/projectSecretService.js +240 -0
- package/dist/host/secrets/projectSecretService.js.map +1 -0
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts +12 -0
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts.map +1 -0
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js +68 -0
- package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js.map +1 -0
- package/dist/manifestNavigatorPreviewModel.d.ts +1 -1
- package/dist/manifestNavigatorPreviewModel.d.ts.map +1 -1
- package/dist/manifestNavigatorPreviewModel.js +2 -1
- package/dist/manifestNavigatorPreviewModel.js.map +1 -1
- package/dist/manifestSync.d.ts.map +1 -1
- package/dist/manifestSync.js +0 -1
- package/dist/manifestSync.js.map +1 -1
- package/dist/studioAdminRouteModel.d.ts +6 -5
- package/dist/studioAdminRouteModel.d.ts.map +1 -1
- package/dist/studioAdminRouteModel.js +1 -1
- package/dist/studioAdminRouteModel.js.map +1 -1
- package/package.json +19 -10
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ankhorage
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# @ankhorage/studio
|
|
5
5
|
|
|
6
|
-
         
|
|
7
7
|
|
|
8
8
|
Standalone Studio authoring package for Ankhorage apps.
|
|
9
9
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { FastifyInstance } from 'fastify';
|
|
2
|
+
import type { ProjectManager } from '../orchestrator/projectManager';
|
|
3
|
+
export declare function registerProjectSecretRoutes(fastify: FastifyInstance, options: {
|
|
4
|
+
readonly projectManager: ProjectManager;
|
|
5
|
+
readonly workspaceRoot: string;
|
|
6
|
+
}): void;
|
|
7
|
+
//# sourceMappingURL=secretRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretRoutes.d.ts","sourceRoot":"","sources":["../../../src/host/http/secretRoutes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE;IACP,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,GACA,IAAI,CAkJN"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { ProjectSecretService } from '../secrets/projectSecretService';
|
|
2
|
+
export function registerProjectSecretRoutes(fastify, options) {
|
|
3
|
+
const service = new ProjectSecretService(options);
|
|
4
|
+
fastify.get('/api/projects/:id/secrets', async (request, reply) => {
|
|
5
|
+
const { id } = request.params;
|
|
6
|
+
const query = request.query;
|
|
7
|
+
return sendSecretResult(reply, await service.list({
|
|
8
|
+
projectId: id,
|
|
9
|
+
environment: query.environment,
|
|
10
|
+
kind: query.kind,
|
|
11
|
+
provider: query.provider,
|
|
12
|
+
}));
|
|
13
|
+
});
|
|
14
|
+
fastify.get('/api/projects/:id/secrets/metadata', async (request, reply) => {
|
|
15
|
+
const { id } = request.params;
|
|
16
|
+
const query = request.query;
|
|
17
|
+
if (typeof query.ref !== 'string' || query.ref.trim().length === 0) {
|
|
18
|
+
return reply.status(400).send({
|
|
19
|
+
error: { code: 'invalid_reference', message: 'A secret ref query parameter is required.' },
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return sendSecretResult(reply, await service.getMetadata({
|
|
23
|
+
projectId: id,
|
|
24
|
+
environment: query.environment,
|
|
25
|
+
ref: query.ref,
|
|
26
|
+
}));
|
|
27
|
+
});
|
|
28
|
+
fastify.post('/api/projects/:id/secrets', async (request, reply) => {
|
|
29
|
+
const { id } = request.params;
|
|
30
|
+
const body = asRecord(request.body);
|
|
31
|
+
const payload = readSecretPayload(body.payload);
|
|
32
|
+
if (!payload || typeof body.ref !== 'string' || typeof body.kind !== 'string') {
|
|
33
|
+
return reply.status(400).send({
|
|
34
|
+
error: {
|
|
35
|
+
code: 'invalid_payload',
|
|
36
|
+
message: 'Secret creation requires ref, kind, and a non-empty string payload object.',
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return sendSecretResult(reply, await service.create({
|
|
41
|
+
projectId: id,
|
|
42
|
+
environment: readOptionalString(body.environment),
|
|
43
|
+
ref: body.ref,
|
|
44
|
+
kind: body.kind,
|
|
45
|
+
provider: readOptionalString(body.provider),
|
|
46
|
+
payload,
|
|
47
|
+
}));
|
|
48
|
+
});
|
|
49
|
+
fastify.put('/api/projects/:id/secrets', async (request, reply) => {
|
|
50
|
+
const { id } = request.params;
|
|
51
|
+
const body = asRecord(request.body);
|
|
52
|
+
const payload = readSecretPayload(body.payload);
|
|
53
|
+
if (!payload || typeof body.ref !== 'string') {
|
|
54
|
+
return reply.status(400).send({
|
|
55
|
+
error: {
|
|
56
|
+
code: 'invalid_payload',
|
|
57
|
+
message: 'Secret replacement requires ref and a complete non-empty string payload object.',
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return sendSecretResult(reply, await service.replace({
|
|
62
|
+
projectId: id,
|
|
63
|
+
environment: readOptionalString(body.environment),
|
|
64
|
+
ref: body.ref,
|
|
65
|
+
payload,
|
|
66
|
+
}));
|
|
67
|
+
});
|
|
68
|
+
fastify.delete('/api/projects/:id/secrets', async (request, reply) => {
|
|
69
|
+
const { id } = request.params;
|
|
70
|
+
const query = request.query;
|
|
71
|
+
if (typeof query.ref !== 'string' || query.ref.trim().length === 0) {
|
|
72
|
+
return reply.status(400).send({
|
|
73
|
+
error: { code: 'invalid_reference', message: 'A secret ref query parameter is required.' },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return sendSecretResult(reply, await service.remove({
|
|
77
|
+
projectId: id,
|
|
78
|
+
environment: query.environment,
|
|
79
|
+
ref: query.ref,
|
|
80
|
+
}));
|
|
81
|
+
});
|
|
82
|
+
fastify.post('/api/projects/:id/auth/oauth/:providerId', async (request, reply) => {
|
|
83
|
+
const { id, providerId } = request.params;
|
|
84
|
+
const body = asRecord(request.body);
|
|
85
|
+
const payload = readSecretPayload(body.payload);
|
|
86
|
+
if (!payload) {
|
|
87
|
+
return reply.status(400).send({
|
|
88
|
+
error: {
|
|
89
|
+
code: 'invalid_payload',
|
|
90
|
+
message: 'OAuth configuration requires a complete non-empty credential payload.',
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
const result = await service.configureOAuthProvider({
|
|
95
|
+
projectId: id,
|
|
96
|
+
providerId,
|
|
97
|
+
payload,
|
|
98
|
+
environment: readOptionalString(body.environment),
|
|
99
|
+
credentialsRef: readOptionalString(body.credentialsRef),
|
|
100
|
+
enabled: typeof body.enabled === 'boolean' ? body.enabled : undefined,
|
|
101
|
+
label: readOptionalString(body.label),
|
|
102
|
+
scopes: readStringArray(body.scopes),
|
|
103
|
+
callbackRoute: readOptionalString(body.callbackRoute),
|
|
104
|
+
});
|
|
105
|
+
if (!result.ok) {
|
|
106
|
+
const status = result.state === 'secret_saved_manifest_failed' ? 409 : 400;
|
|
107
|
+
return reply.status(status).send(result);
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function sendSecretResult(reply, result) {
|
|
113
|
+
if (result.ok)
|
|
114
|
+
return result;
|
|
115
|
+
const status = resolveErrorStatus(result.error.code);
|
|
116
|
+
return reply.status(status).send({
|
|
117
|
+
ok: false,
|
|
118
|
+
error: {
|
|
119
|
+
code: result.error.code,
|
|
120
|
+
message: result.error.message,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function resolveErrorStatus(code) {
|
|
125
|
+
if (code === 'not_found')
|
|
126
|
+
return 404;
|
|
127
|
+
if (code === 'conflict')
|
|
128
|
+
return 409;
|
|
129
|
+
if (code === 'permission_denied')
|
|
130
|
+
return 403;
|
|
131
|
+
if (code === 'unavailable' || code === 'provider_error')
|
|
132
|
+
return 503;
|
|
133
|
+
return 400;
|
|
134
|
+
}
|
|
135
|
+
function asRecord(value) {
|
|
136
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
137
|
+
? value
|
|
138
|
+
: {};
|
|
139
|
+
}
|
|
140
|
+
function readOptionalString(value) {
|
|
141
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
|
|
142
|
+
}
|
|
143
|
+
function readStringArray(value) {
|
|
144
|
+
if (!Array.isArray(value))
|
|
145
|
+
return undefined;
|
|
146
|
+
const result = [];
|
|
147
|
+
for (const item of value) {
|
|
148
|
+
if (typeof item !== 'string')
|
|
149
|
+
return undefined;
|
|
150
|
+
const normalized = item.trim();
|
|
151
|
+
if (normalized)
|
|
152
|
+
result.push(normalized);
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
function readSecretPayload(value) {
|
|
157
|
+
const record = asRecord(value);
|
|
158
|
+
const entries = Object.entries(record);
|
|
159
|
+
if (entries.length === 0 ||
|
|
160
|
+
entries.some(([field, fieldValue]) => !field.trim() || typeof fieldValue !== 'string' || !fieldValue)) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=secretRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretRoutes.js","sourceRoot":"","sources":["../../../src/host/http/secretRoutes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,MAAM,UAAU,2BAA2B,CACzC,OAAwB,EACxB,OAGC;IAED,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QAChF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAIrB,CAAC;QAEF,OAAO,gBAAgB,CACrB,KAAK,EACL,MAAM,OAAO,CAAC,IAAI,CAAC;YACjB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QACzF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAgD,CAAC;QACvE,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2CAA2C,EAAE;aAC3F,CAAC,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CACrB,KAAK,EACL,MAAM,OAAO,CAAC,WAAW,CAAC;YACxB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QACjF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9E,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,4EAA4E;iBACtF;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CACrB,KAAK,EACL,MAAM,OAAO,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC3C,OAAO;SACR,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QAChF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EACL,iFAAiF;iBACpF;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CACrB,KAAK,EACL,MAAM,OAAO,CAAC,OAAO,CAAC;YACpB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO;SACR,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QACnF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAgD,CAAC;QACvE,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2CAA2C,EAAE;aAC3F,CAAC,CAAC;QACL,CAAC;QAED,OAAO,gBAAgB,CACrB,KAAK,EACL,MAAM,OAAO,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,GAAG,EAAE,KAAK,CAAC,GAAG;SACf,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CACV,0CAA0C,EAC1C,KAAK,EAAE,OAAuB,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAA4C,CAAC;QAChF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC5B,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,uEAAuE;iBACjF;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC;YAClD,SAAS,EAAE,EAAE;YACb,UAAU;YACV,OAAO;YACP,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,cAAc,EAAE,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC;YACvD,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACrE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,aAAa,EAAE,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;SACtD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,KAAK,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAC3E,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAQ,KAAmB,EAAE,MAAgC;IACpF,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAE7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QAC/B,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YACvB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;SAC9B;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC;IACrC,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,GAAG,CAAC;IACpE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAA2B,EAAE,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CACxF,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAA2B,CAAC,CAAC;AAC9E,CAAC"}
|
package/dist/host/index.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
export { createStudioHost, type CreateStudioHostOptions, type StudioHost, } from './createStudioHost';
|
|
2
|
+
export { registerProjectSecretRoutes } from './http/secretRoutes';
|
|
2
3
|
export { isOriginAllowed } from './http/security';
|
|
3
4
|
export { createStudioHostServer, startStudioHostServer, type StartStudioHostServerOptions, } from './http/server';
|
|
4
5
|
export { ModuleManager } from './orchestrator/moduleManager';
|
|
5
6
|
export { ProjectManager } from './orchestrator/projectManager';
|
|
6
7
|
export { assertProjectId, getAppsRoot, getProjectPath } from './orchestrator/projectPaths';
|
|
7
8
|
export { ProjectStore, type ProjectSummary } from './orchestrator/projectStore';
|
|
9
|
+
export { type BunSupabaseVaultClient, createBunSupabaseVaultClient, } from './secrets/bunSupabaseVaultClient';
|
|
10
|
+
export { configureManifestOAuthProvider, type ConfigureOAuthProviderInput, type ConfigureOAuthProviderResult, ProjectSecretService, type ProjectSecretServiceOptions, } from './secrets/projectSecretService';
|
|
11
|
+
export { resolveProjectSecretDatabaseUrl } from './secrets/resolveProjectSecretDatabaseUrl';
|
|
8
12
|
export { getProjectTemplate, getTemplateSummaries } from './templateRegistry';
|
|
9
13
|
export { resolveWorkspaceRoot } from './utils/workspaceRoot';
|
|
10
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/host/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EACL,KAAK,sBAAsB,EAC3B,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/host/index.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
export { createStudioHost, } from './createStudioHost';
|
|
2
|
+
export { registerProjectSecretRoutes } from './http/secretRoutes';
|
|
2
3
|
export { isOriginAllowed } from './http/security';
|
|
3
4
|
export { createStudioHostServer, startStudioHostServer, } from './http/server';
|
|
4
5
|
export { ModuleManager } from './orchestrator/moduleManager';
|
|
5
6
|
export { ProjectManager } from './orchestrator/projectManager';
|
|
6
7
|
export { assertProjectId, getAppsRoot, getProjectPath } from './orchestrator/projectPaths';
|
|
7
8
|
export { ProjectStore } from './orchestrator/projectStore';
|
|
9
|
+
export { createBunSupabaseVaultClient, } from './secrets/bunSupabaseVaultClient';
|
|
10
|
+
export { configureManifestOAuthProvider, ProjectSecretService, } from './secrets/projectSecretService';
|
|
11
|
+
export { resolveProjectSecretDatabaseUrl } from './secrets/resolveProjectSecretDatabaseUrl';
|
|
8
12
|
export { getProjectTemplate, getTemplateSummaries } from './templateRegistry';
|
|
9
13
|
export { resolveWorkspaceRoot } from './utils/workspaceRoot';
|
|
10
14
|
//# sourceMappingURL=index.js.map
|
package/dist/host/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAuB,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAuB,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAEL,4BAA4B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,8BAA8B,EAG9B,oBAAoB,GAErB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAuthLayoutPlan.d.ts","sourceRoot":"","sources":["../../../../src/host/layout/auth/resolveAuthLayoutPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"resolveAuthLayoutPlan.d.ts","sourceRoot":"","sources":["../../../../src/host/layout/auth/resolveAuthLayoutPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAGnB,MAAM,sBAAsB,CAAC;AAa9B,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,KAAK,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAEhF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAChC;AAED,UAAU,kBAAkB;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,eAAe,EAAE,qBAAqB,EAAE,CAAC;CAC1C;AAED,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,aAAa,CAAC;IAC5B,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAE5E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,cAAc,CA0FvF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveAuthFlow, } from '@ankhorage/contracts';
|
|
1
2
|
import path from 'path';
|
|
2
3
|
const APP_ROOT_REL = 'src/app';
|
|
3
4
|
const AUTH_ADAPTER_FILE_PATH = 'src/auth/adapter.ts';
|
|
@@ -14,10 +15,11 @@ export function resolveAuthLayoutPlan(input) {
|
|
|
14
15
|
if (auth?.scope !== 'global' || auth.provider !== 'supabase') {
|
|
15
16
|
return createDisabledPlan();
|
|
16
17
|
}
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
18
|
+
const flow = resolveAuthFlow(auth.flow);
|
|
19
|
+
const signInRoute = flow.signInRoute.trim();
|
|
20
|
+
const signUpRoute = flow.signUpRoute?.trim() ?? '';
|
|
21
|
+
const signOutRoute = flow.signOutRoute?.trim() ?? '';
|
|
22
|
+
const postSignInRoute = flow.postSignInRoute.trim();
|
|
21
23
|
if (!signInRoute || !signUpRoute || !signOutRoute || !postSignInRoute) {
|
|
22
24
|
return createDisabledPlan();
|
|
23
25
|
}
|
|
@@ -28,7 +30,7 @@ export function resolveAuthLayoutPlan(input) {
|
|
|
28
30
|
if (!signInRouteName || !signUpRouteName || !signOutRouteName || !postSignInRouteName) {
|
|
29
31
|
return createDisabledPlan();
|
|
30
32
|
}
|
|
31
|
-
const publicRoutes = collectPublicRoutes(manifest, signInRouteName, signUpRouteName);
|
|
33
|
+
const publicRoutes = collectPublicRoutes(manifest, flow.unauthorizedRoute, signInRouteName, signUpRouteName);
|
|
32
34
|
const groupedNavigators = getGroupedAuthNavigators(manifest);
|
|
33
35
|
const hasSignOutRoute = groupedNavigators
|
|
34
36
|
? groupedNavigators.appNavigator.routes.some((route) => route.name === signOutRouteName)
|
|
@@ -220,8 +222,8 @@ function buildGeneratedAuthRoute(args) {
|
|
|
220
222
|
...(navigatorType === 'tabs' ? { hideInTabBar: true } : {}),
|
|
221
223
|
};
|
|
222
224
|
}
|
|
223
|
-
function collectPublicRoutes(manifest, signInRouteName, signUpRouteName) {
|
|
224
|
-
const unauthorizedRouteName = authFlowPathToRouteName(
|
|
225
|
+
function collectPublicRoutes(manifest, unauthorizedRoute, signInRouteName, signUpRouteName) {
|
|
226
|
+
const unauthorizedRouteName = authFlowPathToRouteName(unauthorizedRoute?.trim() ?? signInRouteName);
|
|
225
227
|
const publicRoutes = new Set([
|
|
226
228
|
signInRouteName,
|
|
227
229
|
signUpRouteName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAuthLayoutPlan.js","sourceRoot":"","sources":["../../../../src/host/layout/auth/resolveAuthLayoutPlan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveAuthLayoutPlan.js","sourceRoot":"","sources":["../../../../src/host/layout/auth/resolveAuthLayoutPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export function validateInfraSupport(manifest) {
|
|
|
33
33
|
supported: AUTH_SCOPES,
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
|
-
const authzEngine = manifest.auth?.authorization
|
|
36
|
+
const authzEngine = manifest.auth?.authorization?.engine;
|
|
37
37
|
if (authzEngine && !isSupported(authzEngine, AUTHZ_ENGINES)) {
|
|
38
38
|
warnings.push(warningForUnsupportedValue({
|
|
39
39
|
path: 'infra.auth.authorization.engine',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infraValidation.js","sourceRoot":"","sources":["../../../src/host/orchestrator/infraValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrD,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrD,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC7C,IAAI,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/D,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,cAAc;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACvC,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,WAAW;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"infraValidation.js","sourceRoot":"","sources":["../../../src/host/orchestrator/infraValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,UAAU,oBAAoB,CAAC,QAAuB;IAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrD,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACrD,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3E,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,gBAAgB;YACvB,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC7C,IAAI,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;QAC/D,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,cAAc;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACvC,IAAI,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,WAAW;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC;IACzD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CACX,0BAA0B,CAAC;YACzB,IAAI,EAAE,iCAAiC;YACvC,KAAK,EAAE,WAAW;YAClB,SAAS,EAAE,aAAa;SACzB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,0BAA0B,CAAC,IAInC;IACC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACxC,OAAO,GAAG,IAAI,KAAK,KAAK,6EAA6E,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3I,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,SAA4B;IAC9D,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAyB;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SupabaseVaultSqlClient } from '@ankhorage/supabase-vault';
|
|
2
|
+
export interface BunSupabaseVaultClient extends SupabaseVaultSqlClient {
|
|
3
|
+
close(): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Trusted server-only PostgreSQL transport for the Supabase Vault adapter.
|
|
7
|
+
*
|
|
8
|
+
* The connection URL must come from Studio host configuration or the generated local Supabase
|
|
9
|
+
* environment. It must never be read from an application manifest or exposed to browser code.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createBunSupabaseVaultClient(databaseUrl: string): BunSupabaseVaultClient;
|
|
12
|
+
//# sourceMappingURL=bunSupabaseVaultClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bunSupabaseVaultClient.d.ts","sourceRoot":"","sources":["../../../src/host/secrets/bunSupabaseVaultClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB,CAyCxF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SQL } from 'bun';
|
|
2
|
+
/**
|
|
3
|
+
* Trusted server-only PostgreSQL transport for the Supabase Vault adapter.
|
|
4
|
+
*
|
|
5
|
+
* The connection URL must come from Studio host configuration or the generated local Supabase
|
|
6
|
+
* environment. It must never be read from an application manifest or exposed to browser code.
|
|
7
|
+
*/
|
|
8
|
+
export function createBunSupabaseVaultClient(databaseUrl) {
|
|
9
|
+
const normalizedUrl = databaseUrl.trim();
|
|
10
|
+
if (!normalizedUrl) {
|
|
11
|
+
throw new Error('Supabase Vault requires a trusted PostgreSQL database URL.');
|
|
12
|
+
}
|
|
13
|
+
const sql = new SQL(normalizedUrl, {
|
|
14
|
+
adapter: 'postgres',
|
|
15
|
+
max: 4,
|
|
16
|
+
connectionTimeout: 10,
|
|
17
|
+
});
|
|
18
|
+
const query = async (statement, parameters = []) => {
|
|
19
|
+
const rawRows = await sql.unsafe(statement, [...parameters]);
|
|
20
|
+
return { rows: assertRows(rawRows) };
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
query,
|
|
24
|
+
transaction(operation) {
|
|
25
|
+
return sql.begin((transaction) => operation({
|
|
26
|
+
async query(statement, parameters = []) {
|
|
27
|
+
const rawRows = await transaction.unsafe(statement, [...parameters]);
|
|
28
|
+
return { rows: assertRows(rawRows) };
|
|
29
|
+
},
|
|
30
|
+
}));
|
|
31
|
+
},
|
|
32
|
+
close() {
|
|
33
|
+
return sql.close({ timeout: 5 });
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function assertRows(value) {
|
|
38
|
+
if (!Array.isArray(value)) {
|
|
39
|
+
throw new Error('Supabase Vault query returned an unexpected result shape.');
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=bunSupabaseVaultClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bunSupabaseVaultClient.js","sourceRoot":"","sources":["../../../src/host/secrets/bunSupabaseVaultClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAM1B;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAmB;IAC9D,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,EAAE;QACjC,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,CAAC;QACN,iBAAiB,EAAE,EAAE;KACtB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,EACjB,SAAiB,EACjB,aAAiC,EAAE,EACM,EAAE;QAC3C,MAAM,OAAO,GAAY,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAO,OAAO,CAAC,EAAE,CAAC;IAC7C,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,WAAW,CACT,SAAmE;YAEnE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAC/B,SAAS,CAAC;gBACR,KAAK,CAAC,KAAK,CACT,SAAiB,EACjB,aAAiC,EAAE;oBAEnC,MAAM,OAAO,GAAY,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAC9E,OAAO,EAAE,IAAI,EAAE,UAAU,CAAO,OAAO,CAAC,EAAE,CAAC;gBAC7C,CAAC;aACF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,KAAK;YACH,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAuC,KAAc;IACtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,KAAwB,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { type AppManifest, type AuthOAuthProviderConfig, type AuthOAuthProviderId } from '@ankhorage/contracts';
|
|
2
|
+
import { type SecretMetadata, type SecretPayload, type SecretStoreResult } from '@ankhorage/contracts/secrets';
|
|
3
|
+
import type { ProjectManager } from '../orchestrator/projectManager';
|
|
4
|
+
import { type BunSupabaseVaultClient } from './bunSupabaseVaultClient';
|
|
5
|
+
export interface ProjectSecretServiceOptions {
|
|
6
|
+
readonly projectManager: ProjectManager;
|
|
7
|
+
readonly workspaceRoot: string;
|
|
8
|
+
readonly createClient?: (databaseUrl: string) => BunSupabaseVaultClient;
|
|
9
|
+
readonly resolveDatabaseUrl?: (projectPath: string) => Promise<string>;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfigureOAuthProviderInput {
|
|
12
|
+
readonly projectId: string;
|
|
13
|
+
readonly environment?: string;
|
|
14
|
+
readonly providerId: AuthOAuthProviderId;
|
|
15
|
+
readonly payload: SecretPayload;
|
|
16
|
+
readonly credentialsRef?: string;
|
|
17
|
+
readonly enabled?: boolean;
|
|
18
|
+
readonly label?: string;
|
|
19
|
+
readonly scopes?: readonly string[];
|
|
20
|
+
readonly callbackRoute?: string;
|
|
21
|
+
}
|
|
22
|
+
export type ConfigureOAuthProviderResult = {
|
|
23
|
+
readonly ok: true;
|
|
24
|
+
readonly state: 'saved';
|
|
25
|
+
readonly metadata: SecretMetadata;
|
|
26
|
+
readonly credentialsRef: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly ok: false;
|
|
29
|
+
readonly state: 'secret_write_failed' | 'secret_saved_manifest_failed';
|
|
30
|
+
readonly error: {
|
|
31
|
+
readonly code: string;
|
|
32
|
+
readonly message: string;
|
|
33
|
+
};
|
|
34
|
+
readonly metadata?: SecretMetadata;
|
|
35
|
+
readonly credentialsRef?: string;
|
|
36
|
+
};
|
|
37
|
+
export declare class ProjectSecretService {
|
|
38
|
+
private readonly projectManager;
|
|
39
|
+
private readonly workspaceRoot;
|
|
40
|
+
private readonly createClient;
|
|
41
|
+
private readonly resolveDatabaseUrl;
|
|
42
|
+
constructor(options: ProjectSecretServiceOptions);
|
|
43
|
+
list(input: {
|
|
44
|
+
readonly projectId: string;
|
|
45
|
+
readonly environment?: string;
|
|
46
|
+
readonly kind?: string;
|
|
47
|
+
readonly provider?: string;
|
|
48
|
+
}): Promise<SecretStoreResult<readonly SecretMetadata[]>>;
|
|
49
|
+
getMetadata(input: {
|
|
50
|
+
readonly projectId: string;
|
|
51
|
+
readonly environment?: string;
|
|
52
|
+
readonly ref: string;
|
|
53
|
+
}): Promise<SecretStoreResult<SecretMetadata>>;
|
|
54
|
+
create(input: {
|
|
55
|
+
readonly projectId: string;
|
|
56
|
+
readonly environment?: string;
|
|
57
|
+
readonly ref: string;
|
|
58
|
+
readonly kind: string;
|
|
59
|
+
readonly provider?: string;
|
|
60
|
+
readonly payload: SecretPayload;
|
|
61
|
+
}): Promise<SecretStoreResult<SecretMetadata>>;
|
|
62
|
+
replace(input: {
|
|
63
|
+
readonly projectId: string;
|
|
64
|
+
readonly environment?: string;
|
|
65
|
+
readonly ref: string;
|
|
66
|
+
readonly payload: SecretPayload;
|
|
67
|
+
}): Promise<SecretStoreResult<SecretMetadata>>;
|
|
68
|
+
remove(input: {
|
|
69
|
+
readonly projectId: string;
|
|
70
|
+
readonly environment?: string;
|
|
71
|
+
readonly ref: string;
|
|
72
|
+
}): Promise<SecretStoreResult>;
|
|
73
|
+
configureOAuthProvider(input: ConfigureOAuthProviderInput): Promise<ConfigureOAuthProviderResult>;
|
|
74
|
+
private readEditableManifest;
|
|
75
|
+
private withAdapter;
|
|
76
|
+
}
|
|
77
|
+
export declare function configureManifestOAuthProvider(manifest: AppManifest, input: {
|
|
78
|
+
readonly provider: AuthOAuthProviderConfig;
|
|
79
|
+
readonly callbackRoute?: string;
|
|
80
|
+
}): AppManifest;
|
|
81
|
+
//# sourceMappingURL=projectSecretService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectSecretService.d.ts","sourceRoot":"","sources":["../../../src/host/secrets/projectSecretService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { DEFAULT_AUTH_FLOW, } from '@ankhorage/contracts';
|
|
2
|
+
import { normalizeSecretRef, } from '@ankhorage/contracts/secrets';
|
|
3
|
+
import { createInfraSecretStoreAdapter } from '@ankhorage/infra';
|
|
4
|
+
import { getSupabaseOAuthProviderDefinition, validateSupabaseOAuthSecretPayload, } from '@ankhorage/supabase-auth';
|
|
5
|
+
import { getProjectPath } from '../orchestrator/projectPaths';
|
|
6
|
+
import { createBunSupabaseVaultClient, } from './bunSupabaseVaultClient';
|
|
7
|
+
import { resolveProjectSecretDatabaseUrl } from './resolveProjectSecretDatabaseUrl';
|
|
8
|
+
export class ProjectSecretService {
|
|
9
|
+
projectManager;
|
|
10
|
+
workspaceRoot;
|
|
11
|
+
createClient;
|
|
12
|
+
resolveDatabaseUrl;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.projectManager = options.projectManager;
|
|
15
|
+
this.workspaceRoot = options.workspaceRoot;
|
|
16
|
+
this.createClient = options.createClient ?? createBunSupabaseVaultClient;
|
|
17
|
+
this.resolveDatabaseUrl =
|
|
18
|
+
options.resolveDatabaseUrl ??
|
|
19
|
+
((projectPath) => resolveProjectSecretDatabaseUrl({ projectPath }));
|
|
20
|
+
}
|
|
21
|
+
list(input) {
|
|
22
|
+
return this.withAdapter(input.projectId, (adapter) => adapter.list({
|
|
23
|
+
scope: createScope(input.projectId, input.environment),
|
|
24
|
+
...(input.kind ? { kind: input.kind } : {}),
|
|
25
|
+
...(input.provider ? { provider: input.provider } : {}),
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
getMetadata(input) {
|
|
29
|
+
return this.withAdapter(input.projectId, (adapter) => adapter.getMetadata({
|
|
30
|
+
scope: createScope(input.projectId, input.environment),
|
|
31
|
+
ref: input.ref,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
create(input) {
|
|
35
|
+
return this.withAdapter(input.projectId, (adapter) => adapter.create({
|
|
36
|
+
scope: createScope(input.projectId, input.environment),
|
|
37
|
+
ref: input.ref,
|
|
38
|
+
kind: input.kind,
|
|
39
|
+
...(input.provider ? { provider: input.provider } : {}),
|
|
40
|
+
payload: input.payload,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
replace(input) {
|
|
44
|
+
return this.withAdapter(input.projectId, (adapter) => adapter.replace({
|
|
45
|
+
scope: createScope(input.projectId, input.environment),
|
|
46
|
+
ref: input.ref,
|
|
47
|
+
payload: input.payload,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
remove(input) {
|
|
51
|
+
return this.withAdapter(input.projectId, (adapter) => adapter.remove({
|
|
52
|
+
scope: createScope(input.projectId, input.environment),
|
|
53
|
+
ref: input.ref,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
async configureOAuthProvider(input) {
|
|
57
|
+
const definition = getSupabaseOAuthProviderDefinition(input.providerId);
|
|
58
|
+
if (!definition) {
|
|
59
|
+
return {
|
|
60
|
+
ok: false,
|
|
61
|
+
state: 'secret_write_failed',
|
|
62
|
+
error: {
|
|
63
|
+
code: 'invalid_config',
|
|
64
|
+
message: `OAuth provider "${input.providerId}" is not supported by the current Supabase provider registry.`,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const payloadResult = validateSupabaseOAuthSecretPayload(input.providerId, input.payload);
|
|
69
|
+
if (!payloadResult.ok) {
|
|
70
|
+
return {
|
|
71
|
+
ok: false,
|
|
72
|
+
state: 'secret_write_failed',
|
|
73
|
+
error: toPublicError(payloadResult.error),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const refResult = normalizeSecretRef(input.credentialsRef ?? `auth/oauth/${definition.id}`);
|
|
77
|
+
if (!refResult.ok) {
|
|
78
|
+
return {
|
|
79
|
+
ok: false,
|
|
80
|
+
state: 'secret_write_failed',
|
|
81
|
+
error: toPublicError(refResult.error),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const scope = createScope(input.projectId, input.environment);
|
|
85
|
+
const secretResult = await this.withAdapter(input.projectId, async (adapter) => {
|
|
86
|
+
const existing = await adapter.getMetadata({ scope, ref: refResult.data });
|
|
87
|
+
if (existing.ok) {
|
|
88
|
+
return adapter.replace({ scope, ref: refResult.data, payload: payloadResult.data });
|
|
89
|
+
}
|
|
90
|
+
if (existing.error.code !== 'not_found')
|
|
91
|
+
return existing;
|
|
92
|
+
return adapter.create({
|
|
93
|
+
scope,
|
|
94
|
+
ref: refResult.data,
|
|
95
|
+
kind: 'oauth',
|
|
96
|
+
provider: definition.id,
|
|
97
|
+
payload: payloadResult.data,
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
if (!secretResult.ok) {
|
|
101
|
+
return {
|
|
102
|
+
ok: false,
|
|
103
|
+
state: 'secret_write_failed',
|
|
104
|
+
error: toPublicError(secretResult.error),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const manifest = await this.readEditableManifest(input.projectId);
|
|
108
|
+
const nextManifest = configureManifestOAuthProvider(manifest, {
|
|
109
|
+
provider: {
|
|
110
|
+
id: definition.id,
|
|
111
|
+
label: normalizeOptionalText(input.label) ?? definition.label,
|
|
112
|
+
enabled: input.enabled ?? true,
|
|
113
|
+
scopes: normalizeScopes(input.scopes ?? definition.defaultScopes),
|
|
114
|
+
credentialsRef: refResult.data,
|
|
115
|
+
},
|
|
116
|
+
callbackRoute: input.callbackRoute,
|
|
117
|
+
});
|
|
118
|
+
try {
|
|
119
|
+
await this.projectManager.saveStudioManifest({
|
|
120
|
+
projectId: input.projectId,
|
|
121
|
+
manifest: nextManifest,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
state: 'secret_saved_manifest_failed',
|
|
128
|
+
metadata: secretResult.data,
|
|
129
|
+
credentialsRef: refResult.data,
|
|
130
|
+
error: {
|
|
131
|
+
code: 'manifest_write_failed',
|
|
132
|
+
message: 'OAuth credentials were saved, but the manifest update failed. Retry the manifest save or remove the stored secret explicitly.',
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
ok: true,
|
|
138
|
+
state: 'saved',
|
|
139
|
+
metadata: secretResult.data,
|
|
140
|
+
credentialsRef: refResult.data,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async readEditableManifest(projectId) {
|
|
144
|
+
try {
|
|
145
|
+
return await this.projectManager.getStudioManifest(projectId);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
return this.projectManager.getProjectManifest(projectId);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async withAdapter(projectId, operation) {
|
|
152
|
+
let client = null;
|
|
153
|
+
try {
|
|
154
|
+
const manifest = await this.readEditableManifest(projectId);
|
|
155
|
+
const projectPath = getProjectPath(this.workspaceRoot, projectId);
|
|
156
|
+
const databaseUrl = await this.resolveDatabaseUrl(projectPath);
|
|
157
|
+
client = this.createClient(databaseUrl);
|
|
158
|
+
const adapter = createInfraSecretStoreAdapter({
|
|
159
|
+
manifest: manifest.infra,
|
|
160
|
+
providers: {
|
|
161
|
+
supabaseVault: { client },
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
if (!adapter) {
|
|
165
|
+
return {
|
|
166
|
+
ok: false,
|
|
167
|
+
error: {
|
|
168
|
+
code: 'invalid_config',
|
|
169
|
+
message: 'This project does not configure infra.secretStore.provider.',
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return await operation(adapter);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return {
|
|
177
|
+
ok: false,
|
|
178
|
+
error: {
|
|
179
|
+
code: 'unavailable',
|
|
180
|
+
message: 'The project secret store is unavailable. Verify local Supabase is running and the trusted database URL is configured.',
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
await client?.close();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export function configureManifestOAuthProvider(manifest, input) {
|
|
190
|
+
const currentAuth = manifest.infra.auth;
|
|
191
|
+
const currentOAuth = currentAuth?.oauth;
|
|
192
|
+
const existingCallbackRoute = currentOAuth ? currentOAuth.callbackRoute : undefined;
|
|
193
|
+
const callbackRoute = normalizeOptionalText(input.callbackRoute) ??
|
|
194
|
+
normalizeOptionalText(existingCallbackRoute) ??
|
|
195
|
+
'/auth/callback';
|
|
196
|
+
const providers = [...(currentOAuth?.providers ?? [])];
|
|
197
|
+
const existingIndex = providers.findIndex((provider) => provider.id === input.provider.id);
|
|
198
|
+
if (existingIndex >= 0)
|
|
199
|
+
providers[existingIndex] = input.provider;
|
|
200
|
+
else
|
|
201
|
+
providers.push(input.provider);
|
|
202
|
+
return {
|
|
203
|
+
...manifest,
|
|
204
|
+
infra: {
|
|
205
|
+
...manifest.infra,
|
|
206
|
+
auth: {
|
|
207
|
+
...(currentAuth ?? {
|
|
208
|
+
provider: 'supabase',
|
|
209
|
+
scope: 'global',
|
|
210
|
+
flow: { ...DEFAULT_AUTH_FLOW },
|
|
211
|
+
signIn: { identifiers: ['email'] },
|
|
212
|
+
}),
|
|
213
|
+
oauth: {
|
|
214
|
+
enabled: true,
|
|
215
|
+
callbackRoute,
|
|
216
|
+
providers,
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
function createScope(projectId, environment = 'local') {
|
|
223
|
+
return {
|
|
224
|
+
projectId,
|
|
225
|
+
environment: normalizeOptionalText(environment) ?? 'local',
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function normalizeScopes(scopes) {
|
|
229
|
+
return [...new Set(scopes.map((scope) => scope.trim()).filter(Boolean))];
|
|
230
|
+
}
|
|
231
|
+
function normalizeOptionalText(value) {
|
|
232
|
+
const normalized = value?.trim();
|
|
233
|
+
if (!normalized)
|
|
234
|
+
return undefined;
|
|
235
|
+
return normalized;
|
|
236
|
+
}
|
|
237
|
+
function toPublicError(error) {
|
|
238
|
+
return { code: error.code, message: error.message };
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=projectSecretService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectSecretService.js","sourceRoot":"","sources":["../../../src/host/secrets/projectSecretService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ResolveProjectSecretDatabaseUrlInput {
|
|
2
|
+
readonly projectPath: string;
|
|
3
|
+
readonly processEnvironment?: Readonly<Record<string, string | undefined>>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the trusted database bootstrap URL without consulting the app manifest.
|
|
7
|
+
*
|
|
8
|
+
* Project-local values are read only from the generated, untracked Minikube environment file.
|
|
9
|
+
* There is deliberately no plaintext project-file fallback.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveProjectSecretDatabaseUrl(input: ResolveProjectSecretDatabaseUrlInput): Promise<string>;
|
|
12
|
+
//# sourceMappingURL=resolveProjectSecretDatabaseUrl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProjectSecretDatabaseUrl.d.ts","sourceRoot":"","sources":["../../../src/host/secrets/resolveProjectSecretDatabaseUrl.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CAC5E;AAED;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const DATABASE_URL_KEYS = [
|
|
4
|
+
'ANKH_SECRET_STORE_DATABASE_URL',
|
|
5
|
+
'SUPABASE_DB_URL',
|
|
6
|
+
'POSTGRES_URL',
|
|
7
|
+
'DB_URL',
|
|
8
|
+
'DATABASE_URL',
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* Resolves the trusted database bootstrap URL without consulting the app manifest.
|
|
12
|
+
*
|
|
13
|
+
* Project-local values are read only from the generated, untracked Minikube environment file.
|
|
14
|
+
* There is deliberately no plaintext project-file fallback.
|
|
15
|
+
*/
|
|
16
|
+
export async function resolveProjectSecretDatabaseUrl(input) {
|
|
17
|
+
const processEnvironment = input.processEnvironment ?? process.env;
|
|
18
|
+
const processValue = readFirstValue(processEnvironment);
|
|
19
|
+
if (processValue)
|
|
20
|
+
return processValue;
|
|
21
|
+
const envFile = path.join(input.projectPath, 'infra', 'minikube', '.env');
|
|
22
|
+
const projectEnvironment = await readEnvFile(envFile);
|
|
23
|
+
const projectValue = readFirstValue(projectEnvironment);
|
|
24
|
+
if (projectValue)
|
|
25
|
+
return projectValue;
|
|
26
|
+
throw new Error('Supabase Vault database access is not configured. Run the generated local Supabase bootstrap or set ANKH_SECRET_STORE_DATABASE_URL in the trusted Studio host environment.');
|
|
27
|
+
}
|
|
28
|
+
function readFirstValue(environment) {
|
|
29
|
+
for (const key of DATABASE_URL_KEYS) {
|
|
30
|
+
const value = environment[key]?.trim();
|
|
31
|
+
if (value)
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
async function readEnvFile(filePath) {
|
|
37
|
+
try {
|
|
38
|
+
const content = await fs.readFile(filePath, 'utf8');
|
|
39
|
+
const environment = {};
|
|
40
|
+
for (const line of content.split(/\r?\n/u)) {
|
|
41
|
+
const trimmed = line.trim();
|
|
42
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
43
|
+
continue;
|
|
44
|
+
const separator = trimmed.indexOf('=');
|
|
45
|
+
if (separator <= 0)
|
|
46
|
+
continue;
|
|
47
|
+
const key = trimmed.slice(0, separator).trim();
|
|
48
|
+
const value = trimmed
|
|
49
|
+
.slice(separator + 1)
|
|
50
|
+
.trim()
|
|
51
|
+
.replace(/^['"]|['"]$/gu, '');
|
|
52
|
+
environment[key] = value;
|
|
53
|
+
}
|
|
54
|
+
return environment;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (isMissingFileError(error))
|
|
58
|
+
return {};
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function isMissingFileError(error) {
|
|
63
|
+
return (typeof error === 'object' &&
|
|
64
|
+
error !== null &&
|
|
65
|
+
'code' in error &&
|
|
66
|
+
error.code === 'ENOENT');
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=resolveProjectSecretDatabaseUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProjectSecretDatabaseUrl.js","sourceRoot":"","sources":["../../../src/host/secrets/resolveProjectSecretDatabaseUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,iBAAiB,GAAG;IACxB,gCAAgC;IAChC,iBAAiB;IACjB,cAAc;IACd,QAAQ;IACR,cAAc;CACN,CAAC;AAOX;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,KAA2C;IAE3C,MAAM,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC;IACnE,MAAM,YAAY,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,IAAI,KAAK,CACb,4KAA4K,CAC7K,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,WAAyD;IAC/E,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAElD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,SAAS,IAAI,CAAC;gBAAE,SAAS;YAE7B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,OAAO;iBAClB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;iBACpB,IAAI,EAAE;iBACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAChC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACzC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type AppManifest, type IconSpec, type NavigatorSpec, type RouteDefinition } from '@ankhorage/contracts';
|
|
2
2
|
export interface PreviewNavigationDiagnostic {
|
|
3
3
|
kind: 'icon';
|
|
4
4
|
severity: 'warning';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestNavigatorPreviewModel.d.ts","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"manifestNavigatorPreviewModel.d.ts","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAElB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAQ9B,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzD;AA4FD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAYjF;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,SAAS,EAAE,aAAa,CAAC;IACzB,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,GAAG,IAAI,CAKhB;AAsFD,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,QAAQ,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GAAG,6BAA6B,CAyChC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { resolveAuthFlow, } from '@ankhorage/contracts';
|
|
1
2
|
import { collectScreenRouteEntries, findNavigatorAtPath, getPrimaryNavigatorPath, } from './routeUtils';
|
|
2
3
|
function normalizeAuthFlowPathToRouteName(routePath) {
|
|
3
4
|
const normalized = routePath.trim().replace(/^\/+/, '').replace(/\/+$/, '');
|
|
4
5
|
return normalized === '' ? 'index' : normalized;
|
|
5
6
|
}
|
|
6
7
|
function collectAuthFlowRouteNames(manifest) {
|
|
7
|
-
const flow = manifest.
|
|
8
|
+
const flow = resolveAuthFlow(manifest.infra.auth?.flow);
|
|
8
9
|
const routeNames = new Set();
|
|
9
10
|
const candidates = [
|
|
10
11
|
flow.signInRoute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestNavigatorPreviewModel.js","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manifestNavigatorPreviewModel.js","sourceRoot":"","sources":["../src/manifestNavigatorPreviewModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestSync.d.ts","sourceRoot":"","sources":["../src/manifestSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuB9C,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"manifestSync.d.ts","sourceRoot":"","sources":["../src/manifestSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAuB9C,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAUjF;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAE9E"}
|
package/dist/manifestSync.js
CHANGED
|
@@ -17,7 +17,6 @@ export function createStudioRuntimeSyncSignature(manifest) {
|
|
|
17
17
|
data: manifest.data ?? {},
|
|
18
18
|
dataBindings: manifest.dataBindings ?? {},
|
|
19
19
|
dataSources: manifest.dataSources ?? {},
|
|
20
|
-
authFlow: manifest.settings.authFlow,
|
|
21
20
|
auth: manifest.infra.auth ?? null,
|
|
22
21
|
plugins: [...manifest.infra.plugins].sort(),
|
|
23
22
|
});
|
package/dist/manifestSync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestSync.js","sourceRoot":"","sources":["../src/manifestSync.ts"],"names":[],"mappings":"AAQA,SAAS,6BAA6B,CACpC,QAAwB;IAExB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC5D,MAAM,CAAyC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;QAC1E,GAAG,CAAC,QAAQ,CAAC,GAAG;YACd,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAwB;IACvE,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QAChD,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,
|
|
1
|
+
{"version":3,"file":"manifestSync.js","sourceRoot":"","sources":["../src/manifestSync.ts"],"names":[],"mappings":"AAQA,SAAS,6BAA6B,CACpC,QAAwB;IAExB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC5D,MAAM,CAAyC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;QAC1E,GAAG,CAAC,QAAQ,CAAC,GAAG;YACd,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,QAAwB;IACvE,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,6BAA6B,CAAC,QAAQ,CAAC;QAChD,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;QACvC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI;QACjC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAwB;IACpE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import type { StudioAdminRoutePath, StudioPanelId } from './index';
|
|
2
|
+
export type StudioResolvedAdminRoutePath = StudioAdminRoutePath | '/ankh/secrets';
|
|
2
3
|
export interface StudioAdminRouteRenderState {
|
|
3
|
-
routeAdminPath:
|
|
4
|
-
resolvedAdminRoutePath:
|
|
4
|
+
routeAdminPath: StudioResolvedAdminRoutePath | null;
|
|
5
|
+
resolvedAdminRoutePath: StudioResolvedAdminRoutePath;
|
|
5
6
|
propertiesNodeId: string | null;
|
|
6
7
|
shouldRenderAppContent: true;
|
|
7
8
|
shouldRenderAdminOverlay: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare function resolveStudioAdminRoutePath(pathname: string):
|
|
10
|
+
export declare function resolveStudioAdminRoutePath(pathname: string): StudioResolvedAdminRoutePath | null;
|
|
10
11
|
export declare function resolveStudioPropertiesNodeId(pathname: string): string | null;
|
|
11
12
|
export declare function createStudioAdminRouteRenderState(args: {
|
|
12
13
|
pathname: string;
|
|
13
14
|
activeAdminRoutePath: StudioAdminRoutePath;
|
|
14
15
|
}): StudioAdminRouteRenderState;
|
|
15
16
|
export declare function openStudioAdminRoute(args: {
|
|
16
|
-
next: Exclude<
|
|
17
|
+
next: Exclude<StudioResolvedAdminRoutePath, '/'>;
|
|
17
18
|
setActivePanelId: (panelId: StudioPanelId | null) => void;
|
|
18
|
-
pushRoute: (routePath: Exclude<
|
|
19
|
+
pushRoute: (routePath: Exclude<StudioResolvedAdminRoutePath, '/'>) => void;
|
|
19
20
|
}): void;
|
|
20
21
|
export declare function createStudioPropertiesRoutePath(nodeId: string): `/ankh/properties/${string}`;
|
|
21
22
|
//# sourceMappingURL=studioAdminRouteModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studioAdminRouteModel.d.ts","sourceRoot":"","sources":["../src/studioAdminRouteModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"studioAdminRouteModel.d.ts","sourceRoot":"","sources":["../src/studioAdminRouteModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEnE,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,4BAA4B,GAAG,IAAI,CAAC;IACpD,sBAAsB,EAAE,4BAA4B,CAAC;IACrD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,sBAAsB,EAAE,IAAI,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAKD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,4BAA4B,GAAG,IAAI,CAMjG;AAED,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe7E;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C,GAAG,2BAA2B,CAW9B;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,IAAI,EAAE,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACjD,gBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CAC5E,GAAG,IAAI,CAGP;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,MAAM,EAAE,CAE5F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const ADMIN_ROUTE_PATHS = ['/ankh/apis', '/ankh/auth', '/ankh/theme'];
|
|
1
|
+
const ADMIN_ROUTE_PATHS = ['/ankh/apis', '/ankh/auth', '/ankh/secrets', '/ankh/theme'];
|
|
2
2
|
const PROPERTIES_ROUTE_PREFIX = '/ankh/properties/';
|
|
3
3
|
export function resolveStudioAdminRoutePath(pathname) {
|
|
4
4
|
if (pathname.startsWith(PROPERTIES_ROUTE_PREFIX)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studioAdminRouteModel.js","sourceRoot":"","sources":["../src/studioAdminRouteModel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"studioAdminRouteModel.js","sourceRoot":"","sources":["../src/studioAdminRouteModel.ts"],"names":[],"mappings":"AAYA,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,CAAU,CAAC;AAChG,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAEpD,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,IAAI,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACjD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAgB;IAC5D,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAGjD;IACC,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAAG,cAAc,IAAI,IAAI,CAAC,oBAAoB,CAAC;IAE3E,OAAO;QACL,cAAc;QACd,sBAAsB;QACtB,gBAAgB,EAAE,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9D,sBAAsB,EAAE,IAAI;QAC5B,wBAAwB,EAAE,sBAAsB,KAAK,GAAG;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAIpC;IACC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,MAAc;IAC5D,OAAO,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ankhorage/studio",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Studio authoring package for Ankhorage apps",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/ankhorage/studio#readme",
|
|
@@ -178,7 +178,11 @@
|
|
|
178
178
|
"studio.projects.create",
|
|
179
179
|
"studio.projects.delete",
|
|
180
180
|
"studio.projects.sync",
|
|
181
|
-
"studio.workspace.install"
|
|
181
|
+
"studio.workspace.install",
|
|
182
|
+
"studio.secrets.list",
|
|
183
|
+
"studio.secrets.create",
|
|
184
|
+
"studio.secrets.replace",
|
|
185
|
+
"studio.secrets.remove"
|
|
182
186
|
]
|
|
183
187
|
},
|
|
184
188
|
"scripts": {
|
|
@@ -205,21 +209,26 @@
|
|
|
205
209
|
"studio",
|
|
206
210
|
"authoring",
|
|
207
211
|
"react-native",
|
|
208
|
-
"app-builder"
|
|
212
|
+
"app-builder",
|
|
213
|
+
"oauth",
|
|
214
|
+
"secret-store",
|
|
215
|
+
"supabase-vault"
|
|
209
216
|
],
|
|
210
217
|
"dependencies": {
|
|
211
|
-
"@ankhorage/contracts": "^1.
|
|
212
|
-
"@ankhorage/expo-runtime": "^0.0.
|
|
218
|
+
"@ankhorage/contracts": "^2.1.0",
|
|
219
|
+
"@ankhorage/expo-runtime": "^0.0.10",
|
|
220
|
+
"@ankhorage/infra": "^0.4.0",
|
|
221
|
+
"@ankhorage/orchestrator": "^0.2.4",
|
|
222
|
+
"@ankhorage/orchestrator-module-expo-google-fonts": "^0.1.2",
|
|
223
|
+
"@ankhorage/orchestrator-module-expo-localization": "^0.1.5",
|
|
213
224
|
"@ankhorage/react-native-reanimated-dnd-web": "^0.3.2",
|
|
214
225
|
"@ankhorage/runtime": "^0.2.1",
|
|
226
|
+
"@ankhorage/supabase-auth": "^0.4.0",
|
|
227
|
+
"@ankhorage/supabase-vault": "^0.2.0",
|
|
228
|
+
"@ankhorage/templates": "^2.1.0",
|
|
215
229
|
"@ankhorage/zora": "^2.8.1",
|
|
216
230
|
"@ankhorage/zora-chess": "^0.1.2",
|
|
217
231
|
"@ankhorage/zora-tabletop": "^0.0.5",
|
|
218
|
-
"@ankhorage/infra": "^0.3.1",
|
|
219
|
-
"@ankhorage/orchestrator": "^0.2.4",
|
|
220
|
-
"@ankhorage/orchestrator-module-expo-google-fonts": "^0.1.2",
|
|
221
|
-
"@ankhorage/orchestrator-module-expo-localization": "^0.1.5",
|
|
222
|
-
"@ankhorage/templates": "^1.9.2",
|
|
223
232
|
"@fastify/cors": "^11.2.0",
|
|
224
233
|
"fastify": "^5.7.4"
|
|
225
234
|
},
|