@ankhorage/studio 0.6.9 → 0.7.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.
Files changed (139) hide show
  1. package/README.md +1 -1
  2. package/dist/authSettings.d.ts +1 -0
  3. package/dist/authSettings.d.ts.map +1 -1
  4. package/dist/authSettings.js.map +1 -1
  5. package/dist/core/StudioProvider.d.ts +5 -2
  6. package/dist/core/StudioProvider.d.ts.map +1 -1
  7. package/dist/core/StudioProvider.js +212 -16
  8. package/dist/core/StudioProvider.js.map +1 -1
  9. package/dist/core/studioManifestDraftModel.d.ts +13 -0
  10. package/dist/core/studioManifestDraftModel.d.ts.map +1 -0
  11. package/dist/core/studioManifestDraftModel.js +34 -0
  12. package/dist/core/studioManifestDraftModel.js.map +1 -0
  13. package/dist/core/studioManifestPersistenceModel.d.ts +21 -0
  14. package/dist/core/studioManifestPersistenceModel.d.ts.map +1 -0
  15. package/dist/core/studioManifestPersistenceModel.js +46 -0
  16. package/dist/core/studioManifestPersistenceModel.js.map +1 -0
  17. package/dist/host/http/authRoutes.d.ts.map +1 -1
  18. package/dist/host/http/authRoutes.js +0 -31
  19. package/dist/host/http/authRoutes.js.map +1 -1
  20. package/dist/host/http/secretRoutes.d.ts.map +1 -1
  21. package/dist/host/http/secretRoutes.js +1 -24
  22. package/dist/host/http/secretRoutes.js.map +1 -1
  23. package/dist/host/index.d.ts +1 -2
  24. package/dist/host/index.d.ts.map +1 -1
  25. package/dist/host/index.js +1 -2
  26. package/dist/host/index.js.map +1 -1
  27. package/dist/host/layout/layoutGenerator.d.ts.map +1 -1
  28. package/dist/host/layout/layoutGenerator.js +55 -37
  29. package/dist/host/layout/layoutGenerator.js.map +1 -1
  30. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
  31. package/dist/host/layout/templates/rootLayout.js +99 -15
  32. package/dist/host/layout/templates/rootLayout.js.map +1 -1
  33. package/dist/host/secrets/projectSecretService.d.ts +2 -12
  34. package/dist/host/secrets/projectSecretService.d.ts.map +1 -1
  35. package/dist/host/secrets/projectSecretService.js +1 -61
  36. package/dist/host/secrets/projectSecretService.js.map +1 -1
  37. package/dist/index.d.ts +13 -5
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +3 -1
  40. package/dist/index.js.map +1 -1
  41. package/dist/projectAuthApi.d.ts +0 -7
  42. package/dist/projectAuthApi.d.ts.map +1 -1
  43. package/dist/projectAuthApi.js +0 -34
  44. package/dist/projectAuthApi.js.map +1 -1
  45. package/dist/projectSecretApi.d.ts +1 -8
  46. package/dist/projectSecretApi.d.ts.map +1 -1
  47. package/dist/projectSecretApi.js +1 -8
  48. package/dist/projectSecretApi.js.map +1 -1
  49. package/dist/root.d.ts +2 -0
  50. package/dist/root.d.ts.map +1 -1
  51. package/dist/root.js +2 -0
  52. package/dist/root.js.map +1 -1
  53. package/dist/studioAdminRouteModel.d.ts +43 -9
  54. package/dist/studioAdminRouteModel.d.ts.map +1 -1
  55. package/dist/studioAdminRouteModel.js +176 -11
  56. package/dist/studioAdminRouteModel.js.map +1 -1
  57. package/dist/ui/admin/AnkhAdminPage.d.ts +7 -0
  58. package/dist/ui/admin/AnkhAdminPage.d.ts.map +1 -0
  59. package/dist/ui/admin/AnkhAdminPage.js +31 -0
  60. package/dist/ui/admin/AnkhAdminPage.js.map +1 -0
  61. package/dist/ui/admin/AnkhAdminShell.d.ts +6 -0
  62. package/dist/ui/admin/AnkhAdminShell.d.ts.map +1 -0
  63. package/dist/ui/admin/AnkhAdminShell.js +87 -0
  64. package/dist/ui/admin/AnkhAdminShell.js.map +1 -0
  65. package/dist/ui/admin/AuthAdminSession.d.ts +25 -0
  66. package/dist/ui/admin/AuthAdminSession.d.ts.map +1 -0
  67. package/dist/ui/admin/AuthAdminSession.js +96 -0
  68. package/dist/ui/admin/AuthAdminSession.js.map +1 -0
  69. package/dist/ui/admin/adminPagePrimitives.d.ts +34 -0
  70. package/dist/ui/admin/adminPagePrimitives.d.ts.map +1 -0
  71. package/dist/ui/admin/adminPagePrimitives.js +69 -0
  72. package/dist/ui/admin/adminPagePrimitives.js.map +1 -0
  73. package/dist/ui/admin/adminPageUtils.d.ts +4 -0
  74. package/dist/ui/admin/adminPageUtils.d.ts.map +1 -0
  75. package/dist/ui/admin/adminPageUtils.js +14 -0
  76. package/dist/ui/admin/adminPageUtils.js.map +1 -0
  77. package/dist/ui/admin/pages/ApisAdminPage.d.ts +7 -0
  78. package/dist/ui/admin/pages/ApisAdminPage.d.ts.map +1 -0
  79. package/dist/ui/admin/pages/ApisAdminPage.js +21 -0
  80. package/dist/ui/admin/pages/ApisAdminPage.js.map +1 -0
  81. package/dist/ui/admin/pages/AuthAdminPage.d.ts +10 -0
  82. package/dist/ui/admin/pages/AuthAdminPage.d.ts.map +1 -0
  83. package/dist/ui/admin/pages/AuthAdminPage.js +596 -0
  84. package/dist/ui/admin/pages/AuthAdminPage.js.map +1 -0
  85. package/dist/ui/admin/pages/OverviewAdminPage.d.ts +3 -0
  86. package/dist/ui/admin/pages/OverviewAdminPage.d.ts.map +1 -0
  87. package/dist/ui/admin/pages/OverviewAdminPage.js +16 -0
  88. package/dist/ui/admin/pages/OverviewAdminPage.js.map +1 -0
  89. package/dist/ui/admin/pages/PropertiesAdminPage.d.ts +5 -0
  90. package/dist/ui/admin/pages/PropertiesAdminPage.d.ts.map +1 -0
  91. package/dist/ui/admin/pages/PropertiesAdminPage.js +28 -0
  92. package/dist/ui/admin/pages/PropertiesAdminPage.js.map +1 -0
  93. package/dist/ui/admin/pages/SecretsAdminPage.d.ts +5 -0
  94. package/dist/ui/admin/pages/SecretsAdminPage.d.ts.map +1 -0
  95. package/dist/ui/{StudioAdminOverlay.js → admin/pages/SecretsAdminPage.js} +57 -44
  96. package/dist/ui/{StudioAdminOverlay.js.map → admin/pages/SecretsAdminPage.js.map} +1 -1
  97. package/dist/ui/admin/pages/ThemeAdminPage.d.ts +3 -0
  98. package/dist/ui/admin/pages/ThemeAdminPage.d.ts.map +1 -0
  99. package/dist/ui/admin/pages/ThemeAdminPage.js +51 -0
  100. package/dist/ui/admin/pages/ThemeAdminPage.js.map +1 -0
  101. package/dist/ui/admin/pages/adminAuthCredentialFlow.d.ts +32 -0
  102. package/dist/ui/admin/pages/adminAuthCredentialFlow.d.ts.map +1 -0
  103. package/dist/ui/admin/pages/adminAuthCredentialFlow.js +168 -0
  104. package/dist/ui/admin/pages/adminAuthCredentialFlow.js.map +1 -0
  105. package/dist/ui/admin/pages/adminAuthHealthFlow.d.ts +18 -0
  106. package/dist/ui/admin/pages/adminAuthHealthFlow.d.ts.map +1 -0
  107. package/dist/ui/admin/pages/adminAuthHealthFlow.js +24 -0
  108. package/dist/ui/admin/pages/adminAuthHealthFlow.js.map +1 -0
  109. package/dist/ui/admin/pages/adminAuthSessionModel.d.ts +67 -0
  110. package/dist/ui/admin/pages/adminAuthSessionModel.d.ts.map +1 -0
  111. package/dist/ui/admin/pages/adminAuthSessionModel.js +176 -0
  112. package/dist/ui/admin/pages/adminAuthSessionModel.js.map +1 -0
  113. package/dist/ui/admin/pages/adminDataSourceOperations.d.ts +10 -0
  114. package/dist/ui/admin/pages/adminDataSourceOperations.d.ts.map +1 -0
  115. package/dist/ui/admin/pages/adminDataSourceOperations.js +11 -0
  116. package/dist/ui/admin/pages/adminDataSourceOperations.js.map +1 -0
  117. package/dist/ui/admin/pages/adminThemeHarmony.d.ts +4 -0
  118. package/dist/ui/admin/pages/adminThemeHarmony.d.ts.map +1 -0
  119. package/dist/ui/admin/pages/adminThemeHarmony.js +12 -0
  120. package/dist/ui/admin/pages/adminThemeHarmony.js.map +1 -0
  121. package/dist/ui/admin/pages/adminThemeModel.d.ts +22 -0
  122. package/dist/ui/admin/pages/adminThemeModel.d.ts.map +1 -0
  123. package/dist/ui/admin/pages/adminThemeModel.js +22 -0
  124. package/dist/ui/admin/pages/adminThemeModel.js.map +1 -0
  125. package/dist/ui/useStudioAppBarAugmentation.d.ts +0 -1
  126. package/dist/ui/useStudioAppBarAugmentation.d.ts.map +1 -1
  127. package/dist/ui/useStudioAppBarAugmentation.js +20 -40
  128. package/dist/ui/useStudioAppBarAugmentation.js.map +1 -1
  129. package/package.json +2 -2
  130. package/dist/host/auth/projectAuthService.d.ts +0 -23
  131. package/dist/host/auth/projectAuthService.d.ts.map +0 -1
  132. package/dist/host/auth/projectAuthService.js +0 -63
  133. package/dist/host/auth/projectAuthService.js.map +0 -1
  134. package/dist/ui/StudioAdminOverlay.d.ts +0 -7
  135. package/dist/ui/StudioAdminOverlay.d.ts.map +0 -1
  136. package/dist/ui/StudioAuthSettingsOverlay.d.ts +0 -9
  137. package/dist/ui/StudioAuthSettingsOverlay.d.ts.map +0 -1
  138. package/dist/ui/StudioAuthSettingsOverlay.js +0 -607
  139. package/dist/ui/StudioAuthSettingsOverlay.js.map +0 -1
