@loaders.gl/i3s 3.0.13 → 3.0.14

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 (36) hide show
  1. package/dist/dist.es5.min.js +1 -1
  2. package/dist/dist.es5.min.js.map +1 -1
  3. package/dist/dist.min.js +1 -1
  4. package/dist/dist.min.js.map +1 -1
  5. package/dist/es5/bundle.js +2 -2
  6. package/dist/es5/bundle.js.map +1 -1
  7. package/dist/es5/i3s-attribute-loader.js +132 -53
  8. package/dist/es5/i3s-attribute-loader.js.map +1 -1
  9. package/dist/es5/i3s-content-loader.js +36 -10
  10. package/dist/es5/i3s-content-loader.js.map +1 -1
  11. package/dist/es5/i3s-loader.js +175 -51
  12. package/dist/es5/i3s-loader.js.map +1 -1
  13. package/dist/es5/i3s-node-page-loader.js +51 -8
  14. package/dist/es5/i3s-node-page-loader.js.map +1 -1
  15. package/dist/es5/index.js +4 -4
  16. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +313 -163
  17. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +1 -1
  18. package/dist/es5/lib/parsers/constants.js +9 -9
  19. package/dist/es5/lib/parsers/constants.js.map +1 -1
  20. package/dist/es5/lib/parsers/parse-i3s-attribute.js +68 -26
  21. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +1 -1
  22. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +405 -276
  23. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +1 -1
  24. package/dist/es5/lib/parsers/parse-i3s.js +70 -31
  25. package/dist/es5/lib/parsers/parse-i3s.js.map +1 -1
  26. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +8 -4
  27. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -1
  28. package/dist/es5/lib/utils/url-utils.js +14 -17
  29. package/dist/es5/lib/utils/url-utils.js.map +1 -1
  30. package/dist/esm/i3s-attribute-loader.js +1 -1
  31. package/dist/esm/i3s-content-loader.js +1 -1
  32. package/dist/esm/i3s-loader.js +1 -1
  33. package/dist/esm/i3s-node-page-loader.js +1 -1
  34. package/dist/i3s-content-worker.js +1 -1
  35. package/dist/i3s-content-worker.js.map +1 -1
  36. package/package.json +9 -9
@@ -9,7 +9,7 @@ exports.FLOAT_64_TYPE = exports.OBJECT_ID_ATTRIBUTE_TYPE = exports.STRING_ATTRIB
9
9
 
10
10
  var _constants = _interopRequireDefault(require("@luma.gl/constants"));
11
11
 
