@ankhorage/studio 0.3.0 → 0.5.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/README.md +1 -1
- package/dist/authSettings.d.ts +33 -0
- package/dist/authSettings.d.ts.map +1 -0
- package/dist/authSettings.js +525 -0
- package/dist/authSettings.js.map +1 -0
- package/dist/host/auth/projectAuthHealthService.d.ts +30 -0
- package/dist/host/auth/projectAuthHealthService.d.ts.map +1 -0
- package/dist/host/auth/projectAuthHealthService.js +46 -0
- package/dist/host/auth/projectAuthHealthService.js.map +1 -0
- package/dist/host/auth/projectAuthService.d.ts +23 -0
- package/dist/host/auth/projectAuthService.d.ts.map +1 -0
- package/dist/host/auth/projectAuthService.js +63 -0
- package/dist/host/auth/projectAuthService.js.map +1 -0
- package/dist/host/http/authRoutes.d.ts +7 -0
- package/dist/host/http/authRoutes.d.ts.map +1 -0
- package/dist/host/http/authRoutes.js +64 -0
- package/dist/host/http/authRoutes.js.map +1 -0
- package/dist/host/http/secretRoutes.d.ts.map +1 -1
- package/dist/host/http/secretRoutes.js +53 -2
- package/dist/host/http/secretRoutes.js.map +1 -1
- package/dist/host/http/serverWithSecrets.d.ts +6 -0
- package/dist/host/http/serverWithSecrets.d.ts.map +1 -0
- package/dist/host/http/serverWithSecrets.js +27 -0
- package/dist/host/http/serverWithSecrets.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/layoutGenerator.d.ts.map +1 -1
- package/dist/host/layout/layoutGenerator.js +8 -0
- package/dist/host/layout/layoutGenerator.js.map +1 -1
- package/dist/host/secrets/projectSecretService.d.ts +32 -1
- package/dist/host/secrets/projectSecretService.d.ts.map +1 -1
- package/dist/host/secrets/projectSecretService.js +83 -10
- package/dist/host/secrets/projectSecretService.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/projectAuthApi.d.ts +24 -0
- package/dist/projectAuthApi.d.ts.map +1 -0
- package/dist/projectAuthApi.js +203 -0
- package/dist/projectAuthApi.js.map +1 -0
- package/dist/projectAuthHealth.d.ts +38 -0
- package/dist/projectAuthHealth.d.ts.map +1 -0
- package/dist/projectAuthHealth.js +219 -0
- package/dist/projectAuthHealth.js.map +1 -0
- package/dist/projectSecretApi.d.ts +14 -1
- package/dist/projectSecretApi.d.ts.map +1 -1
- package/dist/projectSecretApi.js +75 -18
- package/dist/projectSecretApi.js.map +1 -1
- package/dist/projectSecretUsage.d.ts +19 -0
- package/dist/projectSecretUsage.d.ts.map +1 -0
- package/dist/projectSecretUsage.js +38 -0
- package/dist/projectSecretUsage.js.map +1 -0
- package/dist/root.d.ts +3 -0
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +3 -0
- package/dist/root.js.map +1 -1
- package/dist/secretResponseGuard.d.ts +8 -0
- package/dist/secretResponseGuard.d.ts.map +1 -0
- package/dist/secretResponseGuard.js +46 -0
- package/dist/secretResponseGuard.js.map +1 -0
- package/dist/studioAdminRouteModel.d.ts +5 -6
- package/dist/studioAdminRouteModel.d.ts.map +1 -1
- package/dist/studioAdminRouteModel.js.map +1 -1
- package/dist/ui/StudioAdminOverlay.d.ts +0 -4
- package/dist/ui/StudioAdminOverlay.d.ts.map +1 -1
- package/dist/ui/StudioAdminOverlay.js +125 -107
- package/dist/ui/StudioAdminOverlay.js.map +1 -1
- package/dist/ui/StudioAuthSettingsOverlay.d.ts +9 -0
- package/dist/ui/StudioAuthSettingsOverlay.d.ts.map +1 -0
- package/dist/ui/StudioAuthSettingsOverlay.js +607 -0
- package/dist/ui/StudioAuthSettingsOverlay.js.map +1 -0
- package/dist/ui/useStudioAppBarAugmentation.d.ts.map +1 -1
- package/dist/ui/useStudioAppBarAugmentation.js +23 -10
- package/dist/ui/useStudioAppBarAugmentation.js.map +1 -1
- package/package.json +10 -2
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { validateStudioAuthSettings } from './authSettings';
|
|
2
|
+
import { findRawSecretResponseKey } from './secretResponseGuard';
|
|
3
|
+
export class ProjectAuthApiError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
status;
|
|
6
|
+
constructor(args) {
|
|
7
|
+
super(args.message);
|
|
8
|
+
this.name = 'ProjectAuthApiError';
|
|
9
|
+
this.code = args.code;
|
|
10
|
+
this.status = args.status;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export async function getProjectAuthSettings(projectId) {
|
|
14
|
+
const value = await requestJson(`/projects/${encodeURIComponent(projectId)}/auth/config`);
|
|
15
|
+
return parseProjectAuthSettingsResponse(value, 'loaded');
|
|
16
|
+
}
|
|
17
|
+
export async function saveProjectAuthSettings(input) {
|
|
18
|
+
const value = await requestJson(`/projects/${encodeURIComponent(input.projectId)}/auth/config`, {
|
|
19
|
+
method: 'PUT',
|
|
20
|
+
headers: { 'Content-Type': 'application/json' },
|
|
21
|
+
body: JSON.stringify({ config: input.config }),
|
|
22
|
+
});
|
|
23
|
+
const result = parseProjectAuthSettingsResponse(value, 'saved');
|
|
24
|
+
if (!result) {
|
|
25
|
+
throw new ProjectAuthApiError({
|
|
26
|
+
code: 'invalid_response',
|
|
27
|
+
message: 'Saved auth configuration response did not contain configuration data.',
|
|
28
|
+
status: 502,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
export async function getProjectAuthHealth(input) {
|
|
34
|
+
const query = createQuery({ environment: input.environment });
|
|
35
|
+
const value = await requestJson(`/projects/${encodeURIComponent(input.projectId)}/auth/health${query}`);
|
|
36
|
+
return parseProjectAuthHealthResponse(value);
|
|
37
|
+
}
|
|
38
|
+
export function parseProjectAuthSettingsResponse(value, expectedState) {
|
|
39
|
+
rejectRawSecretResponse(value, 'Project auth response was invalid.');
|
|
40
|
+
const record = asRecord(value);
|
|
41
|
+
if (record?.ok !== true || record.state !== expectedState) {
|
|
42
|
+
throw invalidResponse('Project auth response was invalid.');
|
|
43
|
+
}
|
|
44
|
+
if (record.data === null && expectedState === 'loaded')
|
|
45
|
+
return null;
|
|
46
|
+
const parsed = validateStudioAuthSettings(record.data);
|
|
47
|
+
if (!parsed.ok)
|
|
48
|
+
throw invalidResponse(parsed.error.message);
|
|
49
|
+
return parsed.data;
|
|
50
|
+
}
|
|
51
|
+
export function parseProjectAuthHealthResponse(value) {
|
|
52
|
+
rejectRawSecretResponse(value, 'Project auth health response was invalid.');
|
|
53
|
+
const record = asRecord(value);
|
|
54
|
+
if (record?.ok !== true || record.state !== 'loaded') {
|
|
55
|
+
throw invalidResponse('Project auth health response was invalid.');
|
|
56
|
+
}
|
|
57
|
+
return parseProjectAuthHealth(record.data);
|
|
58
|
+
}
|
|
59
|
+
async function requestJson(path, init) {
|
|
60
|
+
const { API_BASE } = await import('./core/constants');
|
|
61
|
+
const response = await fetch(`${API_BASE}${path}`, init);
|
|
62
|
+
const value = await readJson(response);
|
|
63
|
+
if (!response.ok)
|
|
64
|
+
throw parseHttpError(value, response.status);
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
async function readJson(response) {
|
|
68
|
+
try {
|
|
69
|
+
return await response.json();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
throw new ProjectAuthApiError({
|
|
73
|
+
code: 'invalid_response',
|
|
74
|
+
message: 'The Studio host returned a non-JSON auth response.',
|
|
75
|
+
status: response.status,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function parseHttpError(value, status) {
|
|
80
|
+
return parseProjectAuthHttpErrorResponse(value, status);
|
|
81
|
+
}
|
|
82
|
+
export function parseProjectAuthHttpErrorResponse(value, status) {
|
|
83
|
+
rejectRawSecretResponse(value, 'Project auth error response was invalid.');
|
|
84
|
+
const record = asRecord(value);
|
|
85
|
+
const error = asRecord(record?.error);
|
|
86
|
+
return new ProjectAuthApiError({
|
|
87
|
+
code: typeof error?.code === 'string' ? error.code : 'request_failed',
|
|
88
|
+
message: typeof error?.message === 'string'
|
|
89
|
+
? error.message
|
|
90
|
+
: 'The Studio authentication configuration request failed.',
|
|
91
|
+
status,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function invalidResponse(message) {
|
|
95
|
+
return new ProjectAuthApiError({ code: 'invalid_response', message, status: 502 });
|
|
96
|
+
}
|
|
97
|
+
function asRecord(value) {
|
|
98
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
99
|
+
? value
|
|
100
|
+
: null;
|
|
101
|
+
}
|
|
102
|
+
function parseProjectAuthHealth(value) {
|
|
103
|
+
const record = asRecord(value);
|
|
104
|
+
const callbackUrls = asRecord(record?.callbackUrls);
|
|
105
|
+
if (record === null ||
|
|
106
|
+
!isProjectAuthHealthStatus(record.status) ||
|
|
107
|
+
!Array.isArray(record.diagnostics) ||
|
|
108
|
+
!Array.isArray(record.providers) ||
|
|
109
|
+
callbackUrls === null ||
|
|
110
|
+
typeof callbackUrls.appCallbackRoute !== 'string' ||
|
|
111
|
+
(callbackUrls.providerRedirectUrl !== undefined &&
|
|
112
|
+
typeof callbackUrls.providerRedirectUrl !== 'string')) {
|
|
113
|
+
throw invalidResponse('Project auth health data was invalid.');
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
status: record.status,
|
|
117
|
+
diagnostics: record.diagnostics.map(parseProjectAuthDiagnostic),
|
|
118
|
+
providers: record.providers.map(parseProjectOAuthProviderHealth),
|
|
119
|
+
callbackUrls: {
|
|
120
|
+
appCallbackRoute: callbackUrls.appCallbackRoute,
|
|
121
|
+
...(typeof callbackUrls.providerRedirectUrl === 'string'
|
|
122
|
+
? { providerRedirectUrl: callbackUrls.providerRedirectUrl }
|
|
123
|
+
: {}),
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function parseProjectAuthDiagnostic(value) {
|
|
128
|
+
const record = asRecord(value);
|
|
129
|
+
if (record === null ||
|
|
130
|
+
typeof record.code !== 'string' ||
|
|
131
|
+
!isProjectAuthDiagnosticSeverity(record.severity) ||
|
|
132
|
+
typeof record.message !== 'string' ||
|
|
133
|
+
(record.path !== undefined && typeof record.path !== 'string') ||
|
|
134
|
+
(record.providerId !== undefined && typeof record.providerId !== 'string') ||
|
|
135
|
+
(record.credentialsRef !== undefined && typeof record.credentialsRef !== 'string')) {
|
|
136
|
+
throw invalidResponse('Project auth diagnostic was invalid.');
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
code: record.code,
|
|
140
|
+
severity: record.severity,
|
|
141
|
+
message: record.message,
|
|
142
|
+
...(typeof record.path === 'string' ? { path: record.path } : {}),
|
|
143
|
+
...(typeof record.providerId === 'string' ? { providerId: record.providerId } : {}),
|
|
144
|
+
...(typeof record.credentialsRef === 'string' ? { credentialsRef: record.credentialsRef } : {}),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function parseProjectOAuthProviderHealth(value) {
|
|
148
|
+
const record = asRecord(value);
|
|
149
|
+
if (record === null ||
|
|
150
|
+
typeof record.providerId !== 'string' ||
|
|
151
|
+
typeof record.label !== 'string' ||
|
|
152
|
+
typeof record.enabled !== 'boolean' ||
|
|
153
|
+
(record.credentialsRef !== undefined && typeof record.credentialsRef !== 'string') ||
|
|
154
|
+
!isProjectOAuthProviderHealthStatus(record.status) ||
|
|
155
|
+
!isStringArray(record.requiredFields) ||
|
|
156
|
+
!isStringArray(record.configuredFields) ||
|
|
157
|
+
!isStringArray(record.missingFields)) {
|
|
158
|
+
throw invalidResponse('Project OAuth provider health was invalid.');
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
providerId: record.providerId,
|
|
162
|
+
label: record.label,
|
|
163
|
+
enabled: record.enabled,
|
|
164
|
+
...(typeof record.credentialsRef === 'string' ? { credentialsRef: record.credentialsRef } : {}),
|
|
165
|
+
status: record.status,
|
|
166
|
+
requiredFields: [...record.requiredFields],
|
|
167
|
+
configuredFields: [...record.configuredFields],
|
|
168
|
+
missingFields: [...record.missingFields],
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
function createQuery(values) {
|
|
172
|
+
const params = new URLSearchParams();
|
|
173
|
+
for (const [key, value] of Object.entries(values)) {
|
|
174
|
+
const normalized = value?.trim();
|
|
175
|
+
if (normalized)
|
|
176
|
+
params.set(key, normalized);
|
|
177
|
+
}
|
|
178
|
+
const query = params.toString();
|
|
179
|
+
return query ? `?${query}` : '';
|
|
180
|
+
}
|
|
181
|
+
function rejectRawSecretResponse(value, message) {
|
|
182
|
+
const match = findRawSecretResponseKey(value);
|
|
183
|
+
if (match) {
|
|
184
|
+
throw invalidResponse(`${message} Raw secret-shaped response field "${match.key}" was present.`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function isStringArray(value) {
|
|
188
|
+
return Array.isArray(value) && value.every((entry) => typeof entry === 'string');
|
|
189
|
+
}
|
|
190
|
+
function isProjectAuthHealthStatus(value) {
|
|
191
|
+
return (value === 'healthy' || value === 'warning' || value === 'error' || value === 'unconfigured');
|
|
192
|
+
}
|
|
193
|
+
function isProjectAuthDiagnosticSeverity(value) {
|
|
194
|
+
return value === 'info' || value === 'warning' || value === 'error';
|
|
195
|
+
}
|
|
196
|
+
function isProjectOAuthProviderHealthStatus(value) {
|
|
197
|
+
return (value === 'disabled' ||
|
|
198
|
+
value === 'configured' ||
|
|
199
|
+
value === 'incomplete' ||
|
|
200
|
+
value === 'missing' ||
|
|
201
|
+
value === 'invalid');
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=projectAuthApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectAuthApi.js","sourceRoot":"","sources":["../src/projectAuthApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AppManifest } from '@ankhorage/contracts';
|
|
2
|
+
import type { SecretMetadata } from '@ankhorage/contracts/secrets';
|
|
3
|
+
export type ProjectAuthHealthStatus = 'healthy' | 'warning' | 'error' | 'unconfigured';
|
|
4
|
+
export type ProjectAuthDiagnosticSeverity = 'info' | 'warning' | 'error';
|
|
5
|
+
export interface ProjectAuthDiagnostic {
|
|
6
|
+
readonly code: string;
|
|
7
|
+
readonly severity: ProjectAuthDiagnosticSeverity;
|
|
8
|
+
readonly message: string;
|
|
9
|
+
readonly path?: string;
|
|
10
|
+
readonly providerId?: string;
|
|
11
|
+
readonly credentialsRef?: string;
|
|
12
|
+
}
|
|
13
|
+
export type ProjectOAuthProviderHealthStatus = 'disabled' | 'configured' | 'incomplete' | 'missing' | 'invalid';
|
|
14
|
+
export interface ProjectOAuthProviderHealth {
|
|
15
|
+
readonly providerId: string;
|
|
16
|
+
readonly label: string;
|
|
17
|
+
readonly enabled: boolean;
|
|
18
|
+
readonly credentialsRef?: string;
|
|
19
|
+
readonly status: ProjectOAuthProviderHealthStatus;
|
|
20
|
+
readonly requiredFields: readonly string[];
|
|
21
|
+
readonly configuredFields: readonly string[];
|
|
22
|
+
readonly missingFields: readonly string[];
|
|
23
|
+
}
|
|
24
|
+
export interface ProjectAuthHealth {
|
|
25
|
+
readonly status: ProjectAuthHealthStatus;
|
|
26
|
+
readonly diagnostics: readonly ProjectAuthDiagnostic[];
|
|
27
|
+
readonly providers: readonly ProjectOAuthProviderHealth[];
|
|
28
|
+
readonly callbackUrls: {
|
|
29
|
+
readonly appCallbackRoute: string;
|
|
30
|
+
readonly providerRedirectUrl?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare function analyzeProjectAuthHealth(input: {
|
|
34
|
+
readonly manifest: AppManifest;
|
|
35
|
+
readonly secretMetadata: readonly SecretMetadata[];
|
|
36
|
+
readonly secretStoreAvailable?: boolean;
|
|
37
|
+
}): ProjectAuthHealth;
|
|
38
|
+
//# sourceMappingURL=projectAuthHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectAuthHealth.d.ts","sourceRoot":"","sources":["../src/projectAuthHealth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKnE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC;AAEvF,MAAM,MAAM,6BAA6B,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,gCAAgC,GAC1C,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;KACvC,CAAC;CACH;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,SAAS,cAAc,EAAE,CAAC;IACnD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC,GAAG,iBAAiB,CA4FpB"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { getSupabaseOAuthProviderDefinition } from '@ankhorage/supabase-auth';
|
|
2
|
+
import { validateStudioAuthSettings } from './authSettings';
|
|
3
|
+
export function analyzeProjectAuthHealth(input) {
|
|
4
|
+
const diagnostics = [];
|
|
5
|
+
const { auth } = input.manifest.infra;
|
|
6
|
+
const secretMetadataByRef = new Map(input.secretMetadata.map((metadata) => [metadata.ref, metadata]));
|
|
7
|
+
if (input.secretStoreAvailable === false) {
|
|
8
|
+
diagnostics.push({
|
|
9
|
+
code: 'secret_store_unavailable',
|
|
10
|
+
severity: 'error',
|
|
11
|
+
message: 'The local project secret store is unavailable.',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (!auth) {
|
|
15
|
+
diagnostics.push({
|
|
16
|
+
code: 'auth_unconfigured',
|
|
17
|
+
severity: 'info',
|
|
18
|
+
message: 'Authentication is not configured for this project.',
|
|
19
|
+
path: 'infra.auth',
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
status: 'unconfigured',
|
|
23
|
+
diagnostics: sortDiagnostics(diagnostics),
|
|
24
|
+
providers: [],
|
|
25
|
+
callbackUrls: { appCallbackRoute: '/auth/callback' },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const settingsValidation = validateStudioAuthSettings({
|
|
29
|
+
scope: auth.scope,
|
|
30
|
+
provider: auth.provider,
|
|
31
|
+
flow: auth.flow,
|
|
32
|
+
signIn: auth.signIn,
|
|
33
|
+
...(auth.signUp ? { signUp: auth.signUp } : {}),
|
|
34
|
+
...(auth.oauth ? { oauth: auth.oauth } : {}),
|
|
35
|
+
...(auth.profile ? { profile: auth.profile } : {}),
|
|
36
|
+
});
|
|
37
|
+
if (!settingsValidation.ok) {
|
|
38
|
+
diagnostics.push({
|
|
39
|
+
code: resolveAuthValidationCode(settingsValidation.error.message),
|
|
40
|
+
severity: 'error',
|
|
41
|
+
message: settingsValidation.error.message,
|
|
42
|
+
path: 'infra.auth',
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (!auth.profile) {
|
|
46
|
+
diagnostics.push({
|
|
47
|
+
code: 'profile_not_configured',
|
|
48
|
+
severity: 'warning',
|
|
49
|
+
message: 'Auth profile configuration is not configured.',
|
|
50
|
+
path: 'infra.auth.profile',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const { oauth } = auth;
|
|
54
|
+
const providers = oauth?.providers ?? [];
|
|
55
|
+
const providerHealth = providers.map((provider, index) => analyzeProviderHealth({
|
|
56
|
+
provider,
|
|
57
|
+
index,
|
|
58
|
+
secretMetadata: provider.credentialsRef
|
|
59
|
+
? secretMetadataByRef.get(provider.credentialsRef)
|
|
60
|
+
: undefined,
|
|
61
|
+
diagnostics,
|
|
62
|
+
}));
|
|
63
|
+
if (oauth?.enabled && providers.filter((provider) => provider.enabled === true).length === 0) {
|
|
64
|
+
diagnostics.push({
|
|
65
|
+
code: 'oauth_enabled_without_providers',
|
|
66
|
+
severity: 'warning',
|
|
67
|
+
message: 'OAuth is enabled but no OAuth provider is enabled.',
|
|
68
|
+
path: 'infra.auth.oauth.providers',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
addDuplicateDiagnostics(providers, diagnostics);
|
|
72
|
+
const sortedDiagnostics = sortDiagnostics(diagnostics);
|
|
73
|
+
return {
|
|
74
|
+
status: resolveHealthStatus(sortedDiagnostics),
|
|
75
|
+
diagnostics: sortedDiagnostics,
|
|
76
|
+
providers: providerHealth.sort((left, right) => left.providerId.localeCompare(right.providerId)),
|
|
77
|
+
callbackUrls: {
|
|
78
|
+
appCallbackRoute: oauth?.callbackRoute ?? '/auth/callback',
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function analyzeProviderHealth(input) {
|
|
83
|
+
const { provider, secretMetadata } = input;
|
|
84
|
+
const definition = getSupabaseOAuthProviderDefinition(provider.id);
|
|
85
|
+
const enabled = provider.enabled === true;
|
|
86
|
+
const { credentialsRef } = provider;
|
|
87
|
+
const path = `infra.auth.oauth.providers[${input.index}]`;
|
|
88
|
+
const requiredFields = definition?.secretFields.map((field) => field.name) ?? [];
|
|
89
|
+
const configuredFields = secretMetadata?.configuredFields ?? [];
|
|
90
|
+
const missingFields = requiredFields.filter((field) => !configuredFields.includes(field));
|
|
91
|
+
if (!definition) {
|
|
92
|
+
input.diagnostics.push({
|
|
93
|
+
code: 'invalid_provider',
|
|
94
|
+
severity: 'error',
|
|
95
|
+
message: `OAuth provider "${provider.id}" is not supported.`,
|
|
96
|
+
path,
|
|
97
|
+
providerId: provider.id,
|
|
98
|
+
...(credentialsRef ? { credentialsRef } : {}),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (enabled && !credentialsRef) {
|
|
102
|
+
input.diagnostics.push({
|
|
103
|
+
code: 'provider_enabled_without_credentials_ref',
|
|
104
|
+
severity: 'error',
|
|
105
|
+
message: `Enabled OAuth provider "${provider.id}" does not configure credentialsRef.`,
|
|
106
|
+
path: `${path}.credentialsRef`,
|
|
107
|
+
providerId: provider.id,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (credentialsRef && !secretMetadata) {
|
|
111
|
+
input.diagnostics.push({
|
|
112
|
+
code: 'referenced_secret_missing',
|
|
113
|
+
severity: enabled ? 'error' : 'warning',
|
|
114
|
+
message: `OAuth provider "${provider.id}" references missing secret metadata.`,
|
|
115
|
+
path: `${path}.credentialsRef`,
|
|
116
|
+
providerId: provider.id,
|
|
117
|
+
credentialsRef,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (secretMetadata && missingFields.length > 0) {
|
|
121
|
+
input.diagnostics.push({
|
|
122
|
+
code: 'provider_secret_incomplete',
|
|
123
|
+
severity: enabled ? 'error' : 'warning',
|
|
124
|
+
message: `OAuth provider "${provider.id}" secret metadata is missing required fields: ${missingFields.join(', ')}.`,
|
|
125
|
+
path: `${path}.credentialsRef`,
|
|
126
|
+
providerId: provider.id,
|
|
127
|
+
...(credentialsRef ? { credentialsRef } : {}),
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
providerId: provider.id,
|
|
132
|
+
label: provider.label ?? definition?.label ?? provider.id,
|
|
133
|
+
enabled,
|
|
134
|
+
...(credentialsRef ? { credentialsRef } : {}),
|
|
135
|
+
status: resolveProviderStatus({
|
|
136
|
+
enabled,
|
|
137
|
+
definitionExists: definition !== null,
|
|
138
|
+
credentialsRef,
|
|
139
|
+
secretMetadata,
|
|
140
|
+
missingFields,
|
|
141
|
+
}),
|
|
142
|
+
requiredFields,
|
|
143
|
+
configuredFields: [...configuredFields].sort(),
|
|
144
|
+
missingFields,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function resolveProviderStatus(input) {
|
|
148
|
+
if (!input.enabled)
|
|
149
|
+
return 'disabled';
|
|
150
|
+
if (!input.definitionExists || !input.credentialsRef)
|
|
151
|
+
return 'invalid';
|
|
152
|
+
if (!input.secretMetadata)
|
|
153
|
+
return 'missing';
|
|
154
|
+
if (input.missingFields.length > 0)
|
|
155
|
+
return 'incomplete';
|
|
156
|
+
return 'configured';
|
|
157
|
+
}
|
|
158
|
+
function addDuplicateDiagnostics(providers, diagnostics) {
|
|
159
|
+
const seenProviderIds = new Set();
|
|
160
|
+
const refsByOwner = new Map();
|
|
161
|
+
providers.forEach((provider, index) => {
|
|
162
|
+
const path = `infra.auth.oauth.providers[${index}]`;
|
|
163
|
+
if (seenProviderIds.has(provider.id)) {
|
|
164
|
+
diagnostics.push({
|
|
165
|
+
code: 'duplicate_provider_id',
|
|
166
|
+
severity: 'error',
|
|
167
|
+
message: `OAuth provider "${provider.id}" is configured more than once.`,
|
|
168
|
+
path,
|
|
169
|
+
providerId: provider.id,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
seenProviderIds.add(provider.id);
|
|
173
|
+
if (!provider.credentialsRef)
|
|
174
|
+
return;
|
|
175
|
+
const existingOwner = refsByOwner.get(provider.credentialsRef);
|
|
176
|
+
if (existingOwner && existingOwner !== provider.id) {
|
|
177
|
+
diagnostics.push({
|
|
178
|
+
code: 'duplicate_incompatible_secret_ref',
|
|
179
|
+
severity: 'error',
|
|
180
|
+
message: `Secret reference "${provider.credentialsRef}" is shared by incompatible providers.`,
|
|
181
|
+
path: `${path}.credentialsRef`,
|
|
182
|
+
providerId: provider.id,
|
|
183
|
+
credentialsRef: provider.credentialsRef,
|
|
184
|
+
});
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
refsByOwner.set(provider.credentialsRef, provider.id);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
function resolveAuthValidationCode(message) {
|
|
191
|
+
if (message.includes('callback'))
|
|
192
|
+
return 'invalid_callback_route';
|
|
193
|
+
if (message.includes('configured more than once'))
|
|
194
|
+
return 'duplicate_provider_id';
|
|
195
|
+
if (message.includes('shared by incompatible providers'))
|
|
196
|
+
return 'duplicate_incompatible_secret_ref';
|
|
197
|
+
if (message.includes('requires credentialsRef'))
|
|
198
|
+
return 'provider_enabled_without_credentials_ref';
|
|
199
|
+
return 'invalid_auth_config';
|
|
200
|
+
}
|
|
201
|
+
function resolveHealthStatus(diagnostics) {
|
|
202
|
+
if (diagnostics.some((diagnostic) => diagnostic.severity === 'error'))
|
|
203
|
+
return 'error';
|
|
204
|
+
if (diagnostics.some((diagnostic) => diagnostic.severity === 'warning'))
|
|
205
|
+
return 'warning';
|
|
206
|
+
return 'healthy';
|
|
207
|
+
}
|
|
208
|
+
function sortDiagnostics(diagnostics) {
|
|
209
|
+
const severityRank = {
|
|
210
|
+
error: 0,
|
|
211
|
+
warning: 1,
|
|
212
|
+
info: 2,
|
|
213
|
+
};
|
|
214
|
+
return [...diagnostics].sort((left, right) => severityRank[left.severity] - severityRank[right.severity] ||
|
|
215
|
+
left.code.localeCompare(right.code) ||
|
|
216
|
+
(left.path ?? '').localeCompare(right.path ?? '') ||
|
|
217
|
+
(left.providerId ?? '').localeCompare(right.providerId ?? ''));
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=projectAuthHealth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectAuthHealth.js","sourceRoot":"","sources":["../src/projectAuthHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { AuthOAuthProviderId } from '@ankhorage/contracts';
|
|
2
2
|
import type { SecretMetadata, SecretPayload } from '@ankhorage/contracts/secrets';
|
|
3
|
+
import { type ProjectSecretUsageSummary } from './projectSecretUsage';
|
|
3
4
|
export interface ProjectSecretCreateInput {
|
|
4
5
|
readonly projectId: string;
|
|
5
6
|
readonly environment?: string;
|
|
@@ -18,11 +19,14 @@ export interface ProjectSecretRemoveInput {
|
|
|
18
19
|
readonly projectId: string;
|
|
19
20
|
readonly environment?: string;
|
|
20
21
|
readonly ref: string;
|
|
22
|
+
readonly confirmBrokenReferences?: boolean;
|
|
21
23
|
}
|
|
22
24
|
export interface ConfigureProjectOAuthProviderInput {
|
|
23
25
|
readonly projectId: string;
|
|
24
26
|
readonly providerId: AuthOAuthProviderId;
|
|
25
27
|
readonly environment?: string;
|
|
28
|
+
readonly authScope?: 'global' | 'none' | 'integrated';
|
|
29
|
+
readonly oauthEnabled?: boolean;
|
|
26
30
|
readonly credentialsRef?: string;
|
|
27
31
|
readonly enabled?: boolean;
|
|
28
32
|
readonly label?: string;
|
|
@@ -48,10 +52,12 @@ export type ConfigureProjectOAuthProviderResponse = {
|
|
|
48
52
|
export declare class ProjectSecretApiError extends Error {
|
|
49
53
|
readonly code: string;
|
|
50
54
|
readonly status: number;
|
|
55
|
+
readonly data?: unknown;
|
|
51
56
|
constructor(args: {
|
|
52
57
|
readonly code: string;
|
|
53
58
|
readonly message: string;
|
|
54
59
|
readonly status: number;
|
|
60
|
+
readonly data?: unknown;
|
|
55
61
|
});
|
|
56
62
|
}
|
|
57
63
|
export declare function listProjectSecrets(input: {
|
|
@@ -62,9 +68,16 @@ export declare function listProjectSecrets(input: {
|
|
|
62
68
|
}): Promise<readonly SecretMetadata[]>;
|
|
63
69
|
export declare function createProjectSecret(input: ProjectSecretCreateInput): Promise<SecretMetadata>;
|
|
64
70
|
export declare function replaceProjectSecret(input: ProjectSecretReplaceInput): Promise<SecretMetadata>;
|
|
65
|
-
export declare function
|
|
71
|
+
export declare function getProjectSecretUsages(input: {
|
|
72
|
+
readonly projectId: string;
|
|
73
|
+
readonly environment?: string;
|
|
74
|
+
readonly ref: string;
|
|
75
|
+
}): Promise<ProjectSecretUsageSummary>;
|
|
76
|
+
export declare function removeProjectSecret(input: ProjectSecretRemoveInput): Promise<ProjectSecretUsageSummary>;
|
|
66
77
|
export declare function configureProjectOAuthProvider(input: ConfigureProjectOAuthProviderInput): Promise<ConfigureProjectOAuthProviderResponse>;
|
|
67
78
|
export declare function parseProjectSecretListResponse(value: unknown): readonly SecretMetadata[];
|
|
68
79
|
export declare function parseProjectSecretMetadataResponse(value: unknown): SecretMetadata;
|
|
80
|
+
export declare function parseProjectSecretUsageSummaryResponse(value: unknown): ProjectSecretUsageSummary;
|
|
69
81
|
export declare function parseConfigureProjectOAuthProviderResponse(value: unknown): ConfigureProjectOAuthProviderResponse;
|
|
82
|
+
export declare function parseProjectSecretHttpErrorResponse(value: unknown, status: number): ProjectSecretApiError;
|
|
70
83
|
//# sourceMappingURL=projectSecretApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectSecretApi.d.ts","sourceRoot":"","sources":["../src/projectSecretApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"projectSecretApi.d.ts","sourceRoot":"","sources":["../src/projectSecretApi.ts"],"names":[],"mappings":"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"}
|