@loaders.gl/wkt 4.3.2 → 4.4.0-alpha.2

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 (111) hide show
  1. package/dist/dist.dev.js +1281 -1266
  2. package/dist/dist.min.js +2 -2
  3. package/dist/hex-wkb-loader.d.ts +6 -5
  4. package/dist/hex-wkb-loader.d.ts.map +1 -1
  5. package/dist/hex-wkb-loader.js +4 -4
  6. package/dist/index.cjs +51 -1622
  7. package/dist/index.cjs.map +4 -4
  8. package/dist/index.d.ts +0 -5
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +0 -5
  11. package/dist/lib/version.d.ts.map +1 -0
  12. package/dist/lib/{utils/version.js → version.js} +1 -1
  13. package/dist/twkb-loader.d.ts +3 -3
  14. package/dist/twkb-loader.d.ts.map +1 -1
  15. package/dist/twkb-loader.js +4 -4
  16. package/dist/twkb-writer.d.ts +2 -1
  17. package/dist/twkb-writer.d.ts.map +1 -1
  18. package/dist/twkb-writer.js +5 -4
  19. package/dist/wkb-loader.d.ts +13 -11
  20. package/dist/wkb-loader.d.ts.map +1 -1
  21. package/dist/wkb-loader.js +14 -6
  22. package/dist/wkb-writer.d.ts +3 -2
  23. package/dist/wkb-writer.d.ts.map +1 -1
  24. package/dist/wkb-writer.js +5 -4
  25. package/dist/wkt-crs-loader.d.ts +1 -1
  26. package/dist/wkt-crs-loader.d.ts.map +1 -1
  27. package/dist/wkt-crs-loader.js +2 -2
  28. package/dist/wkt-crs-writer.d.ts +1 -1
  29. package/dist/wkt-crs-writer.d.ts.map +1 -1
  30. package/dist/wkt-crs-writer.js +2 -2
  31. package/dist/wkt-loader.d.ts +2 -2
  32. package/dist/wkt-loader.d.ts.map +1 -1
  33. package/dist/wkt-loader.js +4 -4
  34. package/dist/wkt-worker.js +26 -13
  35. package/dist/wkt-writer.d.ts +6 -5
  36. package/dist/wkt-writer.d.ts.map +1 -1
  37. package/dist/wkt-writer.js +10 -7
  38. package/package.json +6 -6
  39. package/src/hex-wkb-loader.ts +8 -8
  40. package/src/index.ts +0 -10
  41. package/src/twkb-loader.ts +5 -5
  42. package/src/twkb-writer.ts +6 -5
  43. package/src/wkb-loader.ts +24 -12
  44. package/src/wkb-writer.ts +8 -7
  45. package/src/wkt-crs-loader.ts +3 -3
  46. package/src/wkt-crs-writer.ts +3 -5
  47. package/src/wkt-loader.ts +6 -5
  48. package/src/wkt-writer.ts +11 -8
  49. package/dist/lib/encode-twkb.d.ts +0 -6
  50. package/dist/lib/encode-twkb.d.ts.map +0 -1
  51. package/dist/lib/encode-twkb.js +0 -195
  52. package/dist/lib/encode-wkb.d.ts +0 -33
  53. package/dist/lib/encode-wkb.d.ts.map +0 -1
  54. package/dist/lib/encode-wkb.js +0 -286
  55. package/dist/lib/encode-wkt-crs.d.ts +0 -10
  56. package/dist/lib/encode-wkt-crs.d.ts.map +0 -1
  57. package/dist/lib/encode-wkt-crs.js +0 -35
  58. package/dist/lib/encode-wkt.d.ts +0 -8
  59. package/dist/lib/encode-wkt.d.ts.map +0 -1
  60. package/dist/lib/encode-wkt.js +0 -47
  61. package/dist/lib/parse-hex-wkb.d.ts +0 -1
  62. package/dist/lib/parse-hex-wkb.d.ts.map +0 -1
  63. package/dist/lib/parse-hex-wkb.js +0 -1
  64. package/dist/lib/parse-twkb.d.ts +0 -9
  65. package/dist/lib/parse-twkb.d.ts.map +0 -1
  66. package/dist/lib/parse-twkb.js +0 -253
  67. package/dist/lib/parse-wkb-header.d.ts +0 -39
  68. package/dist/lib/parse-wkb-header.d.ts.map +0 -1
  69. package/dist/lib/parse-wkb-header.js +0 -134
  70. package/dist/lib/parse-wkb.d.ts +0 -5
  71. package/dist/lib/parse-wkb.d.ts.map +0 -1
  72. package/dist/lib/parse-wkb.js +0 -241
  73. package/dist/lib/parse-wkt-crs.d.ts +0 -15
  74. package/dist/lib/parse-wkt-crs.d.ts.map +0 -1
  75. package/dist/lib/parse-wkt-crs.js +0 -120
  76. package/dist/lib/parse-wkt.d.ts +0 -30
  77. package/dist/lib/parse-wkt.d.ts.map +0 -1
  78. package/dist/lib/parse-wkt.js +0 -288
  79. package/dist/lib/utils/base64-encoder.d.ts +0 -5
  80. package/dist/lib/utils/base64-encoder.d.ts.map +0 -1
  81. package/dist/lib/utils/base64-encoder.js +0 -153
  82. package/dist/lib/utils/binary-reader.d.ts +0 -18
  83. package/dist/lib/utils/binary-reader.d.ts.map +0 -1
  84. package/dist/lib/utils/binary-reader.js +0 -69
  85. package/dist/lib/utils/binary-writer.d.ts +0 -28
  86. package/dist/lib/utils/binary-writer.d.ts.map +0 -1
  87. package/dist/lib/utils/binary-writer.js +0 -121
  88. package/dist/lib/utils/hex-encoder.d.ts +0 -15
  89. package/dist/lib/utils/hex-encoder.d.ts.map +0 -1
  90. package/dist/lib/utils/hex-encoder.js +0 -54
  91. package/dist/lib/utils/hex-transcoder.d.ts +0 -15
  92. package/dist/lib/utils/hex-transcoder.d.ts.map +0 -1
  93. package/dist/lib/utils/hex-transcoder.js +0 -50
  94. package/dist/lib/utils/version.d.ts.map +0 -1
  95. package/src/lib/encode-twkb.ts +0 -308
  96. package/src/lib/encode-wkb.ts +0 -390
  97. package/src/lib/encode-wkt-crs.ts +0 -41
  98. package/src/lib/encode-wkt.ts +0 -56
  99. package/src/lib/parse-hex-wkb.ts +0 -0
  100. package/src/lib/parse-twkb.ts +0 -365
  101. package/src/lib/parse-wkb-header.ts +0 -174
  102. package/src/lib/parse-wkb.ts +0 -343
  103. package/src/lib/parse-wkt-crs.ts +0 -149
  104. package/src/lib/parse-wkt.ts +0 -327
  105. package/src/lib/utils/base64-encoder.ts +0 -157
  106. package/src/lib/utils/binary-reader.ts +0 -76
  107. package/src/lib/utils/binary-writer.ts +0 -127
  108. package/src/lib/utils/hex-encoder.ts +0 -60
  109. package/src/lib/utils/hex-transcoder.ts +0 -54
  110. /package/dist/lib/{utils/version.d.ts → version.d.ts} +0 -0
  111. /package/src/lib/{utils/version.ts → version.ts} +0 -0
