@loaders.gl/i3s 4.0.0-beta.2 → 4.0.0-beta.3

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 (207) hide show
  1. package/dist/arcgis-webscene-loader.d.ts.map +1 -0
  2. package/dist/{esm/arcgis-webscene-loader.js → arcgis-webscene-loader.js} +2 -2
  3. package/dist/arcgis-webscene-loader.js.map +1 -0
  4. package/dist/dist.dev.js +14694 -0
  5. package/dist/i3s-attribute-loader.d.ts.map +1 -0
  6. package/dist/{esm/i3s-attribute-loader.js → i3s-attribute-loader.js} +3 -3
  7. package/dist/i3s-attribute-loader.js.map +1 -0
  8. package/dist/i3s-building-scene-layer-loader.d.ts.map +1 -0
  9. package/dist/{esm/i3s-building-scene-layer-loader.js → i3s-building-scene-layer-loader.js} +2 -2
  10. package/dist/i3s-building-scene-layer-loader.js.map +1 -0
  11. package/dist/i3s-content-loader.d.ts.map +1 -0
  12. package/dist/{esm/i3s-content-loader.js → i3s-content-loader.js} +2 -2
  13. package/dist/i3s-content-loader.js.map +1 -0
  14. package/dist/i3s-content-worker-node.js +300 -155
  15. package/dist/i3s-content-worker-node.js.map +4 -4
  16. package/dist/i3s-content-worker.js +1337 -483
  17. package/dist/i3s-loader.d.ts.map +1 -0
  18. package/dist/{esm/i3s-loader.js → i3s-loader.js} +4 -4
  19. package/dist/i3s-loader.js.map +1 -0
  20. package/dist/i3s-node-page-loader.d.ts.map +1 -0
  21. package/dist/{esm/i3s-node-page-loader.js → i3s-node-page-loader.js} +1 -1
  22. package/dist/i3s-node-page-loader.js.map +1 -0
  23. package/dist/{src/i3s-slpk-loader.d.ts → i3s-slpk-loader.d.ts} +3 -1
  24. package/dist/i3s-slpk-loader.d.ts.map +1 -0
  25. package/dist/i3s-slpk-loader.js +19 -0
  26. package/dist/i3s-slpk-loader.js.map +1 -0
  27. package/dist/index.cjs +1587 -0
  28. package/dist/{src/index.d.ts → index.d.ts} +2 -1
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +10 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/lib/helpers/i3s-nodepages-tiles.d.ts.map +1 -0
  33. package/dist/{esm/lib → lib}/helpers/i3s-nodepages-tiles.js +16 -17
  34. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  35. package/dist/lib/parsers/constants.d.ts.map +1 -0
  36. package/dist/{esm/lib → lib}/parsers/constants.js +2 -2
  37. package/dist/lib/parsers/constants.js.map +1 -0
  38. package/dist/lib/parsers/parse-arcgis-webscene.d.ts.map +1 -0
  39. package/dist/lib/parsers/parse-arcgis-webscene.js.map +1 -0
  40. package/dist/lib/parsers/parse-i3s-attribute.d.ts.map +1 -0
  41. package/dist/{esm/lib → lib}/parsers/parse-i3s-attribute.js +1 -1
  42. package/dist/lib/parsers/parse-i3s-attribute.js.map +1 -0
  43. package/dist/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +1 -0
  44. package/dist/{esm/lib → lib}/parsers/parse-i3s-building-scene-layer.js +1 -1
  45. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  46. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -0
  47. package/dist/{esm/lib → lib}/parsers/parse-i3s-tile-content.js +6 -5
  48. package/dist/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  49. package/dist/lib/parsers/parse-i3s.d.ts.map +1 -0
  50. package/dist/{esm/lib → lib}/parsers/parse-i3s.js +6 -6
  51. package/dist/lib/parsers/parse-i3s.js.map +1 -0
  52. package/dist/{src/lib → lib}/parsers/parse-slpk/parse-slpk.d.ts +1 -1
  53. package/dist/lib/parsers/parse-slpk/parse-slpk.d.ts.map +1 -0
  54. package/dist/{esm/lib → lib}/parsers/parse-slpk/parse-slpk.js +9 -11
  55. package/dist/lib/parsers/parse-slpk/parse-slpk.js.map +1 -0
  56. package/dist/{src/lib → lib}/parsers/parse-slpk/slpk-archieve.d.ts +10 -7
  57. package/dist/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +1 -0
  58. package/dist/{esm/lib → lib}/parsers/parse-slpk/slpk-archieve.js +21 -21
  59. package/dist/lib/parsers/parse-slpk/slpk-archieve.js.map +1 -0
  60. package/dist/lib/utils/convert-i3s-obb-to-mbs.d.ts.map +1 -0
  61. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  62. package/dist/lib/utils/customize-/321/201olors.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/utils/customize-/321/201olors.js +2 -2
  64. package/dist/lib/utils/customize-/321/201olors.js.map +1 -0
  65. package/dist/lib/utils/url-utils.d.ts.map +1 -0
  66. package/dist/{esm/lib → lib}/utils/url-utils.js +3 -3
  67. package/dist/lib/utils/url-utils.js.map +1 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/workers/i3s-content-worker-node.d.ts.map +1 -0
  71. package/dist/{esm/workers → workers}/i3s-content-worker-node.js +1 -1
  72. package/dist/workers/i3s-content-worker-node.js.map +1 -0
  73. package/dist/workers/i3s-content-worker.d.ts.map +1 -0
  74. package/dist/workers/i3s-content-worker.js +4 -0
  75. package/dist/workers/i3s-content-worker.js.map +1 -0
  76. package/package.json +25 -17
  77. package/src/i3s-slpk-loader.ts +9 -18
  78. package/src/index.ts +3 -1
  79. package/src/lib/parsers/parse-i3s-tile-content.ts +2 -1
  80. package/src/lib/parsers/parse-slpk/parse-slpk.ts +13 -13
  81. package/src/lib/parsers/parse-slpk/slpk-archieve.ts +27 -19
  82. package/dist/dist.min.js +0 -15742
  83. package/dist/es5/arcgis-webscene-loader.js +0 -40
  84. package/dist/es5/arcgis-webscene-loader.js.map +0 -1
  85. package/dist/es5/bundle.js +0 -6
  86. package/dist/es5/bundle.js.map +0 -1
  87. package/dist/es5/i3s-attribute-loader.js +0 -195
  88. package/dist/es5/i3s-attribute-loader.js.map +0 -1
  89. package/dist/es5/i3s-building-scene-layer-loader.js +0 -46
  90. package/dist/es5/i3s-building-scene-layer-loader.js.map +0 -1
  91. package/dist/es5/i3s-content-loader.js +0 -56
  92. package/dist/es5/i3s-content-loader.js.map +0 -1
  93. package/dist/es5/i3s-loader.js +0 -193
  94. package/dist/es5/i3s-loader.js.map +0 -1
  95. package/dist/es5/i3s-node-page-loader.js +0 -41
  96. package/dist/es5/i3s-node-page-loader.js.map +0 -1
  97. package/dist/es5/i3s-slpk-loader.js +0 -48
  98. package/dist/es5/i3s-slpk-loader.js.map +0 -1
  99. package/dist/es5/index.js +0 -75
  100. package/dist/es5/index.js.map +0 -1
  101. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +0 -316
  102. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  103. package/dist/es5/lib/parsers/constants.js +0 -71
  104. package/dist/es5/lib/parsers/constants.js.map +0 -1
  105. package/dist/es5/lib/parsers/parse-arcgis-webscene.js +0 -158
  106. package/dist/es5/lib/parsers/parse-arcgis-webscene.js.map +0 -1
  107. package/dist/es5/lib/parsers/parse-i3s-attribute.js +0 -76
  108. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +0 -1
  109. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +0 -65
  110. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  111. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +0 -513
  112. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  113. package/dist/es5/lib/parsers/parse-i3s.js +0 -128
  114. package/dist/es5/lib/parsers/parse-i3s.js.map +0 -1
  115. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js +0 -69
  116. package/dist/es5/lib/parsers/parse-slpk/parse-slpk.js.map +0 -1
  117. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js +0 -254
  118. package/dist/es5/lib/parsers/parse-slpk/slpk-archieve.js.map +0 -1
  119. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +0 -17
  120. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  121. package/dist/es5/lib/utils/customize-/321/201olors.js +0 -184
  122. package/dist/es5/lib/utils/customize-/321/201olors.js.map +0 -1
  123. package/dist/es5/lib/utils/url-utils.js +0 -33
  124. package/dist/es5/lib/utils/url-utils.js.map +0 -1
  125. package/dist/es5/types.js +0 -13
  126. package/dist/es5/types.js.map +0 -1
  127. package/dist/es5/workers/i3s-content-worker-node.js +0 -7
  128. package/dist/es5/workers/i3s-content-worker-node.js.map +0 -1
  129. package/dist/es5/workers/i3s-content-worker.js +0 -6
  130. package/dist/es5/workers/i3s-content-worker.js.map +0 -1
  131. package/dist/esm/arcgis-webscene-loader.js.map +0 -1
  132. package/dist/esm/bundle.js +0 -4
  133. package/dist/esm/bundle.js.map +0 -1
  134. package/dist/esm/i3s-attribute-loader.js.map +0 -1
  135. package/dist/esm/i3s-building-scene-layer-loader.js.map +0 -1
  136. package/dist/esm/i3s-content-loader.js.map +0 -1
  137. package/dist/esm/i3s-loader.js.map +0 -1
  138. package/dist/esm/i3s-node-page-loader.js.map +0 -1
  139. package/dist/esm/i3s-slpk-loader.js +0 -19
  140. package/dist/esm/i3s-slpk-loader.js.map +0 -1
  141. package/dist/esm/index.js +0 -10
  142. package/dist/esm/index.js.map +0 -1
  143. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  144. package/dist/esm/lib/parsers/constants.js.map +0 -1
  145. package/dist/esm/lib/parsers/parse-arcgis-webscene.js.map +0 -1
  146. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +0 -1
  147. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  148. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  149. package/dist/esm/lib/parsers/parse-i3s.js.map +0 -1
  150. package/dist/esm/lib/parsers/parse-slpk/parse-slpk.js.map +0 -1
  151. package/dist/esm/lib/parsers/parse-slpk/slpk-archieve.js.map +0 -1
  152. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  153. package/dist/esm/lib/utils/customize-/321/201olors.js.map +0 -1
  154. package/dist/esm/lib/utils/url-utils.js.map +0 -1
  155. package/dist/esm/types.js.map +0 -1
  156. package/dist/esm/workers/i3s-content-worker-node.js.map +0 -1
  157. package/dist/esm/workers/i3s-content-worker.js +0 -4
  158. package/dist/esm/workers/i3s-content-worker.js.map +0 -1
  159. package/dist/src/arcgis-webscene-loader.d.ts.map +0 -1
  160. package/dist/src/bundle.d.ts +0 -2
  161. package/dist/src/bundle.d.ts.map +0 -1
  162. package/dist/src/i3s-attribute-loader.d.ts.map +0 -1
  163. package/dist/src/i3s-building-scene-layer-loader.d.ts.map +0 -1
  164. package/dist/src/i3s-content-loader.d.ts.map +0 -1
  165. package/dist/src/i3s-loader.d.ts.map +0 -1
  166. package/dist/src/i3s-node-page-loader.d.ts.map +0 -1
  167. package/dist/src/i3s-slpk-loader.d.ts.map +0 -1
  168. package/dist/src/index.d.ts.map +0 -1
  169. package/dist/src/lib/helpers/i3s-nodepages-tiles.d.ts.map +0 -1
  170. package/dist/src/lib/parsers/constants.d.ts.map +0 -1
  171. package/dist/src/lib/parsers/parse-arcgis-webscene.d.ts.map +0 -1
  172. package/dist/src/lib/parsers/parse-i3s-attribute.d.ts.map +0 -1
  173. package/dist/src/lib/parsers/parse-i3s-building-scene-layer.d.ts.map +0 -1
  174. package/dist/src/lib/parsers/parse-i3s-tile-content.d.ts.map +0 -1
  175. package/dist/src/lib/parsers/parse-i3s.d.ts.map +0 -1
  176. package/dist/src/lib/parsers/parse-slpk/parse-slpk.d.ts.map +0 -1
  177. package/dist/src/lib/parsers/parse-slpk/slpk-archieve.d.ts.map +0 -1
  178. package/dist/src/lib/utils/convert-i3s-obb-to-mbs.d.ts.map +0 -1
  179. package/dist/src/lib/utils/customize-/321/201olors.d.ts.map +0 -1
  180. package/dist/src/lib/utils/url-utils.d.ts.map +0 -1
  181. package/dist/src/types.d.ts.map +0 -1
  182. package/dist/src/workers/i3s-content-worker-node.d.ts.map +0 -1
  183. package/dist/src/workers/i3s-content-worker.d.ts.map +0 -1
  184. package/dist/tsconfig.tsbuildinfo +0 -1
  185. package/src/bundle.ts +0 -4
  186. /package/dist/{src/arcgis-webscene-loader.d.ts → arcgis-webscene-loader.d.ts} +0 -0
  187. /package/dist/{src/i3s-attribute-loader.d.ts → i3s-attribute-loader.d.ts} +0 -0
  188. /package/dist/{src/i3s-building-scene-layer-loader.d.ts → i3s-building-scene-layer-loader.d.ts} +0 -0
  189. /package/dist/{src/i3s-content-loader.d.ts → i3s-content-loader.d.ts} +0 -0
  190. /package/dist/{src/i3s-loader.d.ts → i3s-loader.d.ts} +0 -0
  191. /package/dist/{src/i3s-node-page-loader.d.ts → i3s-node-page-loader.d.ts} +0 -0
  192. /package/dist/{src/lib → lib}/helpers/i3s-nodepages-tiles.d.ts +0 -0
  193. /package/dist/{src/lib → lib}/parsers/constants.d.ts +0 -0
  194. /package/dist/{src/lib → lib}/parsers/parse-arcgis-webscene.d.ts +0 -0
  195. /package/dist/{esm/lib → lib}/parsers/parse-arcgis-webscene.js +0 -0
  196. /package/dist/{src/lib → lib}/parsers/parse-i3s-attribute.d.ts +0 -0
  197. /package/dist/{src/lib → lib}/parsers/parse-i3s-building-scene-layer.d.ts +0 -0
  198. /package/dist/{src/lib → lib}/parsers/parse-i3s-tile-content.d.ts +0 -0
  199. /package/dist/{src/lib → lib}/parsers/parse-i3s.d.ts +0 -0
  200. /package/dist/{src/lib → lib}/utils/convert-i3s-obb-to-mbs.d.ts +0 -0
  201. /package/dist/{esm/lib → lib}/utils/convert-i3s-obb-to-mbs.js +0 -0
  202. /package/dist/{src/lib → lib}/utils/customize-/321/201olors.d.ts" +0 -0
  203. /package/dist/{src/lib → lib}/utils/url-utils.d.ts +0 -0
  204. /package/dist/{src/types.d.ts → types.d.ts} +0 -0
  205. /package/dist/{esm/types.js → types.js} +0 -0
  206. /package/dist/{src/workers → workers}/i3s-content-worker-node.d.ts +0 -0
  207. /package/dist/{src/workers → workers}/i3s-content-worker.d.ts +0 -0
