@loaders.gl/gltf 3.1.0-alpha.4 → 3.1.0-alpha.5

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 (119) hide show
  1. package/dist/bundle.d.ts +1 -0
  2. package/dist/dist.min.js +1 -1
  3. package/dist/dist.min.js.map +1 -1
  4. package/dist/es5/bundle.js +1 -1
  5. package/dist/es5/bundle.js.map +1 -1
  6. package/dist/es5/glb-loader.js +10 -33
  7. package/dist/es5/glb-loader.js.map +1 -1
  8. package/dist/es5/glb-writer.js +9 -8
  9. package/dist/es5/glb-writer.js.map +1 -1
  10. package/dist/es5/gltf-loader.js +14 -52
  11. package/dist/es5/gltf-loader.js.map +1 -1
  12. package/dist/es5/gltf-writer.js +10 -10
  13. package/dist/es5/gltf-writer.js.map +1 -1
  14. package/dist/es5/index.js +6 -6
  15. package/dist/es5/lib/api/gltf-extensions.js +18 -106
  16. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  17. package/dist/es5/lib/api/gltf-scenegraph.js +447 -541
  18. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  19. package/dist/es5/lib/api/normalize-gltf-v1.js +150 -280
  20. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
  21. package/dist/es5/lib/api/post-process-gltf.js +279 -354
  22. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  23. package/dist/es5/lib/encoders/encode-glb.js +19 -22
  24. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  25. package/dist/es5/lib/encoders/encode-gltf.js +3 -5
  26. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +39 -104
  28. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  29. package/dist/es5/lib/extensions/EXT_texture_webp.js +12 -26
  30. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  31. package/dist/es5/lib/extensions/KHR_binary_gltf.js +12 -26
  32. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  33. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +76 -261
  34. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  35. package/dist/es5/lib/extensions/KHR_texture_basisu.js +12 -26
  36. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  37. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +40 -104
  38. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  39. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +24 -69
  40. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  41. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +34 -90
  42. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  43. package/dist/es5/lib/gltf-utils/get-typed-array.js +6 -6
  44. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
  45. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +19 -21
  46. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  47. package/dist/es5/lib/gltf-utils/gltf-constants.js +7 -7
  48. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
  49. package/dist/es5/lib/gltf-utils/gltf-utils.js +16 -16
  50. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  51. package/dist/es5/lib/gltf-utils/resolve-url.js +2 -2
  52. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
  53. package/dist/es5/lib/parsers/parse-glb.js +34 -38
  54. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  55. package/dist/es5/lib/parsers/parse-gltf.js +107 -249
  56. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  57. package/dist/es5/lib/utils/version.js +1 -1
  58. package/dist/es5/lib/utils/version.js.map +1 -1
  59. package/dist/es5/meshopt/meshopt-decoder.js +46 -197
  60. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
  61. package/dist/es5/webp/webp.js +16 -84
  62. package/dist/es5/webp/webp.js.map +1 -1
  63. package/dist/esm/lib/api/gltf-scenegraph.js +1 -1
  64. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  65. package/dist/esm/lib/api/normalize-gltf-v1.js +3 -3
  66. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
  67. package/dist/esm/lib/api/post-process-gltf.js +12 -12
  68. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  69. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +1 -1
  70. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  71. package/dist/esm/lib/extensions/EXT_texture_webp.js +1 -1
  72. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  73. package/dist/esm/lib/gltf-utils/resolve-url.js +1 -1
  74. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
  75. package/dist/esm/lib/parsers/parse-glb.js +2 -6
  76. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  77. package/dist/esm/lib/parsers/parse-gltf.js +19 -2
  78. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  79. package/dist/esm/lib/utils/version.js +1 -1
  80. package/dist/esm/meshopt/meshopt-decoder.js +1 -1
  81. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
  82. package/dist/esm/webp/webp.js +1 -1
  83. package/dist/esm/webp/webp.js.map +1 -1
  84. package/dist/glb-loader.d.ts +12 -0
  85. package/dist/glb-writer.d.ts +21 -0
  86. package/dist/gltf-loader.d.ts +17 -0
  87. package/dist/gltf-writer.d.ts +24 -0
  88. package/dist/index.d.ts +10 -0
  89. package/dist/lib/api/gltf-extensions.d.ts +25 -0
  90. package/dist/lib/api/gltf-scenegraph.d.ts +182 -0
  91. package/dist/lib/api/normalize-gltf-v1.d.ts +1 -0
  92. package/dist/lib/api/post-process-gltf.d.ts +1 -0
  93. package/dist/lib/encoders/encode-glb.d.ts +1 -0
  94. package/dist/lib/encoders/encode-gltf.d.ts +1 -0
  95. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +9 -0
  96. package/dist/lib/extensions/EXT_texture_webp.d.ts +11 -0
  97. package/dist/lib/extensions/KHR_binary_gltf.d.ts +6 -0
  98. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +12 -0
  99. package/dist/lib/extensions/KHR_texture_basisu.d.ts +11 -0
  100. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +6 -0
  101. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +6 -0
  102. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +6 -0
  103. package/dist/lib/gltf-utils/get-typed-array.d.ts +2 -0
  104. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +5 -0
  105. package/dist/lib/gltf-utils/gltf-constants.d.ts +3 -0
  106. package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
  107. package/dist/lib/gltf-utils/resolve-url.d.ts +1 -0
  108. package/dist/lib/parsers/parse-glb.d.ts +7 -0
  109. package/dist/lib/parsers/parse-gltf.d.ts +13 -0
  110. package/dist/lib/types/glb-types.d.ts +16 -0
  111. package/dist/lib/types/gltf-json-schema.d.ts +719 -0
  112. package/dist/lib/types/gltf-postprocessed-schema.d.ts +684 -0
  113. package/dist/lib/types/gltf-types.d.ts +9 -0
  114. package/dist/lib/utils/assert.d.ts +1 -0
  115. package/dist/lib/utils/version.d.ts +1 -0
  116. package/dist/meshopt/meshopt-decoder.d.ts +5 -0
  117. package/dist/webp/webp.d.ts +6 -0
  118. package/package.json +11 -7
  119. package/src/lib/parsers/parse-gltf.ts +17 -1
