@honua/react 0.0.20-alpha.0 → 0.1.0-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.
Files changed (89) hide show
  1. package/contract/index.d.ts +2 -0
  2. package/contract/index.d.ts.map +1 -1
  3. package/contract/index.js +1 -0
  4. package/contract/pmtiles.d.ts +162 -0
  5. package/contract/pmtiles.d.ts.map +1 -0
  6. package/contract/pmtiles.js +155 -0
  7. package/contract/source.d.ts +24 -0
  8. package/contract/source.d.ts.map +1 -1
  9. package/contract/source.js +115 -8
  10. package/contract/types.d.ts +31 -2
  11. package/contract/types.d.ts.map +1 -1
  12. package/contract/types.js +8 -0
  13. package/core/auth/client-credentials-provider.d.ts +51 -0
  14. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  15. package/core/auth/client-credentials-provider.js +115 -0
  16. package/core/auth/credential-store.d.ts +52 -0
  17. package/core/auth/credential-store.d.ts.map +1 -0
  18. package/core/auth/credential-store.js +82 -0
  19. package/core/auth/index.d.ts +23 -0
  20. package/core/auth/index.d.ts.map +1 -0
  21. package/core/auth/index.js +20 -0
  22. package/core/auth/oauth2-provider.d.ts +114 -0
  23. package/core/auth/oauth2-provider.d.ts.map +1 -0
  24. package/core/auth/oauth2-provider.js +408 -0
  25. package/core/auth/pkce.d.ts +25 -0
  26. package/core/auth/pkce.d.ts.map +1 -0
  27. package/core/auth/pkce.js +46 -0
  28. package/core/auth/static-providers.d.ts +20 -0
  29. package/core/auth/static-providers.d.ts.map +1 -0
  30. package/core/auth/static-providers.js +26 -0
  31. package/core/auth/token-endpoint.d.ts +40 -0
  32. package/core/auth/token-endpoint.d.ts.map +1 -0
  33. package/core/auth/token-endpoint.js +133 -0
  34. package/core/auth/types.d.ts +144 -0
  35. package/core/auth/types.d.ts.map +1 -0
  36. package/core/auth/types.js +8 -0
  37. package/core/client.d.ts +31 -1
  38. package/core/client.d.ts.map +1 -1
  39. package/core/client.js +52 -0
  40. package/core/errors.d.ts +33 -1
  41. package/core/errors.d.ts.map +1 -1
  42. package/core/errors.js +20 -0
  43. package/core/geoparquet-sql.d.ts +162 -0
  44. package/core/geoparquet-sql.d.ts.map +1 -0
  45. package/core/geoparquet-sql.js +333 -0
  46. package/core/ogc-endpoint-layout.d.ts +70 -0
  47. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  48. package/core/ogc-endpoint-layout.js +173 -0
  49. package/core/ogc-features.d.ts.map +1 -1
  50. package/core/ogc-features.js +32 -17
  51. package/core/stac-static.d.ts +51 -0
  52. package/core/stac-static.d.ts.map +1 -0
  53. package/core/stac-static.js +195 -0
  54. package/core/stac.d.ts +12 -0
  55. package/core/stac.d.ts.map +1 -1
  56. package/core/stac.js +45 -15
  57. package/core/surfaces.d.ts +13 -0
  58. package/core/surfaces.d.ts.map +1 -1
  59. package/core/surfaces.js +58 -11
  60. package/core/types.d.ts +49 -0
  61. package/core/types.d.ts.map +1 -1
  62. package/core/wfs-capabilities.d.ts +10 -0
  63. package/core/wfs-capabilities.d.ts.map +1 -1
  64. package/core/wfs-capabilities.js +14 -2
  65. package/core/wfs.d.ts +13 -0
  66. package/core/wfs.d.ts.map +1 -1
  67. package/core/wfs.js +25 -5
  68. package/esri-compat/identity-manager.d.ts +43 -0
  69. package/esri-compat/identity-manager.d.ts.map +1 -1
  70. package/esri-compat/identity-manager.js +131 -1
  71. package/esri-compat/oauth-info.d.ts +15 -0
  72. package/esri-compat/oauth-info.d.ts.map +1 -1
  73. package/esri-compat/oauth-info.js +27 -0
  74. package/package.json +6 -1
  75. package/runtime/index.d.ts +2 -2
  76. package/runtime/index.d.ts.map +1 -1
  77. package/runtime/index.js +1 -4
  78. package/runtime/load-package.d.ts.map +1 -1
  79. package/runtime/load-package.js +8 -0
  80. package/runtime/map-package-validation.d.ts +0 -13
  81. package/runtime/map-package-validation.d.ts.map +1 -1
  82. package/runtime/map-package-validation.js +0 -12
  83. package/runtime/map-package.d.ts +1 -1
  84. package/runtime/map-package.d.ts.map +1 -1
  85. package/runtime/pmtiles-protocol.d.ts +77 -0
  86. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  87. package/runtime/pmtiles-protocol.js +120 -0
  88. package/runtime/source-bridge.d.ts.map +1 -1
  89. package/runtime/source-bridge.js +27 -0
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-info.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/oauth-info.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,MAAM,CAAC;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,eAAe;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,sBAA2B;IAc1C,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAchC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAQhF,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,qBAAqB;IAetF,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAgC7C,KAAK,IAAI,eAAe;IAIxB,MAAM,IAAI,sBAAsB;IAYhC,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,cAAc;CAUvB"}
1
+ {"version":3,"file":"oauth-info.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/oauth-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,MAAM,CAAC;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oEAAoE;AACpE,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACvF,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,qBAAa,eAAe;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;gBAEzD,OAAO,GAAE,sBAA2B;IAc1C,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAchC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAQhF,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,qBAAqB;IAetF,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAgCpD;;;;;OAKG;IACI,cAAc,CAAC,SAAS,GAAE,wBAA6B,GAAG,YAAY;IAsBtE,KAAK,IAAI,eAAe;IAIxB,MAAM,IAAI,sBAAsB;IAYhC,OAAO,IAAI,IAAI;IAItB,OAAO,CAAC,cAAc;CAUvB"}
@@ -86,6 +86,33 @@ export class OAuthInfoCompat {
86
86
  this.notifyWatchers("preserveUrlHash", this.preserveUrlHash);
87
87
  }
