@ankhorage/studio 0.11.12 → 0.13.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 (170) hide show
  1. package/README.md +1 -1
  2. package/dist/contractGuards.d.ts.map +1 -1
  3. package/dist/contractGuards.js +78 -89
  4. package/dist/contractGuards.js.map +1 -1
  5. package/dist/core/StudioProvider.d.ts.map +1 -1
  6. package/dist/core/StudioProvider.js +18 -2
  7. package/dist/core/StudioProvider.js.map +1 -1
  8. package/dist/core/studioManifestDraftModel.d.ts +1 -2
  9. package/dist/core/studioManifestDraftModel.d.ts.map +1 -1
  10. package/dist/core/studioManifestDraftModel.js +1 -4
  11. package/dist/core/studioManifestDraftModel.js.map +1 -1
  12. package/dist/externalApiApi.d.ts +5 -0
  13. package/dist/externalApiApi.d.ts.map +1 -0
  14. package/dist/externalApiApi.js +166 -0
  15. package/dist/externalApiApi.js.map +1 -0
  16. package/dist/externalApiAuthoring.d.ts +4 -0
  17. package/dist/externalApiAuthoring.d.ts.map +1 -0
  18. package/dist/externalApiAuthoring.js +3 -0
  19. package/dist/externalApiAuthoring.js.map +1 -0
  20. package/dist/externalApiAuthoringContracts.d.ts +70 -0
  21. package/dist/externalApiAuthoringContracts.d.ts.map +1 -0
  22. package/dist/externalApiAuthoringContracts.js +2 -0
  23. package/dist/externalApiAuthoringContracts.js.map +1 -0
  24. package/dist/generatedApiAuthoring.d.ts +14 -0
  25. package/dist/generatedApiAuthoring.d.ts.map +1 -0
  26. package/dist/generatedApiAuthoring.js +64 -0
  27. package/dist/generatedApiAuthoring.js.map +1 -0
  28. package/dist/host/dataSources/createProjectEndpointCredentialResolver.d.ts +8 -0
  29. package/dist/host/dataSources/createProjectEndpointCredentialResolver.d.ts.map +1 -0
  30. package/dist/host/dataSources/createProjectEndpointCredentialResolver.js +43 -0
  31. package/dist/host/dataSources/createProjectEndpointCredentialResolver.js.map +1 -0
  32. package/dist/host/dataSources/createTrustedEndpointTestFetch.d.ts +3 -0
  33. package/dist/host/dataSources/createTrustedEndpointTestFetch.d.ts.map +1 -0
  34. package/dist/host/dataSources/createTrustedEndpointTestFetch.js +5 -0
  35. package/dist/host/dataSources/createTrustedEndpointTestFetch.js.map +1 -0
  36. package/dist/host/dataSources/createTrustedExternalApiFetch.d.ts +3 -0
  37. package/dist/host/dataSources/createTrustedExternalApiFetch.d.ts.map +1 -0
  38. package/dist/host/dataSources/createTrustedExternalApiFetch.js +5 -0
  39. package/dist/host/dataSources/createTrustedExternalApiFetch.js.map +1 -0
  40. package/dist/host/dataSources/requestTrustedExternalApi.d.ts +12 -0
  41. package/dist/host/dataSources/requestTrustedExternalApi.d.ts.map +1 -0
  42. package/dist/host/dataSources/requestTrustedExternalApi.js +44 -0
  43. package/dist/host/dataSources/requestTrustedExternalApi.js.map +1 -0
  44. package/dist/host/dataSources/sanitizeExternalApiOperationTestResult.d.ts +4 -0
  45. package/dist/host/dataSources/sanitizeExternalApiOperationTestResult.d.ts.map +1 -0
  46. package/dist/host/dataSources/sanitizeExternalApiOperationTestResult.js +34 -0
  47. package/dist/host/dataSources/sanitizeExternalApiOperationTestResult.js.map +1 -0
  48. package/dist/host/dataSources/studioExternalApiService.d.ts +24 -0
  49. package/dist/host/dataSources/studioExternalApiService.d.ts.map +1 -0
  50. package/dist/host/dataSources/studioExternalApiService.js +179 -0
  51. package/dist/host/dataSources/studioExternalApiService.js.map +1 -0
  52. package/dist/host/generatedDatabaseRuntime.d.ts +9 -0
  53. package/dist/host/generatedDatabaseRuntime.d.ts.map +1 -0
  54. package/dist/host/generatedDatabaseRuntime.js +12 -0
  55. package/dist/host/generatedDatabaseRuntime.js.map +1 -0
  56. package/dist/host/http/dataSourceRoutes.d.ts +9 -0
  57. package/dist/host/http/dataSourceRoutes.d.ts.map +1 -0
  58. package/dist/host/http/dataSourceRoutes.js +147 -0
  59. package/dist/host/http/dataSourceRoutes.js.map +1 -0
  60. package/dist/host/http/serverWithSecrets.d.ts +1 -1
  61. package/dist/host/http/serverWithSecrets.d.ts.map +1 -1
  62. package/dist/host/http/serverWithSecrets.js +4 -5
  63. package/dist/host/http/serverWithSecrets.js.map +1 -1
  64. package/dist/host/index.d.ts +4 -0
  65. package/dist/host/index.d.ts.map +1 -1
  66. package/dist/host/index.js +4 -0
  67. package/dist/host/index.js.map +1 -1
  68. package/dist/host/layout/generatedDatabaseRuntimeSource.d.ts +5 -0
  69. package/dist/host/layout/generatedDatabaseRuntimeSource.d.ts.map +1 -0
  70. package/dist/host/layout/generatedDatabaseRuntimeSource.js +40 -0
  71. package/dist/host/layout/generatedDatabaseRuntimeSource.js.map +1 -0
  72. package/dist/host/layout/layoutGenerator.d.ts.map +1 -1
  73. package/dist/host/layout/layoutGenerator.js +10 -2
  74. package/dist/host/layout/layoutGenerator.js.map +1 -1
  75. package/dist/host/layout/templates/rootLayout.d.ts +1 -0
  76. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
  77. package/dist/host/layout/templates/rootLayout.js +2 -1
  78. package/dist/host/layout/templates/rootLayout.js.map +1 -1
  79. package/dist/host/orchestrator/projectManager.d.ts.map +1 -1
  80. package/dist/host/orchestrator/projectManager.js +3 -0
  81. package/dist/host/orchestrator/projectManager.js.map +1 -1
  82. package/dist/host/orchestrator/scaffolder.d.ts +2 -0
  83. package/dist/host/orchestrator/scaffolder.d.ts.map +1 -1
  84. package/dist/host/orchestrator/scaffolder.js +11 -4
  85. package/dist/host/orchestrator/scaffolder.js.map +1 -1
  86. package/dist/host/orchestrator/templates.d.ts +3 -0
  87. package/dist/host/orchestrator/templates.d.ts.map +1 -1
  88. package/dist/host/orchestrator/templates.js +9 -4
  89. package/dist/host/orchestrator/templates.js.map +1 -1
  90. package/dist/index.d.ts +3 -2
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/manifestState.d.ts +1 -2
  94. package/dist/manifestState.d.ts.map +1 -1
  95. package/dist/manifestState.js +1 -4
  96. package/dist/manifestState.js.map +1 -1
  97. package/dist/manifestSync.js +1 -1
  98. package/dist/manifestSync.js.map +1 -1
  99. package/dist/normalizeExternalApiSourceId.d.ts +9 -0
  100. package/dist/normalizeExternalApiSourceId.d.ts.map +1 -0
  101. package/dist/normalizeExternalApiSourceId.js +12 -0
  102. package/dist/normalizeExternalApiSourceId.js.map +1 -0
  103. package/dist/ui/admin/pages/ApisAdminPage.d.ts.map +1 -1
  104. package/dist/ui/admin/pages/ApisAdminPage.js +9 -8
  105. package/dist/ui/admin/pages/ApisAdminPage.js.map +1 -1
  106. package/dist/ui/admin/pages/DataSourceCatalogCard.d.ts +5 -0
  107. package/dist/ui/admin/pages/DataSourceCatalogCard.d.ts.map +1 -0
  108. package/dist/ui/admin/pages/DataSourceCatalogCard.js +27 -0
  109. package/dist/ui/admin/pages/DataSourceCatalogCard.js.map +1 -0
  110. package/dist/ui/admin/pages/DataSourceOperationsCard.d.ts +5 -0
  111. package/dist/ui/admin/pages/DataSourceOperationsCard.d.ts.map +1 -0
  112. package/dist/ui/admin/pages/DataSourceOperationsCard.js +46 -0
  113. package/dist/ui/admin/pages/DataSourceOperationsCard.js.map +1 -0
  114. package/dist/ui/admin/pages/ExternalApiAdminPrimitives.d.ts +43 -0
  115. package/dist/ui/admin/pages/ExternalApiAdminPrimitives.d.ts.map +1 -0
  116. package/dist/ui/admin/pages/ExternalApiAdminPrimitives.js +43 -0
  117. package/dist/ui/admin/pages/ExternalApiAdminPrimitives.js.map +1 -0
  118. package/dist/ui/admin/pages/ExternalApiConnectCard.d.ts +2 -0
  119. package/dist/ui/admin/pages/ExternalApiConnectCard.d.ts.map +1 -0
  120. package/dist/ui/admin/pages/ExternalApiConnectCard.js +57 -0
  121. package/dist/ui/admin/pages/ExternalApiConnectCard.js.map +1 -0
  122. package/dist/ui/admin/pages/GeneratedApiAuthoringCard.d.ts +2 -0
  123. package/dist/ui/admin/pages/GeneratedApiAuthoringCard.d.ts.map +1 -0
  124. package/dist/ui/admin/pages/GeneratedApiAuthoringCard.js +36 -0
  125. package/dist/ui/admin/pages/GeneratedApiAuthoringCard.js.map +1 -0
  126. package/dist/ui/admin/pages/GeneratedApiEditor.d.ts +9 -0
  127. package/dist/ui/admin/pages/GeneratedApiEditor.d.ts.map +1 -0
  128. package/dist/ui/admin/pages/GeneratedApiEditor.js +31 -0
  129. package/dist/ui/admin/pages/GeneratedApiEditor.js.map +1 -0
  130. package/dist/ui/admin/pages/GeneratedApiFieldEditor.d.ts +7 -0
  131. package/dist/ui/admin/pages/GeneratedApiFieldEditor.d.ts.map +1 -0
  132. package/dist/ui/admin/pages/GeneratedApiFieldEditor.js +18 -0
  133. package/dist/ui/admin/pages/GeneratedApiFieldEditor.js.map +1 -0
  134. package/dist/ui/admin/pages/GeneratedApiNormalizedOperations.d.ts +5 -0
  135. package/dist/ui/admin/pages/GeneratedApiNormalizedOperations.d.ts.map +1 -0
  136. package/dist/ui/admin/pages/GeneratedApiNormalizedOperations.js +12 -0
  137. package/dist/ui/admin/pages/GeneratedApiNormalizedOperations.js.map +1 -0
  138. package/dist/ui/admin/pages/GeneratedApiResourceEditor.d.ts +8 -0
  139. package/dist/ui/admin/pages/GeneratedApiResourceEditor.d.ts.map +1 -0
  140. package/dist/ui/admin/pages/GeneratedApiResourceEditor.js +27 -0
  141. package/dist/ui/admin/pages/GeneratedApiResourceEditor.js.map +1 -0
  142. package/dist/ui/admin/pages/GeneratedApiToggle.d.ts +6 -0
  143. package/dist/ui/admin/pages/GeneratedApiToggle.d.ts.map +1 -0
  144. package/dist/ui/admin/pages/GeneratedApiToggle.js +8 -0
  145. package/dist/ui/admin/pages/GeneratedApiToggle.js.map +1 -0
  146. package/dist/ui/admin/pages/ManualRestSourceCard.d.ts +2 -0
  147. package/dist/ui/admin/pages/ManualRestSourceCard.d.ts.map +1 -0
  148. package/dist/ui/admin/pages/ManualRestSourceCard.js +59 -0
  149. package/dist/ui/admin/pages/ManualRestSourceCard.js.map +1 -0
  150. package/dist/ui/admin/pages/adminDataSourceOperations.d.ts +7 -1
  151. package/dist/ui/admin/pages/adminDataSourceOperations.d.ts.map +1 -1
  152. package/dist/ui/admin/pages/adminDataSourceOperations.js +11 -4
  153. package/dist/ui/admin/pages/adminDataSourceOperations.js.map +1 -1
  154. package/dist/ui/admin/pages/generatedApiEditorModel.d.ts +39 -0
  155. package/dist/ui/admin/pages/generatedApiEditorModel.d.ts.map +1 -0
  156. package/dist/ui/admin/pages/generatedApiEditorModel.js +226 -0
  157. package/dist/ui/admin/pages/generatedApiEditorModel.js.map +1 -0
  158. package/dist/ui/admin/pages/generatedApiEditorStyles.d.ts +34 -0
  159. package/dist/ui/admin/pages/generatedApiEditorStyles.d.ts.map +1 -0
  160. package/dist/ui/admin/pages/generatedApiEditorStyles.js +35 -0
  161. package/dist/ui/admin/pages/generatedApiEditorStyles.js.map +1 -0
  162. package/dist/upsertExternalApiDataSource.d.ts +7 -0
  163. package/dist/upsertExternalApiDataSource.d.ts.map +1 -0
  164. package/dist/upsertExternalApiDataSource.js +7 -0
  165. package/dist/upsertExternalApiDataSource.js.map +1 -0
  166. package/package.json +16 -8
  167. package/dist/ui/admin/adminPageUtils.d.ts +0 -3
  168. package/dist/ui/admin/adminPageUtils.d.ts.map +0 -1
  169. package/dist/ui/admin/adminPageUtils.js +0 -7
  170. package/dist/ui/admin/adminPageUtils.js.map +0 -1