@@ -1,18 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
3
  Object.defineProperty(exports, "__esModule", {
8
4
  value: true
9
5
  });
10
6
  exports.isGLTF = isGLTF;
11
7
  exports.parseGLTF = parseGLTF;
12
8
 
13
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
-
15
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
9
+ var _textures = require("@loaders.gl/textures");
16
10
 
17
11
  var _images = require("@loaders.gl/images");
18
12
 
@@ -32,81 +26,38 @@ var _postProcessGltf = require("../api/post-process-gltf");
32
26
 
33
27
  var _parseGlb = _interopRequireWildcard(require("./parse-glb"));
34
28
 
35
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
36
-
37
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
38
30
 
39
- 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; } } }; }
40
-
41
- 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); }
42
-
43
- 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; }
31
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
44
32
 
45
33
  function isGLTF(arrayBuffer, options) {
46
- var byteOffset = 0;
34
+ const byteOffset = 0;
47
35
  return (0, _parseGlb.isGLB)(arrayBuffer, byteOffset, options);
48
36
  }
49
37
 
50
- function parseGLTF(_x, _x2) {
51
- return _parseGLTF.apply(this, arguments);
52
- }
38
+ async function parseGLTF(gltf, arrayBufferOrString, byteOffset = 0, options, context) {
39
+ var _options$gltf, _options$gltf2, _options$gltf3, _options$gltf4;
53
40
 
54
- function _parseGLTF() {
55
- _parseGLTF = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(gltf, arrayBufferOrString) {
56
- var _options$gltf, _options$gltf2, _options$gltf3, _options$gltf4;
57
-
58
- var byteOffset,
59
- options,
60
- context,
61
- promises,
62
- _promise,
63
- promise,
64
- _args = arguments;
65
-
66
- return _regenerator.default.wrap(function _callee$(_context) {
67
- while (1) {
68
- switch (_context.prev = _context.next) {
69
- case 0:
70
- byteOffset = _args.length > 2 && _args[2] !== undefined ? _args[2] : 0;
71
- options = _args.length > 3 ? _args[3] : undefined;
72
- context = _args.length > 4 ? _args[4] : undefined;
73
- parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);
74
- (0, _normalizeGltfV.normalizeGLTFV1)(gltf, {
75
- normalize: options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.normalize
76
- });
77
- (0, _gltfExtensions.preprocessExtensions)(gltf, options, context);
78
- promises = [];
79
-
80
- if (!(options !== null && options !== void 0 && (_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadBuffers && gltf.json.buffers)) {
81
- _context.next = 10;
82
- break;
83
- }
84
-
85
- _context.next = 10;
86
- return loadBuffers(gltf, options, context);
87
-
88
- case 10:
89
- if (options !== null && options !== void 0 && (_options$gltf3 = options.gltf) !== null && _options$gltf3 !== void 0 && _options$gltf3.loadImages) {
90
- _promise = loadImages(gltf, options, context);
91
- promises.push(_promise);
92
- }
93
-
94
- promise = (0, _gltfExtensions.decodeExtensions)(gltf, options, context);
95
- promises.push(promise);
96
- _context.next = 15;
97
- return Promise.all(promises);
98
-
99
- case 15:
100
- return _context.abrupt("return", options !== null && options !== void 0 && (_options$gltf4 = options.gltf) !== null && _options$gltf4 !== void 0 && _options$gltf4.postProcess ? (0, _postProcessGltf.postProcessGLTF)(gltf, options) : gltf);
101
-
102
- case 16:
103
- case "end":
104
- return _context.stop();
105
- }
106
- }
107
- }, _callee);
108
- }));
109
- return _parseGLTF.apply(this, arguments);
41
+ parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);
42
+ (0, _normalizeGltfV.normalizeGLTFV1)(gltf, {
43
+ normalize: options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.normalize
44
+ });
45
+ (0, _gltfExtensions.preprocessExtensions)(gltf, options, context);
46
+ const promises = [];
47
+
48
+ if (options !== null && options !== void 0 && (_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadBuffers && gltf.json.buffers) {
49
+ await loadBuffers(gltf, options, context);
50
+ }
51
+
52
+ if (options !== null && options !== void 0 && (_options$gltf3 = options.gltf) !== null && _options$gltf3 !== void 0 && _options$gltf3.loadImages) {
53
+ const promise = loadImages(gltf, options, context);
54
+ promises.push(promise);
55
+ }
56
+
57
+ const promise = (0, _gltfExtensions.decodeExtensions)(gltf, options, context);
58
+ promises.push(promise);
59
+ await Promise.all(promises);
60
+ return options !== null && options !== void 0 && (_options$gltf4 = options.gltf) !== null && _options$gltf4 !== void 0 && _options$gltf4.postProcess ? (0, _postProcessGltf.postProcessGLTF)(gltf, options) : gltf;
110
61
  }