88
88
  }
89
+ /**
90
+ * Derive an {@link OAuth2Config} from this Esri-style OAuth info so it can back
91
+ * a real `oauth2(...)` provider from `@honua/sdk-js/auth`. Endpoints default to
92
+ * the ArcGIS Portal shape (`<portalUrl>/sharing/rest/oauth2/authorize` and
93
+ * `/token`); pass explicit endpoints or a `redirectUri` via `overrides`.
94
+ */
95
+ toOAuth2Config(overrides = {}) {
96
+ const clientId = overrides.clientId ?? this.appId;
97
+ if (!clientId) {
98
+ throw new Error("OAuthInfoCompat.toOAuth2Config requires an appId (or an explicit clientId override).");
99
+ }
100
+ const redirectUri = overrides.redirectUri;
101
+ if (!redirectUri) {
102
+ throw new Error("OAuthInfoCompat.toOAuth2Config requires a redirectUri override.");
103
+ }
104
+ const portalBase = this.portalUrl.replace(/\/+$/, "");
105
+ const { redirectUri: _redirectUri, clientId: _clientId, ...rest } = overrides;
106
+ return {
107
+ authorizationEndpoint: `${portalBase}/sharing/rest/oauth2/authorize`,
108
+ tokenEndpoint: `${portalBase}/sharing/rest/oauth2/token`,
109
+ clientId,
110
+ redirectUri,
111
+ mode: this.popup ? "popup" : "redirect",
112
+ ...(this.expiration !== undefined ? { extraAuthorizationParams: { expiration: String(this.expiration) } } : {}),
113
+ ...rest,
114
+ };
115
+ }
89
116
  clone() {
90
117
  return new OAuthInfoCompat(this.toJSON());
91
118
  }
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "@honua/react",
3
- "version": "0.0.20-alpha.0",
3
+ "version": "0.1.0-beta.0",
4
4
  "description": "React bindings for the Honua SDK: provider, hooks, and map components",
5
5
  "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/honua-io/honua-sdk-js.git",
9
+ "directory": "."
10
+ },
6
11
  "type": "module",
7
12
  "main": "./react/index.js",
8
13
  "types": "./react/index.d.ts",
@@ -30,8 +30,6 @@ export { watchMapPackage } from "./map-package-watch.js";
30
30
  export type { MapPackageWatchEvent, MapPackageWatchHandle, WatchMapPackageOptions } from "./map-package-watch.js";
31
31
  export { hasMapPackageDiagnosticErrors, validateMapPackage } from "./map-package-validation.js";