@@ -1,6 +1,6 @@
1
- import md5 from 'md5';
1
+ import {MD5Hash} from '@loaders.gl/crypto';
2
2
  import {FileProvider} from '@loaders.gl/loader-utils';
3
- import {parseZipLocalFileHeader, HashElement, findBin} from '@loaders.gl/zip';
3
+ import {parseZipLocalFileHeader} from '@loaders.gl/zip';
4
4
  import {GZipCompression} from '@loaders.gl/compression';
5
5
 
6
6
  /** Description of real paths for different file types */
@@ -43,11 +43,20 @@ const PATH_DESCRIPTIONS: {test: RegExp; extensions: string[]}[] = [
43
43
  * Class for handling information about slpk file
44
44
  */
45
45
  export class SLPKArchive {
46
+ /** A DataView representation of the archive */
46
47
  private slpkArchive: FileProvider;
47
- private hashArray: HashElement[];
48
- constructor(slpkArchive: FileProvider, hashFile: HashElement[]) {
48
+ // Maps hex-encoded md5 filename hashes to bigint offsets into the archive
49
+ private hashTable: Record<string, bigint>;
50
+ /** Array of hashes and offsets into archive */
51
+ // hashToOffsetMap: Record<string, number>;
52
+
53
+ protected _textEncoder = new TextEncoder();
54
+ protected _textDecoder = new TextDecoder();
55
+ protected _md5Hash = new MD5Hash();
56
+
57
+ constructor(slpkArchive: FileProvider, hashTable: Record<string, bigint>) {
49
58
  this.slpkArchive = slpkArchive;
50
- this.hashArray = hashFile;
59
+ this.hashTable = hashTable;
51
60
  }
52
61
 
53
62
  /**
@@ -56,7 +65,7 @@ export class SLPKArchive {
56
65
  * @param mode - currently only raw mode supported
57
66
  * @returns buffer with ready to use file
58
67
  */
59
- async getFile(path: string, mode: 'http' | 'raw' = 'raw'): Promise<Buffer> {
68
+ async getFile(path: string, mode: 'http' | 'raw' = 'raw'): Promise<ArrayBuffer> {
60
69
  if (mode === 'http') {
61
70
  const extensions = PATH_DESCRIPTIONS.find((val) => val.test.test(path))?.extensions;
62
71
  if (extensions) {
@@ -68,22 +77,22 @@ export class SLPKArchive {
68
77
  }
69
78
  }
70
79
  if (data) {
71
- return Buffer.from(data);
80
+ return data;
72
81
  }
73
82
  }
74
83
  }
75
84
  if (mode === 'raw') {
76
85
  const decompressedFile = await this.getDataByPath(`${path}.gz`);
77
86
  if (decompressedFile) {
78
- return Buffer.from(decompressedFile);
87
+ return decompressedFile;
79
88
  }
80
89
  const fileWithoutCompression = await this.getFileBytes(path);
81
90
  if (fileWithoutCompression) {
82
- return Buffer.from(fileWithoutCompression);
91
+ return fileWithoutCompression;
83
92
  }
84
93
  }
85
94
 
86
- throw new Error('No such file in the archieve');
95
+ throw new Error(`No such file in the archive: ${path}`);
87
96
  }
88
97
 
89
98
  /**
@@ -107,22 +116,24 @@ export class SLPKArchive {
107
116
  const decompressedData = await compression.decompress(data);
108
117
  return decompressedData;
109
118
  }
110
- return Buffer.from(data);
119
+ return data;
111
120
  }
112
121
 
113
122
  /**
114
- * Trying to get raw file data by adress
123
+ * Trying to get raw file data by address
115
124
  * @param path - path inside the archive
116
125
  * @returns buffer with the raw file data
117
126
  */
118
127
  private async getFileBytes(path: string): Promise<ArrayBuffer | undefined> {
119
- const nameHash = Buffer.from(md5(path), 'hex');
120
- const fileInfo = findBin(nameHash, this.hashArray); // implement binary search
121
- if (!fileInfo) {
128
+ const binaryPath = this._textEncoder.encode(path);
129
+ const nameHash = await this._md5Hash.hash(binaryPath.buffer, 'hex');
130
+
131
+ const offset = this.hashTable[nameHash];
132
+ if (offset === undefined) {
122
133
  return undefined;
123
134
  }
124
135
 
125
- const localFileHeader = await parseZipLocalFileHeader(fileInfo.offset, this.slpkArchive);
136
+ const localFileHeader = await parseZipLocalFileHeader(offset, this.slpkArchive);
126
137
  if (!localFileHeader) {
127
138
  return undefined;
128
139
  }
@@ -134,7 +145,4 @@ export class SLPKArchive {
134
145
 
135
146
  return compressedFile;
136
147
  }
137
- findBin(nameHash: Buffer) {
138
- throw new Error('Method not implemented.');
139
- }
140
148
  }