111
62
 
112
63
  function parseGLTFContainerSync(gltf, data, byteOffset, options) {
@@ -115,14 +66,14 @@ function parseGLTFContainerSync(gltf, data, byteOffset, options) {
115
66
  }
116
67
 
117
68
  if (data instanceof ArrayBuffer && !(0, _parseGlb.isGLB)(data, byteOffset, options)) {
118
- var textDecoder = new TextDecoder();
69
+ const textDecoder = new TextDecoder();
119
70
  data = textDecoder.decode(data);
120
71
  }
121
72
 
122
73
  if (typeof data === 'string') {
123
74
  gltf.json = (0, _loaderUtils.parseJSON)(data);
124
75
  } else if (data instanceof ArrayBuffer) {
125
- var glb = {};
76
+ const glb = {};
126
77
  byteOffset = (0, _parseGlb.default)(glb, data, byteOffset, options.glb);
127
78
  (0, _assert.assert)(glb.type === 'glTF', "Invalid GLB magic string ".concat(glb.type));
128
79
  gltf._glb = glb;
@@ -131,11 +82,13 @@ function parseGLTFContainerSync(gltf, data, byteOffset, options) {
131
82
  (0, _assert.assert)(false, 'GLTF: must be ArrayBuffer or string');
132
83
  }
133
84
 
134
- var buffers = gltf.json.buffers || [];
85
+ const buffers = gltf.json.buffers || [];
135
86
  gltf.buffers = new Array(buffers.length).fill(null);
136
87
 
137
88
  if (gltf._glb && gltf._glb.header.hasBinChunk) {
138
- var binChunks = gltf._glb.binChunks;
89
+ const {
90
+ binChunks
91
+ } = gltf._glb;
139
92
  gltf.buffers[0] = {
140
93
  arrayBuffer: binChunks[0].arrayBuffer,
141
94
  byteOffset: binChunks[0].byteOffset,
@@ -143,193 +96,98 @@ function parseGLTFContainerSync(gltf, data, byteOffset, options) {
143
96
  };
144
97
  }
145
98
 
146
- var images = gltf.json.images || [];
99
+ const images = gltf.json.images || [];
147
100
  gltf.images = new Array(images.length).fill({});
148
101
  }
149
102
 
150
- function loadBuffers(_x3, _x4, _x5) {
151
- return _loadBuffers.apply(this, arguments);
103
+ async function loadBuffers(gltf, options, context) {
104
+ const buffers = gltf.json.buffers || [];
105
+
106
+ for (let i = 0; i < buffers.length; ++i) {
107
+ const buffer = buffers[i];
108
+
109
+ if (buffer.uri) {
110
+ var _context$fetch, _response$arrayBuffer;
111
+
112
+ const {
113
+ fetch
114
+ } = context;
115
+ (0, _assert.assert)(fetch);
116
+ const uri = (0, _resolveUrl.resolveUrl)(buffer.uri, options);
117
+ const response = await (context === null || context === void 0 ? void 0 : (_context$fetch = context.fetch) === null || _context$fetch === void 0 ? void 0 : _context$fetch.call(context, uri));
118
+ const arrayBuffer = await (response === null || response === void 0 ? void 0 : (_response$arrayBuffer = response.arrayBuffer) === null || _response$arrayBuffer === void 0 ? void 0 : _response$arrayBuffer.call(response));
119
+ gltf.buffers[i] = {
120
+ arrayBuffer,
121
+ byteOffset: 0,
122
+ byteLength: arrayBuffer.byteLength
123
+ };
124
+ delete buffer.uri;
125
+ }
126
+ }
152
127
  }
153
128
 
154
- function _loadBuffers() {
155
- _loadBuffers = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(gltf, options, context) {
156
- var buffers, i, buffer, _context$fetch, _response$arrayBuffer, fetch, uri, response, arrayBuffer;
157
-
158
- return _regenerator.default.wrap(function _callee2$(_context2) {
159
- while (1) {
160
- switch (_context2.prev = _context2.next) {
161
- case 0:
162
- buffers = gltf.json.buffers || [];
163
- i = 0;
164
-
165
- case 2:
166
- if (!(i < buffers.length)) {
167
- _context2.next = 19;
168
- break;
169
- }
170
-
171
- buffer = buffers[i];
172
-
173
- if (!buffer.uri) {
174
- _context2.next = 16;
175
- break;
176
- }
177
-
178
- fetch = context.fetch;
179
- (0, _assert.assert)(fetch);
180
- uri = (0, _resolveUrl.resolveUrl)(buffer.uri, options);
181
- _context2.next = 10;
182
- return context === null || context === void 0 ? void 0 : (_context$fetch = context.fetch) === null || _context$fetch === void 0 ? void 0 : _context$fetch.call(context, uri);
183
-
184
- case 10:
185
- response = _context2.sent;
186
- _context2.next = 13;
187
- return response === null || response === void 0 ? void 0 : (_response$arrayBuffer = response.arrayBuffer) === null || _response$arrayBuffer === void 0 ? void 0 : _response$arrayBuffer.call(response);
188
-
189
- case 13:
190
- arrayBuffer = _context2.sent;
191
- gltf.buffers[i] = {
192
- arrayBuffer: arrayBuffer,
193
- byteOffset: 0,
194
- byteLength: arrayBuffer.byteLength
195
- };
196
- delete buffer.uri;
197
-
198
- case 16:
199
- ++i;
200
- _context2.next = 2;
201
- break;
202
-
203
- case 19:
204
- case "end":
205
- return _context2.stop();
206
- }
207
- }
208
- }, _callee2);
209
- }));
210
- return _loadBuffers.apply(this, arguments);
211
- }
129
+ async function loadImages(gltf, options, context) {
130
+ const imageIndices = getReferencesImageIndices(gltf);
131
+ const images = gltf.json.images || [];
132
+ const promises = [];
212
133
 
213
- function loadImages(_x6, _x7, _x8) {
214
- return _loadImages.apply(this, arguments);
215
- }
134
+ for (const imageIndex of imageIndices) {
135
+ promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));
136
+ }
216
137
 