32
32
  export type { HonuaMapPackageDiagnostic, HonuaMapPackageDiagnosticCode, HonuaMapPackageDiagnosticSeverity, ValidateMapPackageOptions, ValidateMapPackageResult, } from "./map-package-validation.js";
33
- export { fromMapPackageValidation, toStudioValidationResponse } from "./map-package-validation.js";
34
- export type { StudioPackageDiagnostic, StudioPackageDiagnosticSeverity, StudioPackageValidationResponse, } from "./map-package-validation.js";
35
33
  export { HonuaMapRuntime } from "./runtime.js";
36
34
  export type { HonuaMapRuntimeInternals, HonuaMapRuntimeReload, HonuaRuntimeEvent, HonuaRuntimeEventListener, HonuaRuntimeTelemetry, HonuaRuntimeTelemetrySpan, HonuaRuntimeTelemetrySpanResult, MaplibreMap, RuntimeHitTestOptions, RuntimePointerInteractionHandler, RuntimePointerInteractionOptions, SetViewStateInput, } from "./runtime.js";
37
35
  export { HONUA_MAP_PACKAGE_FORMAT_V1 } from "./map-package.js";
@@ -44,6 +42,8 @@ export { bindPopup, defaultPopupRenderer } from "./popups.js";
44
42
  export type { BindPopupOptions, PopupBindingHandle, PopupFactory, PopupFeature, PopupHandle, PopupRenderContext, PopupRenderer, } from "./popups.js";
45
43
  export { applyStyleRefs, applyTheme, composeStyle } from "./style-compose.js";
46
44
  export type { StyleComposeOptions, StyleRefResolver, ThemeResolver } from "./style-compose.js";
45
+ export { PMTILES_PROTOCOL_SCHEME, ensurePmtilesProtocol, isPmtilesProtocolRegistered, resetPmtilesProtocol, styleUsesPmtiles, } from "./pmtiles-protocol.js";
46
+ export type { EnsurePmtilesProtocolDeps, MaplibreProtocolRegistrar, PmtilesProtocolLike, PmtilesProtocolModuleLike, } from "./pmtiles-protocol.js";
47
47
  export { DEFAULT_OGC_STYLES_PATH_PREFIX, MAPLIBRE_STYLE_MEDIA_TYPE, OgcStylesClient, createOgcStyleRefResolver, styleDocumentToRefBody, } from "./ogc-styles.js";
48
48
  export type { OgcStyleLink, OgcStyleList, OgcStyleListEntry, OgcStyleRefResolverOptions, OgcStylesClientOptions, OgcStylesRequestOptions, } from "./ogc-styles.js";
49
49
  export { prepareRuntimeStyleSpecValidation, validateRuntimeFilterStyleSpec, validateRuntimeLayerStyleSpec, validateRuntimeSourceStyleSpec, validateRuntimeStyleExpressionStyleSpec, validateRuntimeStyleSpec, } from "./style-spec-validation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"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"}
