@honua/app-platform 0.1.4-beta.0 → 0.1.9-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/app/index.d.ts.map +1 -1
- package/app/index.js +4 -0
- package/contract/types.d.ts +1 -1
- package/contract/types.d.ts.map +1 -1
- package/contract/types.js +4 -0
- package/control-plane/admin-client.d.ts +87 -0
- package/control-plane/admin-client.d.ts.map +1 -0
- package/control-plane/admin-client.js +169 -0
- package/control-plane/client.d.ts.map +1 -1
- package/control-plane/client.js +21 -3
- package/control-plane/commands/catalog.d.ts +133 -0
- package/control-plane/commands/catalog.d.ts.map +1 -0
- package/control-plane/commands/catalog.js +353 -0
- package/control-plane/commands/errors.d.ts +96 -0
- package/control-plane/commands/errors.d.ts.map +1 -0
- package/control-plane/commands/errors.js +130 -0
- package/control-plane/commands/identity.d.ts +71 -0
- package/control-plane/commands/identity.d.ts.map +1 -0
- package/control-plane/commands/identity.js +0 -0
- package/control-plane/commands/index.d.ts +39 -0
- package/control-plane/commands/index.d.ts.map +1 -0
- package/control-plane/commands/index.js +34 -0
- package/control-plane/commands/runtime.d.ts +146 -0
- package/control-plane/commands/runtime.d.ts.map +1 -0
- package/control-plane/commands/runtime.js +318 -0
- package/control-plane/commands/types.d.ts +226 -0
- package/control-plane/commands/types.d.ts.map +1 -0
- package/control-plane/commands/types.js +30 -0
- package/control-plane/commands/validate.d.ts +27 -0
- package/control-plane/commands/validate.d.ts.map +1 -0
- package/control-plane/commands/validate.js +132 -0
- package/control-plane/generated/admin-api.d.ts +30263 -0
- package/control-plane/generated/admin-api.d.ts.map +1 -0
- package/control-plane/generated/admin-api.js +5 -0
- package/control-plane/generated/admin-operations.d.ts +4053 -0
- package/control-plane/generated/admin-operations.d.ts.map +1 -0
- package/control-plane/generated/admin-operations.js +820 -0
- package/control-plane/index.d.ts +11 -0
- package/control-plane/index.d.ts.map +1 -1
- package/control-plane/index.js +8 -0
- package/control-plane/types.d.ts +14 -0
- package/control-plane/types.d.ts.map +1 -1
- package/controls/catalog.d.ts.map +1 -1
- package/controls/catalog.js +12 -1
- package/controls/qualification.d.ts.map +1 -1
- package/controls/qualification.js +61 -2
- package/core/client.d.ts +6 -0
- package/core/client.d.ts.map +1 -1
- package/core/client.js +12 -10
- package/core/credential-redaction.d.ts +163 -0
- package/core/credential-redaction.d.ts.map +1 -0
- package/core/credential-redaction.js +389 -0
- package/core/error-classifications.d.ts +32 -0
- package/core/error-classifications.d.ts.map +1 -1
- package/core/error-classifications.js +32 -0
- package/core/error-code-registry.d.ts +33 -1
- package/core/error-code-registry.d.ts.map +1 -1
- package/core/error-code-registry.js +32 -0
- package/core/errors.d.ts +1 -1
- package/core/errors.d.ts.map +1 -1
- package/core/geoparquet-sql.d.ts +1 -1
- package/core/geoparquet-sql.js +2 -2
- package/core/grpc-adapter.d.ts +2 -2
- package/core/grpc-adapter.d.ts.map +1 -1
- package/core/grpc-adapter.js +30 -6
- package/core/job-run-errors.d.ts +10 -0
- package/core/job-run-errors.d.ts.map +1 -0
- package/core/job-run-errors.js +14 -0
- package/core/job-run-lifecycle.d.ts +34 -0
- package/core/job-run-lifecycle.d.ts.map +1 -0
- package/core/job-run-lifecycle.js +193 -0
- package/core/ogc-processes.d.ts +38 -31
- package/core/ogc-processes.d.ts.map +1 -1
- package/core/ogc-processes.js +123 -173
- package/core/process-runner.js +15 -100
- package/core/stac.d.ts +2 -1
- package/core/stac.d.ts.map +1 -1
- package/core/stac.js +29 -11
- package/core/surfaces.d.ts +2 -8
- package/core/surfaces.d.ts.map +1 -1
- package/core/surfaces.js +21 -112
- package/core/types.d.ts +22 -8
- package/core/types.d.ts.map +1 -1
- package/gen/geospatial/v1/common_pb.d.ts +514 -0
- package/gen/geospatial/v1/common_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/common_pb.js +335 -0
- package/gen/geospatial/v1/execution_types_pb.d.ts +1186 -0
- package/gen/geospatial/v1/execution_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/execution_types_pb.js +396 -0
- package/gen/geospatial/v1/feature_service_pb.d.ts +403 -0
- package/gen/geospatial/v1/feature_service_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/feature_service_pb.js +47 -0
- package/gen/geospatial/v1/index.d.ts +5 -0
- package/gen/geospatial/v1/index.d.ts.map +1 -0
- package/gen/geospatial/v1/index.js +9 -0
- package/gen/geospatial/v1/spatial_types_pb.d.ts +285 -0
- package/gen/geospatial/v1/spatial_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/spatial_types_pb.js +58 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts +379 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.d.ts.map +1 -0
- package/gen/geospatial/v1/workspace_artifact_types_pb.js +151 -0
- package/generated-app/projection.d.ts.map +1 -1
- package/generated-app/projection.js +10 -1
- package/interactions/declarative-contract.d.ts +149 -0
- package/interactions/declarative-contract.d.ts.map +1 -0
- package/interactions/declarative-contract.js +293 -0
- package/interactions/declarative.d.ts +198 -0
- package/interactions/declarative.d.ts.map +1 -0
- package/interactions/declarative.js +470 -0
- package/interactions/feature-state.d.ts +7 -0
- package/interactions/feature-state.d.ts.map +1 -1
- package/interactions/feature-state.js +10 -2
- package/map/maplibre-target.js +1 -1
- package/operate/client.d.ts +11 -1
- package/operate/client.d.ts.map +1 -1
- package/operate/client.js +39 -2
- package/operate/index.d.ts +1 -1
- package/operate/index.d.ts.map +1 -1
- package/operate/types.d.ts +40 -6
- package/operate/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/query-planner/grpc.d.ts +4 -4
- package/query-planner/grpc.d.ts.map +1 -1
- package/query-planner/grpc.js +11 -11
- package/query-planner/types.d.ts +4 -4
- package/query-planner/types.d.ts.map +1 -1
- package/realtime/sse.d.ts.map +1 -1
- package/realtime/sse.js +7 -1
- package/runtime/errors.d.ts +1 -1
- package/runtime/errors.d.ts.map +1 -1
- package/runtime/errors.js +2 -0
- package/runtime/generated/map-package-schema-meta.d.ts +11 -0
- package/runtime/generated/map-package-schema-meta.d.ts.map +1 -0
- package/runtime/generated/map-package-schema-meta.js +12 -0
- package/runtime/generated/map-package-schema-validator.d.ts +16 -0
- package/runtime/generated/map-package-schema-validator.d.ts.map +1 -0
- package/runtime/generated/map-package-schema-validator.js +1422 -0
- package/runtime/index.d.ts +5 -1
- package/runtime/index.d.ts.map +1 -1
- package/runtime/index.js +6 -0
- package/runtime/map-package-export.d.ts +151 -0
- package/runtime/map-package-export.d.ts.map +1 -0
- package/runtime/map-package-export.js +636 -0
- package/runtime/map-package-validation.d.ts +21 -1
- package/runtime/map-package-validation.d.ts.map +1 -1
- package/runtime/map-package-validation.js +132 -95
- package/runtime/map-package.d.ts +80 -0
- package/runtime/map-package.d.ts.map +1 -1
- package/runtime/style-compose.d.ts.map +1 -1
- package/runtime/style-compose.js +78 -9
- package/scene-workspace/cesium-adapter.d.ts +8 -8
- package/scene-workspace/cesium-adapter.d.ts.map +1 -1
- package/scene-workspace/cesium-adapter.js +31 -18
- package/scene-workspace/primitives.d.ts.map +1 -1
- package/scene-workspace/primitives.js +9 -6
- package/scene-workspace/source-to-cesium.js +1 -1
- package/studio/chart-spec.d.ts +6 -6
- package/studio/chart-spec.d.ts.map +1 -1
- package/studio/chart-spec.js +6 -6
- package/studio/index.d.ts +17 -7
- package/studio/index.d.ts.map +1 -1
- package/studio/index.js +15 -5
- package/studio/lifecycle-client.d.ts +262 -22
- package/studio/lifecycle-client.d.ts.map +1 -1
- package/studio/lifecycle-client.js +524 -24
- package/studio/lifecycle-errors.d.ts +8 -2
- package/studio/lifecycle-errors.d.ts.map +1 -1
- package/studio/lifecycle-errors.js +6 -1
- package/studio/lifecycle-types.d.ts +228 -8
- package/studio/lifecycle-types.d.ts.map +1 -1
- package/studio/publication-status.d.ts +55 -0
- package/studio/publication-status.d.ts.map +1 -0
- package/studio/publication-status.js +103 -0
- package/web-components/application-context.d.ts +186 -0
- package/web-components/application-context.d.ts.map +1 -0
- package/web-components/application-context.js +429 -0
- package/web-components/elements.d.ts +10 -1
- package/web-components/elements.d.ts.map +1 -1
- package/web-components/elements.js +187 -7
- package/web-components/export-redaction.d.ts +11 -102
- package/web-components/export-redaction.d.ts.map +1 -1
- package/web-components/export-redaction.js +7 -260
- package/web-components/feature-editor-offline.d.ts +32 -0
- package/web-components/feature-editor-offline.d.ts.map +1 -0
- package/web-components/feature-editor-offline.js +115 -0
- package/web-components/feature-editor-workflow.d.ts +85 -22
- package/web-components/feature-editor-workflow.d.ts.map +1 -1
- package/web-components/feature-editor-workflow.js +240 -0
- package/web-components/feature-editor.d.ts +20 -6
- package/web-components/feature-editor.d.ts.map +1 -1
- package/web-components/feature-editor.js +159 -7
- package/web-components/feature-inspection.d.ts +287 -0
- package/web-components/feature-inspection.d.ts.map +1 -0
- package/web-components/feature-inspection.js +1464 -0
- package/web-components/feature-mutation.d.ts +77 -0
- package/web-components/feature-mutation.d.ts.map +1 -0
- package/web-components/feature-mutation.js +137 -0
- package/web-components/feature-table-engine.d.ts +94 -4
- package/web-components/feature-table-engine.d.ts.map +1 -1
- package/web-components/feature-table-engine.js +365 -18
- package/web-components/feature-table-view.d.ts +35 -1
- package/web-components/feature-table-view.d.ts.map +1 -1
- package/web-components/feature-table-view.js +128 -12
- package/web-components/index.d.ts +14 -6
- package/web-components/index.d.ts.map +1 -1
- package/web-components/index.js +8 -2
- package/gen/honua/v1/feature_service_pb.d.ts +0 -918
- package/gen/honua/v1/feature_service_pb.d.ts.map +0 -1
- package/gen/honua/v1/feature_service_pb.js +0 -375
|
@@ -10,6 +10,14 @@ export const HONUA_ERROR_CODE_REGISTRY = Object.freeze({
|
|
|
10
10
|
"core.cancelled": classification("core", "cancellation", false, "Caller cancelled the operation"),
|
|
11
11
|
"core.grpc.transient": classification("core", "protocol", true, "Retryable gRPC-Web transport failure"),
|
|
12
12
|
"core.grpc.rejected": classification("core", "protocol", false, "Non-retryable gRPC-Web transport failure"),
|
|
13
|
+
"pmtiles.lifecycle.invalid-request": classification("pmtiles", "validation", false, "PMTiles lifecycle request is invalid"),
|
|
14
|
+
"pmtiles.lifecycle.invalid-response": classification("pmtiles", "validation", false, "PMTiles lifecycle response violates the server contract"),
|
|
15
|
+
"pmtiles.lifecycle.response-too-large": classification("pmtiles", "validation", false, "PMTiles lifecycle response exceeds its byte ceiling"),
|
|
16
|
+
"pmtiles.lifecycle.job-poll-timeout": classification("pmtiles", "timeout", true, "PMTiles job did not reach a terminal state within polling bounds"),
|
|
17
|
+
"pmtiles.lifecycle.job-failed": classification("pmtiles", "protocol", false, "PMTiles job reached the failed state"),
|
|
18
|
+
"pmtiles.lifecycle.job-cancelled": classification("pmtiles", "cancellation", false, "PMTiles job reached the cancelled state"),
|
|
19
|
+
"pmtiles.lifecycle.access-url-expired": classification("pmtiles", "validation", false, "Published PMTiles access URL is expired"),
|
|
20
|
+
"pmtiles.lifecycle.manual-cleanup-unsupported": classification("pmtiles", "capability", false, "Managed PMTiles artifact deletion is not exposed"),
|
|
13
21
|
"core.geometry.unknown-geometry": classification("core", "validation", false, "Geometry shape cannot be classified safely"),
|
|
14
22
|
"core.geometry.malformed-geometry": classification("core", "validation", false, "Recognized geometry has invalid coordinates or structure"),
|
|
15
23
|
"core.auth.interaction-required": classification("core", "authentication", false, "Interactive authentication is required"),
|
|
@@ -21,12 +29,34 @@ export const HONUA_ERROR_CODE_REGISTRY = Object.freeze({
|
|
|
21
29
|
"core.job-failed": classification("core", "protocol", false, "Remote job reached a failed terminal state"),
|
|
22
30
|
"core.wms-capabilities-parse": classification("core", "protocol", false, "WMS capabilities document is invalid"),
|
|
23
31
|
"core.wmts-capabilities-parse": classification("core", "protocol", false, "WMTS capabilities document is invalid"),
|
|
32
|
+
"core.coverage.invalid-request": classification("core", "validation", false, "Coverage request is invalid"),
|
|
33
|
+
"core.coverage.invalid-response": classification("core", "protocol", false, "Coverage response is invalid"),
|
|
34
|
+
"core.coverage.response-too-large": classification("core", "validation", false, "Coverage response exceeds its byte limit"),
|
|
35
|
+
"core.coverage.unsupported-format": classification("core", "capability", false, "Coverage format is unsupported"),
|
|
36
|
+
"core.coverage.service-error": classification("core", "protocol", false, "Coverage service rejected the request"),
|
|
37
|
+
"core.coverage.wcs-exception": classification("core", "protocol", false, "WCS exception report"),
|
|
38
|
+
"core.zarr.invalid-request": classification("core", "validation", false, "Zarr request is invalid"),
|
|
39
|
+
"core.zarr.invalid-response": classification("core", "protocol", false, "Zarr response is invalid"),
|
|
40
|
+
"core.zarr.response-too-large": classification("core", "validation", false, "Zarr response exceeds its byte limit"),
|
|
41
|
+
"core.zarr.metadata-pending": classification("core", "capability", false, "Zarr metadata scan is pending"),
|
|
42
|
+
"core.zarr.missing-spatial-extent": classification("core", "capability", false, "Zarr storage spatial extent is missing or unusable"),
|
|
43
|
+
"core.zarr.no-tileable-variable": classification("core", "capability", false, "Zarr metadata contains no tileable variable"),
|
|
44
|
+
"core.zarr.missing-spatial-reference": classification("core", "capability", false, "Zarr registration is missing a positive storage SRID for tile handoff"),
|
|
45
|
+
"core.zarr.spatial-reference-mismatch": classification("core", "capability", false, "Zarr storage and tile matrix spatial references do not match"),
|
|
46
|
+
"core.zarr.unsupported-version": classification("core", "capability", false, "Zarr version is unsupported"),
|
|
47
|
+
"core.zarr.unsupported-codec": classification("core", "capability", false, "Zarr codec is unsupported"),
|
|
48
|
+
"core.zarr.unsupported-dtype": classification("core", "capability", false, "Zarr dtype is unsupported"),
|
|
49
|
+
"core.zarr.ambiguous-dimensions": classification("core", "validation", false, "Zarr dimensions are ambiguous"),
|
|
50
|
+
"core.zarr.service-error": classification("core", "protocol", false, "Zarr service rejected the request"),
|
|
24
51
|
"discovery.ambiguous-protocol": classification("discovery", "validation", false, "Multiple protocols match the endpoint"),
|
|
25
52
|
"discovery.ambiguous-source": classification("discovery", "validation", false, "Multiple sources match the selection"),
|
|
53
|
+
"discovery.invalid-cloud-native-input": classification("discovery", "validation", false, "Cloud-native discovery input is invalid or ambiguous"),
|
|
54
|
+
"discovery.invalid-cloud-native-manifest": classification("discovery", "validation", false, "Cloud-native deployment manifest is invalid"),
|
|
26
55
|
"discovery.invalid-endpoint": classification("discovery", "validation", false, "Discovery endpoint is invalid"),
|
|
27
56
|
"discovery.invalid-cache-identity": classification("discovery", "validation", false, "Discovery cache identity is invalid"),
|
|
28
57
|
"discovery.invalid-discovery-cache": classification("discovery", "validation", false, "Discovery cache entry is invalid"),
|
|
29
58
|
"discovery.invalid-capability": classification("discovery", "validation", false, "Discovered capability evidence is invalid"),
|
|
59
|
+
"discovery.cloud-native-operation-unavailable": classification("discovery", "capability", false, "Cloud-native source operation is unavailable at its declared maturity"),
|
|
30
60
|
"discovery.unsupported-protocol": classification("discovery", "capability", false, "Endpoint protocol is unsupported"),
|
|
31
61
|
"discovery.protocol-mismatch": classification("discovery", "validation", false, "Endpoint protocol conflicts with its hint"),
|
|
32
62
|
"query.planning.invalid-query": classification("query", "validation", false, "Query is invalid"),
|
|
@@ -77,6 +107,8 @@ export const HONUA_ERROR_CODE_REGISTRY = Object.freeze({
|
|
|
77
107
|
"runtime.map-package.fetch": classification("runtime", "network", true, "Map package fetch failed"),
|
|
78
108
|
"runtime.map-package.load": classification("runtime", "internal", false, "Map package load failed"),
|
|
79
109
|
"runtime.map-package.validate": classification("runtime", "validation", false, "Map package validation failed"),
|
|
110
|
+
"runtime.map-package.export": classification("runtime", "validation", false, "Map package export refused"),
|
|
111
|
+
"runtime.map-package.import": classification("runtime", "validation", false, "Map package import refused"),
|
|
80
112
|
"runtime.map-package.update": classification("runtime", "internal", false, "Map package update failed"),
|
|
81
113
|
"runtime.map-package.style-compose": classification("runtime", "validation", false, "Map package style composition failed"),
|
|
82
114
|
"runtime.map-package.source-bind": classification("runtime", "internal", false, "Map package source binding failed"),
|
package/core/errors.d.ts
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* @packageDocumentation
|
|
32
32
|
*/
|
|
33
33
|
import { type HonuaErrorMetadata, type HonuaErrorOptions, HonuaSdkError } from "./error-envelope.js";
|
|
34
|
-
export type HonuaDiscoveryErrorCode = "ambiguous-protocol" | "ambiguous-source" | "invalid-endpoint" | "invalid-cache-identity" | "invalid-discovery-cache" | "invalid-capability" | "unsupported-protocol" | "protocol-mismatch";
|
|
34
|
+
export type HonuaDiscoveryErrorCode = "ambiguous-protocol" | "ambiguous-source" | "invalid-cloud-native-input" | "invalid-cloud-native-manifest" | "invalid-endpoint" | "invalid-cache-identity" | "invalid-discovery-cache" | "invalid-capability" | "cloud-native-operation-unavailable" | "unsupported-protocol" | "protocol-mismatch";
|
|
35
35
|
/** Discovery input, metadata, or cache identity is invalid or inconsistent. */
|
|
36
36
|
export declare class HonuaDiscoveryError extends HonuaSdkError {
|
|
37
37
|
readonly code: HonuaDiscoveryErrorCode;
|
package/core/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"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"}
|
package/core/geoparquet-sql.d.ts
CHANGED
|
@@ -240,7 +240,7 @@ export declare function compileAggregate(query: Query & {
|
|
|
240
240
|
*/
|
|
241
241
|
export declare function describeSql(sources: readonly string[]): string;
|
|
242
242
|
/**
|
|
243
|
-
* Cheap row-count
|
|
243
|
+
* Cheap row-count and row-group totals from the Parquet file metadata,
|
|
244
244
|
* summed across all files. Avoids a full `count(*)` table scan on large
|
|
245
245
|
* Overture extracts.
|
|
246
246
|
*/
|
package/core/geoparquet-sql.js
CHANGED
|
@@ -664,14 +664,14 @@ export function describeSql(sources) {
|
|
|
664
664
|
return `DESCRIBE SELECT * FROM ${parquetSourceExpr(sources)}`;
|
|
665
665
|
}
|
|
666
666
|
/**
|
|
667
|
-
* Cheap row-count
|
|
667
|
+
* Cheap row-count and row-group totals from the Parquet file metadata,
|
|
668
668
|
* summed across all files. Avoids a full `count(*)` table scan on large
|
|
669
669
|
* Overture extracts.
|
|
670
670
|
*/
|
|
671
671
|
export function rowEstimateSql(sources) {
|
|
672
672
|
const list = sources.map(stringLiteral);
|
|
673
673
|
const arg = list.length === 1 ? list[0] : `[${list.join(", ")}]`;
|
|
674
|
-
return `SELECT CAST(COALESCE(sum(num_rows), 0) AS BIGINT) AS row_estimate FROM parquet_file_metadata(${arg})`;
|
|
674
|
+
return `SELECT CAST(COALESCE(sum(num_rows), 0) AS BIGINT) AS row_estimate, CAST(COALESCE(sum(num_row_groups), 0) AS BIGINT) AS row_group_count FROM parquet_file_metadata(${arg})`;
|
|
675
675
|
}
|
|
676
676
|
/**
|
|
677
677
|
* SQL that reads the GeoParquet `geo` key-value metadata (the JSON blob that
|
package/core/grpc-adapter.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type FeaturePage, type QueryFeaturesResponse } from "../gen/
|
|
1
|
+
import { type FeaturePage, type QueryFeaturesResponse } from "../gen/geospatial/v1/index.js";
|
|
2
2
|
import type { HonuaCountResponse, HonuaExtentResponse, HonuaFeature, HonuaObjectIdsResponse, HonuaQueryResponse, QueryFeaturesRequest } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Converts a SDK QueryFeaturesRequest into a proto QueryFeaturesRequest message.
|
|
5
5
|
*/
|
|
6
|
-
export declare function toProtoQueryRequest(request: QueryFeaturesRequest): import("../gen/
|
|
6
|
+
export declare function toProtoQueryRequest(request: QueryFeaturesRequest): import("../gen/geospatial/v1/feature_service_pb.js").QueryFeaturesRequest;
|
|
7
7
|
/**
|
|
8
8
|
* Converts a proto QueryFeaturesResponse into the JSON-compatible shape
|
|
9
9
|
* matching the `f=json` response format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/grpc-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,WAAW,EAWhB,KAAK,qBAAqB,EAM3B,MAAM,
|
|
1
|
+
{"version":3,"file":"grpc-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/grpc-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,WAAW,EAWhB,KAAK,qBAAqB,EAM3B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EAEZ,sBAAsB,EACtB,kBAAkB,EAElB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AA6GpB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,6EAyIhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,qBAAqB,GAC9B,kBAAkB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,mBAAmB,CAkDxF;AA0UD;;;;GAIG;AACH,wBAAuB,gBAAgB,CACrC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC,GACjC,cAAc,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAiBjD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAYtD"}
|
package/core/grpc-adapter.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { create } from "@bufbuild/protobuf";
|
|
2
|
-
import { CoordinateSchema, CoordinateSequenceSchema, DistanceUnit, FieldType, GeometrySchema, GeometryType, MultiPointGeometrySchema, PointGeometrySchema, PolygonGeometrySchema, PolylineGeometrySchema, QueryFeaturesRequestSchema, SpatialFilterSchema, SpatialReferenceSchema, SpatialRelationship, StatisticDefinitionSchema, StatisticType, } from "../gen/
|
|
2
|
+
import { CoordinateSchema, CoordinateSequenceSchema, DistanceUnit, FieldType, GeometrySchema, GeometryType, MultiPointGeometrySchema, PointGeometrySchema, PolygonGeometrySchema, PolylineGeometrySchema, QueryFeaturesRequestSchema, SpatialFilterSchema, SpatialReferenceSchema, SpatialRelationship, StatisticDefinitionSchema, StatisticType, } from "../gen/geospatial/v1/index.js";
|
|
3
3
|
import { HonuaGrpcError } from "./errors.js";
|
|
4
4
|
/**
|
|
5
5
|
* Maps proto FieldType enum values to Esri-style field type strings
|
|
@@ -81,6 +81,25 @@ const STATISTIC_TYPE_MAP = {
|
|
|
81
81
|
};
|
|
82
82
|
const MAX_SAFE_INTEGER_BIGINT = BigInt(Number.MAX_SAFE_INTEGER);
|
|
83
83
|
const MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);
|
|
84
|
+
const MIN_PROTO_INT64 = -(1n << 63n);
|
|
85
|
+
const MAX_PROTO_INT64 = (1n << 63n) - 1n;
|
|
86
|
+
function toProtoObjectId(value) {
|
|
87
|
+
const token = value.trim();
|
|
88
|
+
if (!/^(?:0|-?[1-9][0-9]*)$/.test(token)) {
|
|
89
|
+
throw new RangeError("string objectIds must contain canonical decimal int64 values");
|
|
90
|
+
}
|
|
91
|
+
const parsed = BigInt(token);
|
|
92
|
+
if (parsed < MIN_PROTO_INT64 || parsed > MAX_PROTO_INT64) {
|
|
93
|
+
throw new RangeError("string objectIds must remain within the signed int64 range");
|
|
94
|
+
}
|
|
95
|
+
return parsed;
|
|
96
|
+
}
|
|
97
|
+
function toProtoPageInt64(field, value) {
|
|
98
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
99
|
+
throw new RangeError(`${field} must be a non-negative safe integer for the gRPC int64 contract`);
|
|
100
|
+
}
|
|
101
|
+
return BigInt(value);
|
|
102
|
+
}
|
|
84
103
|
/**
|
|
85
104
|
* Converts a SDK QueryFeaturesRequest into a proto QueryFeaturesRequest message.
|
|
86
105
|
*/
|
|
@@ -107,15 +126,20 @@ export function toProtoQueryRequest(request) {
|
|
|
107
126
|
}
|
|
108
127
|
if (request.objectIds !== undefined) {
|
|
109
128
|
const ids = typeof request.objectIds === "string"
|
|
110
|
-
? request.objectIds.split(",").map(
|
|
111
|
-
: request.objectIds.map((id) =>
|
|
129
|
+
? request.objectIds.split(",").map(toProtoObjectId)
|
|
130
|
+
: request.objectIds.map((id) => {
|
|
131
|
+
if (!Number.isSafeInteger(id)) {
|
|
132
|
+
throw new RangeError("objectIds must contain only safe integers for the gRPC int64 contract");
|
|
133
|
+
}
|
|
134
|
+
return BigInt(id);
|
|
135
|
+
});
|
|
112
136
|
msg.objectIds = ids;
|
|
113
137
|
}
|
|
114
138
|
if (request.resultOffset !== undefined) {
|
|
115
|
-
msg.
|
|
139
|
+
msg.resultOffsetLong = toProtoPageInt64("resultOffset", request.resultOffset);
|
|
116
140
|
}
|
|
117
141
|
if (request.resultRecordCount !== undefined) {
|
|
118
|
-
msg.
|
|
142
|
+
msg.resultRecordCountLong = toProtoPageInt64("resultRecordCount", request.resultRecordCount);
|
|
119
143
|
}
|
|
120
144
|
if (request.orderByFields !== undefined) {
|
|
121
145
|
msg.orderBy = request.orderByFields;
|
|
@@ -577,7 +601,7 @@ function convertField(field) {
|
|
|
577
601
|
return {
|
|
578
602
|
name: field.name,
|
|
579
603
|
type: FIELD_TYPE_MAP[field.fieldType] ?? "esriFieldTypeString",
|
|
580
|
-
alias: field.name,
|
|
604
|
+
alias: field.alias || field.name,
|
|
581
605
|
length: field.length || undefined,
|
|
582
606
|
nullable: field.nullable,
|
|
583
607
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { JobStatus } from "../contract/jobs.js";
|
|
2
|
+
import { HonuaSdkError } from "./error-envelope.js";
|
|
3
|
+
/** Error thrown when `IJobRun.results()` observes a non-success terminal. */
|
|
4
|
+
export declare class HonuaJobFailedError extends HonuaSdkError {
|
|
5
|
+
readonly status: JobStatus;
|
|
6
|
+
readonly errorCode: string | undefined;
|
|
7
|
+
readonly details: unknown;
|
|
8
|
+
constructor(message: string, status: JobStatus, errorCode?: string, details?: unknown);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=job-run-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-run-errors.d.ts","sourceRoot":"","sources":["../../../src/core/job-run-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,6EAA6E;AAC7E,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,OAAO,EAAE,OAAO,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAO7F"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HonuaSdkError } from "./error-envelope.js";
|
|
2
|
+
/** Error thrown when `IJobRun.results()` observes a non-success terminal. */
|
|
3
|
+
export class HonuaJobFailedError extends HonuaSdkError {
|
|
4
|
+
status;
|
|
5
|
+
errorCode;
|
|
6
|
+
details;
|
|
7
|
+
constructor(message, status, errorCode, details) {
|
|
8
|
+
super("core.job-failed", message, { context: { status, errorCode } });
|
|
9
|
+
this.name = "HonuaJobFailedError";
|
|
10
|
+
this.status = status;
|
|
11
|
+
this.errorCode = errorCode;
|
|
12
|
+
this.details = details;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { JobProgress, JobResult, JobResultsOptions, JobSnapshot, JobSnapshotListener, JobStatus } from "../contract/jobs.js";
|
|
2
|
+
export interface JobRunLifecycleOptions<T> {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly initialStatus: JobStatus;
|
|
5
|
+
readonly initialProgress?: JobProgress;
|
|
6
|
+
readonly pollIntervalMs: number | (() => number);
|
|
7
|
+
readonly pollBudget?: JobResultsOptions;
|
|
8
|
+
readonly poll: (signal?: AbortSignal) => Promise<JobSnapshot<T>>;
|
|
9
|
+
}
|
|
10
|
+
/** Internal protocol-neutral state machine shared by every remote IJobRun. */
|
|
11
|
+
export declare class JobRunLifecycle<T> {
|
|
12
|
+
private readonly options;
|
|
13
|
+
private currentStatus;
|
|
14
|
+
private currentProgress;
|
|
15
|
+
private terminalSnapshot;
|
|
16
|
+
private terminalPromise;
|
|
17
|
+
private cancelPromise;
|
|
18
|
+
private readonly listeners;
|
|
19
|
+
constructor(options: JobRunLifecycleOptions<T>);
|
|
20
|
+
get status(): JobStatus;
|
|
21
|
+
get progress(): JobProgress | undefined;
|
|
22
|
+
get terminal(): JobSnapshot<T> | undefined;
|
|
23
|
+
watch(listener: JobSnapshotListener<T>): () => void;
|
|
24
|
+
poll(): Promise<JobSnapshot<T>>;
|
|
25
|
+
observe(snapshot: JobSnapshot<T>): JobSnapshot<T>;
|
|
26
|
+
cancel(cancel: () => Promise<JobSnapshot<T>>): Promise<JobStatus>;
|
|
27
|
+
results(overrides?: JobResultsOptions): Promise<JobResult<T>>;
|
|
28
|
+
private resolveBudget;
|
|
29
|
+
private runUntilTerminal;
|
|
30
|
+
private pollWithinBudget;
|
|
31
|
+
private assertWithinBudget;
|
|
32
|
+
private throwTimeout;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=job-run-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-run-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/core/job-run-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CAClE;AAED,8EAA8E;AAC9E,qBAAa,eAAe,CAAC,CAAC;IAQT,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP3C,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;gBAE3B,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAKtE,IAAW,MAAM,IAAI,SAAS,CAE7B;IACD,IAAW,QAAQ,IAAI,WAAW,GAAG,SAAS,CAE7C;IACD,IAAW,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAEhD;IAEM,KAAK,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAK7C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAKrC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAc3C,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAqBvE,OAAO,CAAC,SAAS,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAWxE,OAAO,CAAC,aAAa;YAOP,gBAAgB;YAkChB,gBAAgB;IAgC9B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;CASrB"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { HonuaJobPollTimeoutError, isJobTerminal } from "../contract/jobs.js";
|
|
2
|
+
import { HonuaJobFailedError } from "./job-run-errors.js";
|
|
3
|
+
const DEFAULT_JOB_DEADLINE_MS = 600_000;
|
|
4
|
+
/** Internal protocol-neutral state machine shared by every remote IJobRun. */
|
|
5
|
+
export class JobRunLifecycle {
|
|
6
|
+
options;
|
|
7
|
+
currentStatus;
|
|
8
|
+
currentProgress;
|
|
9
|
+
terminalSnapshot;
|
|
10
|
+
terminalPromise;
|
|
11
|
+
cancelPromise;
|
|
12
|
+
listeners = new Set();
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.currentStatus = options.initialStatus;
|
|
16
|
+
this.currentProgress = options.initialProgress;
|
|
17
|
+
}
|
|
18
|
+
get status() {
|
|
19
|
+
return this.currentStatus;
|
|
20
|
+
}
|
|
21
|
+
get progress() {
|
|
22
|
+
return this.currentProgress;
|
|
23
|
+
}
|
|
24
|
+
get terminal() {
|
|
25
|
+
return this.terminalSnapshot;
|
|
26
|
+
}
|
|
27
|
+
watch(listener) {
|
|
28
|
+
this.listeners.add(listener);
|
|
29
|
+
return () => this.listeners.delete(listener);
|
|
30
|
+
}
|
|
31
|
+
async poll() {
|
|
32
|
+
if (this.terminalSnapshot)
|
|
33
|
+
return this.terminalSnapshot;
|
|
34
|
+
return this.observe(await this.options.poll());
|
|
35
|
+
}
|
|
36
|
+
observe(snapshot) {
|
|
37
|
+
this.currentStatus = snapshot.status;
|
|
38
|
+
this.currentProgress = snapshot.progress;
|
|
39
|
+
if (isJobTerminal(snapshot.status))
|
|
40
|
+
this.terminalSnapshot = snapshot;
|
|
41
|
+
for (const listener of this.listeners) {
|
|
42
|
+
try {
|
|
43
|
+
listener(snapshot);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
/* Observers cannot disrupt the lifecycle. */
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return snapshot;
|
|
50
|
+
}
|
|
51
|
+
async cancel(cancel) {
|
|
52
|
+
if (this.terminalSnapshot)
|
|
53
|
+
return this.currentStatus;
|
|
54
|
+
if (!this.cancelPromise) {
|
|
55
|
+
this.cancelPromise = cancel()
|
|
56
|
+
.then((snapshot) => {
|
|
57
|
+
// A poll may have observed an authoritative terminal while the
|
|
58
|
+
// transport cancellation was in flight. Never let the older cancel
|
|
59
|
+
// response overwrite that terminal race winner.
|
|
60
|
+
if (this.terminalSnapshot)
|
|
61
|
+
return this.currentStatus;
|
|
62
|
+
const status = this.observe(snapshot).status;
|
|
63
|
+
if (!isJobTerminal(status))
|
|
64
|
+
this.cancelPromise = undefined;
|
|
65
|
+
return status;
|
|
66
|
+
})
|
|
67
|
+
.catch((error) => {
|
|
68
|
+
this.cancelPromise = undefined;
|
|
69
|
+
throw error;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return this.cancelPromise;
|
|
73
|
+
}
|
|
74
|
+
results(overrides = {}) {
|
|
75
|
+
if (!this.terminalPromise) {
|
|
76
|
+
const options = this.resolveBudget(overrides);
|
|
77
|
+
this.terminalPromise = this.runUntilTerminal(options).catch((error) => {
|
|
78
|
+
this.terminalPromise = undefined;
|
|
79
|
+
throw error;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return this.terminalPromise;
|
|
83
|
+
}
|
|
84
|
+
resolveBudget(overrides) {
|
|
85
|
+
const merged = { ...this.options.pollBudget, ...overrides };
|
|
86
|
+
return merged.deadlineMs !== undefined || merged.maxAttempts !== undefined
|
|
87
|
+
? merged
|
|
88
|
+
: { ...merged, deadlineMs: DEFAULT_JOB_DEADLINE_MS };
|
|
89
|
+
}
|
|
90
|
+
async runUntilTerminal(options) {
|
|
91
|
+
const configuredInterval = typeof this.options.pollIntervalMs === "function" ? this.options.pollIntervalMs() : this.options.pollIntervalMs;
|
|
92
|
+
const baseIntervalMs = options.pollIntervalMs ?? configuredInterval;
|
|
93
|
+
const maxIntervalMs = options.maxPollIntervalMs ?? Math.max(baseIntervalMs, 30_000);
|
|
94
|
+
const startedAt = Date.now();
|
|
95
|
+
let attempts = 0;
|
|
96
|
+
while (!this.terminalSnapshot) {
|
|
97
|
+
this.assertWithinBudget(options, attempts, startedAt);
|
|
98
|
+
let snapshot;
|
|
99
|
+
try {
|
|
100
|
+
snapshot = await this.pollWithinBudget(options, startedAt);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (options.signal?.aborted)
|
|
104
|
+
this.throwTimeout("aborted", options);
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
attempts += 1;
|
|
108
|
+
this.observe(snapshot);
|
|
109
|
+
if (this.terminalSnapshot)
|
|
110
|
+
break;
|
|
111
|
+
this.assertWithinBudget(options, attempts, startedAt);
|
|
112
|
+
const intervalMs = Math.min(maxIntervalMs, baseIntervalMs * 2 ** (attempts - 1));
|
|
113
|
+
if (intervalMs > 0)
|
|
114
|
+
await abortableDelay(intervalMs, options.signal);
|
|
115
|
+
}
|
|
116
|
+
const terminal = this.terminalSnapshot;
|
|
117
|
+
if (terminal.status === "successful" && terminal.result)
|
|
118
|
+
return terminal.result;
|
|
119
|
+
const error = terminal.error;
|
|
120
|
+
throw new HonuaJobFailedError(error?.message ?? `Job ended in non-success terminal state: ${terminal.status}`, terminal.status, error?.code, error?.details);
|
|
121
|
+
}
|
|
122
|
+
async pollWithinBudget(options, startedAt) {
|
|
123
|
+
if (options.signal === undefined && options.deadlineMs === undefined)
|
|
124
|
+
return this.options.poll();
|
|
125
|
+
const controller = new AbortController();
|
|
126
|
+
let timer;
|
|
127
|
+
let rejectBoundary;
|
|
128
|
+
const boundary = new Promise((_resolve, reject) => {
|
|
129
|
+
rejectBoundary = reject;
|
|
130
|
+
});
|
|
131
|
+
const reachBoundary = (reason) => {
|
|
132
|
+
controller.abort();
|
|
133
|
+
rejectBoundary(new PollBoundaryReached(reason));
|
|
134
|
+
};
|
|
135
|
+
const onAbort = () => reachBoundary("aborted");
|
|
136
|
+
options.signal?.addEventListener("abort", onAbort, { once: true });
|
|
137
|
+
if (options.deadlineMs !== undefined) {
|
|
138
|
+
const remainingMs = Math.max(0, options.deadlineMs - (Date.now() - startedAt));
|
|
139
|
+
timer = setTimeout(() => reachBoundary("deadline"), remainingMs);
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
return await Promise.race([this.options.poll(controller.signal), boundary]);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
if (error instanceof PollBoundaryReached)
|
|
146
|
+
this.throwTimeout(error.reason, options);
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
if (timer !== undefined)
|
|
151
|
+
clearTimeout(timer);
|
|
152
|
+
options.signal?.removeEventListener("abort", onAbort);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
assertWithinBudget(options, attempts, startedAt) {
|
|
156
|
+
if (options.signal?.aborted)
|
|
157
|
+
this.throwTimeout("aborted", options);
|
|
158
|
+
if (options.maxAttempts !== undefined && attempts >= options.maxAttempts)
|
|
159
|
+
this.throwTimeout("max-attempts", options);
|
|
160
|
+
if (options.deadlineMs !== undefined && Date.now() - startedAt >= options.deadlineMs)
|
|
161
|
+
this.throwTimeout("deadline", options);
|
|
162
|
+
}
|
|
163
|
+
throwTimeout(reason, options) {
|
|
164
|
+
const suffix = reason === "aborted"
|
|
165
|
+
? "poll aborted"
|
|
166
|
+
: reason === "deadline"
|
|
167
|
+
? `did not reach a terminal state within ${options.deadlineMs}ms`
|
|
168
|
+
: `did not reach a terminal state within ${options.maxAttempts} poll attempt(s)`;
|
|
169
|
+
throw new HonuaJobPollTimeoutError(`Job ${this.options.id} ${suffix}`, reason, this.options.id, this.currentStatus);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
class PollBoundaryReached extends Error {
|
|
173
|
+
reason;
|
|
174
|
+
constructor(reason) {
|
|
175
|
+
super(reason);
|
|
176
|
+
this.reason = reason;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
function abortableDelay(ms, signal) {
|
|
180
|
+
return new Promise((resolve) => {
|
|
181
|
+
if (signal?.aborted)
|
|
182
|
+
return resolve();
|
|
183
|
+
const onAbort = () => {
|
|
184
|
+
clearTimeout(timer);
|
|
185
|
+
resolve();
|
|
186
|
+
};
|
|
187
|
+
const timer = setTimeout(() => {
|
|
188
|
+
signal?.removeEventListener("abort", onAbort);
|
|
189
|
+
resolve();
|
|
190
|
+
}, ms);
|
|
191
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
192
|
+
});
|
|
193
|
+
}
|
package/core/ogc-processes.d.ts
CHANGED
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import type { IJobRun, JobProgress, JobResult, JobResultsOptions, JobSnapshot, JobSnapshotListener, JobStatus } from "../contract/jobs.js";
|
|
27
27
|
import type { HonuaClient } from "./client.js";
|
|
28
|
-
import { HonuaSdkError } from "./error-envelope.js";
|
|
29
28
|
import type { HonuaProtocolTransport } from "./protocol-transport.js";
|
|
30
29
|
import type { HonuaOgcConformanceResponse, HonuaOgcLandingResponse, HonuaOgcProcessDescription, HonuaOgcProcessJobAccepted, HonuaOgcProcessJobResults, HonuaOgcProcessJobStatus, HonuaOgcProcessesResponse, OgcMetadataRequest, OgcProcessExecuteRequest, OgcProcessJobRequest, OgcProcessStatus } from "./types.js";
|
|
31
30
|
/**
|
|
@@ -52,14 +51,21 @@ export interface HonuaOgcProcessesOptions {
|
|
|
52
51
|
* How hard to gate on server declarations.
|
|
53
52
|
*
|
|
54
53
|
* - `"advertised"` (default) — gate on declarations already in hand
|
|
55
|
-
* (`conformance`, a `describe()` already performed on this handle,
|
|
56
|
-
* explicit `jobControlOptions`), and fall back to the Core-mandated
|
|
57
|
-
* templates when a server advertises no link. No extra requests
|
|
58
|
-
*
|
|
54
|
+
* (`conformance`, a `describe()`/`list()` already performed on this handle,
|
|
55
|
+
* or an explicit `jobControlOptions`), and fall back to the Core-mandated
|
|
56
|
+
* route templates when a server advertises no link. No extra requests.
|
|
57
|
+
* What was read counts, including silence: a description this handle has
|
|
58
|
+
* seen that carries no `jobControlOptions` advertises no execution mode,
|
|
59
|
+
* and an explicit `mode` against it is refused. Only a process this handle
|
|
60
|
+
* has never read is treated as unknown rather than undeclared. Sources are
|
|
61
|
+
* ranked, not merged: a full description outranks a listing summary, so a
|
|
62
|
+
* later `list()` never downgrades what `describe()` established.
|
|
59
63
|
* - `"strict"` — resolve the conformance declaration and the process
|
|
60
64
|
* description first (both through the metadata cache) and refuse anything
|
|
61
|
-
* the server has not declared, including a
|
|
62
|
-
*
|
|
65
|
+
* the server has not declared, including a `/conformance` document that
|
|
66
|
+
* declares no Core class, a description that declares no execution mode, a
|
|
67
|
+
* `cancel()` nothing declared as `dismiss`, and a job lifecycle whose
|
|
68
|
+
* status and results routes are not advertised as links.
|
|
63
69
|
*/
|
|
64
70
|
capabilityPolicy?: "advertised" | "strict";
|
|
65
71
|
/**
|
|
@@ -103,9 +109,12 @@ export declare class HonuaOgcProcesses {
|
|
|
103
109
|
private declaredConformance;
|
|
104
110
|
private conformancePromise;
|
|
105
111
|
/**
|
|
106
|
-
* `jobControlOptions` learned from `describe()` calls made through
|
|
107
|
-
* handle. Callers that follow the natural discover → describe → execute
|
|
108
|
-
* therefore get process-level gating for free, with no extra round trip.
|
|
112
|
+
* `jobControlOptions` learned from `describe()` / `list()` calls made through
|
|
113
|
+
* this handle. Callers that follow the natural discover → describe → execute
|
|
114
|
+
* flow therefore get process-level gating for free, with no extra round trip.
|
|
115
|
+
*
|
|
116
|
+
* Each entry remembers which source taught it, because a later listing must
|
|
117
|
+
* not be able to downgrade what a description already established.
|
|
109
118
|
*/
|
|
110
119
|
private readonly jobControlByProcess;
|
|
111
120
|
constructor(options: HonuaOgcProcessesOptions);
|
|
@@ -114,6 +123,17 @@ export declare class HonuaOgcProcesses {
|
|
|
114
123
|
conformance(request?: OgcMetadataRequest): Promise<HonuaOgcConformanceResponse>;
|
|
115
124
|
list(request?: OgcMetadataRequest): Promise<HonuaOgcProcessesResponse>;
|
|
116
125
|
describe(processId: string, request?: OgcMetadataRequest): Promise<HonuaOgcProcessDescription>;
|
|
126
|
+
/**
|
|
127
|
+
* Record what a process advertises, keeping the more authoritative source.
|
|
128
|
+
*
|
|
129
|
+
* Silence is still not consent — an omitted `jobControlOptions` is stored as
|
|
130
|
+
* an empty declaration, and an explicit mode against it is refused. But a
|
|
131
|
+
* process summary may legally omit what the full description declares, so a
|
|
132
|
+
* `list()` refresh after a `describe()` must not overwrite the description's
|
|
133
|
+
* answer with the listing's silence. Refusing an execution the server did
|
|
134
|
+
* declare is as wrong as permitting one it did not.
|
|
135
|
+
*/
|
|
136
|
+
private rememberJobControl;
|
|
117
137
|
/**
|
|
118
138
|
* Submit a process for execution and return an `IJobRun` — always, so the
|
|
119
139
|
* caller reads results through one surface whichever Core response shape the
|
|
@@ -175,11 +195,7 @@ export declare class HonuaOgcProcessJobRun<T = unknown> implements IJobRun<T> {
|
|
|
175
195
|
/** Server-advertised routes, refreshed from every `links[]` the job reports. */
|
|
176
196
|
private statusPath;
|
|
177
197
|
private resultsPath;
|
|
178
|
-
private
|
|
179
|
-
private currentProgress;
|
|
180
|
-
private terminalSnapshot;
|
|
181
|
-
private terminalPromise;
|
|
182
|
-
private readonly listeners;
|
|
198
|
+
private readonly lifecycle;
|
|
183
199
|
constructor(options: HonuaOgcProcessJobOptions);
|
|
184
200
|
private fetchStatus;
|
|
185
201
|
/**
|
|
@@ -193,22 +209,15 @@ export declare class HonuaOgcProcessJobRun<T = unknown> implements IJobRun<T> {
|
|
|
193
209
|
poll(): Promise<JobSnapshot<T>>;
|
|
194
210
|
watch(listener: JobSnapshotListener<T>): () => void;
|
|
195
211
|
results(options?: JobResultsOptions): Promise<JobResult<T>>;
|
|
196
|
-
/**
|
|
197
|
-
* Layer the caller's bounds over the handle's default budget, then guarantee
|
|
198
|
-
* a bound exists. NFR-001: `results()` is never an unbounded retry loop, so a
|
|
199
|
-
* caller that names neither a deadline nor an attempt cap still inherits
|
|
200
|
-
* {@link DEFAULT_POLL_DEADLINE_MS}.
|
|
201
|
-
*/
|
|
202
|
-
private resolveBudget;
|
|
203
212
|
cancel(): Promise<JobStatus>;
|
|
204
|
-
private
|
|
213
|
+
private cancelSnapshot;
|
|
205
214
|
/**
|
|
206
215
|
* Translate an OGC `statusInfo` payload onto the canonical snapshot
|
|
207
216
|
* surface, fire watchers, and (for `successful` terminals) fetch the
|
|
208
217
|
* result document inline so the snapshot's `result.outputs` is
|
|
209
218
|
* populated by the time `runUntilTerminal` / `poll` resolves.
|
|
210
219
|
*/
|
|
211
|
-
private
|
|
220
|
+
private translateOgcStatus;
|
|
212
221
|
/**
|
|
213
222
|
* Job-route envelope pinned to the root the job was created against,
|
|
214
223
|
* preferring a route the server advertised over the Core path template.
|
|
@@ -219,9 +228,12 @@ export declare class HonuaOgcProcessJobRun<T = unknown> implements IJobRun<T> {
|
|
|
219
228
|
* in hand and neither the Dismiss conformance class nor the process's
|
|
220
229
|
* `jobControlOptions` includes `dismiss`, refuse before issuing a DELETE the
|
|
221
230
|
* server never advertised.
|
|
231
|
+
*
|
|
232
|
+
* Under `"strict"` the absence of any declaration refuses too: a handle that
|
|
233
|
+
* resolves declarations for itself has no honest reason to DELETE a job on a
|
|
234
|
+
* server that never said it could be dismissed.
|
|
222
235
|
*/
|
|
223
236
|
private assertDismissDeclared;
|
|
224
|
-
private notify;
|
|
225
237
|
}
|
|
226
238
|
/**
|
|
227
239
|
* `IJobRun` for a synchronous execution (Core §7.11: `200` with the results
|
|
@@ -245,12 +257,7 @@ export declare class HonuaOgcProcessSyncRun<T = unknown> implements IJobRun<T> {
|
|
|
245
257
|
cancel(): Promise<JobStatus>;
|
|
246
258
|
}
|
|
247
259
|
/** Error thrown when `IJobRun.results()` resolves a non-success terminal. */
|
|
248
|
-
export
|
|
249
|
-
readonly status: JobStatus;
|
|
250
|
-
readonly errorCode: string | undefined;
|
|
251
|
-
readonly details: unknown;
|
|
252
|
-
constructor(message: string, status: JobStatus, errorCode?: string, details?: unknown);
|
|
253
|
-
}
|
|
260
|
+
export { HonuaJobFailedError } from "./job-run-errors.js";
|
|
254
261
|
export declare function createHonuaOgcProcesses(client: HonuaClient): HonuaOgcProcesses;
|
|
255
262
|
export type HonuaOgcProcessesAdapter = HonuaOgcProcesses;
|
|
256
263
|
export type { OgcProcessStatus };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ogc-processes.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-processes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,OAAO,EAEP,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ogc-processes.d.ts","sourceRoot":"","sources":["../../../src/core/ogc-processes.ts"],"names":[],"mappings":"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"}
|