@honua/react 0.1.9-beta.0 → 0.1.11-beta.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/control-plane/admin-client.d.ts +2 -0
- package/control-plane/admin-client.d.ts.map +1 -1
- package/control-plane/admin-client.js +32 -1
- package/control-plane/client.d.ts +1 -1
- package/control-plane/client.d.ts.map +1 -1
- package/control-plane/client.js +124 -8
- package/control-plane/commands/catalog.d.ts +7 -7
- package/control-plane/commands/catalog.d.ts.map +1 -1
- package/control-plane/commands/catalog.js +27 -15
- package/control-plane/commands/runtime.d.ts +6 -6
- package/control-plane/commands/runtime.d.ts.map +1 -1
- package/control-plane/commands/runtime.js +26 -14
- package/control-plane/commands/types.d.ts +4 -2
- package/control-plane/commands/types.d.ts.map +1 -1
- package/control-plane/generated/admin-api.d.ts +6 -4
- package/control-plane/generated/admin-api.d.ts.map +1 -1
- package/control-plane/generated/admin-api.js +2 -2
- package/control-plane/generated/admin-operations.d.ts +7 -7
- package/control-plane/generated/admin-operations.d.ts.map +1 -1
- package/control-plane/generated/admin-operations.js +9 -9
- package/control-plane/index.d.ts +1 -1
- package/control-plane/index.d.ts.map +1 -1
- package/control-plane/index.js +1 -1
- package/core/client.d.ts.map +1 -1
- package/core/client.js +28 -30
- package/core/error-envelope.d.ts +31 -0
- package/core/error-envelope.d.ts.map +1 -1
- package/core/error-envelope.js +11 -0
- package/core/errors.d.ts +15 -3
- package/core/errors.d.ts.map +1 -1
- package/core/errors.js +254 -2
- package/core/geometry-input-sr.d.ts +3 -0
- package/core/geometry-input-sr.d.ts.map +1 -0
- package/core/geometry-input-sr.js +28 -0
- package/core/geoservices.d.ts.map +1 -1
- package/core/geoservices.js +33 -6
- package/core/grpc-adapter.d.ts.map +1 -1
- package/core/grpc-adapter.js +11 -3
- package/core/pbf-decoder.d.ts.map +1 -1
- package/core/pbf-decoder.js +16 -4
- package/core/protocol-transport.d.ts +6 -1
- package/core/protocol-transport.d.ts.map +1 -1
- package/core/request-pipeline.d.ts +6 -3
- package/core/request-pipeline.d.ts.map +1 -1
- package/core/request-pipeline.js +28 -11
- package/core/spatial-filter.d.ts +4 -4
- package/core/spatial-filter.d.ts.map +1 -1
- package/core/spatial-filter.js +7 -7
- package/core/types.d.ts +14 -3
- package/core/types.d.ts.map +1 -1
- package/esri-compat/class-breaks-renderer.d.ts +2 -0
- package/esri-compat/class-breaks-renderer.d.ts.map +1 -1
- package/esri-compat/class-breaks-renderer.js +7 -0
- package/esri-compat/controls.d.ts +10 -1
- package/esri-compat/controls.d.ts.map +1 -1
- package/esri-compat/controls.js +86 -2
- package/esri-compat/directions.d.ts +35 -0
- package/esri-compat/directions.d.ts.map +1 -1
- package/esri-compat/directions.js +153 -2
- package/esri-compat/expand.d.ts +1 -0
- package/esri-compat/expand.d.ts.map +1 -1
- package/esri-compat/expand.js +61 -0
- package/esri-compat/feature-layer.d.ts +29 -4
- package/esri-compat/feature-layer.d.ts.map +1 -1
- package/esri-compat/feature-layer.js +335 -13
- package/esri-compat/geometry-engine.d.ts +4 -0
- package/esri-compat/geometry-engine.d.ts.map +1 -1
- package/esri-compat/geometry-engine.js +8 -1
- package/esri-compat/graphic.d.ts +7 -4
- package/esri-compat/graphic.d.ts.map +1 -1
- package/esri-compat/legend.d.ts +2 -1
- package/esri-compat/legend.d.ts.map +1 -1
- package/esri-compat/legend.js +15 -0
- package/esri-compat/map-view-mount.d.ts +48 -0
- package/esri-compat/map-view-mount.d.ts.map +1 -0
- package/esri-compat/map-view-mount.js +344 -0
- package/esri-compat/map-view.d.ts +38 -6
- package/esri-compat/map-view.d.ts.map +1 -1
- package/esri-compat/map-view.js +471 -33
- package/esri-compat/portal.d.ts +2 -0
- package/esri-compat/portal.d.ts.map +1 -1
- package/esri-compat/portal.js +7 -2
- package/esri-compat/renderer-objects.d.ts +7 -2
- package/esri-compat/renderer-objects.d.ts.map +1 -1
- package/esri-compat/renderer-objects.js +16 -5
- package/esri-compat/route-layer.d.ts +8 -0
- package/esri-compat/route-layer.d.ts.map +1 -1
- package/esri-compat/route-layer.js +24 -4
- package/esri-compat/route-task.d.ts +5 -1
- package/esri-compat/route-task.d.ts.map +1 -1
- package/esri-compat/route-task.js +119 -7
- package/esri-compat/scene-view.d.ts.map +1 -1
- package/esri-compat/scene-view.js +1 -0
- package/esri-compat/search.d.ts +2 -1
- package/esri-compat/search.d.ts.map +1 -1
- package/esri-compat/search.js +52 -2
- package/esri-compat/unique-value-renderer.d.ts +2 -0
- package/esri-compat/unique-value-renderer.d.ts.map +1 -1
- package/esri-compat/unique-value-renderer.js +7 -0
- package/esri-compat/web-map.d.ts +10 -0
- package/esri-compat/web-map.d.ts.map +1 -1
- package/esri-compat/web-map.js +102 -0
- package/map/webmap-maplibre.d.ts +2 -1
- package/map/webmap-maplibre.d.ts.map +1 -1
- package/map/webmap-maplibre.js +3 -0
- package/package.json +3 -3
- package/query-planner/geoservices.d.ts.map +1 -1
- package/query-planner/geoservices.js +2 -0
- package/query-planner/types.d.ts +2 -0
- package/query-planner/types.d.ts.map +1 -1
- package/realtime/honua-server.d.ts +4 -0
- package/realtime/honua-server.d.ts.map +1 -1
- package/realtime/honua-server.js +10 -0
- package/realtime/resumable.js +9 -0
- package/realtime/types.d.ts +8 -0
- package/realtime/types.d.ts.map +1 -1
- package/studio/capability-manifest.d.ts +10 -0
- package/studio/capability-manifest.d.ts.map +1 -1
- package/studio/capability-manifest.js +38 -0
- package/studio/command-adapter.d.ts +35 -0
- package/studio/command-adapter.d.ts.map +1 -0
- package/studio/command-adapter.js +36 -0
- package/studio/generated/studio-api.d.ts +1062 -0
- package/studio/generated/studio-api.d.ts.map +1 -0
- package/studio/generated/studio-api.js +4 -0
- package/studio/index.d.ts +8 -6
- package/studio/index.d.ts.map +1 -1
- package/studio/index.js +6 -5
- package/studio/lifecycle-client.d.ts +3 -3
- package/studio/lifecycle-client.d.ts.map +1 -1
- package/studio/lifecycle-client.js +41 -22
- package/studio/lifecycle-types.d.ts +56 -77
- package/studio/lifecycle-types.d.ts.map +1 -1
- package/studio/lifecycle-types.js +5 -12
- package/studio/types.d.ts +37 -7
- package/studio/types.d.ts.map +1 -1
- package/studio/types.js +5 -3
- package/studio/validate.d.ts.map +1 -1
- package/studio/validate.js +104 -7
- package/style/renderers.d.ts +6 -1
- package/style/renderers.d.ts.map +1 -1
- package/style/renderers.js +11 -6
- package/style/visual-variables.d.ts +43 -0
- package/style/visual-variables.d.ts.map +1 -0
- package/style/visual-variables.js +183 -0
- package/webmap/convert-layer.d.ts +2 -1
- package/webmap/convert-layer.d.ts.map +1 -1
- package/webmap/convert-layer.js +20 -3
- package/webmap/convert-renderer.d.ts +10 -3
- package/webmap/convert-renderer.d.ts.map +1 -1
- package/webmap/convert-renderer.js +190 -36
- package/webmap/index.d.ts +1 -0
- package/webmap/index.d.ts.map +1 -1
- package/webmap/parse.d.ts +2 -1
- package/webmap/parse.d.ts.map +1 -1
- package/webmap/parse.js +1 -1
|
@@ -83,5 +83,7 @@ export declare class HonuaAdminClient {
|
|
|
83
83
|
call<Id extends AdminOperationId>(operationId: Id, request: AdminOperationRequest<Id>): Promise<AdminOperationResult<Id>>;
|
|
84
84
|
}
|
|
85
85
|
export declare function createHonuaAdminClient(options: AdminClientOptions): HonuaAdminClient;
|
|
86
|
+
/** Enforce the admin credential transport policy for command-layer requests. */
|
|
87
|
+
export declare function assertAdminBaseUrl(baseUrl: string): void;
|
|
86
88
|
export {};
|
|
87
89
|
//# sourceMappingURL=admin-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../../src/control-plane/admin-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../../src/control-plane/admin-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,31 @@ export class HonuaAdminApiError extends Error {
|
|
|
5
5
|
statusCode;
|
|
6
6
|
body;
|
|
7
7
|
constructor(operationId, response, body) {
|
|
8
|
-
|
|
8
|
+
const detail = structuredErrorDetail(body);
|
|
9
|
+
super(`Admin operation ${operationId} failed with HTTP ${response.status}.${detail ? ` ${detail}` : ""}`);
|
|
9
10
|
this.name = "HonuaAdminApiError";
|
|
10
11
|
this.operationId = operationId;
|
|
11
12
|
this.statusCode = response.status;
|
|
12
13
|
this.body = body;
|
|
13
14
|
}
|
|
14
15
|
}
|
|
16
|
+
function structuredErrorDetail(body) {
|
|
17
|
+
if (typeof body !== "object" || body === null)
|
|
18
|
+
return undefined;
|
|
19
|
+
const record = body;
|
|
20
|
+
const detail = [record.detail, record.message, record.title].find((value) => typeof value === "string" && value.trim() !== "");
|
|
21
|
+
if (detail)
|
|
22
|
+
return detail;
|
|
23
|
+
if (record.errors !== undefined) {
|
|
24
|
+
try {
|
|
25
|
+
return JSON.stringify(record.errors);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return "The server returned structured validation errors.";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
15
33
|
/**
|
|
16
34
|
* Complete generated Admin REST client. Curated clients may wrap this surface,
|
|
17
35
|
* but every operation in the pinned OpenAPI contract remains callable here.
|
|
@@ -71,6 +89,19 @@ function isLoopbackHost(hostname) {
|
|
|
71
89
|
export function createHonuaAdminClient(options) {
|
|
72
90
|
return new HonuaAdminClient(options);
|
|
73
91
|
}
|
|
92
|
+
/** Enforce the admin credential transport policy for command-layer requests. */
|
|
93
|
+
export function assertAdminBaseUrl(baseUrl) {
|
|
94
|
+
const parsed = new URL(baseUrl);
|
|
95
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
96
|
+
throw new Error("Admin client baseUrl must use http or https.");
|
|
97
|
+
}
|
|
98
|
+
if (parsed.username || parsed.password || parsed.search || parsed.hash) {
|
|
99
|
+
throw new Error("Admin client baseUrl must not include credentials, query parameters, or a fragment.");
|
|
100
|
+
}
|
|
101
|
+
if (parsed.protocol === "http:" && !isLoopbackHost(parsed.hostname)) {
|
|
102
|
+
throw new Error("Admin client requires HTTPS except for exact loopback HTTP development endpoints.");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
74
105
|
function normalizeBasePath(value) {
|
|
75
106
|
const rooted = value.startsWith("/") ? value : `/${value}`;
|
|
76
107
|
return trimTrailingSlashes(rooted);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HonuaClient } from "../core/client.js";
|
|
2
2
|
import type { QueryMethod } from "../core/types.js";
|
|
3
3
|
import type { HonuaMapPackage } from "../runtime/index.js";
|
|
4
|
-
import type
|
|
4
|
+
import { type StudioCapabilityManifest } from "../studio/capability-manifest.js";
|
|
5
5
|
import { type HonuaApiToken, type HonuaApiTokenCreateRequest, type HonuaCapabilityManifestOptions, type HonuaConnectionSummary, type HonuaControlPlaneCapability, type HonuaControlPlaneJob, type HonuaControlPlaneListOptions, type HonuaControlPlanePage, type HonuaControlPlaneRawRequest, type HonuaControlPlaneRequestOptions, type HonuaControlPlaneResult, type HonuaCreateHostedMapRequest, type HonuaHostedMap, type HonuaHostedMapSummary, type HonuaImportCreateRequest, type HonuaMapPackageSummary, type HonuaPublishMapPackageRequest, type HonuaPublishMapPackageResponse, type HonuaShareRequest, type HonuaShareResponse, type HonuaUpdateHostedMapRequest, type HonuaWorkspaceSummary } from "./types.js";
|
|
6
6
|
export interface HonuaControlPlaneClientOptions {
|
|
7
7
|
readonly client: HonuaClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/control-plane/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/control-plane/client.ts"],"names":[],"mappings":"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"}
|
package/control-plane/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { honuaCacheValidatorFromHeaders } from "../core/cache-state.js";
|
|
2
2
|
import { HonuaHttpError } from "../core/errors.js";
|
|
3
3
|
import { trimTrailingSlashes } from "../core/path-utils.js";
|
|
4
|
+
import { assertStudioCapabilityManifest } from "../studio/capability-manifest.js";
|
|
4
5
|
import { HONUA_CAPABILITY_MANIFEST_PATH, HONUA_CONTROL_PLANE_BASE_PATH, } from "./types.js";
|
|
5
6
|
export function createHonuaControlPlane(options) {
|
|
6
7
|
return new HonuaControlPlaneClient(options);
|
|
@@ -48,7 +49,10 @@ export class HonuaControlPlaneClient {
|
|
|
48
49
|
*/
|
|
49
50
|
async getCapabilityManifest(options = {}) {
|
|
50
51
|
const { environment, workspaceId, ...requestOptions } = options;
|
|
51
|
-
|
|
52
|
+
const result = await this.requestJson("capabilities", "GET", withManifestQuery(HONUA_CAPABILITY_MANIFEST_PATH, environment, workspaceId), undefined, requestOptions);
|
|
53
|
+
if (result.supported)
|
|
54
|
+
assertStudioCapabilityManifest(result.value);
|
|
55
|
+
return result;
|
|
52
56
|
}
|
|
53
57
|
async requestJson(capability, method, path, body, options = {}) {
|
|
54
58
|
try {
|
|
@@ -155,18 +159,120 @@ export class HonuaImportsClient {
|
|
|
155
159
|
this.#controlPlane = controlPlane;
|
|
156
160
|
}
|
|
157
161
|
listJobs(options = {}) {
|
|
158
|
-
return this.#controlPlane.requestPage("imports", "/
|
|
162
|
+
return this.#controlPlane.requestPage("imports", "/import/jobs", options).then((result) => result.supported
|
|
163
|
+
? {
|
|
164
|
+
supported: true,
|
|
165
|
+
value: {
|
|
166
|
+
...result.value,
|
|
167
|
+
items: result.value.items.map(normalizeImportJob),
|
|
168
|
+
},
|
|
169
|
+
}
|
|
170
|
+
: result);
|
|
159
171
|
}
|
|
160
|
-
create(request, options = {}) {
|
|
161
|
-
|
|
172
|
+
async create(request, options = {}) {
|
|
173
|
+
if (!request.sourceUrl?.trim()) {
|
|
174
|
+
throw new TypeError("Stored-connection imports are not supported by /import/upload-url; provide a sourceUrl for a URL import.");
|
|
175
|
+
}
|
|
176
|
+
if (request.connectionId) {
|
|
177
|
+
throw new TypeError("connectionId cannot be sent to /import/upload-url; provide only sourceUrl.");
|
|
178
|
+
}
|
|
179
|
+
const fileName = stringOption(request.options, "fileName") ?? fileNameFromUrl(request.sourceUrl);
|
|
180
|
+
const tableName = stringOption(request.options, "tableName") ?? slug(request.title ?? fileName ?? "imported_data");
|
|
181
|
+
const body = {
|
|
182
|
+
sourceUrl: request.sourceUrl,
|
|
183
|
+
fileName: fileName ?? "import.geojson",
|
|
184
|
+
tableName,
|
|
185
|
+
targetSchema: stringOption(request.options, "targetSchema"),
|
|
186
|
+
sourceSrid: numberOption(request.options, "sourceSrid"),
|
|
187
|
+
targetSrid: numberOption(request.options, "targetSrid") ?? 4326,
|
|
188
|
+
overwriteExisting: booleanOption(request.options, "overwriteExisting") ?? false,
|
|
189
|
+
forceBackground: true,
|
|
190
|
+
trackProgress: true,
|
|
191
|
+
};
|
|
192
|
+
return this.#controlPlane
|
|
193
|
+
.requestJson("imports", "POST", "/import/upload-url", body, options)
|
|
194
|
+
.then((result) => (result.supported ? { supported: true, value: normalizeImportJob(result.value) } : result));
|
|
162
195
|
}
|
|
163
196
|
getJob(jobId, options = {}) {
|
|
164
|
-
return this.#controlPlane
|
|
197
|
+
return this.#controlPlane
|
|
198
|
+
.requestJson("imports", "GET", `/import/jobs/${encodeURIComponent(jobId)}`, undefined, options)
|
|
199
|
+
.then((result) => (result.supported ? { supported: true, value: normalizeImportJob(result.value) } : result));
|
|
165
200
|
}
|
|
166
201
|
job(jobId) {
|
|
167
|
-
return new HonuaControlPlaneJobHandle(this.#controlPlane, "imports", `/
|
|
202
|
+
return new HonuaControlPlaneJobHandle(this.#controlPlane, "imports", `/import/jobs/${encodeURIComponent(jobId)}`);
|
|
168
203
|
}
|
|
169
204
|
}
|
|
205
|
+
function normalizeImportJob(value) {
|
|
206
|
+
const id = value.id ?? value.jobId;
|
|
207
|
+
if (!id)
|
|
208
|
+
throw new Error("Import response did not contain a job identifier.");
|
|
209
|
+
return {
|
|
210
|
+
...value,
|
|
211
|
+
id,
|
|
212
|
+
type: "import",
|
|
213
|
+
status: normalizeImportJobStatus(value.status),
|
|
214
|
+
links: {
|
|
215
|
+
...(value.links ?? {}),
|
|
216
|
+
...(value.statusUrl ? { self: value.statusUrl } : {}),
|
|
217
|
+
...(value.cancelUrl ? { cancel: value.cancelUrl } : {}),
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
function normalizeImportJobStatus(status) {
|
|
222
|
+
switch (status?.toLowerCase()) {
|
|
223
|
+
case "processing":
|
|
224
|
+
case "running":
|
|
225
|
+
return "running";
|
|
226
|
+
case "completed":
|
|
227
|
+
case "succeeded":
|
|
228
|
+
case "success":
|
|
229
|
+
return "succeeded";
|
|
230
|
+
case "cancelled":
|
|
231
|
+
case "canceled":
|
|
232
|
+
return "cancelled";
|
|
233
|
+
case "failed":
|
|
234
|
+
return "failed";
|
|
235
|
+
case "queued":
|
|
236
|
+
return "queued";
|
|
237
|
+
default:
|
|
238
|
+
return (status ?? "queued").toLowerCase();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function stringOption(options, key) {
|
|
242
|
+
return typeof options?.[key] === "string" ? options[key] : undefined;
|
|
243
|
+
}
|
|
244
|
+
function numberOption(options, key) {
|
|
245
|
+
return typeof options?.[key] === "number" ? options[key] : undefined;
|
|
246
|
+
}
|
|
247
|
+
function booleanOption(options, key) {
|
|
248
|
+
return typeof options?.[key] === "boolean" ? options[key] : undefined;
|
|
249
|
+
}
|
|
250
|
+
function fileNameFromUrl(sourceUrl) {
|
|
251
|
+
if (!sourceUrl)
|
|
252
|
+
return undefined;
|
|
253
|
+
try {
|
|
254
|
+
const name = new URL(sourceUrl).pathname.split("/").pop();
|
|
255
|
+
return name || undefined;
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function slug(value) {
|
|
262
|
+
const normalized = Array.from(value.trim(), (character) => {
|
|
263
|
+
const code = character.charCodeAt(0);
|
|
264
|
+
return (code >= 48 && code <= 57) || (code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code === 95
|
|
265
|
+
? character
|
|
266
|
+
: "_";
|
|
267
|
+
}).join("");
|
|
268
|
+
let start = 0;
|
|
269
|
+
while (start < normalized.length && normalized[start] === "_")
|
|
270
|
+
start += 1;
|
|
271
|
+
let end = normalized.length;
|
|
272
|
+
while (end > start && normalized[end - 1] === "_")
|
|
273
|
+
end -= 1;
|
|
274
|
+
return normalized.slice(start, end) || "imported_data";
|
|
275
|
+
}
|
|
170
276
|
export class HonuaApiTokensClient {
|
|
171
277
|
#controlPlane;
|
|
172
278
|
constructor(controlPlane) {
|
|
@@ -227,7 +333,11 @@ export class HonuaControlPlaneJobHandle {
|
|
|
227
333
|
this.#path = path;
|
|
228
334
|
}
|
|
229
335
|
poll(options = {}) {
|
|
230
|
-
return this.#controlPlane
|
|
336
|
+
return this.#controlPlane
|
|
337
|
+
.requestJson(this.#capability, "GET", this.#path, undefined, options)
|
|
338
|
+
.then((result) => this.#capability === "imports" && result.supported
|
|
339
|
+
? { supported: true, value: normalizeImportJob(result.value) }
|
|
340
|
+
: result);
|
|
231
341
|
}
|
|
232
342
|
}
|
|
233
343
|
function supported(value) {
|
|
@@ -335,7 +445,13 @@ async function readJson(response) {
|
|
|
335
445
|
}
|
|
336
446
|
function normalizePage(body, response, options = {}) {
|
|
337
447
|
const value = isRecord(body) ? body : {};
|
|
338
|
-
const items = (Array.isArray(value.items)
|
|
448
|
+
const items = (Array.isArray(value.items)
|
|
449
|
+
? value.items
|
|
450
|
+
: Array.isArray(value.data)
|
|
451
|
+
? value.data
|
|
452
|
+
: Array.isArray(value.jobs)
|
|
453
|
+
? value.jobs
|
|
454
|
+
: []);
|
|
339
455
|
const pagination = isRecord(value.pagination) ? value.pagination : value;
|
|
340
456
|
const validator = honuaCacheValidatorFromHeaders(response.headers) ?? options.fallbackValidator;
|
|
341
457
|
const sourceUpdatedAt = response.headers.get("last-modified") ?? undefined;
|
|
@@ -42,8 +42,6 @@ import type { HonuaCommand } from "./types.js";
|
|
|
42
42
|
export interface ConnectionTestInput {
|
|
43
43
|
/** Existing connection to probe. */
|
|
44
44
|
readonly connectionId: string;
|
|
45
|
-
/** Workspace the connection belongs to, when the deployment scopes them. */
|
|
46
|
-
readonly workspaceId?: string;
|
|
47
45
|
}
|
|
48
46
|
/** Server probe result. Left open: the probe payload is deployment-specific. */
|
|
49
47
|
export interface ConnectionTestOutput {
|
|
@@ -55,9 +53,9 @@ export interface ConnectionTestOutput {
|
|
|
55
53
|
/**
|
|
56
54
|
* `POST /connections/{connectionId}/test` — probe a stored connection.
|
|
57
55
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* the
|
|
56
|
+
* The server does not consume an idempotency key or a workspace body. Keep the
|
|
57
|
+
* command identity limited to the connection route so receipts describe the
|
|
58
|
+
* request the server actually processed.
|
|
61
59
|
*/
|
|
62
60
|
export declare const connectionTestCommand: HonuaCommand<ConnectionTestInput, ConnectionTestOutput>;
|
|
63
61
|
/**
|
|
@@ -65,7 +63,9 @@ export declare const connectionTestCommand: HonuaCommand<ConnectionTestInput, Co
|
|
|
65
63
|
*
|
|
66
64
|
* The server's own `dryRun` request field is deliberately not exposed: dry run
|
|
67
65
|
* is a command-layer concept here, and two spellings of it would let one
|
|
68
|
-
* transport preview while another executed.
|
|
66
|
+
* transport preview while another executed. The current file-import endpoint
|
|
67
|
+
* accepts public source URLs only; stored-connection imports have no matching
|
|
68
|
+
* server route yet and are rejected before a request is issued.
|
|
69
69
|
*/
|
|
70
70
|
export interface ImportCreateInput {
|
|
71
71
|
readonly sourceKind: string;
|
|
@@ -75,7 +75,7 @@ export interface ImportCreateInput {
|
|
|
75
75
|
readonly title?: string;
|
|
76
76
|
readonly options?: Record<string, unknown>;
|
|
77
77
|
}
|
|
78
|
-
/** `POST /
|
|
78
|
+
/** `POST /import/upload-url` — enqueue a URL import job. */
|
|
79
79
|
export declare const importCreateCommand: HonuaCommand<ImportCreateInput, HonuaControlPlaneJob>;
|
|
80
80
|
/**
|
|
81
81
|
* Input for {@link mapPackagePublishCommand}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACV,oBAAoB,EAGpB,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAmB,YAAY,EAA2B,MAAM,YAAY,CAAC;AAMzF,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACV,oBAAoB,EAGpB,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAmB,YAAY,EAA2B,MAAM,YAAY,CAAC;AAMzF,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,mBAAmB,EAAE,oBAAoB,CAuCzF,CAAC;AAiBF;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,iBAAiB,EAAE,oBAAoB,CAqFrF,CAAC;AAMF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wDAAwD;AACxD,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,sBAAsB,EAAE,8BAA8B,CAwDzG,CAAC;AAMF,uDAAuD;AACvD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,gGAAgG;AAChG,eAAO,MAAM,6BAA6B,EAAE,YAAY,CAAC,2BAA2B,EAAE,oBAAoB,CA0FzG,CAAC;AAMF,iEAAiE;AACjE,eAAO,MAAM,iBAAiB,kGAKpB,CAAC;AAEX,wCAAwC;AACxC,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;CAKiC,CAAC;AAE7D,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE"}
|
|
@@ -38,22 +38,21 @@ import { HonuaCommandError } from "./errors.js";
|
|
|
38
38
|
/**
|
|
39
39
|
* `POST /connections/{connectionId}/test` — probe a stored connection.
|
|
40
40
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* the
|
|
41
|
+
* The server does not consume an idempotency key or a workspace body. Keep the
|
|
42
|
+
* command identity limited to the connection route so receipts describe the
|
|
43
|
+
* request the server actually processed.
|
|
44
44
|
*/
|
|
45
45
|
export const connectionTestCommand = {
|
|
46
46
|
id: "connection.test",
|
|
47
47
|
title: "Test a connection",
|
|
48
48
|
description: "Probe a stored control-plane connection and report whether the server can reach it.",
|
|
49
|
-
mode: "
|
|
49
|
+
mode: "read",
|
|
50
50
|
resourceKind: "connection",
|
|
51
51
|
inputSchema: {
|
|
52
52
|
type: "object",
|
|
53
53
|
description: "Identifies the stored connection to probe.",
|
|
54
54
|
properties: {
|
|
55
55
|
connectionId: { type: "string", minLength: 1, description: "Identifier of the stored connection." },
|
|
56
|
-
workspaceId: { type: "string", minLength: 1, description: "Owning workspace, when the deployment scopes them." },
|
|
57
56
|
},
|
|
58
57
|
required: ["connectionId"],
|
|
59
58
|
additionalProperties: false,
|
|
@@ -70,7 +69,6 @@ export const connectionTestCommand = {
|
|
|
70
69
|
const result = await context.controlPlane.raw({
|
|
71
70
|
method: "POST",
|
|
72
71
|
path: connectionTestPath(context.input.connectionId),
|
|
73
|
-
...(context.input.workspaceId ? { body: { workspaceId: context.input.workspaceId } } : {}),
|
|
74
72
|
...context.requestOptions(),
|
|
75
73
|
});
|
|
76
74
|
const value = unwrap(result, this.id, {
|
|
@@ -91,14 +89,13 @@ function connectionRef(input) {
|
|
|
91
89
|
return {
|
|
92
90
|
type: "connection",
|
|
93
91
|
id: input.connectionId,
|
|
94
|
-
...(input.workspaceId ? { workspaceId: input.workspaceId } : {}),
|
|
95
92
|
};
|
|
96
93
|
}
|
|
97
|
-
/** `POST /
|
|
94
|
+
/** `POST /import/upload-url` — enqueue a URL import job. */
|
|
98
95
|
export const importCreateCommand = {
|
|
99
96
|
id: "import.create",
|
|
100
97
|
title: "Create an import job",
|
|
101
|
-
description: "Enqueue a control-plane import job for a source URL
|
|
98
|
+
description: "Enqueue a control-plane import job for a source URL.",
|
|
102
99
|
mode: "action",
|
|
103
100
|
resourceKind: "import-job",
|
|
104
101
|
inputSchema: {
|
|
@@ -107,7 +104,11 @@ export const importCreateCommand = {
|
|
|
107
104
|
properties: {
|
|
108
105
|
sourceKind: { type: "string", minLength: 1, description: "Import source kind, e.g. `geojson` or `postgis`." },
|
|
109
106
|
sourceUrl: { type: "string", minLength: 1, description: "Source URL, when the import reads a location." },
|
|
110
|
-
connectionId: {
|
|
107
|
+
connectionId: {
|
|
108
|
+
type: "string",
|
|
109
|
+
minLength: 1,
|
|
110
|
+
description: "Compatibility input; the current /import/upload-url endpoint accepts sourceUrl only.",
|
|
111
|
+
},
|
|
111
112
|
workspaceId: { type: "string", minLength: 1, description: "Workspace that will own the imported content." },
|
|
112
113
|
title: { type: "string", minLength: 1, description: "Human title for the resulting content." },
|
|
113
114
|
options: { type: "object", description: "Import-kind-specific options, passed through verbatim." },
|
|
@@ -116,11 +117,22 @@ export const importCreateCommand = {
|
|
|
116
117
|
additionalProperties: false,
|
|
117
118
|
},
|
|
118
119
|
validate(input) {
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
120
|
+
// This has to run before the dry-run short circuit: a preview that accepts
|
|
121
|
+
// an import with no URL would be a preview of a request the server never
|
|
122
|
+
// sees.
|
|
122
123
|
if (!input.sourceUrl && !input.connectionId) {
|
|
123
|
-
return [{ path: "", message: "
|
|
124
|
+
return [{ path: "sourceUrl", message: "`sourceUrl` is required by /import/upload-url" }];
|
|
125
|
+
}
|
|
126
|
+
if (!input.sourceUrl && input.connectionId) {
|
|
127
|
+
return [
|
|
128
|
+
{
|
|
129
|
+
path: "connectionId",
|
|
130
|
+
message: "stored-connection imports are not supported by /import/upload-url; provide `sourceUrl`",
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
if (input.sourceUrl && input.connectionId) {
|
|
135
|
+
return [{ path: "", message: "provide only one of `sourceUrl` or `connectionId`" }];
|
|
124
136
|
}
|
|
125
137
|
return [];
|
|
126
138
|
},
|
|
@@ -128,7 +140,7 @@ export const importCreateCommand = {
|
|
|
128
140
|
const { input } = context;
|
|
129
141
|
return {
|
|
130
142
|
method: "POST",
|
|
131
|
-
path: "/
|
|
143
|
+
path: "/import/upload-url",
|
|
132
144
|
summary: `Import ${input.sourceKind} from ${input.sourceUrl ?? input.connectionId ?? "(unspecified source)"}`,
|
|
133
145
|
resourceRef: {
|
|
134
146
|
type: "import-job",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* every transport. The claimed {@link HonuaCommandIdentity} is echoed onto
|
|
22
22
|
* the receipt and never placed on the wire.
|
|
23
23
|
* - **No caller-owned request identity.** The same screen refuses
|
|
24
|
-
* {@link HONUA_COMMAND_OWNED_HEADERS} — the `Idempotency-Key` and `
|
|
24
|
+
* {@link HONUA_COMMAND_OWNED_HEADERS} — the `Idempotency-Key`, `If-Match`, and `X-Correlation-ID`
|
|
25
25
|
* the runtime derives and records on the receipt. Both screens compare
|
|
26
26
|
* header names case-insensitively, so `Idempotency-Key`, `idempotency-key`,
|
|
27
27
|
* and `IDEMPOTENCY-KEY` are the same header to them. Without this a caller
|
|
@@ -54,14 +54,14 @@ export declare const HONUA_COMMAND_RESERVED_HEADERS: readonly ["authorization",
|
|
|
54
54
|
/**
|
|
55
55
|
* Headers the runtime derives and records on the receipt.
|
|
56
56
|
*
|
|
57
|
-
* A caller-supplied value
|
|
57
|
+
* A caller-supplied value would put a different key on the wire
|
|
58
58
|
* than the receipt claims, which breaks exactly the two guarantees the receipt
|
|
59
59
|
* exists to provide: that a retry collapses to one server-side effect, and that
|
|
60
60
|
* an audit join can match a receipt to the request it describes. Callers set
|
|
61
|
-
* these through {@link HonuaCommandInvocation.idempotencyKey}
|
|
62
|
-
* {@link HonuaCommandInvocation.ifMatch}, which are recorded.
|
|
61
|
+
* these through {@link HonuaCommandInvocation.idempotencyKey},
|
|
62
|
+
* {@link HonuaCommandInvocation.ifMatch}, and {@link HonuaCommandInvocation.correlationId}, which are recorded.
|
|
63
63
|
*/
|
|
64
|
-
export declare const HONUA_COMMAND_OWNED_HEADERS: readonly ["idempotency-key", "if-match"];
|
|
64
|
+
export declare const HONUA_COMMAND_OWNED_HEADERS: readonly ["idempotency-key", "if-match", "x-correlation-id"];
|
|
65
65
|
/** Options accepted by every {@link HonuaCommandRuntime.execute} call. */
|
|
66
66
|
export interface HonuaCommandInvocation {
|
|
67
67
|
/** Surface issuing the call. Recorded on the receipt; never trusted. */
|
|
@@ -70,7 +70,7 @@ export interface HonuaCommandInvocation {
|
|
|
70
70
|
readonly identity?: HonuaCommandIdentity;
|
|
71
71
|
/** Explicit `Idempotency-Key`; derived deterministically from the input when omitted. */
|
|
72
72
|
readonly idempotencyKey?: string;
|
|
73
|
-
/** Explicit correlation id
|
|
73
|
+
/** Explicit server correlation id (1–64 ASCII letters, digits, `-_.:`); derived when omitted. */
|
|
74
74
|
readonly correlationId?: string;
|
|
75
75
|
/** Preview only — the runtime returns the plan and never calls `execute`. */
|
|
76
76
|
readonly dryRun?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAUvD,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,4WAmBjC,CAAC;AAIX;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAUvD,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,4WAmBjC,CAAC;AAIX;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,8DAA+D,CAAC;AAIxG,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IACzC,yFAAyF;IACzF,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,iGAAiG;IACjG,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,iEAAiE;AACjE,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC1C;AAED,2CAA2C;AAC3C,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAElG;AAED;;;;;GAKG;AACH,qBAAa,mBAAmB;;gBAKX,OAAO,EAAE,0BAA0B;IAWtD,IAAW,YAAY,IAAI,uBAAuB,CAEjD;IAED,IAAW,MAAM,IAAI,0BAA0B,GAAG,SAAS,CAE1D;IAED;;;;;OAKG;IACU,OAAO,CAAC,MAAM,EAAE,OAAO,EAClC,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,sBAAsB,GACjC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;CAyGzC;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAClF,IAAI,CAUN;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,GAAE;IAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAClF,IAAI,CAgBN"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* every transport. The claimed {@link HonuaCommandIdentity} is echoed onto
|
|
22
22
|
* the receipt and never placed on the wire.
|
|
23
23
|
* - **No caller-owned request identity.** The same screen refuses
|
|
24
|
-
* {@link HONUA_COMMAND_OWNED_HEADERS} — the `Idempotency-Key` and `
|
|
24
|
+
* {@link HONUA_COMMAND_OWNED_HEADERS} — the `Idempotency-Key`, `If-Match`, and `X-Correlation-ID`
|
|
25
25
|
* the runtime derives and records on the receipt. Both screens compare
|
|
26
26
|
* header names case-insensitively, so `Idempotency-Key`, `idempotency-key`,
|
|
27
27
|
* and `IDEMPOTENCY-KEY` are the same header to them. Without this a caller
|
|
@@ -76,14 +76,14 @@ const RESERVED_HEADER_SET = new Set(HONUA_COMMAND_RESERVED_HEADERS);
|
|
|
76
76
|
/**
|
|
77
77
|
* Headers the runtime derives and records on the receipt.
|
|
78
78
|
*
|
|
79
|
-
* A caller-supplied value
|
|
79
|
+
* A caller-supplied value would put a different key on the wire
|
|
80
80
|
* than the receipt claims, which breaks exactly the two guarantees the receipt
|
|
81
81
|
* exists to provide: that a retry collapses to one server-side effect, and that
|
|
82
82
|
* an audit join can match a receipt to the request it describes. Callers set
|
|
83
|
-
* these through {@link HonuaCommandInvocation.idempotencyKey}
|
|
84
|
-
* {@link HonuaCommandInvocation.ifMatch}, which are recorded.
|
|
83
|
+
* these through {@link HonuaCommandInvocation.idempotencyKey},
|
|
84
|
+
* {@link HonuaCommandInvocation.ifMatch}, and {@link HonuaCommandInvocation.correlationId}, which are recorded.
|
|
85
85
|
*/
|
|
86
|
-
export const HONUA_COMMAND_OWNED_HEADERS = ["idempotency-key", "if-match"];
|
|
86
|
+
export const HONUA_COMMAND_OWNED_HEADERS = ["idempotency-key", "if-match", "x-correlation-id"];
|
|
87
87
|
const OWNED_HEADER_SET = new Set(HONUA_COMMAND_OWNED_HEADERS);
|
|
88
88
|
/** Build a {@link HonuaCommandRuntime}. */
|
|
89
89
|
export function createHonuaCommandRuntime(options) {
|
|
@@ -128,6 +128,14 @@ export class HonuaCommandRuntime {
|
|
|
128
128
|
const failureContext = { correlationId, idempotencyKey, signal: invocation.signal };
|
|
129
129
|
assertNoAuthorityOverride(command.id, invocation.headers, { correlationId, idempotencyKey });
|
|
130
130
|
assertNoCommandKeyOverride(command.id, invocation.headers, { correlationId, idempotencyKey });
|
|
131
|
+
// Match the server's CorrelationIdMiddleware contract. An unsupported id
|
|
132
|
+
// would be silently replaced there, leaving the receipt unable to join it.
|
|
133
|
+
if (!/^[A-Za-z0-9_.:-]{1,64}$/.test(correlationId)) {
|
|
134
|
+
throw new HonuaCommandError("validation", command.id, "Command correlationId must contain 1–64 ASCII letters, digits, hyphens, underscores, dots, or colons.", {
|
|
135
|
+
...failureContext,
|
|
136
|
+
issues: [{ path: "correlationId", message: "must match the server correlation-id format" }],
|
|
137
|
+
});
|
|
138
|
+
}
|
|
131
139
|
// Schema first, then the command's own cross-field rules. Both run before
|
|
132
140
|
// `plan`, so the dry-run preview below is reachable only for input the real
|
|
133
141
|
// invocation would also accept.
|
|
@@ -151,13 +159,17 @@ export class HonuaCommandRuntime {
|
|
|
151
159
|
correlationId,
|
|
152
160
|
dryRun: invocation.dryRun === true,
|
|
153
161
|
...(invocation.signal ? { signal: invocation.signal } : {}),
|
|
154
|
-
requestOptions: (overrides = {}) =>
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
162
|
+
requestOptions: (overrides = {}) => {
|
|
163
|
+
const headers = new Headers(overrides.headers ?? invocation.headers);
|
|
164
|
+
headers.set("X-Correlation-ID", correlationId);
|
|
165
|
+
return {
|
|
166
|
+
...(invocation.signal ? { signal: invocation.signal } : {}),
|
|
167
|
+
...(command.mode === "action" ? { idempotencyKey } : {}),
|
|
168
|
+
...(invocation.ifMatch ? { ifMatch: invocation.ifMatch } : {}),
|
|
169
|
+
...overrides,
|
|
170
|
+
headers,
|
|
171
|
+
};
|
|
172
|
+
},
|
|
161
173
|
};
|
|
162
174
|
let plan;
|
|
163
175
|
try {
|
|
@@ -226,7 +238,7 @@ export function assertNoCommandKeyOverride(commandId, headers, context = {}) {
|
|
|
226
238
|
if (offending.length === 0)
|
|
227
239
|
return;
|
|
228
240
|
const named = offending.sort().join(", ");
|
|
229
|
-
throw new HonuaCommandError("validation", commandId, `Command ${commandId} refused caller-supplied header(s) it derives itself: ${named}. Set them through the invocation's \`idempotencyKey\` / \`ifMatch\` so the value on the wire is the value the receipt records.`, {
|
|
241
|
+
throw new HonuaCommandError("validation", commandId, `Command ${commandId} refused caller-supplied header(s) it derives itself: ${named}. Set them through the invocation's \`idempotencyKey\` / \`ifMatch\` / \`correlationId\` so the value on the wire is the value the receipt records.`, {
|
|
230
242
|
...context,
|
|
231
243
|
issues: offending.sort().map((name) => ({
|
|
232
244
|
path: `headers.${name}`,
|
|
@@ -300,7 +312,7 @@ function buildReceipt(parts) {
|
|
|
300
312
|
commandId: parts.command.id,
|
|
301
313
|
mode: parts.command.mode,
|
|
302
314
|
status: parts.status,
|
|
303
|
-
idempotencyKey: parts.idempotencyKey,
|
|
315
|
+
...(parts.command.mode === "action" ? { idempotencyKey: parts.idempotencyKey } : {}),
|
|
304
316
|
correlationId: parts.correlationId,
|
|
305
317
|
identity: parts.identity,
|
|
306
318
|
authorization: "server-enforced",
|
|
@@ -146,14 +146,16 @@ export declare const HONUA_COMMAND_RECEIPT_KIND: "honua.command.receipt.v1";
|
|
|
146
146
|
* the transport-independent projection so a server-side audit join can match
|
|
147
147
|
* them. Nothing here is time-, host-, or random-dependent: `idempotencyKey`
|
|
148
148
|
* and `correlationId` are derived from the command id, the canonicalized
|
|
149
|
-
* input, and the tenant unless the caller supplies them.
|
|
149
|
+
* input, and the tenant unless the caller supplies them. Read commands omit
|
|
150
|
+
* `idempotencyKey` because no such key is sent to the server.
|
|
150
151
|
*/
|
|
151
152
|
export interface HonuaCommandReceipt<TOutput = unknown> {
|
|
152
153
|
readonly kind: typeof HONUA_COMMAND_RECEIPT_KIND;
|
|
153
154
|
readonly commandId: string;
|
|
154
155
|
readonly mode: HonuaCommandMode;
|
|
155
156
|
readonly status: HonuaCommandStatus;
|
|
156
|
-
readonly idempotencyKey
|
|
157
|
+
readonly idempotencyKey?: string;
|
|
158
|
+
/** Sent as `X-Correlation-ID` on every request belonging to this command. */
|
|
157
159
|
readonly correlationId: string;
|
|
158
160
|
readonly identity: HonuaCommandIdentity;
|
|
159
161
|
/** Surface that issued the call. Recorded for audit; excluded from `auditKey`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/control-plane/commands/types.ts"],"names":[],"mappings":"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"}
|