package/runtime/index.js CHANGED
@@ -25,16 +25,13 @@ export { BoundedMapPackageFetchCache, DEFAULT_MAP_PACKAGE_CACHE_LIMIT, DEFAULT_M
25
25
  export { MAP_PACKAGE_REALTIME_CHANNEL_V1, createMapPackageServerSentEventsTransport, decodeMapPackageRealtimeMessage, encodeMapPackageRealtimeUrl, readMapPackageRealtimeAdvertisement, } from "./map-package-realtime.js";
26
26
  export { watchMapPackage } from "./map-package-watch.js";
27
27
  export { hasMapPackageDiagnosticErrors, validateMapPackage } from "./map-package-validation.js";
28
- // Experimental bridge to the unified Studio validation envelope. Reachable
29
- // from the same path map-package consumers already use; the full Studio
30
- // contract lives at `@honua/sdk-js/studio`.
31
- export { fromMapPackageValidation, toStudioValidationResponse } from "./map-package-validation.js";
32
28
  export { HonuaMapRuntime } from "./runtime.js";
33
29
  export { HONUA_MAP_PACKAGE_FORMAT_V1 } from "./map-package.js";
34
30
  export { HonuaMapPackageError } from "./errors.js";
35
31
  export { buildLegend } from "./legend.js";
36
32
  export { bindPopup, defaultPopupRenderer } from "./popups.js";
37
33
  export { applyStyleRefs, applyTheme, composeStyle } from "./style-compose.js";
34
+ export { PMTILES_PROTOCOL_SCHEME, ensurePmtilesProtocol, isPmtilesProtocolRegistered, resetPmtilesProtocol, styleUsesPmtiles, } from "./pmtiles-protocol.js";
38
35
  export { DEFAULT_OGC_STYLES_PATH_PREFIX, MAPLIBRE_STYLE_MEDIA_TYPE, OgcStylesClient, createOgcStyleRefResolver, styleDocumentToRefBody, } from "./ogc-styles.js";
39
36
  export { prepareRuntimeStyleSpecValidation, validateRuntimeFilterStyleSpec, validateRuntimeLayerStyleSpec, validateRuntimeSourceStyleSpec, validateRuntimeStyleExpressionStyleSpec, validateRuntimeStyleSpec, } from "./style-spec-validation.js";
40
37
  export { buildWmsRasterSourceSpec, buildWmtsRasterSourceSpec, projectSourceBindings, toHonuaSourceSpec, } from "./source-bridge.js";
@@ -1 +1 @@
1
- {"version":3,"file":"load-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/load-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAuC,KAAK,cAAc,EAAiB,MAAM,sBAAsB,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,eAAe,EAEf,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAG7F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,MAAM,EAAE,WAAW,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mGAAmG;IACnG,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,qFAAqF;IACrF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,qFAAqF;IACrF,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qFAAqF;IACrF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,8BAA8B,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA6M1B"}
1
+ {"version":3,"file":"load-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/load-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAuC,KAAK,cAAc,EAAiB,MAAM,sBAAsB,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGrF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,eAAe,EAEf,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAgB,MAAM,oBAAoB,CAAC;AAG7F,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,MAAM,EAAE,WAAW,CAAC;IACpB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;;OAIG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mGAAmG;IACnG,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,qFAAqF;IACrF,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,qFAAqF;IACrF,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,qFAAqF;IACrF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,8BAA8B,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAoN1B"}
@@ -12,6 +12,7 @@ import { HonuaMap } from "../map/honua-map.js";
12
12
  import { HonuaMapPackageError } from "./errors.js";
13
13
  import { HONUA_MAP_PACKAGE_FORMAT_V1 } from "./map-package.js";
14
14
  import { createOgcStyleRefResolver } from "./ogc-styles.js";
15
+ import { ensurePmtilesProtocol, styleUsesPmtiles } from "./pmtiles-protocol.js";
15
16
  import { HonuaMapRuntime, } from "./runtime.js";
16
17
  import { projectSourceBindings, toHonuaSourceSpec } from "./source-bridge.js";
17
18
  import { composeStyle } from "./style-compose.js";
@@ -124,6 +125,13 @@ export async function loadMapPackage(pkg, map, options) {
124
125
  resolveStyleRef: styleRefResolver,
125
126
  resolveTheme: options.resolveTheme,
126
127
  });
128
+ // Auto-register the MapLibre `pmtiles://` protocol before the caller (or
129
+ // `runtime.reload`) hands this style to `map.setStyle`, so PMTiles-backed
130
+ // sources render with no manual `addProtocol` wiring. Idempotent across
131
+ // maps and no-ops (zero import cost) when no source uses PMTiles.
132
+ if (styleUsesPmtiles(composed)) {
133
+ await ensurePmtilesProtocol();
134
+ }
127
135
  return { composed, dataset, honuaMap, failedSources };
128
136
  };