217
- function _loadImages() {
218
- _loadImages = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(gltf, options, context) {
219
- var imageIndices, images, promises, _iterator2, _step2, imageIndex;
220
-
221
- return _regenerator.default.wrap(function _callee3$(_context3) {
222
- while (1) {
223
- switch (_context3.prev = _context3.next) {
224
- case 0:
225
- imageIndices = getReferencesImageIndices(gltf);
226
- images = gltf.json.images || [];
227
- promises = [];
228
- _iterator2 = _createForOfIteratorHelper(imageIndices);
229
-
230
- try {
231
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
232
- imageIndex = _step2.value;
233
- promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));
234
- }
235
- } catch (err) {
236
- _iterator2.e(err);
237
- } finally {
238
- _iterator2.f();
239
- }
240
-
241
- _context3.next = 7;
242
- return Promise.all(promises);
243
-
244
- case 7:
245
- return _context3.abrupt("return", _context3.sent);
246
-
247
- case 8:
248
- case "end":
249
- return _context3.stop();
250
- }
251
- }
252
- }, _callee3);
253
- }));
254
- return _loadImages.apply(this, arguments);
138
+ return await Promise.all(promises);
255
139
  }
256
140
 
257
141
  function getReferencesImageIndices(gltf) {
258
- var imageIndices = new Set();
259
- var textures = gltf.json.textures || [];
260
-
261
- var _iterator = _createForOfIteratorHelper(textures),
262
- _step;
142
+ const imageIndices = new Set();
143
+ const textures = gltf.json.textures || [];
263
144
 
264
- try {
265
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
266
- var texture = _step.value;
267
-
268
- if (texture.source !== undefined) {
269
- imageIndices.add(texture.source);
270
- }
145
+ for (const texture of textures) {
146
+ if (texture.source !== undefined) {
147
+ imageIndices.add(texture.source);
271
148
  }
272
- } catch (err) {
273
- _iterator.e(err);
274
- } finally {
275
- _iterator.f();
276
149
  }
277
150
 
278
151
  return Array.from(imageIndices).sort();
279
152
  }
280
153
 
281
- function loadImage(_x9, _x10, _x11, _x12, _x13) {
282
- return _loadImage.apply(this, arguments);
283
- }
154
+ async function loadImage(gltf, image, index, options, context) {
155
+ const {
156
+ fetch,
157
+ parse
158
+ } = context;
159
+ let arrayBuffer;
160
+
161
+ if (image.uri) {
162
+ const uri = (0, _resolveUrl.resolveUrl)(image.uri, options);
163
+ const response = await fetch(uri);
164
+ arrayBuffer = await response.arrayBuffer();
165
+ }
166
+
167
+ if (Number.isFinite(image.bufferView)) {
168
+ const array = (0, _getTypedArray.getTypedArrayForBufferView)(gltf.json, gltf.buffers, image.bufferView);
169
+ arrayBuffer = (0, _loaderUtils.sliceArrayBuffer)(array.buffer, array.byteOffset, array.byteLength);
170
+ }
171
+
172
+ (0, _assert.assert)(arrayBuffer, 'glTF image has no data');
173
+ let parsedImage = await parse(arrayBuffer, [_images.ImageLoader, _textures.BasisLoader], {
174
+ mimeType: image.mimeType,
175
+ basis: {
176
+ format: (0, _textures.selectSupportedBasisFormat)()
177
+ }
178
+ }, context);
179
+
180
+ if (parsedImage && parsedImage[0]) {
181
+ parsedImage = {
182
+ compressed: true,
183
+ mipmaps: false,
184
+ width: parsedImage[0].width,
185
+ height: parsedImage[0].height,
186
+ data: parsedImage
187
+ };
188
+ }
284
189
 
285
- function _loadImage() {
286
- _loadImage = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(gltf, image, index, options, context) {
287
- var fetch, parse, arrayBuffer, uri, response, array, parsedImage;
288
- return _regenerator.default.wrap(function _callee4$(_context4) {
289
- while (1) {
290
- switch (_context4.prev = _context4.next) {
291
- case 0:
292
- fetch = context.fetch, parse = context.parse;
293
-
294
- if (!image.uri) {
295
- _context4.next = 9;
296
- break;
297
- }
298
-
299
- uri = (0, _resolveUrl.resolveUrl)(image.uri, options);
300
- _context4.next = 5;
301
- return fetch(uri);
302
-
303
- case 5:
304
- response = _context4.sent;
305
- _context4.next = 8;
306
- return response.arrayBuffer();
307
-
308
- case 8:
309
- arrayBuffer = _context4.sent;
310
-
311
- case 9:
312
- if (Number.isFinite(image.bufferView)) {
313
- array = (0, _getTypedArray.getTypedArrayForBufferView)(gltf.json, gltf.buffers, image.bufferView);
314
- arrayBuffer = (0, _loaderUtils.sliceArrayBuffer)(array.buffer, array.byteOffset, array.byteLength);
315
- }
316
-
317
- (0, _assert.assert)(arrayBuffer, 'glTF image has no data');
318
- _context4.next = 13;
319
- return parse(arrayBuffer, _images.ImageLoader, {}, context);
320
-
321
- case 13:
322
- parsedImage = _context4.sent;
323
- gltf.images = gltf.images || [];
324
- gltf.images[index] = parsedImage;
325
-
326
- case 16:
327
- case "end":
328
- return _context4.stop();
329
- }
330
- }
331
- }, _callee4);
332
- }));
333
- return _loadImage.apply(this, arguments);
190
+ gltf.images = gltf.images || [];
191
+ gltf.images[index] = parsedImage;
334
192
  }