@@ -1,15 +0,0 @@
1
- export type ParseWKTCRSOptions = {
2
- sort?: boolean;
3
- keywords?: string[];
4
- raw?: boolean;
5
- debug?: boolean;
6
- };
7
- export type WKTCRS = any;
8
- /**
9
- *
10
- * @param wkt
11
- * @param options
12
- * @returns
13
- */
14
- export declare function parseWKTCRS(wkt: string, options?: ParseWKTCRSOptions): WKTCRS;
15
- //# sourceMappingURL=parse-wkt-crs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-wkt-crs.d.ts","sourceRoot":"","sources":["../../src/lib/parse-wkt-crs.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,GAAG,CAAC;AAEzB;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,CA2E7E"}
@@ -1,120 +0,0 @@
1
- // loaders.gl
2
- // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
4
- // parse-wkt-crs was forked from https://github.com/DanielJDufour/wkt-crs under Creative Commons CC0 1.0 license.
5
- /**
6
- *
7
- * @param wkt
8
- * @param options
9
- * @returns
10
- */
11
- export function parseWKTCRS(wkt, options) {
12
- if (options?.debug) {
13
- console.log('[wktcrs] parse starting with\n', wkt);
14
- }
15
- // move all keywords into first array item slot
16
- // from PARAM[12345, 67890] to ["PARAM", 12345, 67890]
17
- wkt = wkt.replace(/[A-Z][A-Z\d_]+\[/gi, (match) => `["${match.substr(0, match.length - 1)}",`);
18
- // wrap variables in strings
19
- // from [...,NORTH] to [...,"NORTH"]
20
- wkt = wkt.replace(/, ?([A-Z][A-Z\d_]+[,\]])/gi, (match, p1) => {
21
- const varname = p1.substr(0, p1.length - 1);
22
- return ',' + `"${options?.raw ? 'raw:' : ''}${varname}"${p1[p1.length - 1]}`;
23
- });
24
- if (options?.raw) {
25
- // replace all numbers with strings
26
- wkt = wkt.replace(/, {0,2}(-?[\.\d]+)(?=,|\])/g, function (match, p1) {
27
- return ',' + `"${options?.raw ? 'raw:' : ''}${p1}"`;
28
- });
29
- }
30
- // str should now be valid JSON
31
- if (options?.debug) {
32
- console.log(`[wktcrs] json'd wkt: '${wkt}'`);
33
- }
34
- let data;
35
- try {
36
- data = JSON.parse(wkt);
37
- }
38
- catch (error) {
39
- console.error(`[wktcrs] failed to parse '${wkt}'`);
40
- throw error;
41
- }
42
- if (options?.debug) {
43
- console.log(`[wktcrs] json parsed: '${wkt}'`);
44
- }
45
- function process(data, parent) {
46
- const kw = data[0];
47
- // after removing the first element with .shift()
48
- // data is now just an array of attributes
49
- data.forEach(function (it) {
50
- if (Array.isArray(it)) {
51
- process(it, data);
52
- }
53
- });
54
- const kwarr = `MULTIPLE_${kw}`;
55
- if (kwarr in parent) {
56
- parent[kwarr].push(data);
57
- }
58
- else if (kw in parent) {
59
- parent[kwarr] = [parent[kw], data];
60
- delete parent[kw];
61
- }
62
- else {
63
- parent[kw] = data;
64
- }
65
- return parent;
66
- }
67
- const result = process(data, [data]);
68
- if (options?.debug) {
69
- console.log('[wktcrs] parse returning', result);
70
- }
71
- if (options?.sort) {
72
- sort(result, options);
73
- }
74
- return result;
75
- }
76
- function sort(data, options) {
77
- const keys = Object.keys(data).filter((k) => !/\d+/.test(k));
78
- const keywords = options?.keywords || [];
79
- if (!options?.keywords) {
80
- // try to find multiples
81
- const counts = {};
82
- if (Array.isArray(data)) {
83
- data.forEach((it) => {
84
- if (Array.isArray(it) && it.length >= 2 && typeof it[1] === 'string') {
85
- const k = it[0];
86
- if (!counts[k])
87
- counts[k] = 0;
88
- counts[k]++;
89
- }
90
- });
91
- for (const k in counts) {
92
- if (counts[k] > 0)
93
- keywords.push(k);
94
- }
95
- }
96
- }
97
- keys.forEach((key) => {
98
- data[key] = sort(data[key]);
99
- });
100
- keywords.forEach((key) => {
101
- const indices = [];
102
- const params = [];
103
- data.forEach((item, i) => {
104
- if (Array.isArray(item) && item[0] === key) {
105
- indices.push(i);
106
- params.push(item);
107
- }
108
- });
109
- params.sort((a, b) => {
110
- a = a[1].toString();
111
- b = b[1].toString();
112
- return a < b ? -1 : a > b ? 1 : 0;
113
- });
114
- // replace in order
115
- params.forEach((param, i) => {
116
- data[indices[i]] = param;
117
- });
118
- });
119
- return data;
120
- }
@@ -1,30 +0,0 @@
1
- import { Geometry } from '@loaders.gl/schema';
2
- export declare const WKT_MAGIC_STRINGS: string[];
3
- export type ParseWKTOptions = {
4
- wkt?: {
5
- /** Whether to add any CRS, if found, as undocumented CRS property on the return geometry */
6
- crs?: boolean;
7
- };
8
- };
9
- /**
10
- * Check if a string is WKT.
11
- * @param input A potential WKT geometry string
12
- * @return `true` if input appears to be a WKT geometry string, `false` otherwise
13
-
14
- * @note We only support the "geojson" subset of the OGC simple features standard
15
- * @todo Does not handle leading spaces which appear to be permitted per the spec:
16
- * "A WKT string contains no white space outside of double quotes.
17
- * However padding with white space to improve human readability is permitted;
18
- * the examples of WKT that are included in this document have
19
- * spaces and line feeds inserted to improve clarity. Any padding is stripped out or ignored by parsers."
20
- */
21
- export declare function isWKT(input: string): boolean;
22
- /**
23
- * Parse WKT and return GeoJSON.
24
- * @param input A WKT geometry string
25
- * @return A GeoJSON geometry object
26
- *
27
- * @note We only support the "geojson" subset of the OGC simple features standard
28
- **/
29
- export declare function parseWKT(input: string, options?: ParseWKTOptions): Geometry;
30
- //# sourceMappingURL=parse-wkt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-wkt.d.ts","sourceRoot":"","sources":["../../src/lib/parse-wkt.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAS5C,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE;QACJ,4FAA4F;QAC5F,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED;;;;;;IAMI;AACJ,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAG3E"}
@@ -1,288 +0,0 @@
1
- // loaders.gl
2
- // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
4
- // Fork of https://github.com/mapbox/wellknown under ISC license (MIT/BSD-2-clause equivalent)
5
- /* eslint-disable */
6
- // @ts-nocheck
7
- const numberRegexp = /[-+]?([0-9]*\.[0-9]+|[0-9]+)([eE][-+]?[0-9]+)?/;
8
- // Matches sequences like '100 100' or '100 100 100'.
9
- const tuples = new RegExp('^' + numberRegexp.source + '(\\s' + numberRegexp.source + '){1,}');
10
- export const WKT_MAGIC_STRINGS = [
11
- 'POINT(',
12
- 'LINESTRING(',
13
- 'POLYGON(',
14
- 'MULTIPOINT(',
15
- 'MULTILINESTRING(',
16
- 'MULTIPOLYGON(',
17
- 'GEOMETRYCOLLECTION('
18
- // We only support this "geojson" subset of the OGC simple features standard
19
- ];
20
- /**
21
- * Check if a string is WKT.
22
- * @param input A potential WKT geometry string
23
- * @return `true` if input appears to be a WKT geometry string, `false` otherwise
24
-
25
- * @note We only support the "geojson" subset of the OGC simple features standard
26
- * @todo Does not handle leading spaces which appear to be permitted per the spec:
27
- * "A WKT string contains no white space outside of double quotes.
28
- * However padding with white space to improve human readability is permitted;
29
- * the examples of WKT that are included in this document have
30
- * spaces and line feeds inserted to improve clarity. Any padding is stripped out or ignored by parsers."
31
- */
32
- export function isWKT(input) {
33
- return WKT_MAGIC_STRINGS.some((magicString) => input.startsWith(magicString));
34
- }
35
- /**
36
- * Parse WKT and return GeoJSON.
37
- * @param input A WKT geometry string
38
- * @return A GeoJSON geometry object
39
- *
40
- * @note We only support the "geojson" subset of the OGC simple features standard
41
- **/
42
- export function parseWKT(input, options) {
43
- // TODO handle options.wkt.shape
44
- return parseWKTToGeometry(input, options);
45
- }
46
- /** Parse into GeoJSON geometry */
47
- function parseWKTToGeometry(input, options) {
48
- const parts = input.split(';');
49
- let _ = parts.pop();
50
- const srid = (parts.shift() || '').split('=').pop();
51
- const state = { parts, _, i: 0 };
52
- const geometry = parseGeometry(state);
53
- return options?.wkt?.crs ? addCRS(geometry, srid) : geometry;
54
- }
55
- function parseGeometry(state) {
56
- return (parsePoint(state) ||
57
- parseLineString(state) ||
58
- parsePolygon(state) ||
59
- parseMultiPoint(state) ||
60
- parseMultiLineString(state) ||
61
- parseMultiPolygon(state) ||
62
- parseGeometryCollection(state));
63
- }
64
- /** Adds a coordinate reference system as an undocumented */
65
- function addCRS(obj, srid) {
66
- if (obj && srid?.match(/\d+/)) {
67
- const crs = {
68
- type: 'name',
69
- properties: {
70
- name: 'urn:ogc:def:crs:EPSG::' + srid
71
- }
72
- };
73
- // @ts-expect-error we assign an undocumented property on the geometry
74
- obj.crs = crs;
75
- }
76
- return obj;
77
- }
78
- // GEOMETRIES
79
- function parsePoint(state) {
80
- if (!$(/^(POINT(\sz)?)/i, state)) {
81
- return null;
82
- }
83
- white(state);
84
- if (!$(/^(\()/, state)) {
85
- return null;
86
- }
87
- const c = coords(state);
88
- if (!c) {
89
- return null;
90
- }
91
- white(state);
92
- if (!$(/^(\))/, state)) {
93
- return null;
94
- }
95
- return {
96
- type: 'Point',
97
- coordinates: c[0]
98
- };
99
- }
100
- function parseMultiPoint(state) {
101
- if (!$(/^(MULTIPOINT)/i, state)) {
102
- return null;
103
- }
104
- white(state);
105
- const newCoordsFormat = state._?.substring(state._?.indexOf('(') + 1, state._.length - 1)
106
- .replace(/\(/g, '')
107
- .replace(/\)/g, '');
108
- state._ = 'MULTIPOINT (' + newCoordsFormat + ')';
109
- const c = multicoords(state);
110
- if (!c) {
111
- return null;
112
- }
113
- white(state);
114
- return {
115
- type: 'MultiPoint',
116
- coordinates: c
117
- };
118
- }
119
- function parseLineString(state) {
120
- if (!$(/^(LINESTRING(\sz)?)/i, state)) {
121
- return null;
122
- }
123
- white(state);
124
- if (!$(/^(\()/, state)) {
125
- return null;
126
- }
127
- const c = coords(state);
128
- if (!c) {
129
- return null;
130
- }
131
- if (!$(/^(\))/, state)) {
132
- return null;
133
- }
134
- return {
135
- type: 'LineString',
136
- coordinates: c
137
- };
138
- }
139
- function parseMultiLineString(state) {
140
- if (!$(/^(MULTILINESTRING)/i, state))
141
- return null;
142
- white(state);
143
- const c = multicoords(state);
144
- if (!c) {
145
- return null;
146
- }
147
- white(state);
148
- return {
149
- // @ts-ignore
150
- type: 'MultiLineString',
151
- // @ts-expect-error
152
- coordinates: c
153
- };
154
- }
155
- function parsePolygon(state) {
156
- if (!$(/^(POLYGON(\sz)?)/i, state)) {
157
- return null;
158
- }
159
- white(state);
160
- const c = multicoords(state);
161
- if (!c) {
162
- return null;
163
- }
164
- return {
165
- // @ts-ignore
166
- type: 'Polygon',
167
- // @ts-expect-error
168
- coordinates: c
169
- };
170
- }
171
- function parseMultiPolygon(state) {
172
- if (!$(/^(MULTIPOLYGON)/i, state)) {
173
- return null;
174
- }
175
- white(state);
176
- const c = multicoords(state);
177
- if (!c) {
178
- return null;
179
- }
180
- return {
181
- type: 'MultiPolygon',
182
- // @ts-expect-error
183
- coordinates: c
184
- };
185
- }
186
- function parseGeometryCollection(state) {
187
- const geometries = [];
188
- let geometry;
189
- if (!$(/^(GEOMETRYCOLLECTION)/i, state)) {
190
- return null;
191
- }
192
- white(state);
193
- if (!$(/^(\()/, state)) {
194
- return null;
195
- }
196
- while ((geometry = parseGeometry(state))) {
197
- geometries.push(geometry);
198
- white(state);
199
- $(/^(,)/, state);
200
- white(state);
201
- }
202
- if (!$(/^(\))/, state)) {
203
- return null;
204
- }
205
- return {
206
- type: 'GeometryCollection',
207
- geometries: geometries
208
- };
209
- }
210
- // COORDINATES
211
- function multicoords(state) {
212
- white(state);
213
- let depth = 0;
214
- const rings = [];
215
- const stack = [rings];
216
- let pointer = rings;
217
- let elem;
218
- while ((elem = $(/^(\()/, state) || $(/^(\))/, state) || $(/^(,)/, state) || $(tuples, state))) {
219
- if (elem === '(') {
220
- stack.push(pointer);
221
- pointer = [];
222
- stack[stack.length - 1].push(pointer);
223
- depth++;
224
- }
225
- else if (elem === ')') {
226
- // For the case: Polygon(), ...
227
- if (pointer.length === 0)
228
- return null;
229
- // @ts-ignore
230
- pointer = stack.pop();
231
- // the stack was empty, input was malformed
232
- if (!pointer)
233
- return null;
234
- depth--;
235
- if (depth === 0)
236
- break;
237
- }
238
- else if (elem === ',') {
239
- pointer = [];
240
- stack[stack.length - 1].push(pointer);
241
- }
242
- else if (!elem.split(/\s/g).some(isNaN)) {
243
- Array.prototype.push.apply(pointer, elem.split(/\s/g).map(parseFloat));
244
- }
245
- else {
246
- return null;
247
- }
248
- white(state);
249
- }
250
- if (depth !== 0)
251
- return null;
252
- return rings;
253
- }
254
- function coords(state) {
255
- const list = [];
256
- let item;
257
- let pt;
258
- while ((pt = $(tuples, state) || $(/^(,)/, state))) {
259
- if (pt === ',') {
260
- list.push(item);
261
- item = [];
262
- }
263
- else if (!pt.split(/\s/g).some(isNaN)) {
264
- if (!item)
265
- item = [];
266
- Array.prototype.push.apply(item, pt.split(/\s/g).map(parseFloat));
267
- }
268
- white(state);
269
- }
270
- if (item)
271
- list.push(item);
272
- else
273
- return null;
274
- return list.length ? list : null;
275
- }
276
- // HELPERS
277
- function $(regexp, state) {
278
- const match = state._?.substring(state.i).match(regexp);
279
- if (!match)
280
- return null;
281
- else {
282
- state.i += match[0].length;
283
- return match[0];
284
- }
285
- }
286
- function white(state) {
287
- $(/^\s*/, state);
288
- }
@@ -1,5 +0,0 @@
1
- export declare class Base64Encoder {
2
- getDecodedLength(array: Uint8Array): number;
3
- decode(array: Uint8Array, target?: ArrayBuffer): void;
4
- }
5
- //# sourceMappingURL=base64-encoder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base64-encoder.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/base64-encoder.ts"],"names":[],"mappings":"AA0BA,qBAAa,aAAa;IACxB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAI3C,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;CAC/C"}
@@ -1,153 +0,0 @@
1
- // loaders.gl
2
- // SPDX-License-Identifier: MIT
3
- // Copyright (c) vis.gl contributors
4
- /*
5
- const binary_to_b64_map = [
6
- 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
7
- 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
8
- 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a',
9
- 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
10
- 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
11
- 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
12
- '2', '3', '4', '5', '6', '7', '8', '9', '+',
13
- '/', '='
14
- ];
15
- const b64_to_binary_map = {
16
- '0': 52, '1': 53, '2': 54, '3': 55, '4': 56, '5': 57, '6': 58, '7': 59, '8': 60, '9': 61,
17
- A: 0, B: 1, C: 2, D: 3, E: 4, F: 5, G: 6, H: 7, I: 8, J: 9, K: 10, L: 11, M: 12, N: 13, O: 14,
18
- P: 15, Q: 16, R: 17, S: 18, T: 19, U: 20, V: 21, W: 22, X: 23, Y: 24, Z: 25, a: 26, b: 27,
19
- c: 28, d: 29, e: 30, f: 31, g: 32, h: 33, i: 34, j: 35, k: 36, l: 37, m: 38, n: 39, o: 40,
20
- p: 41, q: 42, r: 43, s: 44, t: 45, u: 46, v: 47, w: 48, x: 49, y: 50, z: 51, '+': 62, '/': 63,
21
- '=': 64
22
- };
23
-
24
- */
25
- export class Base64Encoder {
26
- getDecodedLength(array) {
27
- return Math.ceil(array.byteLength / 4) * 3;
28
- }
29
- decode(array, target) { } // eslint-disable-line
30
- }
31
- /*
32
-
33
- //generates an array iterator that returns 3 elements at a time. Use to loop through the Uint8Array Array Buffer
34
- // to be converted to Base64. (binary array buffer) 8bits * 3 = 6bits * 4 (base64 representation)
35
- const generateTripleIterator = (arr) => {
36
- return {
37
- *[Symbol.iterator]() {
38
- for(let n = 0; n < arr.length; n+=3) {
39
- let result = [];
40
- result.push(arr[n]);
41
-
42
- if(n+1 < arr.length)
43
- result.push(arr[n+1]);
44
- if(n+2 < arr.length)
45
- result.push(arr[n+2]);
46
-
47
- yield result;
48
- }
49
- }
50
- };
51
- };
52
-
53
- //generates an array iterator that returns 4 elements at a time. Use to loop through
54
- // Base64 string because Base64 string is multiples of 4 characters.
55
- const generateQuadrupleIterator = (arr) => {
56
- return {
57
- *[Symbol.iterator]() {
58
- for(let n = 0; n < arr.length; n+=4) {
59
- yield [...arr.slice(n, n+4)];
60
- }
61
- }
62
- };
63
- };
64
-
65
- // Converts a triple of 8 bits into a quadruple of 6 bits. use to convert binary to base64 representation
66
- const tripleConvert = (first, second, third) => {
67
- let [] = triple;
68
- let binary = null, a = null, b = null, c = null, d = null;
69
- if (triple.length === 1) {
70
- binary = (first << 4);
71
- a = ((binary & 4032) >>> 6);
72
- b = (binary & 63);
73
- c = 64;
74
- d = 64;
75
- } else if (triple.length === 2) {
76
- binary = ((first << 10) | (second << 2));
77
- a = ((binary & 258048) >>> 12);
78
- b = ((binary & 4032) >>> 6);
79
- c = (binary & 63);
80
- d = 64;
81
- } else {
82
- binary = ((first << 16) | (second << 8) | third);
83
- a = ((binary & 16515072) >>> 18);
84
- b = ((binary & 258048) >>> 12);
85
- c = ((binary & 4032) >>> 6);
86
- d = (binary & 63);
87
- }
88
-
89
- return [a, b, c, d];
90
- };
91
-
92
- // Converts a quadruple of 6 bits into a triple of 8 bits. use to convert base64 representation into binary
93
- const quadrupleConvert = (quadruple) => {
94
- let [a, b, c, d] = quadruple;
95
- let binary = null, first = null, second = null, third = null;
96
-
97
- if(c === 64 && d === 64) {
98
- //two padding
99
- binary = ((a << 6) | b);
100
- first = (binary >> 4); //shift off 4 bits, 2 bits per padding
101
- } else if(d === 64) {
102
- //one padding
103
- binary = ((a << 12) | (b << 6) | c );
104
- binary = (binary >> 2); //shift off 2 bits
105
- first = binary >> 8;
106
- second = ((binary << 24) >>> 24);
107
- } else {
108
- //no padding
109
- binary = ((a << 18) | (b << 12) | (c << 6) | d );
110
- first = (binary >>> 16);
111
- second = ((binary << 16) >>> 24);
112
- third = ((binary << 24) >>> 24);
113
- }
114
-
115
- return [first, second, third];
116
- };
117
-
118
- // Convert 8Bits Array Buffer to Base64 string
119
- export const ab2b64 = (buffer) => {
120
- const b64strArray = [];
121
- const view = new Uint8Array(buffer);
122
- let iterator = generateTripleIterator(view);
123
- for(let triple of iterator) {
124
- b64strArray.push(...tripleConvert(triple));
125
- }
126
- return b64strArray.map(b64CharCodePoint => binary_to_b64_map[b64CharCodePoint]).join("");
127
- };
128
-
129
- // Convert Base64 String to 8Bits Array Buffer
130
- export const b642ab = (b64str) => {
131
- let buffer_length = (b64str.length / 4) * 3;
132
- if(b64str.slice(-2) === '==') {
133
- buffer_length -= 2;
134
- } else if(b64str.slice(-1) === '=') {
135
- buffer_length -= 1;
136
- }
137
-
138
- let buffer = new ArrayBuffer(buffer_length);
139
- const view = new Uint8Array(buffer);
140
- let iterator = generateQuadrupleIterator(b64str.split("").map(b64char => b64_to_binary_map[b64char]));
141
- let byteIndex = 0;
142
- for(let quadruple of iterator) {
143
- quadrupleConvert(quadruple).forEach(byte => {
144
- if(byte != null) {
145
- view[byteIndex] = byte;
146
- byteIndex++;
147
- }
148
- });
149
- }
150
- return buffer;
151
- };
152
-
153
- */
@@ -1,18 +0,0 @@
1
- /** A DataView that tracks byte offset when reading. */
2
- export declare class BinaryReader {
3
- arrayBuffer: ArrayBuffer;
4
- dataView: DataView;
5
- byteOffset: number;
6
- littleEndian: boolean;
7
- constructor(arrayBuffer: ArrayBuffer, isBigEndian?: boolean);
8
- readUInt8(): number;
9
- readUInt16(): number;
10
- readUInt32(): number;
11
- readInt8(): number;
12
- readInt16(): number;
13
- readInt32(): number;
14
- readFloat(): number;
15
- readDouble(): number;
16
- readVarInt(): number;
17
- }
18
- //# sourceMappingURL=binary-reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"binary-reader.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/binary-reader.ts"],"names":[],"mappings":"AAIA,uDAAuD;AACvD,qBAAa,YAAY;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;gBAEV,WAAW,EAAE,WAAW,EAAE,WAAW,GAAE,OAAe;IAOlE,SAAS;IAKT,UAAU;IAKV,UAAU;IAKV,QAAQ;IAKR,SAAS;IAKT,SAAS;IAKT,SAAS;IAKT,UAAU;IAMV,UAAU;CAgBX"}