129
137
  try {
@@ -27,17 +27,4 @@ export interface ValidateMapPackageResult {
27
27
  */
28
28
  export declare function validateMapPackage(value: unknown, options?: ValidateMapPackageOptions): ValidateMapPackageResult;
29
29
  export declare function hasMapPackageDiagnosticErrors(diagnostics: readonly HonuaMapPackageDiagnostic[]): boolean;
30
- /**
31
- * Compatibility bridge to the unified Studio validation envelope. The map
32
- * family keeps {@link ValidateMapPackageResult} as its native result;
33
- * {@link fromMapPackageValidation} and {@link toStudioValidationResponse}
34
- * adapt it (and any other family result) into a
35
- * `StudioPackageValidationResponse` without changing existing types. See
36
- * `@honua/sdk-js/studio` for the full Studio contract surface.
37
- *
38
- * @experimental The Studio contract surface is not yet covered by the SDK's
39
- * semver contract and may change in any minor release prior to `1.0.0`.
40
- */
41
- export { fromMapPackageValidation, toStudioValidationResponse } from "../studio/validation.js";
42
- export type { StudioPackageDiagnostic, StudioPackageDiagnosticSeverity, StudioPackageValidationResponse, } from "../studio/validation.js";
43
30
  //# sourceMappingURL=map-package-validation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-package-validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,MAAM,iCAAiC,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GACrC,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,yBAAyB,GACzB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,yBAAyB,GACzB,sBAAsB,GACtB,6BAA6B,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAgBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB,CA2HpH;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,GAAG,OAAO,CAExG;AAkID;;;;;;;;;;GAUG;AACH,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EACV,uBAAuB,EACvB,+BAA+B,EAC/B,+BAA+B,GAChC,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"map-package-validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErF,MAAM,MAAM,iCAAiC,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GACrC,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,yBAAyB,GACzB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,yBAAyB,GACzB,sBAAsB,GACtB,6BAA6B,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,6BAA6B,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iCAAiC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,iFAAiF;IACjF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAgBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB,CA2HpH;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,GAAG,OAAO,CAExG"}
@@ -255,15 +255,3 @@ function parseTimestampMs(value) {
255
255
  function isRecord(value) {
256
256
  return typeof value === "object" && value !== null && !Array.isArray(value);
257
257
  }
258
- /**
259
- * Compatibility bridge to the unified Studio validation envelope. The map
260
- * family keeps {@link ValidateMapPackageResult} as its native result;
261
- * {@link fromMapPackageValidation} and {@link toStudioValidationResponse}
262
- * adapt it (and any other family result) into a
263
- * `StudioPackageValidationResponse` without changing existing types. See
264
- * `@honua/sdk-js/studio` for the full Studio contract surface.
265
- *
266
- * @experimental The Studio contract surface is not yet covered by the SDK's
267
- * semver contract and may change in any minor release prior to `1.0.0`.
268
- */
269
- export { fromMapPackageValidation, toStudioValidationResponse } from "../studio/validation.js";
@@ -23,7 +23,7 @@ export type HonuaMapPackageStatus = "Draft" | "Composing" | "Ready" | "Failed" |
23
23
  * server wire format. Translated to the SDK's kebab-case `Protocol`
24
24
  * union in `source-bridge.ts`.
25
25
  */
26
- export type HonuaMapPackageProtocol = "geoservices_feature_service" | "geoservices_map_service" | "ogc_features" | "ogc_maps" | "ogc_tiles" | "wfs" | "wms" | "wmts" | "odata" | "vector_tile" | "raster_tile" | "workspace_artifact";
26
+ export type HonuaMapPackageProtocol = "geoservices_feature_service" | "geoservices_map_service" | "ogc_features" | "ogc_maps" | "ogc_tiles" | "wfs" | "wms" | "wmts" | "odata" | "vector_tile" | "raster_tile" | "pmtiles" | "workspace_artifact";
27
27
  /** Protocol-specific endpoint information attached to a binding. */
28
28
  export interface HonuaMapPackageLocator {
29
29
  url?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAC;AAE3E,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,aAAa,GACb,aAAa,GACb,oBAAoB,CAAC;AAEzB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6CAA6C;AAC7C,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,cAAc,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACxD,SAAS,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAE/C;;;;OAIG;IACH,OAAO,EAAE,uBAAuB,CAAC;IAEjC,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,+EAA+E;IAC/E,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"map-package.d.ts","sourceRoot":"","sources":["../../../src/runtime/map-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,EAAG,sBAA+B,CAAC;AAE3E,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,OAAO,2BAA2B,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,yBAAyB,GACzB,cAAc,GACd,UAAU,GACV,WAAW,GACX,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,aAAa,GACb,aAAa,GACb,SAAS,GACT,oBAAoB,CAAC;AAEzB,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,sBAAsB,CAAC;IAChC,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,4DAA4D;AAC5D,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAE3E,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6CAA6C;AAC7C,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,wBAAwB,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,cAAc,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACxD,SAAS,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAE/C;;;;OAIG;IACH,OAAO,EAAE,uBAAuB,CAAC;IAEjC,WAAW,CAAC,EAAE,0BAA0B,CAAC;IACzC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC/C,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC,+EAA+E;IAC/E,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Auto-registration of the MapLibre `pmtiles://` protocol.
3
+ *
4
+ * MapLibre GL JS resolves a source `url` of `pmtiles://https://…` by calling a
5
+ * protocol handler registered through `maplibregl.addProtocol("pmtiles", …)`.
6
+ * The `pmtiles` package supplies that handler via its `Protocol` class. This
7
+ * module wires the two together **lazily and idempotently**: the `pmtiles` and
8
+ * `maplibre-gl` packages are only pulled in (`await import(...)`) the first time
9
+ * a PMTiles-backed map is loaded, and registration happens exactly once no
10
+ * matter how many maps attach (MapLibre's protocol registry is process-global,
11
+ * and the `pmtiles.Protocol` instance caches every archive it opens).
12
+ *
13
+ * `loadMapPackage` calls {@link ensurePmtilesProtocol} before `map.setStyle`
14
+ * whenever the composed style references a `pmtiles://` source, so consumers get
15
+ * PMTiles rendering out-of-the-box with no manual `addProtocol` wiring. Adding a
16
+ * PMTiles source to a live map through `runtime.addSource` is synchronous — call
17
+ * {@link ensurePmtilesProtocol} yourself beforehand in that case.
18
+ *
19
+ * The `maplibre-gl` / `pmtiles` slices are injectable so the wiring is
20
+ * unit-testable without either real package.
21
+ *
22
+ * @module
23
+ */
24
+ /** The MapLibre `addProtocol` / `removeProtocol` surface this module drives. */
25
+ export interface MaplibreProtocolRegistrar {
26
+ addProtocol(scheme: string, handler: unknown): void;
27
+ removeProtocol?(scheme: string): void;
28
+ }
29
+ /** The `pmtiles.Protocol` surface this module drives. */
30
+ export interface PmtilesProtocolLike {
31
+ readonly tile: unknown;
32
+ }
33
+ /** The minimal slice of `typeof import("pmtiles")` registration needs. */
34
+ export interface PmtilesProtocolModuleLike {
35
+ Protocol: new (options?: {
36
+ metadata?: boolean;
37
+ errorOnMissingTile?: boolean;
38
+ }) => PmtilesProtocolLike;
39
+ }
40
+ /** Injectable dependencies for {@link ensurePmtilesProtocol} (test seams). */
41
+ export interface EnsurePmtilesProtocolDeps {
42
+ /** Override the lazily-imported MapLibre `addProtocol` registrar. */
43
+ readonly maplibre?: MaplibreProtocolRegistrar;
44
+ /** Override the lazily-imported `pmtiles` module. */
45
+ readonly pmtilesModule?: PmtilesProtocolModuleLike;
46
+ /** Protocol scheme to register. Defaults to `"pmtiles"`. */
47
+ readonly scheme?: string;
48
+ }
49
+ /** The default MapLibre protocol scheme PMTiles archives are addressed under. */
50
+ export declare const PMTILES_PROTOCOL_SCHEME = "pmtiles";
51
+ /**
52
+ * Register the `pmtiles://` protocol on MapLibre if it has not been registered
53
+ * already. Idempotent: repeated calls (including from multiple maps loading
54
+ * concurrently) share a single registration and a single in-flight import.
55
+ *
56
+ * Returns once the protocol is registered so callers can `await` it before
57
+ * handing a `pmtiles://`-referencing style to `map.setStyle`.
58
+ */
59
+ export declare function ensurePmtilesProtocol(deps?: EnsurePmtilesProtocolDeps): Promise<void>;
60
+ /** Whether the `pmtiles://` protocol (or `scheme`) is currently registered. */
61
+ export declare function isPmtilesProtocolRegistered(scheme?: string): boolean;
62
+ /**
63
+ * Tear down a prior {@link ensurePmtilesProtocol} registration. Primarily a test
64
+ * seam so the module-global registration does not leak between cases; also
65
+ * useful if a host wants to fully release the protocol. Best-effort — a
66
+ * registrar without `removeProtocol` just clears the local record.
67
+ */
68
+ export declare function resetPmtilesProtocol(): void;
69
+ /**
70
+ * Whether a composed MapLibre style references at least one `pmtiles://` source.
71
+ * Used by `loadMapPackage` to decide whether the protocol must be registered
72
+ * before `map.setStyle`.
73
+ */
74
+ export declare function styleUsesPmtiles(style: {
75
+ sources?: Record<string, unknown>;
76
+ } | null | undefined, scheme?: string): boolean;
77
+ //# sourceMappingURL=pmtiles-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pmtiles-protocol.d.ts","sourceRoot":"","sources":["../../../src/runtime/pmtiles-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,gFAAgF;AAChF,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,0EAA0E;AAC1E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,KAAK,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,mBAAmB,CAAC;CACvG;AAED,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAC9C,qDAAqD;IACrD,QAAQ,CAAC,aAAa,CAAC,EAAE,yBAAyB,CAAC;IACnD,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAmCjD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,MAAgC,GAAG,OAAO,CAE7F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAcD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EAC/D,MAAM,GAAE,MAAgC,GACvC,OAAO,CAOT"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Auto-registration of the MapLibre `pmtiles://` protocol.
3
+ *
4
+ * MapLibre GL JS resolves a source `url` of `pmtiles://https://…` by calling a
5
+ * protocol handler registered through `maplibregl.addProtocol("pmtiles", …)`.
6
+ * The `pmtiles` package supplies that handler via its `Protocol` class. This
7
+ * module wires the two together **lazily and idempotently**: the `pmtiles` and
8
+ * `maplibre-gl` packages are only pulled in (`await import(...)`) the first time
9
+ * a PMTiles-backed map is loaded, and registration happens exactly once no
10
+ * matter how many maps attach (MapLibre's protocol registry is process-global,
11
+ * and the `pmtiles.Protocol` instance caches every archive it opens).
12
+ *
13
+ * `loadMapPackage` calls {@link ensurePmtilesProtocol} before `map.setStyle`
14
+ * whenever the composed style references a `pmtiles://` source, so consumers get
15
+ * PMTiles rendering out-of-the-box with no manual `addProtocol` wiring. Adding a
16
+ * PMTiles source to a live map through `runtime.addSource` is synchronous — call
17
+ * {@link ensurePmtilesProtocol} yourself beforehand in that case.
18
+ *
19
+ * The `maplibre-gl` / `pmtiles` slices are injectable so the wiring is
20
+ * unit-testable without either real package.
21
+ *
22
+ * @module
23
+ */
24
+ /** The default MapLibre protocol scheme PMTiles archives are addressed under. */
25
+ export const PMTILES_PROTOCOL_SCHEME = "pmtiles";
26
+ let registration;
27
+ let inFlight;
28
+ /**
29
+ * Resolve the MapLibre `addProtocol` registrar from the lazily-imported module.
30
+ * MapLibre exposes it both as a named ESM export and off the default namespace;
31
+ * accept either so this works against any v5 packaging.
32
+ */
33
+ async function loadMaplibreRegistrar() {
34
+ const mod = (await import("maplibre-gl"));
35
+ if (typeof mod.addProtocol === "function") {
36
+ return { addProtocol: mod.addProtocol, removeProtocol: mod.removeProtocol };
37
+ }
38
+ if (mod.default && typeof mod.default.addProtocol === "function") {
39
+ return mod.default;
40
+ }
41
+ throw new Error("maplibre-gl does not expose addProtocol(); ensure maplibre-gl >= 2 is installed.");
42
+ }
43
+ async function loadPmtilesModule() {
44
+ return (await import("pmtiles"));
45
+ }
46
+ /**
47
+ * Register the `pmtiles://` protocol on MapLibre if it has not been registered
48
+ * already. Idempotent: repeated calls (including from multiple maps loading
49
+ * concurrently) share a single registration and a single in-flight import.
50
+ *
51
+ * Returns once the protocol is registered so callers can `await` it before
52
+ * handing a `pmtiles://`-referencing style to `map.setStyle`.
53
+ */
54
+ export async function ensurePmtilesProtocol(deps = {}) {
55
+ const scheme = deps.scheme ?? PMTILES_PROTOCOL_SCHEME;
56
+ if (registration && registration.scheme === scheme)
57
+ return;
58
+ if (inFlight)
59
+ return inFlight;
60
+ inFlight = (async () => {
61
+ const registrar = deps.maplibre ?? (await loadMaplibreRegistrar());
62
+ const pmtilesModule = deps.pmtilesModule ?? (await loadPmtilesModule());
63
+ // `metadata: true` lets MapLibre auto-populate source attribution and the
64
+ // inspect surface from the archive header without a second wiring step.
65
+ const protocol = new pmtilesModule.Protocol({ metadata: true });
66
+ registrar.addProtocol(scheme, protocol.tile);
67
+ registration = { scheme, registrar, protocol };
68
+ })();
69
+ try {
70
+ await inFlight;
71
+ }
72
+ finally {
73
+ inFlight = undefined;
74
+ }
75
+ }
76
+ /** Whether the `pmtiles://` protocol (or `scheme`) is currently registered. */
77
+ export function isPmtilesProtocolRegistered(scheme = PMTILES_PROTOCOL_SCHEME) {
78
+ return registration?.scheme === scheme;
79
+ }
80
+ /**
81
+ * Tear down a prior {@link ensurePmtilesProtocol} registration. Primarily a test
82
+ * seam so the module-global registration does not leak between cases; also
83
+ * useful if a host wants to fully release the protocol. Best-effort — a
84
+ * registrar without `removeProtocol` just clears the local record.
85
+ */
86
+ export function resetPmtilesProtocol() {
87
+ if (registration) {
88
+ registration.registrar.removeProtocol?.(registration.scheme);
89
+ registration = undefined;
90
+ }
91
+ inFlight = undefined;
92
+ }
93
+ function sourceReferencesPmtiles(source, scheme) {
94
+ if (!source || typeof source !== "object")
95
+ return false;
96
+ const prefix = `${scheme}://`;
97
+ const url = source.url;
98
+ if (typeof url === "string" && url.startsWith(prefix))
99
+ return true;
100
+ const tiles = source.tiles;
101
+ if (Array.isArray(tiles) && tiles.some((tile) => typeof tile === "string" && tile.startsWith(prefix))) {
102
+ return true;
103
+ }
104
+ return false;
105
+ }
106
+ /**
107
+ * Whether a composed MapLibre style references at least one `pmtiles://` source.
108
+ * Used by `loadMapPackage` to decide whether the protocol must be registered
109
+ * before `map.setStyle`.
110
+ */
111
+ export function styleUsesPmtiles(style, scheme = PMTILES_PROTOCOL_SCHEME) {
112
+ const sources = style?.sources;
113
+ if (!sources)
114
+ return false;
115
+ for (const source of Object.values(sources)) {
116
+ if (sourceReferencesPmtiles(source, scheme))
117
+ return true;
118
+ }
119
+ return false;
120
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"source-bridge.d.ts","sourceRoot":"","sources":["../../../src/runtime/source-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,sBAAsB,EAA2B,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEtH,+DAA+D;AAC/D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC;;;;OAIG;IACH,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,yDAAyD;IACzD,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,sBAAsB,CA4CxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAkE1C;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CA8B7E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF;IACD,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CA2BA;AAgMD,oFAAoF;AACpF,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"source-bridge.d.ts","sourceRoot":"","sources":["../../../src/runtime/source-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,sBAAsB,EAA2B,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAEtH,+DAA+D;AAC/D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC;;;;OAIG;IACH,aAAa,EAAE,yBAAyB,EAAE,CAAC;IAC3C,yDAAyD;IACzD,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,sBAAsB,CA4CxB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAkE1C;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CA8B7E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF;IACD,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CA2BA;AA2ND,oFAAoF;AACpF,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
@@ -254,10 +254,37 @@ function toMapLibreNativeSource(binding) {
254
254
  ...(binding.attribution ? { attribution: binding.attribution } : {}),
255
255
  },
256
256
  };
257
+ case "pmtiles":
258
+ return toPmtilesNativeSource(binding);
257
259
  default:
258
260
  return undefined;
259
261
  }
260
262
  }
263
+ /**
264
+ * Project a PMTiles binding onto a MapLibre-native source. A PMTiles archive is
265
+ * a single immutable file addressed by MapLibre as a `pmtiles://<archive-url>`
266
+ * source `url` (the `pmtiles://` protocol is auto-registered by the runtime on
267
+ * map attach). Whether the archive is vector or raster comes from the binding's
268
+ * `locator.sourceType` hint (`"vector"` | `"raster"`), defaulting to vector —
269
+ * the common PMTiles basemap case.
270
+ */
271
+ function toPmtilesNativeSource(binding) {
272
+ const url = binding.locator.url;
273
+ if (typeof url !== "string" || url.length === 0)
274
+ return undefined;
275
+ const sourceUrl = url.startsWith("pmtiles://") ? url : `pmtiles://${url}`;
276
+ const hint = binding.locator.sourceType;
277
+ const type = hint === "raster" ? "raster" : "vector";
278
+ return {
279
+ sourceId: binding.sourceId,
280
+ attribution: binding.attribution,
281
+ spec: {
282
+ type,
283
+ url: sourceUrl,
284
+ ...(binding.attribution ? { attribution: binding.attribution } : {}),
285
+ },
286
+ };
287
+ }
261
288
  function toSourceLocator(packageId, binding, sdkProtocol) {
262
289
  const loc = binding.locator;
263
290
  if (binding.protocol === "workspace_artifact") {