@@ -0,0 +1,226 @@
1
+ import { GENERATED_API_CRUD_OPERATIONS } from '@ankhorage/contracts';
2
+ import { createGeneratedApiDataSource, validateGeneratedApiDefinition, } from '@ankhorage/data-sources';
3
+ export function createGeneratedApiEditorDraft(definition) {
4
+ if (!definition) {
5
+ return {
6
+ id: '',
7
+ name: '',
8
+ description: '',
9
+ basePath: '/api',
10
+ databaseAdapterId: 'primary-db',
11
+ resources: [createGeneratedApiResourceDraft()],
12
+ };
13
+ }
14
+ return {
15
+ originalId: definition.id,
16
+ id: definition.id,
17
+ name: definition.name ?? '',
18
+ description: definition.description ?? '',
19
+ basePath: definition.basePath,
20
+ databaseAdapterId: definition.database.id,
21
+ resources: definition.resources.map(toResourceDraft),
22
+ };
23
+ }
24
+ export function createGeneratedApiResourceDraft(index = 0) {
25
+ const suffix = index === 0 ? 'items' : `items-${index + 1}`;
26
+ return {
27
+ id: suffix,
28
+ name: '',
29
+ description: '',
30
+ path: `/${suffix}`,
31
+ collectionName: suffix.replaceAll('-', '_'),
32
+ schema: 'public',
33
+ primaryKey: 'id',
34
+ fields: [
35
+ {
36
+ name: 'id',
37
+ type: 'uuid',
38
+ required: true,
39
+ unique: true,
40
+ defaultValueText: '',
41
+ },
42
+ ],
43
+ operations: [...GENERATED_API_CRUD_OPERATIONS],
44
+ seedText: '[]',
45
+ };
46
+ }
47
+ export function createGeneratedApiFieldDraft() {
48
+ return {
49
+ name: '',
50
+ type: 'text',
51
+ required: false,
52
+ unique: false,
53
+ defaultValueText: '',
54
+ };
55
+ }
56
+ export function resolveGeneratedApiEditorDraft(draft) {
57
+ const diagnostics = [];
58
+ const resources = draft.resources.map((resource, resourceIndex) => resolveResourceDraft(draft.id, resource, resourceIndex, diagnostics));
59
+ if (!draft.id.trim()) {
60
+ diagnostics.push(diagnostic(draft.id, 'Generated API ID is required.', 'id'));
61
+ }
62
+ if (!draft.databaseAdapterId.trim()) {
63
+ diagnostics.push(diagnostic(draft.id, 'A database adapter ID is required.', 'database.id'));
64
+ }
65
+ const definition = {
66
+ id: draft.id.trim(),
67
+ protocol: 'rest',
68
+ name: clean(draft.name),
69
+ description: clean(draft.description),
70
+ basePath: draft.basePath.trim(),
71
+ database: { id: draft.databaseAdapterId.trim(), kind: 'database' },
72
+ resources,
73
+ };
74
+ if (diagnostics.some((entry) => entry.severity === 'error')) {
75
+ return {
76
+ definition,
77
+ diagnostics: [...diagnostics, ...validateGeneratedApiDefinition(definition)],
78
+ };
79
+ }
80
+ const projection = createGeneratedApiDataSource(definition);
81
+ if (!projection.ok) {
82
+ return { definition, diagnostics: [...diagnostics, ...projection.diagnostics] };
83
+ }
84
+ return {
85
+ definition,
86
+ dataSource: projection.data,
87
+ diagnostics: [...diagnostics, ...(projection.diagnostics ?? [])],
88
+ };
89
+ }
90
+ function resolveResourceDraft(apiId, draft, resourceIndex, diagnostics) {
91
+ const fields = draft.fields.map((field, fieldIndex) => resolveFieldDraft(apiId, field, resourceIndex, fieldIndex, diagnostics));
92
+ const seed = parseSeed(apiId, draft.seedText, resourceIndex, diagnostics);
93
+ const primaryKey = clean(draft.primaryKey);
94
+ return {
95
+ id: draft.id.trim(),
96
+ name: clean(draft.name),
97
+ description: clean(draft.description),
98
+ path: draft.path.trim(),
99
+ collection: {
100
+ name: draft.collectionName.trim(),
101
+ schema: clean(draft.schema),
102
+ fields,
103
+ primaryKey,
104
+ },
105
+ operations: [...draft.operations],
106
+ seed,
107
+ };
108
+ }
109
+ function resolveFieldDraft(apiId, draft, resourceIndex, fieldIndex, diagnostics) {
110
+ const name = draft.name.trim();
111
+ const parsedDefault = parseDefaultValue(draft);
112
+ if (!parsedDefault.ok) {
113
+ diagnostics.push(diagnostic(apiId, parsedDefault.message, `resources.${resourceIndex}.collection.fields.${fieldIndex}.defaultValue`));
114
+ }
115
+ return {
116
+ name,
117
+ type: draft.type,
118
+ required: draft.required || undefined,
119
+ unique: draft.unique || undefined,
120
+ defaultValue: parsedDefault.ok ? parsedDefault.value : undefined,
121
+ };
122
+ }
123
+ function parseSeed(apiId, seedText, resourceIndex, diagnostics) {
124
+ const normalized = seedText.trim();
125
+ if (!normalized || normalized === '[]')
126
+ return undefined;
127
+ let value;
128
+ try {
129
+ value = JSON.parse(normalized);
130
+ }
131
+ catch {
132
+ diagnostics.push(diagnostic(apiId, 'Seed records must be valid JSON.', `resources.${resourceIndex}.seed`));
133
+ return undefined;
134
+ }
135
+ if (!Array.isArray(value) || !value.every(isSeedRecord)) {
136
+ diagnostics.push(diagnostic(apiId, 'Seed records must be a JSON array of serializable objects.', `resources.${resourceIndex}.seed`));
137
+ return undefined;
138
+ }
139
+ return value;
140
+ }
141
+ function isSeedRecord(value) {
142
+ return isRecord(value) && Object.values(value).every(isDataContractValue);
143
+ }
144
+ function isDataContractValue(value) {
145
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
146
+ return true;
147
+ if (typeof value === 'number')
148
+ return Number.isFinite(value);
149
+ if (Array.isArray(value))
150
+ return value.every(isDataContractValue);
151
+ return isRecord(value) && Object.values(value).every(isDataContractValue);
152
+ }
153
+ function parseDefaultValue(draft) {
154
+ const value = draft.defaultValueText.trim();
155
+ if (!value)
156
+ return { ok: true, value: undefined };
157
+ if (draft.type === 'text' || draft.type === 'uuid' || draft.type === 'datetime') {
158
+ return { ok: true, value };
159
+ }
160
+ if (draft.type === 'number') {
161
+ const parsed = Number(value);
162
+ return Number.isFinite(parsed)
163
+ ? { ok: true, value: parsed }
164
+ : { ok: false, message: 'Number defaults must be finite numbers.' };
165
+ }
166
+ if (draft.type === 'boolean') {
167
+ if (value === 'true')
168
+ return { ok: true, value: true };
169
+ if (value === 'false')
170
+ return { ok: true, value: false };
171
+ return { ok: false, message: 'Boolean defaults must be true or false.' };
172
+ }
173
+ try {
174
+ const parsed = JSON.parse(value);
175
+ return parsed === null || ['boolean', 'number', 'string'].includes(typeof parsed)
176
+ ? { ok: true, value: parsed }
177
+ : { ok: false, message: 'JSON defaults must be a scalar JSON value.' };
178
+ }
179
+ catch {
180
+ return { ok: false, message: 'JSON defaults must be valid JSON scalars.' };
181
+ }
182
+ }
183
+ function toResourceDraft(resource) {
184
+ return {
185
+ id: resource.id,
186
+ name: resource.name ?? '',
187
+ description: resource.description ?? '',
188
+ path: resource.path,
189
+ collectionName: resource.collection.name,
190
+ schema: resource.collection.schema ?? '',
191
+ primaryKey: resource.collection.primaryKey ?? '',
192
+ fields: resource.collection.fields.map((field) => ({
193
+ name: field.name,
194
+ type: field.type,
195
+ required: field.required ?? false,
196
+ unique: field.unique ?? false,
197
+ defaultValueText: formatDefaultValue(field.defaultValue),
198
+ })),
199
+ operations: [...resource.operations],
200
+ seedText: JSON.stringify(resource.seed ?? [], null, 2),
201
+ };
202
+ }
203
+ function formatDefaultValue(value) {
204
+ if (value === undefined)
205
+ return '';
206
+ if (value === null)
207
+ return 'null';
208
+ return String(value);
209
+ }
210
+ function clean(value) {
211
+ const normalized = value.trim();
212
+ return normalized || undefined;
213
+ }
214
+ function diagnostic(apiId, message, path) {
215
+ return {
216
+ code: 'invalid-config',
217
+ dataSourceId: apiId.trim() || undefined,
218
+ message,
219
+ path,
220
+ severity: 'error',
221
+ };
222
+ }
223
+ function isRecord(value) {
224
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
225
+ }
226
+ //# sourceMappingURL=generatedApiEditorModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatedApiEditorModel.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/generatedApiEditorModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare const generatedApiEditorStyles: {
2
+ actions: {
3
+ alignItems: "center";
4
+ flexDirection: "row";
5
+ flexWrap: "wrap";
6
+ gap: number;
7
+ };
8
+ bordered: {
9
+ borderColor: string;
10
+ borderRadius: number;
11
+ borderWidth: number;
12
+ gap: number;
13
+ padding: number;
14
+ };
15
+ columns: {
16
+ flexDirection: "row";
17
+ flexWrap: "wrap";
18
+ gap: number;
19
+ };
20
+ field: {
21
+ flexGrow: number;
22
+ gap: number;
23
+ minWidth: number;
24
+ };
25
+ stack: {
26
+ gap: number;
27
+ };
28
+ toggle: {
29
+ alignItems: "center";
30
+ flexDirection: "row";
31
+ gap: number;
32
+ };
33
+ };
34
+ //# sourceMappingURL=generatedApiEditorStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatedApiEditorStyles.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/generatedApiEditorStyles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCnC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { StyleSheet } from 'react-native';
2
+ export const generatedApiEditorStyles = StyleSheet.create({
3
+ actions: {
4
+ alignItems: 'center',
5
+ flexDirection: 'row',
6
+ flexWrap: 'wrap',
7
+ gap: 8,
8
+ },
9
+ bordered: {
10
+ borderColor: '#64748b',
11
+ borderRadius: 8,
12
+ borderWidth: 1,
13
+ gap: 12,
14
+ padding: 12,
15
+ },
16
+ columns: {
17
+ flexDirection: 'row',
18
+ flexWrap: 'wrap',
19
+ gap: 12,
20
+ },
21
+ field: {
22
+ flexGrow: 1,
23
+ gap: 6,
24
+ minWidth: 190,
25
+ },
26
+ stack: {
27
+ gap: 12,
28
+ },
29
+ toggle: {
30
+ alignItems: 'center',
31
+ flexDirection: 'row',
32
+ gap: 6,
33
+ },
34
+ });
35
+ //# sourceMappingURL=generatedApiEditorStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatedApiEditorStyles.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/generatedApiEditorStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE;QACP,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,CAAC;KACP;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;KACZ;IACD,OAAO,EAAE;QACP,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,EAAE;KACR;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC;QACX,GAAG,EAAE,CAAC;QACN,QAAQ,EAAE,GAAG;KACd;IACD,KAAK,EAAE;QACL,GAAG,EAAE,EAAE;KACR;IACD,MAAM,EAAE;QACN,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,KAAK;QACpB,GAAG,EAAE,CAAC;KACP;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { DataSourceConfig, DataSourceRegistry } from '@ankhorage/contracts/data';
2
+ export interface ExternalApiDataSourceUpsertResult {
3
+ readonly registry: DataSourceRegistry;
4
+ readonly created: boolean;
5
+ }
6
+ export declare function upsertExternalApiDataSource(registry: DataSourceRegistry, source: DataSourceConfig): ExternalApiDataSourceUpsertResult;
7
+ //# sourceMappingURL=upsertExternalApiDataSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertExternalApiDataSource.d.ts","sourceRoot":"","sources":["../src/upsertExternalApiDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEtF,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,gBAAgB,GACvB,iCAAiC,CAKnC"}
@@ -0,0 +1,7 @@
1
+ export function upsertExternalApiDataSource(registry, source) {
2
+ return {
3
+ registry: { ...registry, [source.id]: source },
4
+ created: registry[source.id] === undefined,
5
+ };
6
+ }
7
+ //# sourceMappingURL=upsertExternalApiDataSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertExternalApiDataSource.js","sourceRoot":"","sources":["../src/upsertExternalApiDataSource.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,2BAA2B,CACzC,QAA4B,EAC5B,MAAwB;IAExB,OAAO;QACL,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE;QAC9C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS;KAC3C,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "0.11.12",
3
+ "version": "0.13.0",
4
4
  "description": "Studio authoring package for Ankhorage apps",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ankhorage/studio#readme",
