s3m-three 0.4.17 → 0.4.19

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 (145) hide show
  1. package/dist/browser/assets/s3mWorker-4iTAmWIu.js +1 -0
  2. package/dist/browser/s3m-three.iife.ext-three.js +406 -91
  3. package/dist/browser/s3m-three.iife.js +434 -119
  4. package/dist/core/AttributeQuery.d.ts +13 -0
  5. package/dist/core/AttributeQuery.d.ts.map +1 -1
  6. package/dist/core/AttributeQuery.js +20 -3
  7. package/dist/core/AttributeQuery.js.map +1 -1
  8. package/dist/core/AuthFetch.d.ts +52 -0
  9. package/dist/core/AuthFetch.d.ts.map +1 -0
  10. package/dist/core/AuthFetch.js +44 -0
  11. package/dist/core/AuthFetch.js.map +1 -0
  12. package/dist/core/GaussianSplat.d.ts +64 -0
  13. package/dist/core/GaussianSplat.d.ts.map +1 -0
  14. package/dist/core/GaussianSplat.js +139 -0
  15. package/dist/core/GaussianSplat.js.map +1 -0
  16. package/dist/core/S3M1Parser.d.ts +1 -1
  17. package/dist/core/S3M1Parser.d.ts.map +1 -1
  18. package/dist/core/S3M1Parser.js +320 -25
  19. package/dist/core/S3M1Parser.js.map +1 -1
  20. package/dist/core/S3MBParser.d.ts.map +1 -1
  21. package/dist/core/S3MBParser.js +13 -0
  22. package/dist/core/S3MBParser.js.map +1 -1
  23. package/dist/core/S3MBlockParser.d.ts.map +1 -1
  24. package/dist/core/S3MBlockParser.js +56 -14
  25. package/dist/core/S3MBlockParser.js.map +1 -1
  26. package/dist/core/SplatLod.d.ts +36 -0
  27. package/dist/core/SplatLod.d.ts.map +1 -0
  28. package/dist/core/SplatLod.js +54 -0
  29. package/dist/core/SplatLod.js.map +1 -0
  30. package/dist/core/SplatProjection.d.ts +75 -0
  31. package/dist/core/SplatProjection.d.ts.map +1 -0
  32. package/dist/core/SplatProjection.js +162 -0
  33. package/dist/core/SplatProjection.js.map +1 -0
  34. package/dist/core/SplatSort.d.ts +13 -0
  35. package/dist/core/SplatSort.d.ts.map +1 -0
  36. package/dist/core/SplatSort.js +14 -0
  37. package/dist/core/SplatSort.js.map +1 -0
  38. package/dist/core/TexCoordZ.d.ts +94 -0
  39. package/dist/core/TexCoordZ.d.ts.map +1 -0
  40. package/dist/core/TexCoordZ.js +125 -0
  41. package/dist/core/TexCoordZ.js.map +1 -0
  42. package/dist/core/TextureDecode.d.ts +19 -0
  43. package/dist/core/TextureDecode.d.ts.map +1 -1
  44. package/dist/core/TextureDecode.js +53 -11
  45. package/dist/core/TextureDecode.js.map +1 -1
  46. package/dist/core/TileGeometry.d.ts +29 -0
  47. package/dist/core/TileGeometry.d.ts.map +1 -1
  48. package/dist/core/TileGeometry.js +130 -14
  49. package/dist/core/TileGeometry.js.map +1 -1
  50. package/dist/core/degradations.d.ts +37 -0
  51. package/dist/core/degradations.d.ts.map +1 -0
  52. package/dist/core/degradations.js +32 -0
  53. package/dist/core/degradations.js.map +1 -0
  54. package/dist/core/types.d.ts +36 -0
  55. package/dist/core/types.d.ts.map +1 -1
  56. package/dist/index.d.ts +11 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +6 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/render/DatasetManager.d.ts +18 -1
  61. package/dist/render/DatasetManager.d.ts.map +1 -1
  62. package/dist/render/DatasetManager.js +4 -1
  63. package/dist/render/DatasetManager.js.map +1 -1
  64. package/dist/render/FeatureStyleManager.d.ts.map +1 -1
  65. package/dist/render/FeatureStyleManager.js +7 -5
  66. package/dist/render/FeatureStyleManager.js.map +1 -1
  67. package/dist/render/GeometryBuilder.d.ts +24 -0
  68. package/dist/render/GeometryBuilder.d.ts.map +1 -1
  69. package/dist/render/GeometryBuilder.js +196 -5
  70. package/dist/render/GeometryBuilder.js.map +1 -1
  71. package/dist/render/HostRenderer.d.ts +105 -0
  72. package/dist/render/HostRenderer.d.ts.map +1 -0
  73. package/dist/render/HostRenderer.js +170 -0
  74. package/dist/render/HostRenderer.js.map +1 -0
  75. package/dist/render/Picker.d.ts.map +1 -1
  76. package/dist/render/Picker.js +19 -5
  77. package/dist/render/Picker.js.map +1 -1
  78. package/dist/render/S3MViewer.d.ts +79 -0
  79. package/dist/render/S3MViewer.d.ts.map +1 -1
  80. package/dist/render/S3MViewer.js +235 -16
  81. package/dist/render/S3MViewer.js.map +1 -1
  82. package/dist/render/SplatMaterial.d.ts +103 -0
  83. package/dist/render/SplatMaterial.d.ts.map +1 -0
  84. package/dist/render/SplatMaterial.js +388 -0
  85. package/dist/render/SplatMaterial.js.map +1 -0
  86. package/dist/render/SplatSorter.d.ts +14 -0
  87. package/dist/render/SplatSorter.d.ts.map +1 -0
  88. package/dist/render/SplatSorter.js +59 -0
  89. package/dist/render/SplatSorter.js.map +1 -0
  90. package/dist/render/StyleMaterial.d.ts +48 -0
  91. package/dist/render/StyleMaterial.d.ts.map +1 -1
  92. package/dist/render/StyleMaterial.js +292 -69
  93. package/dist/render/StyleMaterial.js.map +1 -1
  94. package/dist/render/TextureFactory.d.ts +10 -0
  95. package/dist/render/TextureFactory.d.ts.map +1 -1
  96. package/dist/render/TextureFactory.js +35 -5
  97. package/dist/render/TextureFactory.js.map +1 -1
  98. package/dist/render/lightingPreset.d.ts +53 -0
  99. package/dist/render/lightingPreset.d.ts.map +1 -0
  100. package/dist/render/lightingPreset.js +36 -0
  101. package/dist/render/lightingPreset.js.map +1 -0
  102. package/dist/render/materialAlpha.d.ts +51 -0
  103. package/dist/render/materialAlpha.d.ts.map +1 -0
  104. package/dist/render/materialAlpha.js +68 -0
  105. package/dist/render/materialAlpha.js.map +1 -0
  106. package/dist/tileset/S3MTileset.d.ts +50 -0
  107. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  108. package/dist/tileset/S3MTileset.js +60 -5
  109. package/dist/tileset/S3MTileset.js.map +1 -1
  110. package/dist/vendor/browser-node-stub.js +10 -0
  111. package/dist/worker/s3mWorker.js +1166 -979
  112. package/dist/worker/s3mWorker.js.map +1 -1
  113. package/docs/API.md +55 -1
  114. package/docs/FORMAT-NOTES.md +338 -0
  115. package/package.json +1 -1
  116. package/src/core/AttributeQuery.ts +26 -3
  117. package/src/core/AuthFetch.ts +82 -0
  118. package/src/core/GaussianSplat.ts +175 -0
  119. package/src/core/S3M1Parser.ts +330 -24
  120. package/src/core/S3MBParser.ts +18 -0
  121. package/src/core/S3MBlockParser.ts +56 -11
  122. package/src/core/SplatLod.ts +83 -0
  123. package/src/core/SplatProjection.ts +231 -0
  124. package/src/core/SplatSort.ts +30 -0
  125. package/src/core/TexCoordZ.ts +160 -0
  126. package/src/core/TextureDecode.ts +63 -11
  127. package/src/core/TileGeometry.ts +138 -14
  128. package/src/core/degradations.ts +74 -0
  129. package/src/core/types.ts +32 -0
  130. package/src/index.ts +12 -1
  131. package/src/render/DatasetManager.ts +19 -1
  132. package/src/render/FeatureStyleManager.ts +7 -5
  133. package/src/render/GeometryBuilder.ts +239 -6
  134. package/src/render/HostRenderer.ts +222 -0
  135. package/src/render/Picker.ts +21 -5
  136. package/src/render/S3MViewer.ts +277 -15
  137. package/src/render/SplatMaterial.ts +433 -0
  138. package/src/render/SplatSorter.ts +59 -0
  139. package/src/render/StyleMaterial.ts +339 -69
  140. package/src/render/TextureFactory.ts +39 -5
  141. package/src/render/lightingPreset.ts +76 -0
  142. package/src/render/materialAlpha.ts +75 -0
  143. package/src/tileset/S3MTileset.ts +91 -5
  144. package/src/vendor/browser-node-stub.js +10 -0
  145. package/dist/browser/assets/s3mWorker-BjPOUgjg.js +0 -1