335
193
  //# sourceMappingURL=parse-gltf.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-gltf.ts"],"names":["isGLTF","arrayBuffer","options","byteOffset","parseGLTF","gltf","arrayBufferOrString","context","parseGLTFContainerSync","normalize","promises","loadBuffers","json","buffers","loadImages","promise","push","Promise","all","postProcess","data","uri","baseUri","ArrayBuffer","textDecoder","TextDecoder","decode","glb","type","_glb","Array","length","fill","header","hasBinChunk","binChunks","byteLength","images","i","buffer","fetch","response","imageIndices","getReferencesImageIndices","imageIndex","loadImage","Set","textures","texture","source","undefined","add","from","sort","image","index","parse","Number","isFinite","bufferView","array","ImageLoader","parsedImage"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase, max-statements, no-restricted-globals */\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {GLB} from '../types/glb-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\n\nimport {ImageLoader} from '@loaders.gl/images';\nimport {parseJSON, sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {resolveUrl} from '../gltf-utils/resolve-url';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\nimport {preprocessExtensions, decodeExtensions} from '../api/gltf-extensions';\nimport {normalizeGLTFV1} from '../api/normalize-gltf-v1';\nimport {postProcessGLTF} from '../api/post-process-gltf';\nimport parseGLBSync, {isGLB} from './parse-glb';\n\nexport type GLTFParseOptions = {\n normalize?: boolean;\n loadImages?: boolean;\n loadBuffers?: boolean;\n decompressMeshes?: boolean;\n postProcess?: boolean;\n excludeExtensions?: string[];\n};\n\n// export type GLTFOptions = {\n// gltf?: GLTFParseOptions;\n// };\n\nexport function isGLTF(arrayBuffer, options?): boolean {\n const byteOffset = 0;\n return isGLB(arrayBuffer, byteOffset, options);\n}\n\nexport async function parseGLTF(\n gltf: GLTFWithBuffers,\n arrayBufferOrString,\n byteOffset = 0,\n options: GLTFLoaderOptions,\n context: LoaderContext\n) {\n parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n\n normalizeGLTFV1(gltf, {normalize: options?.gltf?.normalize});\n\n preprocessExtensions(gltf, options, context);\n\n const promises: Promise<any>[] = [];\n\n // Load linked buffers asynchronously and decodes base64 buffers in parallel\n if (options?.gltf?.loadBuffers && gltf.json.buffers) {\n await loadBuffers(gltf, options, context);\n }\n\n if (options?.gltf?.loadImages) {\n const promise = loadImages(gltf, options, context);\n promises.push(promise);\n }\n\n const promise = decodeExtensions(gltf, options, context);\n promises.push(promise);\n\n // Parallelize image loading and buffer loading/extension decoding\n await Promise.all(promises);\n\n // Post processing resolves indices to objects, buffers\n return options?.gltf?.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\n\n// `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n // Initialize gltf container\n if (options.uri) {\n gltf.baseUri = options.uri;\n }\n\n // If data is binary and starting with magic bytes, assume binary JSON text, convert to string\n if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(data);\n }\n\n if (typeof data === 'string') {\n // If string, try to parse as JSON\n gltf.json = parseJSON(data);\n } else if (data instanceof ArrayBuffer) {\n // If still ArrayBuffer, parse as GLB container\n const glb: GLB = {} as GLB;\n byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);\n\n assert(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);\n\n gltf._glb = glb;\n gltf.json = glb.json;\n } else {\n assert(false, 'GLTF: must be ArrayBuffer or string');\n }\n\n // Populate buffers\n // Create an external buffers array to hold binary data\n const buffers = gltf.json.buffers || [];\n gltf.buffers = new Array(buffers.length).fill(null);\n\n // Populates JSON and some bin chunk info\n if (gltf._glb && gltf._glb.header.hasBinChunk) {\n const {binChunks} = gltf._glb;\n gltf.buffers[0] = {\n arrayBuffer: binChunks[0].arrayBuffer,\n byteOffset: binChunks[0].byteOffset,\n byteLength: binChunks[0].byteLength\n };\n\n // TODO - this modifies JSON and is a post processing thing\n // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;\n // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;\n }\n\n // Populate images\n const images = gltf.json.images || [];\n gltf.images = new Array(images.length).fill({});\n}\n\n/** Asynchronously fetch and parse buffers, store in buffers array outside of json\n * TODO - traverse gltf and determine which buffers are actually needed\n */\nasync function loadBuffers(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n // TODO\n const buffers = gltf.json.buffers || [];\n for (let i = 0; i < buffers.length; ++i) {\n const buffer = buffers[i];\n if (buffer.uri) {\n const {fetch} = context;\n assert(fetch);\n\n const uri = resolveUrl(buffer.uri, options);\n const response = await context?.fetch?.(uri);\n const arrayBuffer = await response?.arrayBuffer?.();\n\n gltf.buffers[i] = {\n arrayBuffer,\n byteOffset: 0,\n byteLength: arrayBuffer.byteLength\n };\n\n delete buffer.uri;\n }\n }\n}\n\n/**\n * Loads all images\n * TODO - traverse gltf and determine which images are actually needed\n * @param gltf\n * @param options\n * @param context\n * @returns\n */\nasync function loadImages(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n const imageIndices = getReferencesImageIndices(gltf);\n\n const images = gltf.json.images || [];\n\n const promises: Promise<any>[] = [];\n for (const imageIndex of imageIndices) {\n promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));\n }\n\n return await Promise.all(promises);\n}\n\n/** Make sure we only load images that are actually referenced by textures */\nfunction getReferencesImageIndices(gltf: GLTFWithBuffers): number[] {\n const imageIndices = new Set<number>();\n\n const textures = gltf.json.textures || [];\n for (const texture of textures) {\n if (texture.source !== undefined) {\n imageIndices.add(texture.source);\n }\n }\n\n return Array.from(imageIndices).sort();\n}\n\n/** Asynchronously fetches and parses one image, store in images array outside of json */\nasync function loadImage(\n gltf: GLTFWithBuffers,\n image,\n index: number,\n options,\n context: LoaderContext\n) {\n const {fetch, parse} = context;\n\n let arrayBuffer;\n\n if (image.uri) {\n const uri = resolveUrl(image.uri, options);\n const response = await fetch(uri);\n arrayBuffer = await response.arrayBuffer();\n }\n\n if (Number.isFinite(image.bufferView)) {\n const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n }\n\n assert(arrayBuffer, 'glTF image has no data');\n\n // Call `parse`\n const parsedImage = await parse(arrayBuffer, ImageLoader, {}, context);\n // TODO making sure ImageLoader is overridable by using array of loaders\n // const parsedImage = await parse(arrayBuffer, [ImageLoader]);\n\n // Store the loaded image\n gltf.images = gltf.images || [];\n gltf.images[index] = parsedImage;\n}\n"],"file":"parse-gltf.js"}