12
- const TYPE_ARRAY_MAP = {
12
+ var TYPE_ARRAY_MAP = {
13
13
  UInt8: Uint8Array,
14
14
  UInt16: Uint16Array,
15
15
  UInt32: Uint32Array,
@@ -17,7 +17,7 @@ const TYPE_ARRAY_MAP = {
17
17
  UInt64: Float64Array
18
18
  };
19
19
  exports.TYPE_ARRAY_MAP = TYPE_ARRAY_MAP;
20
- const GL_TYPE_MAP = {
20
+ var GL_TYPE_MAP = {
21
21
  UInt8: _constants.default.UNSIGNED_BYTE,
22
22
  UInt16: _constants.default.UNSIGNED_INT,
23
23
  Float32: _constants.default.FLOAT,
@@ -25,7 +25,7 @@ const GL_TYPE_MAP = {
25
25
  UInt64: _constants.default.DOUBLE
26
26
  };
27
27
  exports.GL_TYPE_MAP = GL_TYPE_MAP;
28
- const I3S_NAMED_VERTEX_ATTRIBUTES = {
28
+ var I3S_NAMED_VERTEX_ATTRIBUTES = {
29
29
  position: 'position',
30
30
  normal: 'normal',
31
31
  uv0: 'uv0',
@@ -33,19 +33,19 @@ const I3S_NAMED_VERTEX_ATTRIBUTES = {
33
33
  region: 'region'
34
34
  };
35
35
  exports.I3S_NAMED_VERTEX_ATTRIBUTES = I3S_NAMED_VERTEX_ATTRIBUTES;
36
- const I3S_NAMED_GEOMETRY_ATTRIBUTES = {
36
+ var I3S_NAMED_GEOMETRY_ATTRIBUTES = {
37
37
  vertexAttributes: 'vertexAttributes',
38
38
  featureAttributeOrder: 'featureAttributeOrder',
39
39
  featureAttributes: 'featureAttributes'
40
40
  };
41
41
  exports.I3S_NAMED_GEOMETRY_ATTRIBUTES = I3S_NAMED_GEOMETRY_ATTRIBUTES;
42
- const I3S_NAMED_HEADER_ATTRIBUTES = {
42
+ var I3S_NAMED_HEADER_ATTRIBUTES = {
43
43
  header: 'header',
44
44
  vertexCount: 'vertexCount',
45
45
  featureCount: 'featureCount'
46
46
  };
47
47
  exports.I3S_NAMED_HEADER_ATTRIBUTES = I3S_NAMED_HEADER_ATTRIBUTES;
48
- const SIZEOF = {
48
+ var SIZEOF = {
49
49
  UInt8: 1,
50
50
  UInt16: 2,
51
51
  UInt32: 4,
@@ -53,10 +53,10 @@ const SIZEOF = {
53
53
  UInt64: 8
54
54
  };
55
55
  exports.SIZEOF = SIZEOF;
56
- const STRING_ATTRIBUTE_TYPE = 'String';
56
+ var STRING_ATTRIBUTE_TYPE = 'String';
57
57
  exports.STRING_ATTRIBUTE_TYPE = STRING_ATTRIBUTE_TYPE;
58
- const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';
58
+ var OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';
59
59
  exports.OBJECT_ID_ATTRIBUTE_TYPE = OBJECT_ID_ATTRIBUTE_TYPE;
60
- const FLOAT_64_TYPE = 'Float64';
60
+ var FLOAT_64_TYPE = 'Float64';
61
61
  exports.FLOAT_64_TYPE = FLOAT_64_TYPE;
62
62
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/constants.ts"],"names":["TYPE_ARRAY_MAP","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","I3S_NAMED_VERTEX_ATTRIBUTES","position","normal","uv0","color","region","I3S_NAMED_GEOMETRY_ATTRIBUTES","vertexAttributes","featureAttributeOrder","featureAttributes","I3S_NAMED_HEADER_ATTRIBUTES","header","vertexCount","featureCount","SIZEOF","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE"],"mappings":";;;;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAG;AAC5BC,EAAAA,KAAK,EAAEC,UADqB;AAE5BC,EAAAA,MAAM,EAAEC,WAFoB;AAG5BC,EAAAA,MAAM,EAAEC,WAHoB;AAI5BC,EAAAA,OAAO,EAAEC,YAJmB;AAK5BC,EAAAA,MAAM,EAAEC;AALoB,CAAvB;;AAQA,MAAMC,WAAW,GAAG;AACzBV,EAAAA,KAAK,EAAEW,mBAAGC,aADe;AAEzBV,EAAAA,MAAM,EAAES,mBAAGE,YAFc;AAGzBP,EAAAA,OAAO,EAAEK,mBAAGG,KAHa;AAIzBV,EAAAA,MAAM,EAAEO,mBAAGE,YAJc;AAKzBL,EAAAA,MAAM,EAAEG,mBAAGI;AALc,CAApB;;AAQA,MAAMC,2BAA2B,GAAG;AACzCC,EAAAA,QAAQ,EAAE,UAD+B;AAEzCC,EAAAA,MAAM,EAAE,QAFiC;AAGzCC,EAAAA,GAAG,EAAE,KAHoC;AAIzCC,EAAAA,KAAK,EAAE,OAJkC;AAKzCC,EAAAA,MAAM,EAAE;AALiC,CAApC;;AAQA,MAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,gBAAgB,EAAE,kBADyB;AAE3CC,EAAAA,qBAAqB,EAAE,uBAFoB;AAG3CC,EAAAA,iBAAiB,EAAE;AAHwB,CAAtC;;AAMA,MAAMC,2BAA2B,GAAG;AACzCC,EAAAA,MAAM,EAAE,QADiC;AAEzCC,EAAAA,WAAW,EAAE,aAF4B;AAGzCC,EAAAA,YAAY,EAAE;AAH2B,CAApC;;AAMA,MAAMC,MAAM,GAAG;AACpB9B,EAAAA,KAAK,EAAE,CADa;AAEpBE,EAAAA,MAAM,EAAE,CAFY;AAGpBE,EAAAA,MAAM,EAAE,CAHY;AAIpBE,EAAAA,OAAO,EAAE,CAJW;AAKpBE,EAAAA,MAAM,EAAE;AALY,CAAf;;AAQA,MAAMuB,qBAAqB,GAAG,QAA9B;;AACA,MAAMC,wBAAwB,GAAG,OAAjC;;AACA,MAAMC,aAAa,GAAG,SAAtB","sourcesContent":["import GL from '@luma.gl/constants';\n\nexport const TYPE_ARRAY_MAP = {\n UInt8: Uint8Array,\n UInt16: Uint16Array,\n UInt32: Uint32Array,\n Float32: Float32Array,\n UInt64: Float64Array\n};\n\nexport const GL_TYPE_MAP = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n\nexport const I3S_NAMED_VERTEX_ATTRIBUTES = {\n position: 'position',\n normal: 'normal',\n uv0: 'uv0',\n color: 'color',\n region: 'region'\n};\n\nexport const I3S_NAMED_GEOMETRY_ATTRIBUTES = {\n vertexAttributes: 'vertexAttributes',\n featureAttributeOrder: 'featureAttributeOrder',\n featureAttributes: 'featureAttributes'\n};\n\nexport const I3S_NAMED_HEADER_ATTRIBUTES = {\n header: 'header',\n vertexCount: 'vertexCount',\n featureCount: 'featureCount'\n};\n\nexport const SIZEOF = {\n UInt8: 1,\n UInt16: 2,\n UInt32: 4,\n Float32: 4,\n UInt64: 8\n};\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\n"],"file":"constants.js"}
1
+ {"version":3,"sources":["../../../../src/lib/parsers/constants.ts"],"names":["TYPE_ARRAY_MAP","UInt8","Uint8Array","UInt16","Uint16Array","UInt32","Uint32Array","Float32","Float32Array","UInt64","Float64Array","GL_TYPE_MAP","GL","UNSIGNED_BYTE","UNSIGNED_INT","FLOAT","DOUBLE","I3S_NAMED_VERTEX_ATTRIBUTES","position","normal","uv0","color","region","I3S_NAMED_GEOMETRY_ATTRIBUTES","vertexAttributes","featureAttributeOrder","featureAttributes","I3S_NAMED_HEADER_ATTRIBUTES","header","vertexCount","featureCount","SIZEOF","STRING_ATTRIBUTE_TYPE","OBJECT_ID_ATTRIBUTE_TYPE","FLOAT_64_TYPE"],"mappings":";;;;;;;;;AAAA;;AAEO,IAAMA,cAAc,GAAG;AAC5BC,EAAAA,KAAK,EAAEC,UADqB;AAE5BC,EAAAA,MAAM,EAAEC,WAFoB;AAG5BC,EAAAA,MAAM,EAAEC,WAHoB;AAI5BC,EAAAA,OAAO,EAAEC,YAJmB;AAK5BC,EAAAA,MAAM,EAAEC;AALoB,CAAvB;;AAQA,IAAMC,WAAW,GAAG;AACzBV,EAAAA,KAAK,EAAEW,mBAAGC,aADe;AAEzBV,EAAAA,MAAM,EAAES,mBAAGE,YAFc;AAGzBP,EAAAA,OAAO,EAAEK,mBAAGG,KAHa;AAIzBV,EAAAA,MAAM,EAAEO,mBAAGE,YAJc;AAKzBL,EAAAA,MAAM,EAAEG,mBAAGI;AALc,CAApB;;AAQA,IAAMC,2BAA2B,GAAG;AACzCC,EAAAA,QAAQ,EAAE,UAD+B;AAEzCC,EAAAA,MAAM,EAAE,QAFiC;AAGzCC,EAAAA,GAAG,EAAE,KAHoC;AAIzCC,EAAAA,KAAK,EAAE,OAJkC;AAKzCC,EAAAA,MAAM,EAAE;AALiC,CAApC;;AAQA,IAAMC,6BAA6B,GAAG;AAC3CC,EAAAA,gBAAgB,EAAE,kBADyB;AAE3CC,EAAAA,qBAAqB,EAAE,uBAFoB;AAG3CC,EAAAA,iBAAiB,EAAE;AAHwB,CAAtC;;AAMA,IAAMC,2BAA2B,GAAG;AACzCC,EAAAA,MAAM,EAAE,QADiC;AAEzCC,EAAAA,WAAW,EAAE,aAF4B;AAGzCC,EAAAA,YAAY,EAAE;AAH2B,CAApC;;AAMA,IAAMC,MAAM,GAAG;AACpB9B,EAAAA,KAAK,EAAE,CADa;AAEpBE,EAAAA,MAAM,EAAE,CAFY;AAGpBE,EAAAA,MAAM,EAAE,CAHY;AAIpBE,EAAAA,OAAO,EAAE,CAJW;AAKpBE,EAAAA,MAAM,EAAE;AALY,CAAf;;AAQA,IAAMuB,qBAAqB,GAAG,QAA9B;;AACA,IAAMC,wBAAwB,GAAG,OAAjC;;AACA,IAAMC,aAAa,GAAG,SAAtB","sourcesContent":["import GL from '@luma.gl/constants';\n\nexport const TYPE_ARRAY_MAP = {\n UInt8: Uint8Array,\n UInt16: Uint16Array,\n UInt32: Uint32Array,\n Float32: Float32Array,\n UInt64: Float64Array\n};\n\nexport const GL_TYPE_MAP = {\n UInt8: GL.UNSIGNED_BYTE,\n UInt16: GL.UNSIGNED_INT,\n Float32: GL.FLOAT,\n UInt32: GL.UNSIGNED_INT,\n UInt64: GL.DOUBLE\n};\n\nexport const I3S_NAMED_VERTEX_ATTRIBUTES = {\n position: 'position',\n normal: 'normal',\n uv0: 'uv0',\n color: 'color',\n region: 'region'\n};\n\nexport const I3S_NAMED_GEOMETRY_ATTRIBUTES = {\n vertexAttributes: 'vertexAttributes',\n featureAttributeOrder: 'featureAttributeOrder',\n featureAttributes: 'featureAttributes'\n};\n\nexport const I3S_NAMED_HEADER_ATTRIBUTES = {\n header: 'header',\n vertexCount: 'vertexCount',\n featureCount: 'featureCount'\n};\n\nexport const SIZEOF = {\n UInt8: 1,\n UInt16: 2,\n UInt32: 4,\n Float32: 4,\n UInt64: 8\n};\n\nexport const STRING_ATTRIBUTE_TYPE = 'String';\nexport const OBJECT_ID_ATTRIBUTE_TYPE = 'Oid32';\nexport const FLOAT_64_TYPE = 'Float64';\n"],"file":"constants.js"}
@@ -1,25 +1,57 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.parseI3STileAttribute = parseI3STileAttribute;
7
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
8
16
  var _constants = require("./constants");
9
17
 
10
- async function parseI3STileAttribute(arrayBuffer, options) {
11
- const {
12
- attributeName,
13
- attributeType
14
- } = options;
18
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
15
19
 
16
- if (!attributeName) {
17
- return {};
18
- }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
+
24
+ function parseI3STileAttribute(_x, _x2) {
25
+ return _parseI3STileAttribute.apply(this, arguments);
26
+ }
27
+
28
+ function _parseI3STileAttribute() {
29
+ _parseI3STileAttribute = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(arrayBuffer, options) {
30
+ var attributeName, attributeType;
31
+ return _regenerator.default.wrap(function _callee$(_context) {
32
+ while (1) {
33
+ switch (_context.prev = _context.next) {
34
+ case 0:
35
+ attributeName = options.attributeName, attributeType = options.attributeType;
36
+
37
+ if (attributeName) {
38
+ _context.next = 3;
39
+ break;
40
+ }
41
+
42
+ return _context.abrupt("return", {});
19
43
 
20
- return {
21
- [attributeName]: attributeType ? parseAttribute(attributeType, arrayBuffer) : null
22
- };
44
+ case 3:
45
+ return _context.abrupt("return", (0, _defineProperty2.default)({}, attributeName, attributeType ? parseAttribute(attributeType, arrayBuffer) : null));
46
+
47
+ case 4:
48
+ case "end":
49
+ return _context.stop();
50
+ }
51
+ }
52
+ }, _callee);
53
+ }));
54
+ return _parseI3STileAttribute.apply(this, arguments);
23
55
  }
24
56
 
25
57
  function parseAttribute(attributeType, arrayBuffer) {
@@ -39,31 +71,41 @@ function parseAttribute(attributeType, arrayBuffer) {
39
71
  }
40
72
 
41
73
  function parseShortNumberAttribute(arrayBuffer) {
42
- const countOffset = 4;
74
+ var countOffset = 4;
43
75
  return new Uint32Array(arrayBuffer, countOffset);
44
76
  }
45
77
 
46
78
  function parseFloatAttribute(arrayBuffer) {
47
- const countOffset = 8;
79
+ var countOffset = 8;
48
80
  return new Float64Array(arrayBuffer, countOffset);
49
81
  }
50
82
 
51
83
  function parseStringsAttribute(arrayBuffer) {
52
- const stringsCountOffset = 0;
53
- const dataOffset = 8;
54
- const bytesPerStringSize = 4;
55
- const stringsArray = [];
84
+ var stringsCountOffset = 0;
85
+ var dataOffset = 8;
86
+ var bytesPerStringSize = 4;
87
+ var stringsArray = [];
56
88
 
57
89
  try {
58
- const stringsCount = new DataView(arrayBuffer, stringsCountOffset, bytesPerStringSize).getUint32(stringsCountOffset, true);
59
- const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);
60
- let stringOffset = dataOffset + stringsCount * bytesPerStringSize;
61
-
62
- for (const stringByteSize of stringSizes) {
63
- const textDecoder = new TextDecoder('utf-8');
64
- const stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);
65
- stringsArray.push(textDecoder.decode(stringAttribute));
66
- stringOffset += stringByteSize;
90
+ var stringsCount = new DataView(arrayBuffer, stringsCountOffset, bytesPerStringSize).getUint32(stringsCountOffset, true);
91
+ var stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);
92
+ var stringOffset = dataOffset + stringsCount * bytesPerStringSize;
93
+
94
+ var _iterator = _createForOfIteratorHelper(stringSizes),
95
+ _step;
96
+
97
+ try {
98
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
99
+ var stringByteSize = _step.value;
100
+ var textDecoder = new TextDecoder('utf-8');
101
+ var stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);
102
+ stringsArray.push(textDecoder.decode(stringAttribute));
103
+ stringOffset += stringByteSize;
104
+ }
105
+ } catch (err) {
106
+ _iterator.e(err);
107
+ } finally {
108
+ _iterator.f();
67
109
  }
68
110
  } catch (error) {
69
111
  console.error('Parse string attribute error: ', error.message);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","STRING_ATTRIBUTE_TYPE","parseStringsAttribute","OBJECT_ID_ATTRIBUTE_TYPE","parseShortNumberAttribute","FLOAT_64_TYPE","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":";;;;;;;AAAA;;AAQO,eAAeA,qBAAf,CAAqCC,WAArC,EAAkDC,OAAlD,EAA2D;AAChE,QAAM;AAACC,IAAAA,aAAD;AAAgBC,IAAAA;AAAhB,MAAiCF,OAAvC;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAClB,WAAO,EAAP;AACD;;AACD,SAAO;AACL,KAACA,aAAD,GAAiBC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD;AADzE,GAAP;AAGD;;AAQD,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKE,gCAAL;AACE,aAAOC,qBAAqB,CAACN,WAAD,CAA5B;;AACF,SAAKO,mCAAL;AACE,aAAOC,yBAAyB,CAACR,WAAD,CAAhC;;AACF,SAAKS,wBAAL;AACE,aAAOC,mBAAmB,CAACV,WAAD,CAA1B;;AACF;AACE,aAAOQ,yBAAyB,CAACR,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASQ,yBAAT,CAAmCR,WAAnC,EAAgD;AAC9C,QAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBZ,WAAhB,EAA6BW,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BV,WAA7B,EAA0C;AACxC,QAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBb,WAAjB,EAA8BW,WAA9B,CAAP;AACD;;AAQD,SAASL,qBAAT,CAA+BN,WAA/B,EAAmE;AACjE,QAAMc,kBAAkB,GAAG,CAA3B;AACA,QAAMC,UAAU,GAAG,CAAnB;AACA,QAAMC,kBAAkB,GAAG,CAA3B;AACA,QAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,UAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBnB,WADmB,EAEnBc,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,UAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBZ,WAAhB,EAA6Be,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AAEA,SAAK,MAAMO,cAAX,IAA6BF,WAA7B,EAA0C;AACxC,YAAMG,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAe3B,WAAf,EAA4BsB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,MAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,MAAAA,YAAY,IAAIC,cAAhB;AACD;AACF,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,EAAiDA,KAAD,CAAiBE,OAAjE;AACD;;AAED,SAAOf,YAAP;AACD","sourcesContent":["import {STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE} from './constants';\n\n/**\n * Get particular tile and creates attribute object inside.\n * @param {ArrayBuffer} arrayBuffer\n * @param {Object} options\n * @returns {Promise<object>}\n */\nexport async function parseI3STileAttribute(arrayBuffer, options) {\n const {attributeName, attributeType} = options;\n\n if (!attributeName) {\n return {};\n }\n return {\n [attributeName]: attributeType ? parseAttribute(attributeType, arrayBuffer) : null\n };\n}\n\n/**\n * Parse attributes based on attribute type.\n * @param {String} attributeType\n * @param {ArrayBuffer} arrayBuffer\n * @returns {any}\n */\nfunction parseAttribute(attributeType, arrayBuffer) {\n switch (attributeType) {\n case STRING_ATTRIBUTE_TYPE:\n return parseStringsAttribute(arrayBuffer);\n case OBJECT_ID_ATTRIBUTE_TYPE:\n return parseShortNumberAttribute(arrayBuffer);\n case FLOAT_64_TYPE:\n return parseFloatAttribute(arrayBuffer);\n default:\n return parseShortNumberAttribute(arrayBuffer);\n }\n}\n\n/**\n * Parse short number attribute.\n * Short Integer spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Uint32Array}\n */\nfunction parseShortNumberAttribute(arrayBuffer) {\n const countOffset = 4;\n return new Uint32Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse float attribute.\n * Double Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Float64Array}\n */\nfunction parseFloatAttribute(arrayBuffer) {\n const countOffset = 8;\n return new Float64Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse string attribute.\n * String spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param arrayBuffer\n * @returns list of strings\n */\nfunction parseStringsAttribute(arrayBuffer: ArrayBuffer): string[] {\n const stringsCountOffset = 0;\n const dataOffset = 8;\n const bytesPerStringSize = 4;\n const stringsArray: string[] = [];\n\n try {\n // Use DataView to avoid multiple of 4 error on Uint32Array constructor\n const stringsCount = new DataView(\n arrayBuffer,\n stringsCountOffset,\n bytesPerStringSize\n ).getUint32(stringsCountOffset, true);\n const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);\n let stringOffset = dataOffset + stringsCount * bytesPerStringSize;\n\n for (const stringByteSize of stringSizes) {\n const textDecoder = new TextDecoder('utf-8');\n const stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);\n stringsArray.push(textDecoder.decode(stringAttribute));\n stringOffset += stringByteSize;\n }\n } catch (error) {\n console.error('Parse string attribute error: ', (error as Error).message); // eslint-disable-line\n }\n\n return stringsArray;\n}\n"],"file":"parse-i3s-attribute.js"}
1
+ {"version":3,"sources":["../../../../src/lib/parsers/parse-i3s-attribute.ts"],"names":["parseI3STileAttribute","arrayBuffer","options","attributeName","attributeType","parseAttribute","STRING_ATTRIBUTE_TYPE","parseStringsAttribute","OBJECT_ID_ATTRIBUTE_TYPE","parseShortNumberAttribute","FLOAT_64_TYPE","parseFloatAttribute","countOffset","Uint32Array","Float64Array","stringsCountOffset","dataOffset","bytesPerStringSize","stringsArray","stringsCount","DataView","getUint32","stringSizes","stringOffset","stringByteSize","textDecoder","TextDecoder","stringAttribute","Uint8Array","push","decode","error","console","message"],"mappings":";;;;;;;;;;;;;;;AAAA;;;;;;;;SAQsBA,qB;;;;;qFAAf,iBAAqCC,WAArC,EAAkDC,OAAlD;AAAA;AAAA;AAAA;AAAA;AAAA;AACEC,YAAAA,aADF,GACkCD,OADlC,CACEC,aADF,EACiBC,aADjB,GACkCF,OADlC,CACiBE,aADjB;;AAAA,gBAGAD,aAHA;AAAA;AAAA;AAAA;;AAAA,6CAII,EAJJ;;AAAA;AAAA,+EAOFA,aAPE,EAOcC,aAAa,GAAGC,cAAc,CAACD,aAAD,EAAgBH,WAAhB,CAAjB,GAAgD,IAP3E;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAiBP,SAASI,cAAT,CAAwBD,aAAxB,EAAuCH,WAAvC,EAAoD;AAClD,UAAQG,aAAR;AACE,SAAKE,gCAAL;AACE,aAAOC,qBAAqB,CAACN,WAAD,CAA5B;;AACF,SAAKO,mCAAL;AACE,aAAOC,yBAAyB,CAACR,WAAD,CAAhC;;AACF,SAAKS,wBAAL;AACE,aAAOC,mBAAmB,CAACV,WAAD,CAA1B;;AACF;AACE,aAAOQ,yBAAyB,CAACR,WAAD,CAAhC;AARJ;AAUD;;AAQD,SAASQ,yBAAT,CAAmCR,WAAnC,EAAgD;AAC9C,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIC,WAAJ,CAAgBZ,WAAhB,EAA6BW,WAA7B,CAAP;AACD;;AAQD,SAASD,mBAAT,CAA6BV,WAA7B,EAA0C;AACxC,MAAMW,WAAW,GAAG,CAApB;AACA,SAAO,IAAIE,YAAJ,CAAiBb,WAAjB,EAA8BW,WAA9B,CAAP;AACD;;AAQD,SAASL,qBAAT,CAA+BN,WAA/B,EAAmE;AACjE,MAAMc,kBAAkB,GAAG,CAA3B;AACA,MAAMC,UAAU,GAAG,CAAnB;AACA,MAAMC,kBAAkB,GAAG,CAA3B;AACA,MAAMC,YAAsB,GAAG,EAA/B;;AAEA,MAAI;AAEF,QAAMC,YAAY,GAAG,IAAIC,QAAJ,CACnBnB,WADmB,EAEnBc,kBAFmB,EAGnBE,kBAHmB,EAInBI,SAJmB,CAITN,kBAJS,EAIW,IAJX,CAArB;AAKA,QAAMO,WAAW,GAAG,IAAIT,WAAJ,CAAgBZ,WAAhB,EAA6Be,UAA7B,EAAyCG,YAAzC,CAApB;AACA,QAAII,YAAY,GAAGP,UAAU,GAAGG,YAAY,GAAGF,kBAA/C;;AARE,+CAU2BK,WAV3B;AAAA;;AAAA;AAUF,0DAA0C;AAAA,YAA/BE,cAA+B;AACxC,YAAMC,WAAW,GAAG,IAAIC,WAAJ,CAAgB,OAAhB,CAApB;AACA,YAAMC,eAAe,GAAG,IAAIC,UAAJ,CAAe3B,WAAf,EAA4BsB,YAA5B,EAA0CC,cAA1C,CAAxB;AACAN,QAAAA,YAAY,CAACW,IAAb,CAAkBJ,WAAW,CAACK,MAAZ,CAAmBH,eAAnB,CAAlB;AACAJ,QAAAA,YAAY,IAAIC,cAAhB;AACD;AAfC;AAAA;AAAA;AAAA;AAAA;AAgBH,GAhBD,CAgBE,OAAOO,KAAP,EAAc;AACdC,IAAAA,OAAO,CAACD,KAAR,CAAc,gCAAd,EAAiDA,KAAD,CAAiBE,OAAjE;AACD;;AAED,SAAOf,YAAP;AACD","sourcesContent":["import {STRING_ATTRIBUTE_TYPE, OBJECT_ID_ATTRIBUTE_TYPE, FLOAT_64_TYPE} from './constants';\n\n/**\n * Get particular tile and creates attribute object inside.\n * @param {ArrayBuffer} arrayBuffer\n * @param {Object} options\n * @returns {Promise<object>}\n */\nexport async function parseI3STileAttribute(arrayBuffer, options) {\n const {attributeName, attributeType} = options;\n\n if (!attributeName) {\n return {};\n }\n return {\n [attributeName]: attributeType ? parseAttribute(attributeType, arrayBuffer) : null\n };\n}\n\n/**\n * Parse attributes based on attribute type.\n * @param {String} attributeType\n * @param {ArrayBuffer} arrayBuffer\n * @returns {any}\n */\nfunction parseAttribute(attributeType, arrayBuffer) {\n switch (attributeType) {\n case STRING_ATTRIBUTE_TYPE:\n return parseStringsAttribute(arrayBuffer);\n case OBJECT_ID_ATTRIBUTE_TYPE:\n return parseShortNumberAttribute(arrayBuffer);\n case FLOAT_64_TYPE:\n return parseFloatAttribute(arrayBuffer);\n default:\n return parseShortNumberAttribute(arrayBuffer);\n }\n}\n\n/**\n * Parse short number attribute.\n * Short Integer spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Uint32Array}\n */\nfunction parseShortNumberAttribute(arrayBuffer) {\n const countOffset = 4;\n return new Uint32Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse float attribute.\n * Double Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param {ArrayBuffer} arrayBuffer\n * @returns {Float64Array}\n */\nfunction parseFloatAttribute(arrayBuffer) {\n const countOffset = 8;\n return new Float64Array(arrayBuffer, countOffset);\n}\n\n/**\n * Parse string attribute.\n * String spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.7/attributeStorageInfo.cmn.md\n * @param arrayBuffer\n * @returns list of strings\n */\nfunction parseStringsAttribute(arrayBuffer: ArrayBuffer): string[] {\n const stringsCountOffset = 0;\n const dataOffset = 8;\n const bytesPerStringSize = 4;\n const stringsArray: string[] = [];\n\n try {\n // Use DataView to avoid multiple of 4 error on Uint32Array constructor\n const stringsCount = new DataView(\n arrayBuffer,\n stringsCountOffset,\n bytesPerStringSize\n ).getUint32(stringsCountOffset, true);\n const stringSizes = new Uint32Array(arrayBuffer, dataOffset, stringsCount);\n let stringOffset = dataOffset + stringsCount * bytesPerStringSize;\n\n for (const stringByteSize of stringSizes) {\n const textDecoder = new TextDecoder('utf-8');\n const stringAttribute = new Uint8Array(arrayBuffer, stringOffset, stringByteSize);\n stringsArray.push(textDecoder.decode(stringAttribute));\n stringOffset += stringByteSize;\n }\n } catch (error) {\n console.error('Parse string attribute error: ', (error as Error).message); // eslint-disable-line\n }\n\n return stringsArray;\n}\n"],"file":"parse-i3s-attribute.js"}