@nocobase/plugin-action-import 2.4.0-alpha.8 → 2.4.0-alpha.9
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/dist/externalVersion.js +9 -9
- package/dist/node_modules/exceljs/excel.js +14 -14
- package/dist/node_modules/exceljs/node_modules/tmp/lib/tmp.js +222 -134
- package/dist/node_modules/exceljs/node_modules/tmp/package.json +5 -17
- package/dist/node_modules/exceljs/package.json +1 -1
- package/dist/node_modules/xlsx/package.json +1 -1
- package/package.json +2 -2
- package/dist/node_modules/exceljs/node_modules/uuid/dist/bin/uuid +0 -2
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/index.js +0 -9
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/md5.js +0 -215
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/nil.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/parse.js +0 -35
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/regex.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/rng.js +0 -19
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/sha1.js +0 -96
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/stringify.js +0 -30
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v1.js +0 -95
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v3.js +0 -4
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v35.js +0 -64
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v4.js +0 -24
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/v5.js +0 -4
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/validate.js +0 -7
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-browser/version.js +0 -11
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/index.js +0 -9
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/md5.js +0 -13
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/nil.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/parse.js +0 -35
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/regex.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/rng.js +0 -12
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/sha1.js +0 -13
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/stringify.js +0 -29
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v1.js +0 -95
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v3.js +0 -4
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v35.js +0 -64
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v4.js +0 -24
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/v5.js +0 -4
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/validate.js +0 -7
- package/dist/node_modules/exceljs/node_modules/uuid/dist/esm-node/version.js +0 -11
- package/dist/node_modules/exceljs/node_modules/uuid/dist/index.js +0 -79
- package/dist/node_modules/exceljs/node_modules/uuid/dist/md5-browser.js +0 -223
- package/dist/node_modules/exceljs/node_modules/uuid/dist/md5.js +0 -23
- package/dist/node_modules/exceljs/node_modules/uuid/dist/nil.js +0 -8
- package/dist/node_modules/exceljs/node_modules/uuid/dist/parse.js +0 -45
- package/dist/node_modules/exceljs/node_modules/uuid/dist/regex.js +0 -8
- package/dist/node_modules/exceljs/node_modules/uuid/dist/rng-browser.js +0 -26
- package/dist/node_modules/exceljs/node_modules/uuid/dist/rng.js +0 -24
- package/dist/node_modules/exceljs/node_modules/uuid/dist/sha1-browser.js +0 -104
- package/dist/node_modules/exceljs/node_modules/uuid/dist/sha1.js +0 -23
- package/dist/node_modules/exceljs/node_modules/uuid/dist/stringify.js +0 -39
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuid.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidNIL.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidParse.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidStringify.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidValidate.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidVersion.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv1.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv3.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv4.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/umd/uuidv5.min.js +0 -1
- package/dist/node_modules/exceljs/node_modules/uuid/dist/uuid-bin.js +0 -85
- package/dist/node_modules/exceljs/node_modules/uuid/dist/v1.js +0 -107
- package/dist/node_modules/exceljs/node_modules/uuid/dist/v3.js +0 -16
- package/dist/node_modules/exceljs/node_modules/uuid/dist/v35.js +0 -78
- package/dist/node_modules/exceljs/node_modules/uuid/dist/v4.js +0 -37
- package/dist/node_modules/exceljs/node_modules/uuid/dist/v5.js +0 -16
- package/dist/node_modules/exceljs/node_modules/uuid/dist/validate.js +0 -17
- package/dist/node_modules/exceljs/node_modules/uuid/dist/version.js +0 -21
- package/dist/node_modules/exceljs/node_modules/uuid/package.json +0 -135
|
@@ -18,34 +18,24 @@ const _c = { fs: fs.constants, os: os.constants };
|
|
|
18
18
|
/*
|
|
19
19
|
* The working inner variables.
|
|
20
20
|
*/
|
|
21
|
-
const
|
|
22
|
-
// the random characters to choose from
|
|
21
|
+
const // the random characters to choose from
|
|
23
22
|
RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
|
|
24
|
-
|
|
25
23
|
TEMPLATE_PATTERN = /XXXXXX/,
|
|
26
|
-
|
|
27
24
|
DEFAULT_TRIES = 3,
|
|
28
|
-
|
|
29
25
|
CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),
|
|
30
|
-
|
|
31
26
|
// constants are off on the windows platform and will not match the actual errno codes
|
|
32
27
|
IS_WIN32 = os.platform() === 'win32',
|
|
33
28
|
EBADF = _c.EBADF || _c.os.errno.EBADF,
|
|
34
29
|
ENOENT = _c.ENOENT || _c.os.errno.ENOENT,
|
|
35
|
-
|
|
36
30
|
DIR_MODE = 0o700 /* 448 */,
|
|
37
31
|
FILE_MODE = 0o600 /* 384 */,
|
|
38
|
-
|
|
39
32
|
EXIT = 'exit',
|
|
40
|
-
|
|
41
33
|
// this will hold the objects need to be removed on exit
|
|
42
34
|
_removeObjects = [],
|
|
43
|
-
|
|
44
35
|
// API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback
|
|
45
36
|
FN_RMDIR_SYNC = fs.rmdirSync.bind(fs);
|
|
46
37
|
|
|
47
|
-
let
|
|
48
|
-
_gracefulCleanup = false;
|
|
38
|
+
let _gracefulCleanup = false;
|
|
49
39
|
|
|
50
40
|
/**
|
|
51
41
|
* Recursively remove a directory and its contents.
|
|
@@ -75,38 +65,35 @@ function FN_RIMRAF_SYNC(dirPath) {
|
|
|
75
65
|
* @param {?tmpNameCallback} callback the callback function
|
|
76
66
|
*/
|
|
77
67
|
function tmpName(options, callback) {
|
|
78
|
-
const
|
|
79
|
-
args = _parseArguments(options, callback),
|
|
68
|
+
const args = _parseArguments(options, callback),
|
|
80
69
|
opts = args[0],
|
|
81
70
|
cb = args[1];
|
|
82
71
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
} catch (err) {
|
|
86
|
-
return cb(err);
|
|
87
|
-
}
|
|
72
|
+
_assertAndSanitizeOptions(opts, function (err, sanitizedOptions) {
|
|
73
|
+
if (err) return cb(err);
|
|
88
74
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
75
|
+
let tries = sanitizedOptions.tries;
|
|
76
|
+
(function _getUniqueName() {
|
|
77
|
+
try {
|
|
78
|
+
const name = _generateTmpName(sanitizedOptions);
|
|
93
79
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
/* istanbul ignore else */
|
|
97
|
-
if (!err) {
|
|
80
|
+
// check whether the path exists then retry if needed
|
|
81
|
+
fs.stat(name, function (err) {
|
|
98
82
|
/* istanbul ignore else */
|
|
99
|
-
if (
|
|
83
|
+
if (!err) {
|
|
84
|
+
/* istanbul ignore else */
|
|
85
|
+
if (tries-- > 0) return _getUniqueName();
|
|
100
86
|
|
|
101
|
-
|
|
102
|
-
|
|
87
|
+
return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));
|
|
88
|
+
}
|
|
103
89
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
90
|
+
cb(null, name);
|
|
91
|
+
});
|
|
92
|
+
} catch (err) {
|
|
93
|
+
cb(err);
|
|
94
|
+
}
|
|
95
|
+
})();
|
|
96
|
+
});
|
|
110
97
|
}
|
|
111
98
|
|
|
112
99
|
/**
|
|
@@ -117,15 +104,14 @@ function tmpName(options, callback) {
|
|
|
117
104
|
* @throws {Error} if the options are invalid or could not generate a filename
|
|
118
105
|
*/
|
|
119
106
|
function tmpNameSync(options) {
|
|
120
|
-
const
|
|
121
|
-
args = _parseArguments(options),
|
|
107
|
+
const args = _parseArguments(options),
|
|
122
108
|
opts = args[0];
|
|
123
109
|
|
|
124
|
-
|
|
110
|
+
const sanitizedOptions = _assertAndSanitizeOptionsSync(opts);
|
|
125
111
|
|
|
126
|
-
let tries =
|
|
112
|
+
let tries = sanitizedOptions.tries;
|
|
127
113
|
do {
|
|
128
|
-
const name = _generateTmpName(
|
|
114
|
+
const name = _generateTmpName(sanitizedOptions);
|
|
129
115
|
try {
|
|
130
116
|
fs.statSync(name);
|
|
131
117
|
} catch (e) {
|
|
@@ -143,8 +129,7 @@ function tmpNameSync(options) {
|
|
|
143
129
|
* @param {?fileCallback} callback
|
|
144
130
|
*/
|
|
145
131
|
function file(options, callback) {
|
|
146
|
-
const
|
|
147
|
-
args = _parseArguments(options, callback),
|
|
132
|
+
const args = _parseArguments(options, callback),
|
|
148
133
|
opts = args[0],
|
|
149
134
|
cb = args[1];
|
|
150
135
|
|
|
@@ -181,13 +166,12 @@ function file(options, callback) {
|
|
|
181
166
|
* @throws {Error} if cannot create a file
|
|
182
167
|
*/
|
|
183
168
|
function fileSync(options) {
|
|
184
|
-
const
|
|
185
|
-
args = _parseArguments(options),
|
|
169
|
+
const args = _parseArguments(options),
|
|
186
170
|
opts = args[0];
|
|
187
171
|
|
|
188
172
|
const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;
|
|
189
173
|
const name = tmpNameSync(opts);
|
|
190
|
-
|
|
174
|
+
let fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);
|
|
191
175
|
/* istanbul ignore else */
|
|
192
176
|
if (opts.discardDescriptor) {
|
|
193
177
|
fs.closeSync(fd);
|
|
@@ -208,8 +192,7 @@ function fileSync(options) {
|
|
|
208
192
|
* @param {?dirCallback} callback
|
|
209
193
|
*/
|
|
210
194
|
function dir(options, callback) {
|
|
211
|
-
const
|
|
212
|
-
args = _parseArguments(options, callback),
|
|
195
|
+
const args = _parseArguments(options, callback),
|
|
213
196
|
opts = args[0],
|
|
214
197
|
cb = args[1];
|
|
215
198
|
|
|
@@ -236,8 +219,7 @@ function dir(options, callback) {
|
|
|
236
219
|
* @throws {Error} if it cannot create a directory
|
|
237
220
|
*/
|
|
238
221
|
function dirSync(options) {
|
|
239
|
-
const
|
|
240
|
-
args = _parseArguments(options),
|
|
222
|
+
const args = _parseArguments(options),
|
|
241
223
|
opts = args[0];
|
|
242
224
|
|
|
243
225
|
const name = tmpNameSync(opts);
|
|
@@ -288,8 +270,7 @@ function _removeFileSync(fdPath) {
|
|
|
288
270
|
} finally {
|
|
289
271
|
try {
|
|
290
272
|
fs.unlinkSync(fdPath[1]);
|
|
291
|
-
}
|
|
292
|
-
catch (e) {
|
|
273
|
+
} catch (e) {
|
|
293
274
|
// reraise any unanticipated error
|
|
294
275
|
if (!_isENOENT(e)) rethrownException = e;
|
|
295
276
|
}
|
|
@@ -361,7 +342,6 @@ function _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCall
|
|
|
361
342
|
|
|
362
343
|
// if sync is true, the next parameter will be ignored
|
|
363
344
|
return function _cleanupCallback(next) {
|
|
364
|
-
|
|
365
345
|
/* istanbul ignore else */
|
|
366
346
|
if (!called) {
|
|
367
347
|
// remove cleanupCallback from cache
|
|
@@ -374,7 +354,7 @@ function _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCall
|
|
|
374
354
|
if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {
|
|
375
355
|
return removeFunction(fileOrDirName);
|
|
376
356
|
} else {
|
|
377
|
-
return removeFunction(fileOrDirName, next || function() {});
|
|
357
|
+
return removeFunction(fileOrDirName, next || function () {});
|
|
378
358
|
}
|
|
379
359
|
}
|
|
380
360
|
};
|
|
@@ -409,8 +389,7 @@ function _garbageCollector() {
|
|
|
409
389
|
* @private
|
|
410
390
|
*/
|
|
411
391
|
function _randomChars(howMany) {
|
|
412
|
-
let
|
|
413
|
-
value = [],
|
|
392
|
+
let value = [],
|
|
414
393
|
rnd = null;
|
|
415
394
|
|
|
416
395
|
// make sure that we do not fail because we ran out of entropy
|
|
@@ -420,24 +399,13 @@ function _randomChars(howMany) {
|
|
|
420
399
|
rnd = crypto.pseudoRandomBytes(howMany);
|
|
421
400
|
}
|
|
422
401
|
|
|
423
|
-
for (
|
|
402
|
+
for (let i = 0; i < howMany; i++) {
|
|
424
403
|
value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);
|
|
425
404
|
}
|
|
426
405
|
|
|
427
406
|
return value.join('');
|
|
428
407
|
}
|
|
429
408
|
|
|
430
|
-
/**
|
|
431
|
-
* Helper which determines whether a string s is blank, that is undefined, or empty or null.
|
|
432
|
-
*
|
|
433
|
-
* @private
|
|
434
|
-
* @param {string} s
|
|
435
|
-
* @returns {Boolean} true whether the string s is blank, false otherwise
|
|
436
|
-
*/
|
|
437
|
-
function _isBlank(s) {
|
|
438
|
-
return s === null || _isUndefined(s) || !s.trim();
|
|
439
|
-
}
|
|
440
|
-
|
|
441
409
|
/**
|
|
442
410
|
* Checks whether the `obj` parameter is defined or not.
|
|
443
411
|
*
|
|
@@ -479,6 +447,51 @@ function _parseArguments(options, callback) {
|
|
|
479
447
|
return [actualOptions, callback];
|
|
480
448
|
}
|
|
481
449
|
|
|
450
|
+
/**
|
|
451
|
+
* Resolve the specified path name in respect to tmpDir.
|
|
452
|
+
*
|
|
453
|
+
* The specified name might include relative path components, e.g. ../
|
|
454
|
+
* so we need to resolve in order to be sure that is is located inside tmpDir
|
|
455
|
+
*
|
|
456
|
+
* @private
|
|
457
|
+
*/
|
|
458
|
+
function _resolvePath(name, tmpDir, cb) {
|
|
459
|
+
const pathToResolve = path.isAbsolute(name) ? name : path.join(tmpDir, name);
|
|
460
|
+
|
|
461
|
+
fs.stat(pathToResolve, function (err) {
|
|
462
|
+
if (err) {
|
|
463
|
+
fs.realpath(path.dirname(pathToResolve), function (err, parentDir) {
|
|
464
|
+
if (err) return cb(err);
|
|
465
|
+
|
|
466
|
+
cb(null, path.join(parentDir, path.basename(pathToResolve)));
|
|
467
|
+
});
|
|
468
|
+
} else {
|
|
469
|
+
fs.realpath(pathToResolve, cb);
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* Resolve the specified path name in respect to tmpDir.
|
|
476
|
+
*
|
|
477
|
+
* The specified name might include relative path components, e.g. ../
|
|
478
|
+
* so we need to resolve in order to be sure that is is located inside tmpDir
|
|
479
|
+
*
|
|
480
|
+
* @private
|
|
481
|
+
*/
|
|
482
|
+
function _resolvePathSync(name, tmpDir) {
|
|
483
|
+
const pathToResolve = path.isAbsolute(name) ? name : path.join(tmpDir, name);
|
|
484
|
+
|
|
485
|
+
try {
|
|
486
|
+
fs.statSync(pathToResolve);
|
|
487
|
+
return fs.realpathSync(pathToResolve);
|
|
488
|
+
} catch (_err) {
|
|
489
|
+
const parentDir = fs.realpathSync(path.dirname(pathToResolve));
|
|
490
|
+
|
|
491
|
+
return path.join(parentDir, path.basename(pathToResolve));
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
|
|
482
495
|
/**
|
|
483
496
|
* Generates a new temporary name.
|
|
484
497
|
*
|
|
@@ -487,16 +500,17 @@ function _parseArguments(options, callback) {
|
|
|
487
500
|
* @private
|
|
488
501
|
*/
|
|
489
502
|
function _generateTmpName(opts) {
|
|
490
|
-
|
|
491
503
|
const tmpDir = opts.tmpdir;
|
|
492
504
|
|
|
493
505
|
/* istanbul ignore else */
|
|
494
|
-
if (!_isUndefined(opts.name))
|
|
506
|
+
if (!_isUndefined(opts.name)) {
|
|
495
507
|
return path.join(tmpDir, opts.dir, opts.name);
|
|
508
|
+
}
|
|
496
509
|
|
|
497
510
|
/* istanbul ignore else */
|
|
498
|
-
if (!_isUndefined(opts.template))
|
|
511
|
+
if (!_isUndefined(opts.template)) {
|
|
499
512
|
return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));
|
|
513
|
+
}
|
|
500
514
|
|
|
501
515
|
// prefix and postfix
|
|
502
516
|
const name = [
|
|
@@ -512,33 +526,61 @@ function _generateTmpName(opts) {
|
|
|
512
526
|
}
|
|
513
527
|
|
|
514
528
|
/**
|
|
515
|
-
*
|
|
516
|
-
*
|
|
529
|
+
* Check the prefix, postfix, and template options.
|
|
530
|
+
*
|
|
531
|
+
* Rejects non-string inputs so that a non-string `.includes('..')` cannot evade
|
|
532
|
+
* the substring check (e.g. an Array whose `.includes('..')` is element-wise,
|
|
533
|
+
* or a duck-typed object with a custom `.includes`), and so that the value is
|
|
534
|
+
* not later coerced to a string with traversal sequences via `Array.prototype.join`
|
|
535
|
+
* or `path.join`.
|
|
517
536
|
*
|
|
518
|
-
* @param {Options} options
|
|
519
537
|
* @private
|
|
520
538
|
*/
|
|
521
|
-
function
|
|
539
|
+
function _assertPath(option, value) {
|
|
540
|
+
if (typeof value !== 'string') {
|
|
541
|
+
throw new Error(`${option} option must be a string, got "${typeof value}".`);
|
|
542
|
+
}
|
|
522
543
|
|
|
523
|
-
|
|
544
|
+
if (value.includes("..")) {
|
|
545
|
+
throw new Error("Relative value not allowed");
|
|
546
|
+
}
|
|
524
547
|
|
|
525
|
-
|
|
548
|
+
return value;
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
/**
|
|
552
|
+
* Asserts and sanitizes the basic options.
|
|
553
|
+
*
|
|
554
|
+
* @private
|
|
555
|
+
*/
|
|
556
|
+
function _assertOptionsBase(options) {
|
|
557
|
+
if (!_isUndefined(options.name)) {
|
|
558
|
+
const name = options.name;
|
|
559
|
+
|
|
560
|
+
// assert that name is not absolute and does not contain a path
|
|
561
|
+
if (path.isAbsolute(name)) throw new Error(`name option must not contain an absolute path, found "${name}".`);
|
|
562
|
+
|
|
563
|
+
// must not fail on valid .<name> or ..<name> or similar such constructs
|
|
564
|
+
const basename = path.basename(name);
|
|
565
|
+
if (basename === '..' || basename === '.' || basename !== name) {
|
|
566
|
+
throw new Error(`name option must not contain a path, found "${name}".`);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
526
569
|
|
|
527
|
-
/* istanbul ignore else */
|
|
528
|
-
if (!_isUndefined(options.name))
|
|
529
|
-
_assertIsRelative(options.name, 'name', tmpDir);
|
|
530
|
-
/* istanbul ignore else */
|
|
531
|
-
if (!_isUndefined(options.dir))
|
|
532
|
-
_assertIsRelative(options.dir, 'dir', tmpDir);
|
|
533
570
|
/* istanbul ignore else */
|
|
534
571
|
if (!_isUndefined(options.template)) {
|
|
535
|
-
|
|
536
|
-
|
|
572
|
+
if (typeof options.template !== 'string') {
|
|
573
|
+
throw new Error(`template option must be a string, got "${typeof options.template}".`);
|
|
574
|
+
}
|
|
575
|
+
if (!options.template.match(TEMPLATE_PATTERN)) {
|
|
537
576
|
throw new Error(`Invalid template, found "${options.template}".`);
|
|
577
|
+
}
|
|
538
578
|
}
|
|
579
|
+
|
|
539
580
|
/* istanbul ignore else */
|
|
540
|
-
if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)
|
|
581
|
+
if ((!_isUndefined(options.tries) && isNaN(options.tries)) || options.tries < 0) {
|
|
541
582
|
throw new Error(`Invalid tries, found "${options.tries}".`);
|
|
583
|
+
}
|
|
542
584
|
|
|
543
585
|
// if a name was specified we will try once
|
|
544
586
|
options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;
|
|
@@ -547,65 +589,104 @@ function _assertAndSanitizeOptions(options) {
|
|
|
547
589
|
options.discardDescriptor = !!options.discardDescriptor;
|
|
548
590
|
options.unsafeCleanup = !!options.unsafeCleanup;
|
|
549
591
|
|
|
550
|
-
// sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to
|
|
551
|
-
options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));
|
|
552
|
-
options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));
|
|
553
|
-
// sanitize further if template is relative to options.dir
|
|
554
|
-
options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);
|
|
555
|
-
|
|
556
592
|
// for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to
|
|
557
|
-
options.
|
|
558
|
-
options.
|
|
559
|
-
options.
|
|
593
|
+
options.prefix = _isUndefined(options.prefix) ? '' : _assertPath('prefix', options.prefix);
|
|
594
|
+
options.postfix = _isUndefined(options.postfix) ? '' : _assertPath('postfix', options.postfix);
|
|
595
|
+
options.template = _isUndefined(options.template) ? undefined : _assertPath('template', options.template);
|
|
560
596
|
}
|
|
561
597
|
|
|
562
598
|
/**
|
|
563
|
-
*
|
|
599
|
+
* Gets the relative directory to tmpDir.
|
|
564
600
|
*
|
|
565
|
-
*
|
|
566
|
-
|
|
601
|
+
* @private
|
|
602
|
+
*/
|
|
603
|
+
function _getRelativePath(option, name, tmpDir, cb) {
|
|
604
|
+
if (_isUndefined(name)) return cb(null);
|
|
605
|
+
|
|
606
|
+
_resolvePath(name, tmpDir, function (err, resolvedPath) {
|
|
607
|
+
if (err) return cb(err);
|
|
608
|
+
|
|
609
|
+
const relativePath = path.relative(tmpDir, resolvedPath);
|
|
610
|
+
|
|
611
|
+
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
612
|
+
return cb(new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`));
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
cb(null, relativePath);
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Gets the relative path to tmpDir.
|
|
567
621
|
*
|
|
568
|
-
* @param name
|
|
569
|
-
* @param tmpDir
|
|
570
|
-
* @returns {string}
|
|
571
622
|
* @private
|
|
572
623
|
*/
|
|
573
|
-
function
|
|
574
|
-
if (name
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
624
|
+
function _getRelativePathSync(option, name, tmpDir) {
|
|
625
|
+
if (_isUndefined(name)) return;
|
|
626
|
+
|
|
627
|
+
const resolvedPath = _resolvePathSync(name, tmpDir);
|
|
628
|
+
const relativePath = path.relative(tmpDir, resolvedPath);
|
|
629
|
+
|
|
630
|
+
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
631
|
+
throw new Error(`${option} option must be relative to "${tmpDir}", found "${relativePath}".`);
|
|
578
632
|
}
|
|
633
|
+
|
|
634
|
+
return relativePath;
|
|
579
635
|
}
|
|
580
636
|
|
|
581
637
|
/**
|
|
582
|
-
* Asserts whether specified
|
|
638
|
+
* Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing
|
|
639
|
+
* options.
|
|
583
640
|
*
|
|
584
|
-
* @param {string} name
|
|
585
|
-
* @param {string} option
|
|
586
|
-
* @param {string} tmpDir
|
|
587
|
-
* @throws {Error}
|
|
588
641
|
* @private
|
|
589
642
|
*/
|
|
590
|
-
function
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
else { // if (option === 'dir' || option === 'template') {
|
|
601
|
-
// assert that dir or template are relative to tmpDir
|
|
602
|
-
if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {
|
|
603
|
-
throw new Error(`${option} option must be relative to "${tmpDir}", found "${name}".`);
|
|
643
|
+
function _assertAndSanitizeOptions(options, cb) {
|
|
644
|
+
_getTmpDir(options, function (err, tmpDir) {
|
|
645
|
+
if (err) return cb(err);
|
|
646
|
+
|
|
647
|
+
options.tmpdir = tmpDir;
|
|
648
|
+
|
|
649
|
+
try {
|
|
650
|
+
_assertOptionsBase(options, tmpDir);
|
|
651
|
+
} catch (err) {
|
|
652
|
+
return cb(err);
|
|
604
653
|
}
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
654
|
+
|
|
655
|
+
// sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to
|
|
656
|
+
_getRelativePath('dir', options.dir, tmpDir, function (err, dir) {
|
|
657
|
+
if (err) return cb(err);
|
|
658
|
+
|
|
659
|
+
options.dir = _isUndefined(dir) ? '' : dir;
|
|
660
|
+
|
|
661
|
+
// sanitize further if template is relative to options.dir
|
|
662
|
+
_getRelativePath('template', options.template, tmpDir, function (err, template) {
|
|
663
|
+
if (err) return cb(err);
|
|
664
|
+
|
|
665
|
+
options.template = template;
|
|
666
|
+
|
|
667
|
+
cb(null, options);
|
|
668
|
+
});
|
|
669
|
+
});
|
|
670
|
+
});
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing
|
|
675
|
+
* options.
|
|
676
|
+
*
|
|
677
|
+
* @private
|
|
678
|
+
*/
|
|
679
|
+
function _assertAndSanitizeOptionsSync(options) {
|
|
680
|
+
const tmpDir = (options.tmpdir = _getTmpDirSync(options));
|
|
681
|
+
|
|
682
|
+
_assertOptionsBase(options, tmpDir);
|
|
683
|
+
|
|
684
|
+
const dir = _getRelativePathSync('dir', options.dir, tmpDir);
|
|
685
|
+
options.dir = _isUndefined(dir) ? '' : dir;
|
|
686
|
+
|
|
687
|
+
options.template = _getRelativePathSync('template', options.template, tmpDir);
|
|
688
|
+
|
|
689
|
+
return options;
|
|
609
690
|
}
|
|
610
691
|
|
|
611
692
|
/**
|
|
@@ -663,11 +744,18 @@ function setGracefulCleanup() {
|
|
|
663
744
|
* Returns the currently configured tmp dir from os.tmpdir().
|
|
664
745
|
*
|
|
665
746
|
* @private
|
|
666
|
-
* @param {?Options} options
|
|
667
|
-
* @returns {string} the currently configured tmp dir
|
|
668
747
|
*/
|
|
669
|
-
function _getTmpDir(options) {
|
|
670
|
-
return
|
|
748
|
+
function _getTmpDir(options, cb) {
|
|
749
|
+
return fs.realpath((options && options.tmpdir) || os.tmpdir(), cb);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
/**
|
|
753
|
+
* Returns the currently configured tmp dir from os.tmpdir().
|
|
754
|
+
*
|
|
755
|
+
* @private
|
|
756
|
+
*/
|
|
757
|
+
function _getTmpDirSync(options) {
|
|
758
|
+
return fs.realpathSync((options && options.tmpdir) || os.tmpdir());
|
|
671
759
|
}
|
|
672
760
|
|
|
673
761
|
// Install process exit listener
|
|
@@ -768,7 +856,7 @@ Object.defineProperty(module.exports, 'tmpdir', {
|
|
|
768
856
|
enumerable: true,
|
|
769
857
|
configurable: false,
|
|
770
858
|
get: function () {
|
|
771
|
-
return
|
|
859
|
+
return _getTmpDirSync();
|
|
772
860
|
}
|
|
773
861
|
});
|
|
774
862
|
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tmp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"description": "Temporary file and directory creator",
|
|
5
|
-
"author": "KARASZI István <github@spam.raszi.hu>
|
|
6
|
-
"contributors": [
|
|
7
|
-
|
|
8
|
-
],
|
|
9
|
-
"keywords": [
|
|
10
|
-
"temporary",
|
|
11
|
-
"tmp",
|
|
12
|
-
"temp",
|
|
13
|
-
"tempdir",
|
|
14
|
-
"tempfile",
|
|
15
|
-
"tmpdir",
|
|
16
|
-
"tmpfile"
|
|
17
|
-
],
|
|
5
|
+
"author": "KARASZI István <github@spam.raszi.hu>",
|
|
6
|
+
"contributors": ["Carsten Klein <trancesilken@gmail.com> (https://github.com/silkentrance)"],
|
|
7
|
+
"keywords": ["temporary", "tmp", "temp", "tempdir", "tempfile", "tmpdir", "tmpfile"],
|
|
18
8
|
"license": "MIT",
|
|
19
9
|
"repository": "https://github.com/raszi/node-tmp.git",
|
|
20
10
|
"homepage": "http://github.com/raszi/node-tmp",
|
|
@@ -33,9 +23,7 @@
|
|
|
33
23
|
"mocha": "^10.2.0"
|
|
34
24
|
},
|
|
35
25
|
"main": "lib/tmp.js",
|
|
36
|
-
"files": [
|
|
37
|
-
"lib/"
|
|
38
|
-
],
|
|
26
|
+
"files": ["lib/"],
|
|
39
27
|
"changelog": {
|
|
40
28
|
"labels": {
|
|
41
29
|
"breaking": ":boom: Breaking Change",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"exceljs","version":"4.4.0","description":"Excel Workbook Manager - Read and Write xlsx and csv Files.","private":false,"license":"MIT","author":{"name":"Guyon Roche","email":"guyon@live.com"},"repository":{"type":"git","url":"https://github.com/exceljs/exceljs.git"},"engines":{"node":">=8.3.0"},"main":"./excel.js","browser":"./dist/exceljs.min.js","types":"./index.d.ts","files":["dist","lib","excel.js","LICENSE","README.md","README_zh.md","index.ts","index.d.ts"],"scripts":{"test":"npm run test:full","test:es5":"export EXCEL_BUILD=es5 && npm run test:full","test:full":"npm run build && npm run test:unit && npm run test:integration && npm run test:end-to-end && npm run test:jasmine","test:version":"npm run build && npm run test:unit && npm run test:integration && npm run test:end-to-end && npm run test:browser && npm run test:dist","test:all":"npm run test:native && npm run test:es5","test:native":"npm run test:full","test:unit":"mocha --require spec/config/setup --require spec/config/setup-unit spec/unit --recursive","test:integration":"mocha --require spec/config/setup spec/integration --recursive","test:end-to-end":"mocha --require spec/config/setup spec/end-to-end --recursive","test:browser":"if [ ! -f .disable-test-browser ]; then npm run build && npm run test:jasmine; fi","test:jasmine":"grunt jasmine","test:unit:es5":"export EXCEL_BUILD=es5 && npm run test:unit","test:integration:es5":"export EXCEL_BUILD=es5 && npm run test:integration","test:end-to-end:es5":"export EXCEL_BUILD=es5 && npm run test:end-to-end","test:dist":"mocha --require spec/config/setup spec/dist --recursive","test:manual":"node spec/manual/app.js","test:typescript":"mocha -r ts-node/register spec/typescript/**/*.spec.ts","clean-build":"npm run clean && npm run build","lint":"eslint --format node_modules/eslint-friendly-formatter .","lint:fix":"prettier-eslint --write $(pwd)'/**/*.js'","lint:staged":"lint-staged","clean":"rm -rf build/ && rm -rf dist","benchmark":"node --expose-gc benchmark","benchmark:debug":"node --expose-gc --inspect-brk --trace-deopt benchmark","build":"grunt build","install-build":"npm install && grunt build","preversion":"npm run clean && npm run build && npm run test:version","postversion":"git push --no-verify && git push --tags --no-verify"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.js":["prettier-eslint --write","eslint --format node_modules/eslint-friendly-formatter","git add"]},"keywords":["xlsx","json","csv","excel","font","border","fill","number","format","number format","alignment","office","spreadsheet","workbook","defined names","data validations","rich text","in-cell format","outlineLevel","views","frozen","split","pageSetup"],"dependencies":{"archiver":"^5.0.0","dayjs":"^1.8.34","fast-csv":"^4.3.1","jszip":"^3.10.1","readable-stream":"^3.6.0","saxes":"^5.0.1","tmp":"^0.2.0","unzipper":"^0.10.11","uuid":"^8.3.0"},"devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.4","@babel/preset-env":"^7.11.0","@types/chai":"^4.2.12","@types/mocha":"^8.0.3","@types/node":"^14.11.2","babelify":"^10.0.0","browserify":"^16.5.2","chai":"^4.2.0","chai-datetime":"^1.7.0","chai-xml":"^0.3.2","core-js":"^3.6.5","dirty-chai":"^2.0.1","eslint":"^6.5.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.12.0","eslint-friendly-formatter":"^4.0.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","express":"^4.16.4","got":"^9.0.0","grunt":"^1.3.0","grunt-babel":"^8.0.0","grunt-browserify":"^5.3.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-jasmine":"^2.2.0","grunt-contrib-watch":"^1.1.0","grunt-exorcise":"^2.1.1","grunt-terser":"^1.0.0","husky":"^4.3.0","lint-staged":"^10.2.13","mocha":"^7.2.0","prettier-eslint":"^11.0.0","prettier-eslint-cli":"^5.0.0","regenerator-runtime":"^0.13.7","sax":"^1.2.4","ts-node":"^8.10.2","typescript":"^3.9.7"},"_lastModified":"2026-09-
|
|
1
|
+
{"name":"exceljs","version":"4.4.0","description":"Excel Workbook Manager - Read and Write xlsx and csv Files.","private":false,"license":"MIT","author":{"name":"Guyon Roche","email":"guyon@live.com"},"repository":{"type":"git","url":"https://github.com/exceljs/exceljs.git"},"engines":{"node":">=8.3.0"},"main":"./excel.js","browser":"./dist/exceljs.min.js","types":"./index.d.ts","files":["dist","lib","excel.js","LICENSE","README.md","README_zh.md","index.ts","index.d.ts"],"scripts":{"test":"npm run test:full","test:es5":"export EXCEL_BUILD=es5 && npm run test:full","test:full":"npm run build && npm run test:unit && npm run test:integration && npm run test:end-to-end && npm run test:jasmine","test:version":"npm run build && npm run test:unit && npm run test:integration && npm run test:end-to-end && npm run test:browser && npm run test:dist","test:all":"npm run test:native && npm run test:es5","test:native":"npm run test:full","test:unit":"mocha --require spec/config/setup --require spec/config/setup-unit spec/unit --recursive","test:integration":"mocha --require spec/config/setup spec/integration --recursive","test:end-to-end":"mocha --require spec/config/setup spec/end-to-end --recursive","test:browser":"if [ ! -f .disable-test-browser ]; then npm run build && npm run test:jasmine; fi","test:jasmine":"grunt jasmine","test:unit:es5":"export EXCEL_BUILD=es5 && npm run test:unit","test:integration:es5":"export EXCEL_BUILD=es5 && npm run test:integration","test:end-to-end:es5":"export EXCEL_BUILD=es5 && npm run test:end-to-end","test:dist":"mocha --require spec/config/setup spec/dist --recursive","test:manual":"node spec/manual/app.js","test:typescript":"mocha -r ts-node/register spec/typescript/**/*.spec.ts","clean-build":"npm run clean && npm run build","lint":"eslint --format node_modules/eslint-friendly-formatter .","lint:fix":"prettier-eslint --write $(pwd)'/**/*.js'","lint:staged":"lint-staged","clean":"rm -rf build/ && rm -rf dist","benchmark":"node --expose-gc benchmark","benchmark:debug":"node --expose-gc --inspect-brk --trace-deopt benchmark","build":"grunt build","install-build":"npm install && grunt build","preversion":"npm run clean && npm run build && npm run test:version","postversion":"git push --no-verify && git push --tags --no-verify"},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"*.js":["prettier-eslint --write","eslint --format node_modules/eslint-friendly-formatter","git add"]},"keywords":["xlsx","json","csv","excel","font","border","fill","number","format","number format","alignment","office","spreadsheet","workbook","defined names","data validations","rich text","in-cell format","outlineLevel","views","frozen","split","pageSetup"],"dependencies":{"archiver":"^5.0.0","dayjs":"^1.8.34","fast-csv":"^4.3.1","jszip":"^3.10.1","readable-stream":"^3.6.0","saxes":"^5.0.1","tmp":"^0.2.0","unzipper":"^0.10.11","uuid":"^8.3.0"},"devDependencies":{"@babel/cli":"^7.10.5","@babel/core":"^7.11.4","@babel/preset-env":"^7.11.0","@types/chai":"^4.2.12","@types/mocha":"^8.0.3","@types/node":"^14.11.2","babelify":"^10.0.0","browserify":"^16.5.2","chai":"^4.2.0","chai-datetime":"^1.7.0","chai-xml":"^0.3.2","core-js":"^3.6.5","dirty-chai":"^2.0.1","eslint":"^6.5.1","eslint-config-airbnb-base":"^14.2.0","eslint-config-prettier":"^6.12.0","eslint-friendly-formatter":"^4.0.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","express":"^4.16.4","got":"^9.0.0","grunt":"^1.3.0","grunt-babel":"^8.0.0","grunt-browserify":"^5.3.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-jasmine":"^2.2.0","grunt-contrib-watch":"^1.1.0","grunt-exorcise":"^2.1.1","grunt-terser":"^1.0.0","husky":"^4.3.0","lint-staged":"^10.2.13","mocha":"^7.2.0","prettier-eslint":"^11.0.0","prettier-eslint-cli":"^5.0.0","regenerator-runtime":"^0.13.7","sax":"^1.2.4","ts-node":"^8.10.2","typescript":"^3.9.7"},"_lastModified":"2026-09-30T16:03:09.388Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"xlsx","version":"0.20.3","author":"sheetjs","description":"SheetJS Spreadsheet data parser and writer","keywords":["excel","xls","xlsx","xlsb","xlsm","ods","csv","dbf","dif","sylk","office","spreadsheet"],"bin":{"xlsx":"./bin/xlsx.njs"},"main":"xlsx.js","module":"xlsx.mjs","unpkg":"dist/xlsx.full.min.js","jsdelivr":"dist/xlsx.full.min.js","types":"types/index.d.ts","exports":{".":{"import":"./xlsx.mjs","require":"./xlsx.js","types":"./types/index.d.ts"},"./xlsx.mjs":{"import":"./xlsx.mjs","types":"./types/index.d.ts"},"./xlsx.js":{"require":"./xlsx.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min.js":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min.js":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min.js":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.zahl":{"import":"./dist/xlsx.zahl.mjs","require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.mjs":{"import":"./dist/xlsx.zahl.mjs","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.js":{"require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/cpexcel":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.js":{"require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full.mjs":{"import":"./dist/cpexcel.full.mjs","types":"./dist/cpexcel.d.ts"}},"browser":{"buffer":false,"crypto":false,"stream":false,"process":false,"fs":false},"sideEffects":false,"dependencies":{},"devDependencies":{"@sheetjs/uglify-js":"~2.7.3","@types/node":"^8.5.9","acorn":"7.4.1","adler-32":"~1.3.1","alex":"8.1.1","blanket":"~1.2.3","cfb":"~1.2.2","codepage":"~1.15.0","commander":"~2.17.1","crc-32":"~1.2.2","dtslint":"^0.1.2","eslint":"7.23.0","eslint-plugin-html":"^6.1.2","eslint-plugin-json":"^2.1.2","exit-on-epipe":"~1.0.1","fflate":"^0.7.1","jsdom":"~11.1.0","markdown-spellcheck":"^1.3.1","mocha":"~2.5.3","sinon":"^1.17.7","ssf":"~0.11.2","typescript":"2.2.0","wmf":"~1.0.1","word":"~0.3.0"},"repository":{"type":"git","url":"https://git.sheetjs.com/SheetJS/sheetjs"},"scripts":{"pretest":"npm run lint","test":"npm run tests-only","pretest-only":"git submodule init && git submodule update","tests-only":"make travis","build":"make","lint":"make fullint","dtslint":"dtslint types"},"config":{"blanket":{"pattern":"xlsx.js"}},"alex":{"allow":["chinese","special","simple","just","crash","wtf","holes"]},"homepage":"https://sheetjs.com/","files":["CHANGELOG.md","LICENSE","README.md","bower.json","package.json","xlsx.js","xlsx.mjs","xlsxworker.js","bin/xlsx.njs","dist/LICENSE","dist/*.mjs","dist/*.js","dist/*.map","dist/*.d.ts","types/index.d.ts","types/tsconfig.json"],"bugs":{"url":"https://git.sheetjs.com/SheetJS/sheetjs/issues"},"license":"Apache-2.0","engines":{"node":">=0.8"},"_lastModified":"2026-09-
|
|
1
|
+
{"name":"xlsx","version":"0.20.3","author":"sheetjs","description":"SheetJS Spreadsheet data parser and writer","keywords":["excel","xls","xlsx","xlsb","xlsm","ods","csv","dbf","dif","sylk","office","spreadsheet"],"bin":{"xlsx":"./bin/xlsx.njs"},"main":"xlsx.js","module":"xlsx.mjs","unpkg":"dist/xlsx.full.min.js","jsdelivr":"dist/xlsx.full.min.js","types":"types/index.d.ts","exports":{".":{"import":"./xlsx.mjs","require":"./xlsx.js","types":"./types/index.d.ts"},"./xlsx.mjs":{"import":"./xlsx.mjs","types":"./types/index.d.ts"},"./xlsx.js":{"require":"./xlsx.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.core.min.js":{"import":"./dist/xlsx.core.min.js","require":"./dist/xlsx.core.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.full.min.js":{"import":"./dist/xlsx.full.min.js","require":"./dist/xlsx.full.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.mini.min.js":{"import":"./dist/xlsx.mini.min.js","require":"./dist/xlsx.mini.min.js","types":"./types/index.d.ts"},"./dist/xlsx.zahl":{"import":"./dist/xlsx.zahl.mjs","require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.mjs":{"import":"./dist/xlsx.zahl.mjs","types":"./dist/zahl.d.ts"},"./dist/xlsx.zahl.js":{"require":"./dist/xlsx.zahl.js","types":"./dist/zahl.d.ts"},"./dist/cpexcel":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.js":{"require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full":{"import":"./dist/cpexcel.full.mjs","require":"./dist/cpexcel.js","types":"./dist/cpexcel.d.ts"},"./dist/cpexcel.full.mjs":{"import":"./dist/cpexcel.full.mjs","types":"./dist/cpexcel.d.ts"}},"browser":{"buffer":false,"crypto":false,"stream":false,"process":false,"fs":false},"sideEffects":false,"dependencies":{},"devDependencies":{"@sheetjs/uglify-js":"~2.7.3","@types/node":"^8.5.9","acorn":"7.4.1","adler-32":"~1.3.1","alex":"8.1.1","blanket":"~1.2.3","cfb":"~1.2.2","codepage":"~1.15.0","commander":"~2.17.1","crc-32":"~1.2.2","dtslint":"^0.1.2","eslint":"7.23.0","eslint-plugin-html":"^6.1.2","eslint-plugin-json":"^2.1.2","exit-on-epipe":"~1.0.1","fflate":"^0.7.1","jsdom":"~11.1.0","markdown-spellcheck":"^1.3.1","mocha":"~2.5.3","sinon":"^1.17.7","ssf":"~0.11.2","typescript":"2.2.0","wmf":"~1.0.1","word":"~0.3.0"},"repository":{"type":"git","url":"https://git.sheetjs.com/SheetJS/sheetjs"},"scripts":{"pretest":"npm run lint","test":"npm run tests-only","pretest-only":"git submodule init && git submodule update","tests-only":"make travis","build":"make","lint":"make fullint","dtslint":"dtslint types"},"config":{"blanket":{"pattern":"xlsx.js"}},"alex":{"allow":["chinese","special","simple","just","crash","wtf","holes"]},"homepage":"https://sheetjs.com/","files":["CHANGELOG.md","LICENSE","README.md","bower.json","package.json","xlsx.js","xlsx.mjs","xlsxworker.js","bin/xlsx.njs","dist/LICENSE","dist/*.mjs","dist/*.js","dist/*.map","dist/*.d.ts","types/index.d.ts","types/tsconfig.json"],"bugs":{"url":"https://git.sheetjs.com/SheetJS/sheetjs/issues"},"license":"Apache-2.0","engines":{"node":">=0.8"},"_lastModified":"2026-09-30T16:03:12.504Z"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"description": "Import records using excel templates. You can configure which fields to import and templates will be generated automatically.",
|
|
7
7
|
"description.ru-RU": "Импорт записей с помощью шаблонов Excel: можно настроить, какие поля импортировать, шаблоны будут генерироваться автоматически.",
|
|
8
8
|
"description.zh-CN": "使用 Excel 模板导入数据,可以配置导入哪些字段,自动生成模板。",
|
|
9
|
-
"version": "2.4.0-alpha.
|
|
9
|
+
"version": "2.4.0-alpha.9",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"main": "./dist/server/index.js",
|
|
12
12
|
"homepage": "https://docs.nocobase.com/handbook/action-import",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@nocobase/test": "2.x",
|
|
48
48
|
"@nocobase/utils": "2.x"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "d383bdb224c62d1ba21c3dffd682165f3385a11b",
|
|
51
51
|
"keywords": [
|
|
52
52
|
"Actions"
|
|
53
53
|
]
|