1
+ {"version":3,"sources":["../../../../src/lib/parsers/parse-gltf.ts"],"names":["isGLTF","arrayBuffer","options","byteOffset","parseGLTF","gltf","arrayBufferOrString","context","parseGLTFContainerSync","normalize","promises","loadBuffers","json","buffers","loadImages","promise","push","Promise","all","postProcess","data","uri","baseUri","ArrayBuffer","textDecoder","TextDecoder","decode","glb","type","_glb","Array","length","fill","header","hasBinChunk","binChunks","byteLength","images","i","buffer","fetch","response","imageIndices","getReferencesImageIndices","imageIndex","loadImage","Set","textures","texture","source","undefined","add","from","sort","image","index","parse","Number","isFinite","bufferView","array","parsedImage","ImageLoader","BasisLoader","mimeType","basis","format","compressed","mipmaps","width","height"],"mappings":"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","sourcesContent":["/* eslint-disable camelcase, max-statements, no-restricted-globals */\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {BasisLoader, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {GLB} from '../types/glb-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\n\nimport {ImageLoader} from '@loaders.gl/images';\nimport {parseJSON, sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {resolveUrl} from '../gltf-utils/resolve-url';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\nimport {preprocessExtensions, decodeExtensions} from '../api/gltf-extensions';\nimport {normalizeGLTFV1} from '../api/normalize-gltf-v1';\nimport {postProcessGLTF} from '../api/post-process-gltf';\nimport parseGLBSync, {isGLB} from './parse-glb';\n\nexport type GLTFParseOptions = {\n normalize?: boolean;\n loadImages?: boolean;\n loadBuffers?: boolean;\n decompressMeshes?: boolean;\n postProcess?: boolean;\n excludeExtensions?: string[];\n};\n\n// export type GLTFOptions = {\n// gltf?: GLTFParseOptions;\n// };\n\nexport function isGLTF(arrayBuffer, options?): boolean {\n const byteOffset = 0;\n return isGLB(arrayBuffer, byteOffset, options);\n}\n\nexport async function parseGLTF(\n gltf: GLTFWithBuffers,\n arrayBufferOrString,\n byteOffset = 0,\n options: GLTFLoaderOptions,\n context: LoaderContext\n) {\n parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n\n normalizeGLTFV1(gltf, {normalize: options?.gltf?.normalize});\n\n preprocessExtensions(gltf, options, context);\n\n const promises: Promise<any>[] = [];\n\n // Load linked buffers asynchronously and decodes base64 buffers in parallel\n if (options?.gltf?.loadBuffers && gltf.json.buffers) {\n await loadBuffers(gltf, options, context);\n }\n\n if (options?.gltf?.loadImages) {\n const promise = loadImages(gltf, options, context);\n promises.push(promise);\n }\n\n const promise = decodeExtensions(gltf, options, context);\n promises.push(promise);\n\n // Parallelize image loading and buffer loading/extension decoding\n await Promise.all(promises);\n\n // Post processing resolves indices to objects, buffers\n return options?.gltf?.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\n\n// `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n // Initialize gltf container\n if (options.uri) {\n gltf.baseUri = options.uri;\n }\n\n // If data is binary and starting with magic bytes, assume binary JSON text, convert to string\n if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(data);\n }\n\n if (typeof data === 'string') {\n // If string, try to parse as JSON\n gltf.json = parseJSON(data);\n } else if (data instanceof ArrayBuffer) {\n // If still ArrayBuffer, parse as GLB container\n const glb: GLB = {} as GLB;\n byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);\n\n assert(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);\n\n gltf._glb = glb;\n gltf.json = glb.json;\n } else {\n assert(false, 'GLTF: must be ArrayBuffer or string');\n }\n\n // Populate buffers\n // Create an external buffers array to hold binary data\n const buffers = gltf.json.buffers || [];\n gltf.buffers = new Array(buffers.length).fill(null);\n\n // Populates JSON and some bin chunk info\n if (gltf._glb && gltf._glb.header.hasBinChunk) {\n const {binChunks} = gltf._glb;\n gltf.buffers[0] = {\n arrayBuffer: binChunks[0].arrayBuffer,\n byteOffset: binChunks[0].byteOffset,\n byteLength: binChunks[0].byteLength\n };\n\n // TODO - this modifies JSON and is a post processing thing\n // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;\n // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;\n }\n\n // Populate images\n const images = gltf.json.images || [];\n gltf.images = new Array(images.length).fill({});\n}\n\n/** Asynchronously fetch and parse buffers, store in buffers array outside of json\n * TODO - traverse gltf and determine which buffers are actually needed\n */\nasync function loadBuffers(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n // TODO\n const buffers = gltf.json.buffers || [];\n for (let i = 0; i < buffers.length; ++i) {\n const buffer = buffers[i];\n if (buffer.uri) {\n const {fetch} = context;\n assert(fetch);\n\n const uri = resolveUrl(buffer.uri, options);\n const response = await context?.fetch?.(uri);\n const arrayBuffer = await response?.arrayBuffer?.();\n\n gltf.buffers[i] = {\n arrayBuffer,\n byteOffset: 0,\n byteLength: arrayBuffer.byteLength\n };\n\n delete buffer.uri;\n }\n }\n}\n\n/**\n * Loads all images\n * TODO - traverse gltf and determine which images are actually needed\n * @param gltf\n * @param options\n * @param context\n * @returns\n */\nasync function loadImages(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n const imageIndices = getReferencesImageIndices(gltf);\n\n const images = gltf.json.images || [];\n\n const promises: Promise<any>[] = [];\n for (const imageIndex of imageIndices) {\n promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));\n }\n\n return await Promise.all(promises);\n}\n\n/** Make sure we only load images that are actually referenced by textures */\nfunction getReferencesImageIndices(gltf: GLTFWithBuffers): number[] {\n const imageIndices = new Set<number>();\n\n const textures = gltf.json.textures || [];\n for (const texture of textures) {\n if (texture.source !== undefined) {\n imageIndices.add(texture.source);\n }\n }\n\n return Array.from(imageIndices).sort();\n}\n\n/** Asynchronously fetches and parses one image, store in images array outside of json */\nasync function loadImage(\n gltf: GLTFWithBuffers,\n image,\n index: number,\n options,\n context: LoaderContext\n) {\n const {fetch, parse} = context;\n\n let arrayBuffer;\n\n if (image.uri) {\n const uri = resolveUrl(image.uri, options);\n const response = await fetch(uri);\n arrayBuffer = await response.arrayBuffer();\n }\n\n if (Number.isFinite(image.bufferView)) {\n const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n }\n\n assert(arrayBuffer, 'glTF image has no data');\n\n // Call `parse`\n let parsedImage = await parse(\n arrayBuffer,\n [ImageLoader, BasisLoader],\n {mimeType: image.mimeType, basis: {format: selectSupportedBasisFormat()}},\n context\n );\n\n if (parsedImage && parsedImage[0]) {\n parsedImage = {\n compressed: true,\n mipmaps: false,\n width: parsedImage[0].width,\n height: parsedImage[0].height,\n data: parsedImage\n };\n }\n // TODO making sure ImageLoader is overridable by using array of loaders\n // const parsedImage = await parse(arrayBuffer, [ImageLoader]);\n\n // Store the loaded image\n gltf.images = gltf.images || [];\n gltf.images[index] = parsedImage;\n}\n"],"file":"parse-gltf.js"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.1.0-alpha.4" !== 'undefined' ? "3.1.0-alpha.4" : 'latest';
7
+ const VERSION = typeof "3.1.0-alpha.5" !== 'undefined' ? "3.1.0-alpha.5" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/version.js"],"names":["VERSION"],"mappings":";;;;;;AAGO,IAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}
1
+ {"version":3,"sources":["../../../../src/lib/utils/version.js"],"names":["VERSION"],"mappings":";;;;;;AAGO,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"file":"version.js"}