styled-map-package 4.1.0 → 5.0.0-pre.1
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.
- package/README.md +47 -7
- package/bin/smp-download.js +27 -151
- package/bin/smp-mbtiles.js +12 -7
- package/bin/smp-view.js +32 -54
- package/lib/commands/download.js +188 -0
- package/lib/commands/mbtiles.js +21 -0
- package/lib/commands/view.js +57 -0
- package/lib/reporters.js +92 -0
- package/package.json +9 -181
- package/LICENSE.md +0 -7
- package/dist/download.cjs +0 -101
- package/dist/download.d.cts +0 -65
- package/dist/download.d.ts +0 -65
- package/dist/download.js +0 -77
- package/dist/from-mbtiles.cjs +0 -91
- package/dist/from-mbtiles.d.cts +0 -17
- package/dist/from-mbtiles.d.ts +0 -17
- package/dist/from-mbtiles.js +0 -57
- package/dist/index.cjs +0 -49
- package/dist/index.d.cts +0 -27
- package/dist/index.d.ts +0 -27
- package/dist/index.js +0 -18
- package/dist/reader-watch.cjs +0 -135
- package/dist/reader-watch.d.cts +0 -24
- package/dist/reader-watch.d.ts +0 -24
- package/dist/reader-watch.js +0 -101
- package/dist/reader.cjs +0 -168
- package/dist/reader.d.cts +0 -62
- package/dist/reader.d.ts +0 -62
- package/dist/reader.js +0 -139
- package/dist/reporters.cjs +0 -122
- package/dist/reporters.d.cts +0 -10
- package/dist/reporters.d.ts +0 -10
- package/dist/reporters.js +0 -88
- package/dist/server.cjs +0 -78
- package/dist/server.d.cts +0 -48
- package/dist/server.d.ts +0 -48
- package/dist/server.js +0 -54
- package/dist/style-downloader.cjs +0 -312
- package/dist/style-downloader.d.cts +0 -120
- package/dist/style-downloader.d.ts +0 -120
- package/dist/style-downloader.js +0 -288
- package/dist/tile-downloader.cjs +0 -158
- package/dist/tile-downloader.d.cts +0 -84
- package/dist/tile-downloader.d.ts +0 -84
- package/dist/tile-downloader.js +0 -126
- package/dist/types-yLQy3AKR.d.cts +0 -192
- package/dist/types-yLQy3AKR.d.ts +0 -192
- package/dist/utils/errors.cjs +0 -41
- package/dist/utils/errors.d.cts +0 -18
- package/dist/utils/errors.d.ts +0 -18
- package/dist/utils/errors.js +0 -16
- package/dist/utils/fetch.cjs +0 -96
- package/dist/utils/fetch.d.cts +0 -51
- package/dist/utils/fetch.d.ts +0 -51
- package/dist/utils/fetch.js +0 -62
- package/dist/utils/file-formats.cjs +0 -98
- package/dist/utils/file-formats.d.cts +0 -35
- package/dist/utils/file-formats.d.ts +0 -35
- package/dist/utils/file-formats.js +0 -62
- package/dist/utils/geo.cjs +0 -84
- package/dist/utils/geo.d.cts +0 -46
- package/dist/utils/geo.d.ts +0 -46
- package/dist/utils/geo.js +0 -56
- package/dist/utils/mapbox.cjs +0 -121
- package/dist/utils/mapbox.d.cts +0 -43
- package/dist/utils/mapbox.d.ts +0 -43
- package/dist/utils/mapbox.js +0 -91
- package/dist/utils/misc.cjs +0 -39
- package/dist/utils/misc.d.cts +0 -22
- package/dist/utils/misc.d.ts +0 -22
- package/dist/utils/misc.js +0 -13
- package/dist/utils/streams.cjs +0 -130
- package/dist/utils/streams.d.cts +0 -73
- package/dist/utils/streams.d.ts +0 -73
- package/dist/utils/streams.js +0 -103
- package/dist/utils/style.cjs +0 -126
- package/dist/utils/style.d.cts +0 -69
- package/dist/utils/style.d.ts +0 -69
- package/dist/utils/style.js +0 -98
- package/dist/utils/templates.cjs +0 -118
- package/dist/utils/templates.d.cts +0 -80
- package/dist/utils/templates.d.ts +0 -80
- package/dist/utils/templates.js +0 -81
- package/dist/writer.cjs +0 -449
- package/dist/writer.d.cts +0 -7
- package/dist/writer.d.ts +0 -7
- package/dist/writer.js +0 -424
- package/node_modules/@node-rs/crc32/LICENSE +0 -21
- package/node_modules/@node-rs/crc32/README.md +0 -61
- package/node_modules/@node-rs/crc32/browser.js +0 -1
- package/node_modules/@node-rs/crc32/index.d.ts +0 -5
- package/node_modules/@node-rs/crc32/index.js +0 -368
- package/node_modules/@node-rs/crc32/package.json +0 -97
- package/node_modules/@node-rs/crc32-linux-x64-gnu/README.md +0 -3
- package/node_modules/@node-rs/crc32-linux-x64-gnu/crc32.linux-x64-gnu.node +0 -0
- package/node_modules/@node-rs/crc32-linux-x64-gnu/package.json +0 -43
- package/node_modules/@node-rs/crc32-linux-x64-musl/README.md +0 -3
- package/node_modules/@node-rs/crc32-linux-x64-musl/crc32.linux-x64-musl.node +0 -0
- package/node_modules/@node-rs/crc32-linux-x64-musl/package.json +0 -43
- package/node_modules/define-data-property/.eslintrc +0 -24
- package/node_modules/define-data-property/.github/FUNDING.yml +0 -12
- package/node_modules/define-data-property/.nycrc +0 -13
- package/node_modules/define-data-property/CHANGELOG.md +0 -70
- package/node_modules/define-data-property/LICENSE +0 -21
- package/node_modules/define-data-property/README.md +0 -67
- package/node_modules/define-data-property/index.d.ts +0 -12
- package/node_modules/define-data-property/index.js +0 -56
- package/node_modules/define-data-property/package.json +0 -106
- package/node_modules/define-data-property/test/index.js +0 -392
- package/node_modules/define-data-property/tsconfig.json +0 -59
- package/node_modules/define-properties/.editorconfig +0 -13
- package/node_modules/define-properties/.eslintrc +0 -19
- package/node_modules/define-properties/.github/FUNDING.yml +0 -12
- package/node_modules/define-properties/.nycrc +0 -9
- package/node_modules/define-properties/CHANGELOG.md +0 -91
- package/node_modules/define-properties/LICENSE +0 -21
- package/node_modules/define-properties/README.md +0 -84
- package/node_modules/define-properties/index.js +0 -47
- package/node_modules/define-properties/package.json +0 -88
- package/node_modules/es-define-property/.eslintrc +0 -13
- package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
- package/node_modules/es-define-property/.nycrc +0 -9
- package/node_modules/es-define-property/CHANGELOG.md +0 -29
- package/node_modules/es-define-property/LICENSE +0 -21
- package/node_modules/es-define-property/README.md +0 -49
- package/node_modules/es-define-property/index.d.ts +0 -3
- package/node_modules/es-define-property/index.js +0 -14
- package/node_modules/es-define-property/package.json +0 -81
- package/node_modules/es-define-property/test/index.js +0 -56
- package/node_modules/es-define-property/tsconfig.json +0 -10
- package/node_modules/es-errors/.eslintrc +0 -5
- package/node_modules/es-errors/.github/FUNDING.yml +0 -12
- package/node_modules/es-errors/CHANGELOG.md +0 -40
- package/node_modules/es-errors/LICENSE +0 -21
- package/node_modules/es-errors/README.md +0 -55
- package/node_modules/es-errors/eval.d.ts +0 -3
- package/node_modules/es-errors/eval.js +0 -4
- package/node_modules/es-errors/index.d.ts +0 -3
- package/node_modules/es-errors/index.js +0 -4
- package/node_modules/es-errors/package.json +0 -80
- package/node_modules/es-errors/range.d.ts +0 -3
- package/node_modules/es-errors/range.js +0 -4
- package/node_modules/es-errors/ref.d.ts +0 -3
- package/node_modules/es-errors/ref.js +0 -4
- package/node_modules/es-errors/syntax.d.ts +0 -3
- package/node_modules/es-errors/syntax.js +0 -4
- package/node_modules/es-errors/test/index.js +0 -19
- package/node_modules/es-errors/tsconfig.json +0 -49
- package/node_modules/es-errors/type.d.ts +0 -3
- package/node_modules/es-errors/type.js +0 -4
- package/node_modules/es-errors/uri.d.ts +0 -3
- package/node_modules/es-errors/uri.js +0 -4
- package/node_modules/globalthis/.eslintrc +0 -18
- package/node_modules/globalthis/.nycrc +0 -10
- package/node_modules/globalthis/CHANGELOG.md +0 -109
- package/node_modules/globalthis/LICENSE +0 -21
- package/node_modules/globalthis/README.md +0 -70
- package/node_modules/globalthis/auto.js +0 -3
- package/node_modules/globalthis/implementation.browser.js +0 -11
- package/node_modules/globalthis/implementation.js +0 -3
- package/node_modules/globalthis/index.js +0 -19
- package/node_modules/globalthis/package.json +0 -99
- package/node_modules/globalthis/polyfill.js +0 -10
- package/node_modules/globalthis/shim.js +0 -29
- package/node_modules/globalthis/test/implementation.js +0 -11
- package/node_modules/globalthis/test/index.js +0 -11
- package/node_modules/globalthis/test/native.js +0 -26
- package/node_modules/globalthis/test/shimmed.js +0 -29
- package/node_modules/globalthis/test/tests.js +0 -36
- package/node_modules/gopd/.eslintrc +0 -16
- package/node_modules/gopd/.github/FUNDING.yml +0 -12
- package/node_modules/gopd/CHANGELOG.md +0 -45
- package/node_modules/gopd/LICENSE +0 -21
- package/node_modules/gopd/README.md +0 -40
- package/node_modules/gopd/gOPD.d.ts +0 -1
- package/node_modules/gopd/gOPD.js +0 -4
- package/node_modules/gopd/index.d.ts +0 -5
- package/node_modules/gopd/index.js +0 -15
- package/node_modules/gopd/package.json +0 -77
- package/node_modules/gopd/test/index.js +0 -36
- package/node_modules/gopd/tsconfig.json +0 -9
- package/node_modules/has-property-descriptors/.eslintrc +0 -13
- package/node_modules/has-property-descriptors/.github/FUNDING.yml +0 -12
- package/node_modules/has-property-descriptors/.nycrc +0 -9
- package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
- package/node_modules/has-property-descriptors/LICENSE +0 -21
- package/node_modules/has-property-descriptors/README.md +0 -43
- package/node_modules/has-property-descriptors/index.js +0 -22
- package/node_modules/has-property-descriptors/package.json +0 -77
- package/node_modules/has-property-descriptors/test/index.js +0 -57
- package/node_modules/is-it-type/License +0 -19
- package/node_modules/is-it-type/README.md +0 -102
- package/node_modules/is-it-type/changelog.md +0 -239
- package/node_modules/is-it-type/dist/cjs/is-it-type.js +0 -173
- package/node_modules/is-it-type/dist/cjs/is-it-type.js.map +0 -1
- package/node_modules/is-it-type/dist/cjs/is-it-type.min.js +0 -2
- package/node_modules/is-it-type/dist/cjs/is-it-type.min.js.map +0 -1
- package/node_modules/is-it-type/dist/esm/is-it-type.js +0 -143
- package/node_modules/is-it-type/dist/esm/is-it-type.js.map +0 -1
- package/node_modules/is-it-type/dist/esm/is-it-type.min.js +0 -2
- package/node_modules/is-it-type/dist/esm/is-it-type.min.js.map +0 -1
- package/node_modules/is-it-type/dist/esm/package.json +0 -3
- package/node_modules/is-it-type/dist/umd/is-it-type.js +0 -450
- package/node_modules/is-it-type/dist/umd/is-it-type.js.map +0 -1
- package/node_modules/is-it-type/dist/umd/is-it-type.min.js +0 -2
- package/node_modules/is-it-type/dist/umd/is-it-type.min.js.map +0 -1
- package/node_modules/is-it-type/es/index.js +0 -8
- package/node_modules/is-it-type/es/package.json +0 -3
- package/node_modules/is-it-type/index.js +0 -10
- package/node_modules/is-it-type/package.json +0 -87
- package/node_modules/is-it-type/src/index.js +0 -169
- package/node_modules/object-keys/.editorconfig +0 -13
- package/node_modules/object-keys/.eslintrc +0 -17
- package/node_modules/object-keys/.travis.yml +0 -277
- package/node_modules/object-keys/CHANGELOG.md +0 -232
- package/node_modules/object-keys/LICENSE +0 -21
- package/node_modules/object-keys/README.md +0 -76
- package/node_modules/object-keys/implementation.js +0 -122
- package/node_modules/object-keys/index.js +0 -32
- package/node_modules/object-keys/isArguments.js +0 -17
- package/node_modules/object-keys/package.json +0 -88
- package/node_modules/object-keys/test/index.js +0 -5
- package/node_modules/simple-invariant/License +0 -19
- package/node_modules/simple-invariant/README.md +0 -64
- package/node_modules/simple-invariant/changelog.md +0 -31
- package/node_modules/simple-invariant/index.js +0 -19
- package/node_modules/simple-invariant/package.json +0 -50
- package/node_modules/yauzl-promise/License +0 -19
- package/node_modules/yauzl-promise/README.md +0 -440
- package/node_modules/yauzl-promise/index.js +0 -10
- package/node_modules/yauzl-promise/lib/entry.js +0 -312
- package/node_modules/yauzl-promise/lib/index.js +0 -160
- package/node_modules/yauzl-promise/lib/reader.js +0 -289
- package/node_modules/yauzl-promise/lib/shared.js +0 -20
- package/node_modules/yauzl-promise/lib/utils.js +0 -105
- package/node_modules/yauzl-promise/lib/zip.js +0 -1224
- package/node_modules/yauzl-promise/package.json +0 -56
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
/* --------------------
|
|
2
|
-
* yauzl-promise module
|
|
3
|
-
* Reader classes
|
|
4
|
-
* ------------------*/
|
|
5
|
-
|
|
6
|
-
'use strict';
|
|
7
|
-
|
|
8
|
-
// Modules
|
|
9
|
-
const fs = require('fs'),
|
|
10
|
-
{PassThrough: PassThroughStream, Readable: ReadableStream} = require('stream'),
|
|
11
|
-
{promisify} = require('util'),
|
|
12
|
-
{isPositiveIntegerOrZero} = require('is-it-type'),
|
|
13
|
-
assert = require('simple-invariant');
|
|
14
|
-
|
|
15
|
-
const openAsync = promisify(fs.open),
|
|
16
|
-
closeAsync = promisify(fs.close);
|
|
17
|
-
|
|
18
|
-
// Imports
|
|
19
|
-
const {streamToBuffer} = require('./utils.js');
|
|
20
|
-
|
|
21
|
-
// Exports
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* `Reader` class.
|
|
25
|
-
* `FileReader`, `FdReader` and `BufferReader` subclass this.
|
|
26
|
-
*
|
|
27
|
-
* Users can create custom `Reader`s by subclassing and implementing the following methods:
|
|
28
|
-
* - `_createReadStream(start, length)` (required)
|
|
29
|
-
* - `_read(start, length)` (optional)
|
|
30
|
-
* - `_open()` (optional)
|
|
31
|
-
* - `_close()` (optional)
|
|
32
|
-
*/
|
|
33
|
-
class Reader {
|
|
34
|
-
constructor() {
|
|
35
|
-
this.isOpen = false;
|
|
36
|
-
this.readCount = 0;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Open reader.
|
|
41
|
-
* Calls `._open()` method defined by subclass.
|
|
42
|
-
* If already open, does nothing.
|
|
43
|
-
* @async
|
|
44
|
-
* @returns {undefined}
|
|
45
|
-
*/
|
|
46
|
-
async open() {
|
|
47
|
-
if (this.isOpen) return;
|
|
48
|
-
this.isOpen = true;
|
|
49
|
-
await this._open();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Close reader.
|
|
54
|
-
* Calls `._close()` method defined by subclass.
|
|
55
|
-
* If already closed, does nothing.
|
|
56
|
-
* @async
|
|
57
|
-
* @returns {undefined}
|
|
58
|
-
* @throws {Error} - If Reader is currently being read from
|
|
59
|
-
*/
|
|
60
|
-
async close() {
|
|
61
|
-
if (!this.isOpen) return;
|
|
62
|
-
assert(this.readCount === 0, 'Cannot close while reading in progress');
|
|
63
|
-
this.isOpen = false;
|
|
64
|
-
await this._close();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Read bytes into Buffer.
|
|
69
|
-
* @async
|
|
70
|
-
* @param {number} start - Starting position to read at
|
|
71
|
-
* @param {number} length - Number of bytes to read
|
|
72
|
-
* @returns {Buffer} - Buffer
|
|
73
|
-
* @throws {Error} - If Reader is not open
|
|
74
|
-
*/
|
|
75
|
-
async read(start, length) {
|
|
76
|
-
// Don't validate `start` + `length` because this is called so often
|
|
77
|
-
assert(this.isOpen, 'Cannot call `read()` on a reader which is not open');
|
|
78
|
-
|
|
79
|
-
if (length === 0) return Buffer.allocUnsafe();
|
|
80
|
-
|
|
81
|
-
this.readCount++;
|
|
82
|
-
try {
|
|
83
|
-
return await this._read(start, length);
|
|
84
|
-
} finally {
|
|
85
|
-
this.readCount--;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Create readable stream to read from Reader.
|
|
91
|
-
* @param {number} start - Position to start reading at
|
|
92
|
-
* @param {number} length - Number of bytes to read
|
|
93
|
-
* @returns {Object} - Readable stream
|
|
94
|
-
* @throws {Error} - If arguments invalid or reader is not open
|
|
95
|
-
*/
|
|
96
|
-
createReadStream(start, length) {
|
|
97
|
-
// Validate input
|
|
98
|
-
assert(isPositiveIntegerOrZero(start), '`start` must be a positive integer or zero');
|
|
99
|
-
assert(isPositiveIntegerOrZero(length), '`length` must be a positive integer or zero');
|
|
100
|
-
|
|
101
|
-
// Error if not open
|
|
102
|
-
assert(this.isOpen, 'Cannot call `createReadStream()` on a reader which is not open');
|
|
103
|
-
|
|
104
|
-
// Return empty stream for zero-size request
|
|
105
|
-
if (length === 0) {
|
|
106
|
-
const emptyStream = new PassThroughStream();
|
|
107
|
-
setImmediate(() => emptyStream.end());
|
|
108
|
-
return emptyStream;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Get stream
|
|
112
|
-
this.readCount++;
|
|
113
|
-
try {
|
|
114
|
-
const stream = this._createReadStream(start, length);
|
|
115
|
-
|
|
116
|
-
// Mark stream as ended on an `end`, `error` or `close` event.
|
|
117
|
-
// In Node v16, these events don't reliably fire if stream is destroyed with `.destroy()`
|
|
118
|
-
// so capture that too.
|
|
119
|
-
let isEnded = false;
|
|
120
|
-
const onEnd = () => {
|
|
121
|
-
if (isEnded) return;
|
|
122
|
-
isEnded = true;
|
|
123
|
-
this.readCount--;
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
const originalDestroy = stream.destroy;
|
|
127
|
-
stream.destroy = function(err) {
|
|
128
|
-
onEnd();
|
|
129
|
-
return originalDestroy.call(this, err);
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
stream.on('end', onEnd);
|
|
133
|
-
stream.on('error', onEnd);
|
|
134
|
-
stream.on('close', onEnd);
|
|
135
|
-
|
|
136
|
-
return stream;
|
|
137
|
-
} catch (err) {
|
|
138
|
-
this.readCount--;
|
|
139
|
-
throw err;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Open Reader.
|
|
145
|
-
* Default implementation does nothing. Subclasses can optionally implement this.
|
|
146
|
-
* @async
|
|
147
|
-
* @returns {undefined}
|
|
148
|
-
*/
|
|
149
|
-
async _open() {} // eslint-disable-line class-methods-use-this, no-empty-function
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Close Reader.
|
|
153
|
-
* Default implementation does nothing. Subclasses can optionally implement this.
|
|
154
|
-
* @async
|
|
155
|
-
* @returns {undefined}
|
|
156
|
-
*/
|
|
157
|
-
async _close() {} // eslint-disable-line class-methods-use-this, no-empty-function
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Read bytes from Reader into a Buffer.
|
|
161
|
-
* Subclasses can override this.
|
|
162
|
-
* @async
|
|
163
|
-
* @param {number} start - Starting position to read at
|
|
164
|
-
* @param {number} length - Number of bytes to read
|
|
165
|
-
* @returns {Buffer} - Buffer
|
|
166
|
-
*/
|
|
167
|
-
async _read(start, length) {
|
|
168
|
-
const stream = this._createReadStream(start, length);
|
|
169
|
-
const buffer = await streamToBuffer(stream);
|
|
170
|
-
assert(buffer.length === length, 'Unexpected end of file');
|
|
171
|
-
return buffer;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// eslint-disable-next-line jsdoc/require-returns-check
|
|
175
|
-
/**
|
|
176
|
-
* Create readable stream to read from Reader.
|
|
177
|
-
* Subclasses must implement this.
|
|
178
|
-
* @param {number} start - Position to start reading at
|
|
179
|
-
* @param {number} length - Number of bytes to read
|
|
180
|
-
* @returns {Object} - Readable stream
|
|
181
|
-
* @throws {Error} - If fail to create stream
|
|
182
|
-
*/
|
|
183
|
-
_createReadStream(start, length) { // eslint-disable-line class-methods-use-this, no-unused-vars
|
|
184
|
-
throw new Error('Not implemented');
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Shim of `fs` module to prevent file descriptor being closed if stream is destroyed
|
|
189
|
-
const shimmedFs = {
|
|
190
|
-
open() {
|
|
191
|
-
throw new Error(
|
|
192
|
-
'Shimmed FS `open` method should not be called. If you get this error, please raise an issue.'
|
|
193
|
-
);
|
|
194
|
-
},
|
|
195
|
-
read(...args) {
|
|
196
|
-
return fs.read(...args);
|
|
197
|
-
},
|
|
198
|
-
close(fd, cb) {
|
|
199
|
-
setImmediate(() => cb(null));
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
class FdReader extends Reader {
|
|
204
|
-
/**
|
|
205
|
-
* Create `FdReader`.
|
|
206
|
-
* @param {number} fd - File descriptor
|
|
207
|
-
*/
|
|
208
|
-
constructor(fd) {
|
|
209
|
-
super();
|
|
210
|
-
this.fd = fd;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
_close() {
|
|
214
|
-
return closeAsync(this.fd);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
_read(start, length) {
|
|
218
|
-
return new Promise((resolve, reject) => {
|
|
219
|
-
const buffer = Buffer.allocUnsafe(length);
|
|
220
|
-
fs.read(this.fd, buffer, 0, length, start, (err, bytesRead) => {
|
|
221
|
-
if (err) {
|
|
222
|
-
reject(err);
|
|
223
|
-
} else if (bytesRead !== length) {
|
|
224
|
-
reject(new Error('Unexpected end of file'));
|
|
225
|
-
} else {
|
|
226
|
-
resolve(buffer);
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
_createReadStream(start, length) {
|
|
233
|
-
// Use shimmed `fs` with inactive `close()` method,
|
|
234
|
-
// to prevent file descriptor getting closed when stream ends.
|
|
235
|
-
// `autoClose` option works for this purpose when stream ends naturally,
|
|
236
|
-
// but FD still gets closed if `.destroy()` is called.
|
|
237
|
-
// Shimming FS is only way I around this that I could find.
|
|
238
|
-
return fs.createReadStream(null, {start, end: start + length - 1, fd: this.fd, fs: shimmedFs});
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
class FileReader extends Reader {
|
|
243
|
-
/**
|
|
244
|
-
* Create `FileReader`.
|
|
245
|
-
* @param {string} path - File path
|
|
246
|
-
*/
|
|
247
|
-
constructor(path) {
|
|
248
|
-
super();
|
|
249
|
-
this.path = path;
|
|
250
|
-
this.fd = null;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
async _open() {
|
|
254
|
-
this.fd = await openAsync(this.path, 'r', 0o444);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
async _close() {
|
|
258
|
-
await closeAsync(this.fd);
|
|
259
|
-
this.fd = null;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
FileReader.prototype._read = FdReader.prototype._read;
|
|
263
|
-
FileReader.prototype._createReadStream = FdReader.prototype._createReadStream;
|
|
264
|
-
|
|
265
|
-
class BufferReader extends Reader {
|
|
266
|
-
/**
|
|
267
|
-
* Create `BufferReader`.
|
|
268
|
-
* @param {Buffer} buffer - Buffer
|
|
269
|
-
*/
|
|
270
|
-
constructor(buffer) {
|
|
271
|
-
super();
|
|
272
|
-
this.buffer = buffer;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
async _read(start, length) {
|
|
276
|
-
const end = start + length;
|
|
277
|
-
assert(end <= this.buffer.length, 'Cannot read beyond end of buffer');
|
|
278
|
-
return this.buffer.subarray(start, end);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
_createReadStream(start, length) {
|
|
282
|
-
const end = start + length;
|
|
283
|
-
assert(end <= this.buffer.length, 'Cannot read beyond end of buffer');
|
|
284
|
-
const slice = this.buffer.subarray(start, end);
|
|
285
|
-
return ReadableStream.from(slice);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
module.exports = {Reader, FdReader, FileReader, BufferReader};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/* --------------------
|
|
2
|
-
* yauzl-promise module
|
|
3
|
-
* Shared objects
|
|
4
|
-
* ------------------*/
|
|
5
|
-
|
|
6
|
-
/* global FinalizationRegistry */
|
|
7
|
-
|
|
8
|
-
'use strict';
|
|
9
|
-
|
|
10
|
-
// Exports
|
|
11
|
-
|
|
12
|
-
// Object used as private symbol to ensure `Zip` and `Entry` classes cannot be constructed by user
|
|
13
|
-
const INTERNAL_SYMBOL = {};
|
|
14
|
-
|
|
15
|
-
// Finalization registry for entries with uncertain uncompressed size
|
|
16
|
-
const uncertainUncompressedSizeEntriesRegistry = new FinalizationRegistry(
|
|
17
|
-
({zip, ref}) => zip._uncertainUncompressedSizeEntryRefs?.delete(ref)
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
module.exports = {INTERNAL_SYMBOL, uncertainUncompressedSizeEntriesRegistry};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/* --------------------
|
|
2
|
-
* yauzl-promise module
|
|
3
|
-
* Utility functions
|
|
4
|
-
* ------------------*/
|
|
5
|
-
|
|
6
|
-
'use strict';
|
|
7
|
-
|
|
8
|
-
// Modules
|
|
9
|
-
const {Writable: WritableStream, promises: {pipeline}} = require('stream'),
|
|
10
|
-
assert = require('simple-invariant');
|
|
11
|
-
|
|
12
|
-
// Exports
|
|
13
|
-
|
|
14
|
-
module.exports = {decodeBuffer, validateFilename, dosDateTimeToDate, readUInt64LE, streamToBuffer};
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Decode string from buffer, in either CP437 or UTF8 encoding.
|
|
18
|
-
* @param {Buffer} buffer - Buffer
|
|
19
|
-
* @param {number} start - Start position in buffer
|
|
20
|
-
* @param {boolean} isUtf8 - `true` if UTF8 encoded
|
|
21
|
-
* @returns {string} - Decoded string
|
|
22
|
-
*/
|
|
23
|
-
function decodeBuffer(buffer, start, isUtf8) {
|
|
24
|
-
if (isUtf8) return buffer.toString('utf8', start);
|
|
25
|
-
|
|
26
|
-
let str = '';
|
|
27
|
-
for (let i = start; i < buffer.length; i++) {
|
|
28
|
-
str += CP437_CHARS[buffer[i]]; // eslint-disable-line no-use-before-define
|
|
29
|
-
}
|
|
30
|
-
return str;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const CP437_CHARS = '\u0000☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ';
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Validate filename.
|
|
37
|
-
* @param {string} filename - Filename
|
|
38
|
-
* @returns {undefined}
|
|
39
|
-
* @throws {Error} - If invalid
|
|
40
|
-
*/
|
|
41
|
-
function validateFilename(filename) {
|
|
42
|
-
assert(filename.indexOf('\\') === -1, `Invalid characters in filename: ${filename}`);
|
|
43
|
-
assert(
|
|
44
|
-
// eslint-disable-next-line no-use-before-define
|
|
45
|
-
!ABSOLUTE_FILENAME_REGEX1.test(filename) && !ABSOLUTE_FILENAME_REGEX2.test(filename),
|
|
46
|
-
`Absolute path: ${filename}`
|
|
47
|
-
);
|
|
48
|
-
assert(filename.split('/').indexOf('..') === -1, `Relative path: ${filename}`);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const ABSOLUTE_FILENAME_REGEX1 = /^[a-zA-Z]:/,
|
|
52
|
-
ABSOLUTE_FILENAME_REGEX2 = /^\//;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Convert date + time timestamps to `Date` object.
|
|
56
|
-
* DOS date format does not contain any notion of timezone, so interpret as UTC.
|
|
57
|
-
* @param {number} date - Date integer
|
|
58
|
-
* @param {number} time - Time integer
|
|
59
|
-
* @returns {Date} - Date
|
|
60
|
-
*/
|
|
61
|
-
function dosDateTimeToDate(date, time) {
|
|
62
|
-
/* eslint-disable no-bitwise */
|
|
63
|
-
const day = date & 0x1f; // 1-31
|
|
64
|
-
const month = ((date >> 5) & 0xf) - 1; // 1-12, 0-11
|
|
65
|
-
const year = ((date >> 9) & 0x7f) + 1980; // 0-128, 1980-2108
|
|
66
|
-
|
|
67
|
-
const millisecond = 0;
|
|
68
|
-
const second = (time & 0x1f) * 2; // 0-29, 0-58 (even numbers)
|
|
69
|
-
const minute = (time >> 5) & 0x3f; // 0-59
|
|
70
|
-
const hour = (time >> 11) & 0x1f; // 0-23
|
|
71
|
-
/* eslint-enable no-bitwise */
|
|
72
|
-
|
|
73
|
-
return new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Read Uint64 from buffer.
|
|
78
|
-
* There is no native JS function for this, because we can't actually store 64-bit integers precisely.
|
|
79
|
-
* After 53 bits, JavaScript's Number type (IEEE 754 double) can't store individual integers anymore.
|
|
80
|
-
* But 53 bits is enough for our purposes in this context.
|
|
81
|
-
* @param {Buffer} buffer - Buffer
|
|
82
|
-
* @param {number} offset - Offset
|
|
83
|
-
* @returns {number} - 64-bit(ish) integer
|
|
84
|
-
*/
|
|
85
|
-
function readUInt64LE(buffer, offset) {
|
|
86
|
-
// Can't use bitshifting here, because only supports 32-bit integers in JS
|
|
87
|
-
return buffer.readUInt32LE(offset + 4) * 0x100000000 + buffer.readUInt32LE(offset);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Drain contents of a readable stream into a Buffer.
|
|
92
|
-
* @param {Object} stream - Readable stream
|
|
93
|
-
* @returns {Buffer} - Buffer
|
|
94
|
-
*/
|
|
95
|
-
async function streamToBuffer(stream) {
|
|
96
|
-
const chunks = [];
|
|
97
|
-
const collectStream = new WritableStream({
|
|
98
|
-
write(chunk, encoding, cb) {
|
|
99
|
-
chunks.push(chunk);
|
|
100
|
-
cb();
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
await pipeline(stream, collectStream);
|
|
104
|
-
return Buffer.concat(chunks);
|
|
105
|
-
}
|