@@ -179,6 +179,10 @@
179
179
  "./host": {
180
180
  "types": "./dist/host/index.d.ts",
181
181
  "import": "./dist/host/index.js"
182
+ },
183
+ "./externalApiAuthoring": {
184
+ "types": "./dist/externalApiAuthoring.d.ts",
185
+ "import": "./dist/externalApiAuthoring.js"
182
186
  }
183
187
  },
184
188
  "ankh": {
@@ -194,7 +198,9 @@
194
198
  "studio.secrets.list",
195
199
  "studio.secrets.create",
196
200
  "studio.secrets.replace",
197
- "studio.secrets.remove"
201
+ "studio.secrets.remove",
202
+ "studio.data-sources.connect",
203
+ "studio.data-sources.test"
198
204
  ]
199
205
  },
200
206
  "scripts": {
@@ -233,17 +239,18 @@
233
239
  ],
234
240
  "dependencies": {
235
241
  "@ankhorage/color-theory": "^0.0.8",
236
- "@ankhorage/contracts": "^4.0.1",
237
- "@ankhorage/expo-runtime": "^0.0.11",
238
- "@ankhorage/infra": "^1.1.0",
242
+ "@ankhorage/contracts": "^4.0.2",
243
+ "@ankhorage/data-sources": "^1.0.1",
244
+ "@ankhorage/expo-runtime": "^1.0.0",
245
+ "@ankhorage/infra": "^2.0.1",
239
246
  "@ankhorage/orchestrator": "^0.2.4",
240
247
  "@ankhorage/orchestrator-module-expo-google-fonts": "^0.1.2",
241
248
  "@ankhorage/orchestrator-module-expo-localization": "^0.1.5",
242
249
  "@ankhorage/react-native-reanimated-dnd-web": "^0.3.2",
243
- "@ankhorage/runtime": "^0.3.0",
250
+ "@ankhorage/runtime": "^1.0.0",
244
251
  "@ankhorage/supabase-auth": "^1.1.2",
245
252
  "@ankhorage/supabase-vault": "^0.2.4",
246
- "@ankhorage/templates": "^3.0.0",
253
+ "@ankhorage/templates": "^4.0.0",
247
254
  "@ankhorage/zora": "^2.9.3",
248
255
  "@ankhorage/zora-chess": "^0.1.2",
249
256
  "@ankhorage/zora-tabletop": "^0.0.5",
@@ -271,7 +278,8 @@
271
278
  "@types/bun": "^1.3.13",
272
279
  "@types/node": "^25.6.0",
273
280
  "@types/react": "^19.2.14",
274
- "typescript": "^5.9.3"
281
+ "typescript": "^5.9.3",
282
+ "@ankhorage/supabase-db": "^1.0.0"
275
283
  },
276
284
  "packageManager": "bun@1.3.13"
277
285
  }
@@ -1,3 +0,0 @@
1
- export declare function readRecord(value: unknown): Record<string, unknown>;
2
- export declare function readString(value: unknown): string | null;
3
- //# sourceMappingURL=adminPageUtils.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,7 +0,0 @@
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
- //# sourceMappingURL=adminPageUtils.js.map
@@ -1 +0,0 @@
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"}