@@ -0,0 +1,4 @@
1
+ export declare function readRecord(value: unknown): Record<string, unknown>;
2
+ export declare function readString(value: unknown): string | null;
3
+ export declare function formatPrimitive(value: unknown): string;
4
+ //# sourceMappingURL=adminPageUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adminPageUtils.d.ts","sourceRoot":"","sources":["../../../src/ui/admin/adminPageUtils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAItD"}
@@ -0,0 +1,14 @@
1
+ export function readRecord(value) {
2
+ return typeof value === 'object' && value !== null ? value : {};
3
+ }
4
+ export function readString(value) {
5
+ return typeof value === 'string' ? value : null;
6
+ }
7
+ export function formatPrimitive(value) {
8
+ if (typeof value === 'string')
9
+ return value;
10
+ if (typeof value === 'number' || typeof value === 'boolean')
11
+ return String(value);
12
+ return JSON.stringify(value);
13
+ }
14
+ //# sourceMappingURL=adminPageUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adminPageUtils.js","sourceRoot":"","sources":["../../../src/ui/admin/adminPageUtils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { StudioAdminRouteId } from '../../../index';
3
+ export type ApisAdminRouteId = Extract<StudioAdminRouteId, 'apis' | 'api-data-sources' | 'api-operations'>;
4
+ export declare function ApisAdminPage({ routeId }: {
5
+ readonly routeId: ApisAdminRouteId;
6
+ }): React.JSX.Element;
7
+ //# sourceMappingURL=ApisAdminPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApisAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ApisAdminPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKzD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,kBAAkB,EAClB,MAAM,GAAG,kBAAkB,GAAG,gBAAgB,CAC/C,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,qBA6DhF"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Card, Text } from '@ankhorage/zora';
3
+ import React from 'react';
4
+ import { View } from 'react-native';
5
+ import { useStudio } from '../../../core/StudioContext';
6
+ import { AdminHeader, adminPageStyles, AdminScroll } from '../adminPagePrimitives';
7
+ import { readRecord, readString } from '../adminPageUtils';
8
+ import { collectDataSourceOperationRows } from './adminDataSourceOperations';
9
+ export function ApisAdminPage({ routeId }) {
10
+ const studio = useStudio();
11
+ const dataSources = Object.entries(studio.manifest?.dataSources ?? {});
12
+ const operationRows = collectDataSourceOperationRows(studio.manifest?.dataSources ?? {});
13
+ const showSources = routeId === 'apis' || routeId === 'api-data-sources';
14
+ const showOperations = routeId === 'apis' || routeId === 'api-operations';
15
+ return (_jsxs(AdminScroll, { children: [_jsx(AdminHeader, { title: routeId === 'api-operations'
16
+ ? 'Operations'
17
+ : routeId === 'api-data-sources'
18
+ ? 'Data sources'
19
+ : 'APIs', description: "Current data-source and runtime operation configuration from the Studio manifest." }), showSources ? (_jsx(Card, { title: "Data sources", children: dataSources.length > 0 ? (dataSources.map(([id, source]) => (_jsxs(View, { style: adminPageStyles.row, children: [_jsx(Text, { weight: "semiBold", children: id }), _jsx(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: readString(readRecord(source).kind) ?? 'data source' })] }, id)))) : (_jsx(Text, { color: "neutral", emphasis: "muted", children: "No data sources are configured." })) })) : null, showOperations ? (_jsx(Card, { title: "Operations", children: operationRows.length > 0 ? (operationRows.map((row) => (_jsxs(View, { style: adminPageStyles.row, children: [_jsx(Text, { weight: "semiBold", children: row.operationId }), _jsxs(Text, { color: "neutral", emphasis: "muted", variant: "bodySmall", children: [row.sourceId, " / ", row.endpointId, " - ", row.kind, row.protocol ? ` (${row.protocol})` : ''] })] }, `${row.sourceId}:${row.endpointId}:${row.operationId}`)))) : (_jsx(Text, { color: "neutral", emphasis: "muted", children: "No runtime operations are configured." })) })) : null] }));
20
+ }
21
+ //# sourceMappingURL=ApisAdminPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApisAdminPage.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/ApisAdminPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type AppManifest } from '@ankhorage/contracts';
2
+ import React from 'react';
3
+ import type { StudioAdminRouteId } from '../../../index';
4
+ export interface AuthAdminPageProps {
5
+ readonly projectId: string;
6
+ readonly manifest: AppManifest | null;
7
+ readonly routeId: Extract<StudioAdminRouteId, 'auth' | 'auth-providers' | 'auth-routes' | 'auth-profile'>;
8
+ }
9
+ export declare function AuthAdminPage(props: AuthAdminPageProps): React.JSX.Element;
10
+ //# sourceMappingURL=AuthAdminPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthAdminPage.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/AuthAdminPage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGjB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,KAAmD,MAAM,OAAO,CAAC;AAaxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA4BzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CACvB,kBAAkB,EAClB,MAAM,GAAG,gBAAgB,GAAG,aAAa,GAAG,cAAc,CAC3D,CAAC;CACH;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAqgBtD"}