@@ -22,6 +22,7 @@
22
22
  * 所以默认策略:`.fastjson` + 一次性把**全部字段**取回来(字段名很便宜,model 才是大头),
23
23
  * 这样换专题字段时全部命中缓存,不再发请求。
24
24
  */
25
+ import { type AuthenticateFn } from './AuthFetch.js';
25
26
  export interface AttributeQueryOptions {
26
27
  /** 数据服务根地址,形如 https://host/iserver/services/data-xxx/rest/data */
27
28
  dataServiceUrl: string;
@@ -38,6 +39,11 @@ export interface AttributeQueryOptions {
38
39
  format?: 'auto' | 'fastjson' | 'json';
39
40
  /** 便于测试时替换,默认用全局 fetch */
40
41
  fetchImpl?: typeof fetch;
42
+ /**
43
+ * 鉴权适配函数(不填则用图层级的 `authenticate`)。请求发出前过一遍,
44
+ * 可改写 URL(加 `?token=`)或附加请求头。见 `AuthenticateFn`。
45
+ */
46
+ authenticate?: AuthenticateFn;
41
47
  }
42
48
  export interface AttributeField {
43
49
  name: string;
@@ -60,6 +66,7 @@ export declare class AttributeQuery {
60
66
  private readonly _chunkSize;
61
67
  private readonly _formatOption;
62
68
  private readonly _fetch;
69
+ private readonly _authenticate;
63
70
  private readonly _cache;
64
71
  private _schema;
65
72
  private _resolvedFields;
@@ -68,6 +75,12 @@ export declare class AttributeQuery {
68
75
  constructor(options: AttributeQueryOptions);
69
76
  /** 数据集的 REST 路径:.../datasources/name/{ds}/datasets/name/{name} */
70
77
  get datasetPath(): string;
78
+ /**
79
+ * 带鉴权的请求:先过 `authenticate` 钩子改写 URL / 追加 header,再走本查询的
80
+ * 传输层(`fetchImpl` 或全局 fetch,自定义传输不被绕过)。未配置鉴权时与旧版
81
+ * 行为逐字一致(参数原样透传)。
82
+ */
83
+ private _request;
71
84
  /** 累计的请求代价(不清零,用来观察整体开销) */
72
85
  get stats(): AttributeQueryStats;
73
86
  /** 字段表(顺手也用来判断「这个数据集到底有没有属性表」) */
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeQuery.d.ts","sourceRoot":"","sources":["../../src/core/AttributeQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;mDAC+C;IAC/C,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE3D,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAwBD,qBAAa,cAAc;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,MAAM,CAAyD;gBAE3D,OAAO,EAAE,qBAAqB;IAgB1C,kEAAkE;IAClE,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,4BAA4B;IAC5B,IAAI,KAAK,IAAI,mBAAmB,CAE/B;IAED,kCAAkC;IAC5B,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAU7C,uBAAuB;IACvB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,IAAI,IAAI;IAKlB;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAuBzD,cAAc;IAY5B;;;;;;;OAOG;YACW,cAAc;YAgBd,WAAW;YAsCX,KAAK;IAenB,OAAO,CAAC,MAAM;CAGf"}
1
+ {"version":3,"file":"AttributeQuery.d.ts","sourceRoot":"","sources":["../../src/core/AttributeQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOzE,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;mDAC+C;IAC/C,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACtC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE3D,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAwBD,qBAAa,cAAc;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,MAAM,CAAyD;gBAE3D,OAAO,EAAE,qBAAqB;IAiB1C,kEAAkE;IAClE,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;;OAIG;YACW,QAAQ;IAStB,4BAA4B;IAC5B,IAAI,KAAK,IAAI,mBAAmB,CAE/B;IAED,kCAAkC;IAC5B,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAU7C,uBAAuB;IACvB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,IAAI,IAAI;IAKlB;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAuBzD,cAAc;IAY5B;;;;;;;OAOG;YACW,cAAc;YAgBd,WAAW;YAsCX,KAAK;IAenB,OAAO,CAAC,MAAM;CAGf"}
@@ -22,6 +22,7 @@
22
22
  * 所以默认策略:`.fastjson` + 一次性把**全部字段**取回来(字段名很便宜,model 才是大头),
23
23
  * 这样换专题字段时全部命中缓存,不再发请求。
24
24
  */
25
+ import { resolveAuthRequest } from './AuthFetch.js';
25
26
  const DEFAULT_ID_FIELD = 'SmID';
26
27
  const DEFAULT_CHUNK_SIZE = 200;
27
28
  /** 几何/索引字段取回来没用,还特别占带宽 */
@@ -46,6 +47,7 @@ export class AttributeQuery {
46
47
  _chunkSize;
47
48
  _formatOption;
48
49
  _fetch;
50
+ _authenticate;
49
51
  _cache = new Map();
50
52
  _schema = null;
51
53
  _resolvedFields = null;
@@ -66,11 +68,26 @@ export class AttributeQuery {
66
68
  this._chunkSize = Math.max(1, options.chunkSize ?? DEFAULT_CHUNK_SIZE);
67
69
  this._formatOption = options.format ?? 'auto';
68
70
  this._fetch = options.fetchImpl ?? globalThis.fetch.bind(globalThis);
71
+ this._authenticate = options.authenticate;
69
72
  }
70
73
  /** 数据集的 REST 路径:.../datasources/name/{ds}/datasets/name/{name} */
71
74
  get datasetPath() {
72
75
  return `${this.dataServiceUrl}/datasources/name/${encodeURIComponent(this.datasourceName)}/datasets/name/${encodeURIComponent(this.datasetName)}`;
73
76
  }
77
+ /**
78
+ * 带鉴权的请求:先过 `authenticate` 钩子改写 URL / 追加 header,再走本查询的
79
+ * 传输层(`fetchImpl` 或全局 fetch,自定义传输不被绕过)。未配置鉴权时与旧版
80
+ * 行为逐字一致(参数原样透传)。
81
+ */
82
+ async _request(url, init) {
83
+ const resolved = await resolveAuthRequest(url, this._authenticate, 'attributes');
84
+ const hookHeaders = resolved.headers && Object.keys(resolved.headers).length > 0 ? resolved.headers : null;
85
+ if (!hookHeaders)
86
+ return init === undefined ? this._fetch(resolved.url) : this._fetch(resolved.url, init);
87
+ // 钩子头在前,init 头在后:调用方显式给的头(如 Content-Type)不被覆盖
88
+ const headers = { ...hookHeaders, ...init?.headers };
89
+ return this._fetch(resolved.url, { ...init, headers });
90
+ }
74
91
  /** 累计的请求代价(不清零,用来观察整体开销) */
75
92
  get stats() {
76
93
  return { ...this._stats };
@@ -79,7 +96,7 @@ export class AttributeQuery {
79
96
  async loadSchema() {
80
97
  if (this._schema)
81
98
  return this._schema;
82
- const res = await this._fetch(`${this.datasetPath}/fields.json`);
99
+ const res = await this._request(`${this.datasetPath}/fields.json`);
83
100
  this._stats.requests++;
84
101
  if (!res.ok)
85
102
  throw new Error(`[s3m] 读取字段表失败 ${res.status}:${this.datasetPath}/fields.json`);
@@ -147,7 +164,7 @@ export class AttributeQuery {
147
164
  if (this._formatOption !== 'auto')
148
165
  return (this._format = this._formatOption);
149
166
  try {
150
- const res = await this._fetch(`${this.datasetPath}/features.json?fromIndex=0&toIndex=1`);
167
+ const res = await this._request(`${this.datasetPath}/features.json?fromIndex=0&toIndex=1`);
151
168
  this._stats.requests++;
152
169
  const json = (await res.json());
153
170
  const isModel = String(json.geometryType ?? '').toUpperCase().includes('MODEL');
@@ -201,7 +218,7 @@ export class AttributeQuery {
201
218
  }
202
219
  async _post(body, format) {
203
220
  const t0 = performance.now();
204
- const res = await this._fetch(`${this.dataServiceUrl}/featureResults.${format}?returnContent=true`, {
221
+ const res = await this._request(`${this.dataServiceUrl}/featureResults.${format}?returnContent=true`, {
205
222
  method: 'POST',
206
223
  headers: { 'Content-Type': 'application/json' },
207
224
  body: JSON.stringify(body),
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeQuery.js","sourceRoot":"","sources":["../../src/core/AttributeQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAChC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,0BAA0B;AAC1B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;AA6C3E;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC;SACnC,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,OAAO,cAAc;IAChB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,WAAW,CAAS;IACpB,OAAO,CAAS;IAER,OAAO,CAAkB;IACzB,UAAU,CAAS;IACnB,aAAa,CAA+B;IAC5C,MAAM,CAAe;IACrB,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,OAAO,GAA4B,IAAI,CAAC;IACxC,eAAe,GAAoB,IAAI,CAAC;IACxC,OAAO,GAA+B,IAAI,CAAC;IAC3C,MAAM,GAAwB,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAEvE,YAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,EAAE,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxF,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAClH,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QAE3F,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;QACvE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAED,kEAAkE;IAClE,IAAI,WAAW;QACb,OAAO,GAAG,IAAI,CAAC,cAAc,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IACpJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,KAAK;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,cAAc,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA8B,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,uBAAuB;IACvB,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,KAAe;QAChC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC/C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;YACpC,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,sCAAsC,CAAC,CAAC;YACzF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA8B,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;YAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAAa,EAAE,MAAgB;QACvD,MAAM,IAAI,GAAG;YACX,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5D,kCAAkC;YAClC,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE;gBACd,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;gBACxD,MAAM;aACP;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wCAAwC;YACxC,IAAI,MAAM,KAAK,UAAU;gBAAE,MAAM,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QAEjF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAiB,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACjE,kCAAkC;YAClC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAAa,EAAE,MAA2B;QAC5D,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,mBAAmB,MAAM,qBAAqB,EAAE;YAClG,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAuB,CAAC;IACrI,CAAC;CACF"}
1
+ {"version":3,"file":"AttributeQuery.js","sourceRoot":"","sources":["../../src/core/AttributeQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * 鉴权适配(Authenticate Hook)
3
+ *
4
+ * S3M 服务经常挂在带鉴权的网关后面:有的要求 URL 带 `?token=...`,有的要求
5
+ * 请求头带 `Authorization` / `X-Token`,还有的 token 会过期需要定期换。内核在
6
+ * 主线程发出的全部请求(数据集配置 scp、瓦片 .s3mb/.s3mblock、子图集 .texblock、
7
+ * 棱线缓存、iServer 属性查询)都从这一个钩子过一遍,由使用方统一改写。
8
+ *
9
+ * 设计约束(对应 AGENTS.md 不变式①):不传 `authenticate` 时,请求路径与旧版
10
+ * 逐字一致——`authFetch` 直接短路到裸 `fetch(url)` / `fetch(url, init)`,连 init
11
+ * 对象都不新建。
12
+ *
13
+ * 注意:鉴权只作用于**发到网络上的请求**,不参与内核的缓存键(瓦片 URL 带 `#N`
14
+ * 片段与 nodes/pending 等内部 Map 的键都是改写前的原 URL),token 轮换不会导致
15
+ * 重复加载同一块瓦片。重试时每次重新过钩子,token 刷新后重试天然带上新值。
16
+ */
17
+ /** 请求类别,钩子按类别区分处理(比如属性查询走另一个网关) */
18
+ export type AuthRequestKind = 'config' | 'tile' | 'texblock' | 'creases' | 'attributes';
19
+ /** 改写后的请求:实际请求的 URL + 需要附加的请求头 */
20
+ export interface AuthResolvedRequest {
21
+ /** 实际发到网络上的 URL(可追加 `?token=...` 等鉴权参数) */
22
+ url: string;
23
+ /** 需要附加的请求头(如 `Authorization` / `X-Token`) */
24
+ headers?: Record<string, string>;
25
+ }
26
+ /**
27
+ * 鉴权适配函数。每个请求发出前调用一次:
28
+ *
29
+ * - 返回 `string`:只改写 URL(最简形式,如追加 `?token=`);
30
+ * - 返回 `{ url, headers }`:改写 URL 并附加请求头;
31
+ * - 返回 `Promise`:支持异步(如先向认证服务换 token)。
32
+ *
33
+ * ```js
34
+ * new S3MLayer({
35
+ * configUrl: 'https://gw.example.com/data/a.scp',
36
+ * authenticate: (url, kind) => ({
37
+ * url: `${url}${url.includes('?') ? '&' : '?'}token=${getToken()}`,
38
+ * headers: { 'X-Client': 's3m' },
39
+ * }),
40
+ * });
41
+ * ```
42
+ */
43
+ export type AuthenticateFn = (url: string, kind: AuthRequestKind) => string | AuthResolvedRequest | Promise<string | AuthResolvedRequest>;
44
+ /** 把钩子返回值归一成 `{ url, headers }`;返回值异常时兜底用原 URL */
45
+ export declare function resolveAuthRequest(url: string, auth: AuthenticateFn | undefined, kind: AuthRequestKind): Promise<AuthResolvedRequest>;
46
+ /**
47
+ * 带鉴权的 fetch:先过钩子改写 URL / 追加 header,再发请求。
48
+ * `init.headers`(调用方自带的头)优先级高于钩子返回的 headers。
49
+ * `auth` 未配置时与裸 `fetch` 完全等价(参数原样透传,不新建 init)。
50
+ */
51
+ export declare function authFetch(url: string, auth: AuthenticateFn | undefined, kind: AuthRequestKind, init?: RequestInit): Promise<Response>;
52
+ //# sourceMappingURL=AuthFetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFetch.d.ts","sourceRoot":"","sources":["../../src/core/AuthFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,mCAAmC;AACnC,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;AAExF,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,KAClB,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;AAE1E,kDAAkD;AAClD,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAM9B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,IAAI,EAAE,eAAe,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC,CAQnB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 鉴权适配(Authenticate Hook)
3
+ *
4
+ * S3M 服务经常挂在带鉴权的网关后面:有的要求 URL 带 `?token=...`,有的要求
5
+ * 请求头带 `Authorization` / `X-Token`,还有的 token 会过期需要定期换。内核在
6
+ * 主线程发出的全部请求(数据集配置 scp、瓦片 .s3mb/.s3mblock、子图集 .texblock、
7
+ * 棱线缓存、iServer 属性查询)都从这一个钩子过一遍,由使用方统一改写。
8
+ *
9
+ * 设计约束(对应 AGENTS.md 不变式①):不传 `authenticate` 时,请求路径与旧版
10
+ * 逐字一致——`authFetch` 直接短路到裸 `fetch(url)` / `fetch(url, init)`,连 init
11
+ * 对象都不新建。
12
+ *
13
+ * 注意:鉴权只作用于**发到网络上的请求**,不参与内核的缓存键(瓦片 URL 带 `#N`
14
+ * 片段与 nodes/pending 等内部 Map 的键都是改写前的原 URL),token 轮换不会导致
15
+ * 重复加载同一块瓦片。重试时每次重新过钩子,token 刷新后重试天然带上新值。
16
+ */
17
+ /** 把钩子返回值归一成 `{ url, headers }`;返回值异常时兜底用原 URL */
18
+ export async function resolveAuthRequest(url, auth, kind) {
19
+ if (!auth)
20
+ return { url };
21
+ const out = await auth(url, kind);
22
+ if (typeof out === 'string')
23
+ return { url: out || url };
24
+ if (!out || typeof out !== 'object')
25
+ return { url };
26
+ return { url: out.url || url, headers: out.headers };
27
+ }
28
+ /**
29
+ * 带鉴权的 fetch:先过钩子改写 URL / 追加 header,再发请求。
30
+ * `init.headers`(调用方自带的头)优先级高于钩子返回的 headers。
31
+ * `auth` 未配置时与裸 `fetch` 完全等价(参数原样透传,不新建 init)。
32
+ */
33
+ export async function authFetch(url, auth, kind, init) {
34
+ if (!auth)
35
+ return init === undefined ? fetch(url) : fetch(url, init);
36
+ const resolved = await resolveAuthRequest(url, auth, kind);
37
+ const hookHeaders = resolved.headers && Object.keys(resolved.headers).length > 0 ? resolved.headers : null;
38
+ if (!hookHeaders)
39
+ return init === undefined ? fetch(resolved.url) : fetch(resolved.url, init);
40
+ // 钩子头在前,init 头在后:调用方显式给的头不被覆盖
41
+ const headers = { ...hookHeaders, ...init?.headers };
42
+ return fetch(resolved.url, { ...init, headers });
43
+ }
44
+ //# sourceMappingURL=AuthFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFetch.js","sourceRoot":"","sources":["../../src/core/AuthFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmCH,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,IAAgC,EAChC,IAAqB;IAErB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACpD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,IAAgC,EAChC,IAAqB,EACrB,IAAkB;IAElB,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3G,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9F,8BAA8B;IAC9B,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,EAAE,OAAO,EAA4B,CAAC;IAC/E,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 3DGS(高斯泼溅)逐点属性的解码
3
+ *
4
+ * 输入是 MeshOpt 骨架里的两条自定义流,各 4 字节/顶点:
5
+ * `gsScale` —— 3 个 u8,log 量化;第 4 字节是填充
6
+ * `gsRotation` —— 3 个 u8 存四元数的 x/y/z;w 由公式补;第 4 字节是填充
7
+ *
8
+ * 这两条流以前是「保留原始字节但语义未知」(FORMAT-NOTES 第九节的 D 级),
9
+ * 所以只能按点渲染。量化格式最终不是靠统计猜出来的,是从官方 worker
10
+ * `SuperMap3D/Workers/GaussianSplating.js`(3.9 KB)里读出来的,公式逐字如下:
11
+ *
12
+ * ```js
13
+ * function j(t){ // scale
14
+ * a[n*3+0] = Math.exp(t[n*4+0]/16 - 10)
15
+ * a[n*3+1] = Math.exp(t[n*4+1]/16 - 10)
16
+ * a[n*3+2] = Math.exp(t[n*4+2]/16 - 10)
17
+ * }
18
+ * function D(t){ // rotation
19
+ * c = t[n]/127.5 - 1; f = t[n+1]/127.5 - 1; x = t[n+2]/127.5 - 1
20
+ * s = Math.sqrt(Math.max(0, 1 - (c*c + f*f + x*x)))
21
+ * a[n] = s; a[n+1] = c; a[n+2] = f; a[n+3] = x // (w, x, y, z)
22
+ * }
23
+ * ```
24
+ *
25
+ * 官方还有第二条分支(`isSPZCompress && version === 1.1`)走 10-10-10-2 的
26
+ * 「smallest three」打包,本模块也实现了 —— 见 `decodeRotation` 的 mode 判定。
27
+ *
28
+ * **为什么以前看这 4 字节像乱码**:第 4 字节确实不参与解码,于是同一瓦片里它
29
+ * 一会儿是 0 一会儿是 207(填充的残留),拿 32 位整数字段或 4 分量向量去套,
30
+ * 自然怎么都对不上。只取前 3 字节 + w 由单位化补出,立刻就是干净的四元数。
31
+ */
32
+ export interface SplatData {
33
+ /** 3N(米,场景 ENU 坐标) */
34
+ positions: Float32Array;
35
+ /** 3N(米,三个主轴的高斯半径) */
36
+ scales: Float32Array;
37
+ /** 4N,单位四元数 (x, y, z, w) —— three 的 Quaternion 顺序 */
38
+ rotations: Float32Array;
39
+ /** 4N,RGBA8 */
40
+ colors: Uint8Array;
41
+ count: number;
42
+ }
43
+ /**
44
+ * scale:`exp(byte/16 - 10)` 米。
45
+ * 值域 byte ∈ [0,255] → [4.54e-5, 380] 米,建筑泼溅的典型值(0.01~1 米)落在中段。
46
+ */
47
+ export declare function decodeScale(bytes: Uint8Array, stride: number, offset: number, count: number): Float32Array;
48
+ /**
49
+ * rotation:3 个 u8 直接归一化到 [-1,1],第四个分量由单位化补出。
50
+ *
51
+ * 输出顺序是 three 的 `(x, y, z, w)`,而官方内部是 `(w, x, y, z)` —— 这里已经换过。
52
+ */
53
+ export declare function decodeRotation(bytes: Uint8Array, stride: number, offset: number, count: number): Float32Array;
54
+ export declare function lastRotationResidual(): number;
55
+ /**
56
+ * 10-10-10-2 的 smallest-three(官方 `U()`,`isSPZCompress && version === 1.1` 时走这条)。
57
+ *
58
+ * 3 个分量各 10 bit(第 9 bit 是符号),剩下 2 bit 记录「哪一维是最大的」,
59
+ * 最大维由单位化补出 —— 这样只需要 32 bit 就能无损表达一个单位四元数。
60
+ */
61
+ export declare function decodeRotationSmallestThree(bytes: Uint8Array, stride: number, offset: number, count: number): Float32Array;
62
+ /** 逐点协方差矩阵的上三角(6 个 float):`Σ = R S Sᵀ Rᵀ`,供 EWA 投影用 */
63
+ export declare function covariance(sx: number, sy: number, sz: number, qx: number, qy: number, qz: number, qw: number, out: Float32Array, at: number): void;
64
+ //# sourceMappingURL=GaussianSplat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GaussianSplat.d.ts","sourceRoot":"","sources":["../../src/core/GaussianSplat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AASH,MAAM,WAAW,SAAS;IACxB,sBAAsB;IACtB,SAAS,EAAE,YAAY,CAAC;IACxB,sBAAsB;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,YAAY,CAAC;IACxB,eAAe;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAS1G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAkB7G;AAUD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,YAAY,CA0Bd;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,YAAY,EACjB,EAAE,EAAE,MAAM,GACT,IAAI,CAqBN"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * 3DGS(高斯泼溅)逐点属性的解码
3
+ *
4
+ * 输入是 MeshOpt 骨架里的两条自定义流,各 4 字节/顶点:
5
+ * `gsScale` —— 3 个 u8,log 量化;第 4 字节是填充
6
+ * `gsRotation` —— 3 个 u8 存四元数的 x/y/z;w 由公式补;第 4 字节是填充
7
+ *
8
+ * 这两条流以前是「保留原始字节但语义未知」(FORMAT-NOTES 第九节的 D 级),
9
+ * 所以只能按点渲染。量化格式最终不是靠统计猜出来的,是从官方 worker
10
+ * `SuperMap3D/Workers/GaussianSplating.js`(3.9 KB)里读出来的,公式逐字如下:
11
+ *
12
+ * ```js
13
+ * function j(t){ // scale
14
+ * a[n*3+0] = Math.exp(t[n*4+0]/16 - 10)
15
+ * a[n*3+1] = Math.exp(t[n*4+1]/16 - 10)
16
+ * a[n*3+2] = Math.exp(t[n*4+2]/16 - 10)
17
+ * }
18
+ * function D(t){ // rotation
19
+ * c = t[n]/127.5 - 1; f = t[n+1]/127.5 - 1; x = t[n+2]/127.5 - 1
20
+ * s = Math.sqrt(Math.max(0, 1 - (c*c + f*f + x*x)))
21
+ * a[n] = s; a[n+1] = c; a[n+2] = f; a[n+3] = x // (w, x, y, z)
22
+ * }
23
+ * ```
24
+ *
25
+ * 官方还有第二条分支(`isSPZCompress && version === 1.1`)走 10-10-10-2 的
26
+ * 「smallest three」打包,本模块也实现了 —— 见 `decodeRotation` 的 mode 判定。
27
+ *
28
+ * **为什么以前看这 4 字节像乱码**:第 4 字节确实不参与解码,于是同一瓦片里它
29
+ * 一会儿是 0 一会儿是 207(填充的残留),拿 32 位整数字段或 4 分量向量去套,
30
+ * 自然怎么都对不上。只取前 3 字节 + w 由单位化补出,立刻就是干净的四元数。
31
+ */
32
+ /** SPZ 的 log 量化:scale 实际是 exp(v/16 - 10) 米 */
33
+ const SCALE_LOG_DIV = 16;
34
+ const SCALE_LOG_BIAS = 10;
35
+ /** rotation 的 u8 归一化:0 → -1,255 → 1 */
36
+ const ROT_U8_SCALE = 127.5;
37
+ /**
38
+ * scale:`exp(byte/16 - 10)` 米。
39
+ * 值域 byte ∈ [0,255] → [4.54e-5, 380] 米,建筑泼溅的典型值(0.01~1 米)落在中段。
40
+ */
41
+ export function decodeScale(bytes, stride, offset, count) {
42
+ const out = new Float32Array(count * 3);
43
+ for (let i = 0; i < count; i++) {
44
+ const o = i * stride + offset;
45
+ out[i * 3] = Math.exp(bytes[o] / SCALE_LOG_DIV - SCALE_LOG_BIAS);
46
+ out[i * 3 + 1] = Math.exp(bytes[o + 1] / SCALE_LOG_DIV - SCALE_LOG_BIAS);
47
+ out[i * 3 + 2] = Math.exp(bytes[o + 2] / SCALE_LOG_DIV - SCALE_LOG_BIAS);
48
+ }
49
+ return out;
50
+ }
51
+ /**
52
+ * rotation:3 个 u8 直接归一化到 [-1,1],第四个分量由单位化补出。
53
+ *
54
+ * 输出顺序是 three 的 `(x, y, z, w)`,而官方内部是 `(w, x, y, z)` —— 这里已经换过。
55
+ */
56
+ export function decodeRotation(bytes, stride, offset, count) {
57
+ const out = new Float32Array(count * 4);
58
+ let maxErr = 0;
59
+ for (let i = 0; i < count; i++) {
60
+ const o = i * stride + offset;
61
+ const x = bytes[o] / ROT_U8_SCALE - 1;
62
+ const y = bytes[o + 1] / ROT_U8_SCALE - 1;
63
+ const z = bytes[o + 2] / ROT_U8_SCALE - 1;
64
+ const w = Math.sqrt(Math.max(0, 1 - (x * x + y * y + z * z)));
65
+ out[i * 4] = x;
66
+ out[i * 4 + 1] = y;
67
+ out[i * 4 + 2] = z;
68
+ out[i * 4 + 3] = w;
69
+ maxErr = Math.max(maxErr, Math.abs(x * x + y * y + z * z + w * w - 1));
70
+ }
71
+ // 模长偏差只可能在「四元数确实不是这套编码」时出现,留给调用方判断
72
+ rotationResidual = maxErr;
73
+ return out;
74
+ }
75
+ /**
76
+ * 上一次 `decodeRotation` 的单位化残差(|q|²-1 的最大绝对值)。
77
+ *
78
+ * 这是判定「编码分支猜对没有」的判据:`D()` 分支下 w 是补出来的,残差恒 ≈ 0;
79
+ * 如果数据其实是 smallest-three 打包,把前 3 字节当分量解出来的 |q|² 会明显偏离 1。
80
+ */
81
+ let rotationResidual = 0;
82
+ export function lastRotationResidual() {
83
+ return rotationResidual;
84
+ }
85
+ /**
86
+ * 10-10-10-2 的 smallest-three(官方 `U()`,`isSPZCompress && version === 1.1` 时走这条)。
87
+ *
88
+ * 3 个分量各 10 bit(第 9 bit 是符号),剩下 2 bit 记录「哪一维是最大的」,
89
+ * 最大维由单位化补出 —— 这样只需要 32 bit 就能无损表达一个单位四元数。
90
+ */
91
+ export function decodeRotationSmallestThree(bytes, stride, offset, count) {
92
+ const out = new Float32Array(count * 4);
93
+ const MASK = (1 << 9) - 1;
94
+ const SQRT_HALF = Math.SQRT1_2;
95
+ for (let i = 0; i < count; i++) {
96
+ const o = i * stride + offset;
97
+ const packed = (bytes[o] | (bytes[o + 1] << 8) | (bytes[o + 2] << 16) | (bytes[o + 3] << 24)) >>> 0;
98
+ const largest = (packed >>> 30) & 3;
99
+ let rest = packed;
100
+ let sumSq = 0;
101
+ for (let axis = 3; axis >= 0; axis--) {
102
+ if (axis === largest)
103
+ continue;
104
+ const mag = rest & MASK;
105
+ const negative = (rest >>> 9) & 1;
106
+ rest >>>= 10;
107
+ // 值域 [-√½, √½]:单位四元数里任一分量的上界
108
+ let v = (SQRT_HALF * mag) / MASK;
109
+ if (negative)
110
+ v = -v;
111
+ out[i * 4 + axis] = v;
112
+ sumSq += v * v;
113
+ }
114
+ out[i * 4 + largest] = Math.sqrt(Math.max(1 - sumSq, 0));
115
+ }
116
+ rotationResidual = 0;
117
+ return out;
118
+ }
119
+ /** 逐点协方差矩阵的上三角(6 个 float):`Σ = R S Sᵀ Rᵀ`,供 EWA 投影用 */
120
+ export function covariance(sx, sy, sz, qx, qy, qz, qw, out, at) {
121
+ // 旋转矩阵(列主序 3×3)
122
+ const xx = qx * qx, yy = qy * qy, zz = qz * qz;
123
+ const xy = qx * qy, xz = qx * qz, yz = qy * qz;
124
+ const wx = qw * qx, wy = qw * qy, wz = qw * qz;
125
+ const r00 = 1 - 2 * (yy + zz), r01 = 2 * (xy - wz), r02 = 2 * (xz + wy);
126
+ const r10 = 2 * (xy + wz), r11 = 1 - 2 * (xx + zz), r12 = 2 * (yz - wx);
127
+ const r20 = 2 * (xz - wy), r21 = 2 * (yz + wx), r22 = 1 - 2 * (xx + yy);
128
+ // M = R · diag(s),则 Σ = M Mᵀ
129
+ const m00 = r00 * sx, m01 = r01 * sy, m02 = r02 * sz;
130
+ const m10 = r10 * sx, m11 = r11 * sy, m12 = r12 * sz;
131
+ const m20 = r20 * sx, m21 = r21 * sy, m22 = r22 * sz;
132
+ out[at] = m00 * m00 + m01 * m01 + m02 * m02;
133
+ out[at + 1] = m00 * m10 + m01 * m11 + m02 * m12;
134
+ out[at + 2] = m00 * m20 + m01 * m21 + m02 * m22;
135
+ out[at + 3] = m10 * m10 + m11 * m11 + m12 * m12;
136
+ out[at + 4] = m10 * m20 + m11 * m21 + m12 * m22;
137
+ out[at + 5] = m20 * m20 + m21 * m21 + m22 * m22;
138
+ }
139
+ //# sourceMappingURL=GaussianSplat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GaussianSplat.js","sourceRoot":"","sources":["../../src/core/GaussianSplat.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { ParsedTile } from './types.js';
2
2
  export interface ParseS3M1Options {
3
3
  inflate?: (bytes: Uint8Array) => Uint8Array | Promise<Uint8Array>;
4
4
  }
5
- /** 是不是 S3M 1.x 容器 */
5
+ /** 是不是 S3M 1.x 容器(版本字节 0 或 1) */
6
6
  export declare function isS3M1Buffer(buffer: ArrayBuffer): boolean;
7
7
  /**
8
8
  * 按「字节/像素」反推 S3MPixelFormat。
@@ -1 +1 @@
1
- {"version":3,"file":"S3M1Parser.d.ts","sourceRoot":"","sources":["../../src/core/S3M1Parser.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAKV,UAAU,EAIX,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnE;AAED,qBAAqB;AACrB,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAGzD;AAoMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQvE;AA4CD,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAuH7G"}
1
+ {"version":3,"file":"S3M1Parser.d.ts","sourceRoot":"","sources":["../../src/core/S3M1Parser.ts"],"names":[],"mappings":"AA+DA,OAAO,KAAK,EAKV,UAAU,EAKX,MAAM,YAAY,CAAC;AAepB,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACnE;AAED,iCAAiC;AACjC,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAKzD;AAsZD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQvE;AAgDD,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwK7G"}