extract-base-iterator 2.6.1 → 3.0.0
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/cjs/DirectoryEntry.d.cts +3 -1
- package/dist/cjs/DirectoryEntry.d.ts +3 -1
- package/dist/cjs/DirectoryEntry.js +2 -0
- package/dist/cjs/DirectoryEntry.js.map +1 -1
- package/dist/cjs/FileEntry.d.cts +3 -1
- package/dist/cjs/FileEntry.d.ts +3 -1
- package/dist/cjs/FileEntry.js.map +1 -1
- package/dist/cjs/LinkEntry.d.cts +3 -1
- package/dist/cjs/LinkEntry.d.ts +3 -1
- package/dist/cjs/LinkEntry.js +2 -0
- package/dist/cjs/LinkEntry.js.map +1 -1
- package/dist/cjs/SymbolicLinkEntry.d.cts +3 -1
- package/dist/cjs/SymbolicLinkEntry.d.ts +3 -1
- package/dist/cjs/SymbolicLinkEntry.js +2 -0
- package/dist/cjs/SymbolicLinkEntry.js.map +1 -1
- package/dist/cjs/fs/chmod.js +1 -4
- package/dist/cjs/fs/chmod.js.map +1 -1
- package/dist/cjs/fs/chown.js +1 -4
- package/dist/cjs/fs/chown.js.map +1 -1
- package/dist/cjs/fs/lstatReal.d.cts +1 -1
- package/dist/cjs/fs/lstatReal.d.ts +1 -1
- package/dist/cjs/fs/lstatReal.js.map +1 -1
- package/dist/cjs/fs/lutimes.d.cts +1 -1
- package/dist/cjs/fs/lutimes.d.ts +1 -1
- package/dist/cjs/fs/lutimes.js.map +1 -1
- package/dist/cjs/fs/utimes.d.cts +1 -1
- package/dist/cjs/fs/utimes.d.ts +1 -1
- package/dist/cjs/fs/utimes.js.map +1 -1
- package/dist/cjs/shared/compat.d.cts +0 -1
- package/dist/cjs/shared/compat.d.ts +0 -1
- package/dist/cjs/shared/compat.js +0 -12
- package/dist/cjs/shared/compat.js.map +1 -1
- package/dist/cjs/shared/index.d.cts +1 -1
- package/dist/cjs/shared/index.d.ts +1 -1
- package/dist/cjs/shared/index.js +0 -3
- package/dist/cjs/shared/index.js.map +1 -1
- package/dist/cjs/shared/streamToString.d.cts +1 -1
- package/dist/cjs/shared/streamToString.d.ts +1 -1
- package/dist/cjs/shared/streamToString.js.map +1 -1
- package/dist/cjs/validateAttributes.d.cts +1 -1
- package/dist/cjs/validateAttributes.d.ts +1 -1
- package/dist/cjs/validateAttributes.js.map +1 -1
- package/dist/cjs/waitForAccess.d.cts +1 -1
- package/dist/cjs/waitForAccess.d.ts +1 -1
- package/dist/cjs/waitForAccess.js +53 -8
- package/dist/cjs/waitForAccess.js.map +1 -1
- package/dist/esm/DirectoryEntry.d.ts +3 -1
- package/dist/esm/DirectoryEntry.js +2 -0
- package/dist/esm/DirectoryEntry.js.map +1 -1
- package/dist/esm/FileEntry.d.ts +3 -1
- package/dist/esm/FileEntry.js.map +1 -1
- package/dist/esm/LinkEntry.d.ts +3 -1
- package/dist/esm/LinkEntry.js +2 -0
- package/dist/esm/LinkEntry.js.map +1 -1
- package/dist/esm/SymbolicLinkEntry.d.ts +3 -1
- package/dist/esm/SymbolicLinkEntry.js +2 -0
- package/dist/esm/SymbolicLinkEntry.js.map +1 -1
- package/dist/esm/fs/chmod.js +1 -4
- package/dist/esm/fs/chmod.js.map +1 -1
- package/dist/esm/fs/chown.js +1 -4
- package/dist/esm/fs/chown.js.map +1 -1
- package/dist/esm/fs/lstatReal.d.ts +1 -1
- package/dist/esm/fs/lstatReal.js.map +1 -1
- package/dist/esm/fs/lutimes.d.ts +1 -1
- package/dist/esm/fs/lutimes.js.map +1 -1
- package/dist/esm/fs/utimes.d.ts +1 -1
- package/dist/esm/fs/utimes.js.map +1 -1
- package/dist/esm/shared/compat.d.ts +0 -1
- package/dist/esm/shared/compat.js +0 -9
- package/dist/esm/shared/compat.js.map +1 -1
- package/dist/esm/shared/index.d.ts +1 -1
- package/dist/esm/shared/index.js +1 -1
- package/dist/esm/shared/index.js.map +1 -1
- package/dist/esm/shared/streamToString.d.ts +1 -1
- package/dist/esm/shared/streamToString.js.map +1 -1
- package/dist/esm/validateAttributes.d.ts +1 -1
- package/dist/esm/validateAttributes.js.map +1 -1
- package/dist/esm/waitForAccess.d.ts +1 -1
- package/dist/esm/waitForAccess.js +46 -6
- package/dist/esm/waitForAccess.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/streamToString.ts"],"sourcesContent":["/**\n * Read entire stream content as string\n *\n * Handles both flowing streams and streams that have already\n * buffered data (using readable stream semantics).\n *\n * Node 0.8+ compatible.\n */\n\nimport oo from 'on-one';\nimport { bufferFrom } from './compat.ts';\n\nexport type StreamToStringCallback = (error?: Error, result?: string) =>
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/streamToString.ts"],"sourcesContent":["/**\n * Read entire stream content as string\n *\n * Handles both flowing streams and streams that have already\n * buffered data (using readable stream semantics).\n *\n * Node 0.8+ compatible.\n */\n\nimport oo from 'on-one';\nimport { bufferFrom } from './compat.ts';\n\nexport type StreamToStringCallback = (error?: Error, result?: string) => void;\n\nexport default function streamToString(stream: NodeJS.ReadableStream, callback: StreamToStringCallback): void {\n const chunks: Buffer[] = [];\n\n // Handle data from the stream\n stream.on('data', (chunk: Buffer | string) => {\n if (typeof chunk === 'string') {\n chunks.push(bufferFrom(chunk, 'utf8'));\n } else {\n chunks.push(chunk);\n }\n });\n\n // Handle stream end events using on-one for Node 0.8 compatibility\n oo(stream, ['error', 'end', 'close'], (err?: Error) => {\n if (err) {\n callback(err);\n } else {\n const content = Buffer.concat(chunks).toString('utf8');\n callback(null, content);\n }\n });\n\n // Ensure stream is flowing (in case it's paused)\n if (typeof (stream as NodeJS.ReadStream).resume === 'function') {\n (stream as NodeJS.ReadStream).resume();\n }\n}\n"],"names":["streamToString","stream","callback","chunks","on","chunk","push","bufferFrom","oo","err","content","Buffer","concat","toString","resume"],"mappings":"AAAA;;;;;;;CAOC;;;;+BAOD;;;eAAwBA;;;4DALT;wBACY;;;;;;AAIZ,SAASA,eAAeC,MAA6B,EAAEC,QAAgC;IACpG,IAAMC,SAAmB,EAAE;IAE3B,8BAA8B;IAC9BF,OAAOG,EAAE,CAAC,QAAQ,SAACC;QACjB,IAAI,OAAOA,UAAU,UAAU;YAC7BF,OAAOG,IAAI,CAACC,IAAAA,oBAAU,EAACF,OAAO;QAChC,OAAO;YACLF,OAAOG,IAAI,CAACD;QACd;IACF;IAEA,mEAAmE;IACnEG,IAAAA,cAAE,EAACP,QAAQ;QAAC;QAAS;QAAO;KAAQ,EAAE,SAACQ;QACrC,IAAIA,KAAK;YACPP,SAASO;QACX,OAAO;YACL,IAAMC,UAAUC,OAAOC,MAAM,CAACT,QAAQU,QAAQ,CAAC;YAC/CX,SAAS,MAAMQ;QACjB;IACF;IAEA,iDAAiD;IACjD,IAAI,OAAO,AAACT,OAA6Ba,MAAM,KAAK,YAAY;QAC7Db,OAA6Ba,MAAM;IACtC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function validateAttributes(attributes: object, keys: string[]):
|
|
1
|
+
export default function validateAttributes(attributes: object, keys: string[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function validateAttributes(attributes: object, keys: string[]):
|
|
1
|
+
export default function validateAttributes(attributes: object, keys: string[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/validateAttributes.ts"],"sourcesContent":["export default function validateAttributes(attributes: object, keys: string[]):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/validateAttributes.ts"],"sourcesContent":["export default function validateAttributes(attributes: object, keys: string[]): void {\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index];\n if (attributes[key] === undefined) throw new Error(`Missing attribute ${key}.Attributes ${JSON.stringify(attributes)}`);\n }\n}\n"],"names":["validateAttributes","attributes","keys","index","length","key","undefined","Error","JSON","stringify"],"mappings":";;;;+BAAA;;;eAAwBA;;;AAAT,SAASA,mBAAmBC,UAAkB,EAAEC,IAAc;IAC3E,IAAK,IAAIC,QAAQ,GAAGA,QAAQD,KAAKE,MAAM,EAAED,QAAS;QAChD,IAAME,MAAMH,IAAI,CAACC,MAAM;QACvB,IAAIF,UAAU,CAACI,IAAI,KAAKC,WAAW,MAAM,IAAIC,MAAM,AAAC,qBAAsCC,OAAlBH,KAAI,gBAAyC,OAA3BG,KAAKC,SAAS,CAACR;IAC3G;AACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NoParamCallback } from './types.js';
|
|
2
|
-
export default function waitForAccess(fullPath: string,
|
|
2
|
+
export default function waitForAccess(fullPath: string, noFollowOrCallback: boolean | NoParamCallback, callbackOrAttempts?: NoParamCallback | number, attempts?: number): void;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { NoParamCallback } from './types.js';
|
|
2
|
-
export default function waitForAccess(fullPath: string,
|
|
2
|
+
export default function waitForAccess(fullPath: string, noFollowOrCallback: boolean | NoParamCallback, callbackOrAttempts?: NoParamCallback | number, attempts?: number): void;
|
|
@@ -2,25 +2,70 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports,
|
|
5
|
+
Object.defineProperty(exports, // Backward compatible: waitForAccess(path, callback) or waitForAccess(path, noFollow, callback)
|
|
6
|
+
"default", {
|
|
6
7
|
enumerable: true,
|
|
7
8
|
get: function() {
|
|
8
9
|
return waitForAccess;
|
|
9
10
|
}
|
|
10
11
|
});
|
|
11
12
|
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
|
-
var _indexts = require("./shared/index.js");
|
|
13
13
|
function _interop_require_default(obj) {
|
|
14
14
|
return obj && obj.__esModule ? obj : {
|
|
15
15
|
default: obj
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
var isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
|
|
19
|
+
function waitForAccess(fullPath, noFollowOrCallback, callbackOrAttempts) {
|
|
20
|
+
var attempts = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
|
|
21
|
+
// Parse arguments for backward compatibility
|
|
22
|
+
var noFollow;
|
|
23
|
+
var callback;
|
|
24
|
+
if (typeof noFollowOrCallback === 'function') {
|
|
25
|
+
// Old signature: waitForAccess(path, callback, attempts?)
|
|
26
|
+
noFollow = false;
|
|
27
|
+
callback = noFollowOrCallback;
|
|
28
|
+
attempts = callbackOrAttempts || 0;
|
|
29
|
+
} else {
|
|
30
|
+
// New signature: waitForAccess(path, noFollow, callback, attempts?)
|
|
31
|
+
noFollow = noFollowOrCallback;
|
|
32
|
+
callback = callbackOrAttempts;
|
|
33
|
+
}
|
|
34
|
+
// POSIX: finish event is reliable after decompression stream fixes
|
|
35
|
+
if (!isWindows) return callback();
|
|
36
|
+
// Windows: NTFS metadata may not be committed yet, verify accessibility
|
|
37
|
+
// For symlinks (noFollow=true), use lstat to check the link itself exists
|
|
38
|
+
// For files/dirs/hardlinks, use open to verify the file is accessible
|
|
39
|
+
if (noFollow) {
|
|
40
|
+
_fs.default.lstat(fullPath, function(err) {
|
|
41
|
+
if (err) {
|
|
42
|
+
if (err.code === 'ENOENT' && attempts < 10) {
|
|
43
|
+
var delay = Math.min(5 * Math.pow(2, attempts), 2560);
|
|
44
|
+
return setTimeout(function() {
|
|
45
|
+
return waitForAccess(fullPath, noFollow, callback, attempts + 1);
|
|
46
|
+
}, delay);
|
|
47
|
+
}
|
|
48
|
+
return callback(err);
|
|
49
|
+
}
|
|
50
|
+
callback();
|
|
51
|
+
});
|
|
52
|
+
} else {
|
|
53
|
+
_fs.default.open(fullPath, 'r', function(err, fd) {
|
|
54
|
+
if (err) {
|
|
55
|
+
if (err.code === 'ENOENT' && attempts < 10) {
|
|
56
|
+
// Exponential backoff: 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560ms
|
|
57
|
+
// Total max wait: ~5 seconds
|
|
58
|
+
var delay = Math.min(5 * Math.pow(2, attempts), 2560);
|
|
59
|
+
return setTimeout(function() {
|
|
60
|
+
return waitForAccess(fullPath, noFollow, callback, attempts + 1);
|
|
61
|
+
}, delay);
|
|
62
|
+
}
|
|
63
|
+
return callback(err);
|
|
64
|
+
}
|
|
65
|
+
_fs.default.close(fd, function() {
|
|
66
|
+
return callback();
|
|
67
|
+
});
|
|
22
68
|
});
|
|
23
|
-
|
|
24
|
-
});
|
|
69
|
+
}
|
|
25
70
|
}
|
|
26
71
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/waitForAccess.ts"],"sourcesContent":["import fs from 'fs';\n\nimport {
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/waitForAccess.ts"],"sourcesContent":["import fs from 'fs';\n\nimport type { NoParamCallback } from './types.ts';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\n// Backward compatible: waitForAccess(path, callback) or waitForAccess(path, noFollow, callback)\nexport default function waitForAccess(fullPath: string, noFollowOrCallback: boolean | NoParamCallback, callbackOrAttempts?: NoParamCallback | number, attempts = 0) {\n // Parse arguments for backward compatibility\n let noFollow: boolean;\n let callback: NoParamCallback;\n if (typeof noFollowOrCallback === 'function') {\n // Old signature: waitForAccess(path, callback, attempts?)\n noFollow = false;\n callback = noFollowOrCallback;\n attempts = (callbackOrAttempts as number) || 0;\n } else {\n // New signature: waitForAccess(path, noFollow, callback, attempts?)\n noFollow = noFollowOrCallback;\n callback = callbackOrAttempts as NoParamCallback;\n }\n\n // POSIX: finish event is reliable after decompression stream fixes\n if (!isWindows) return callback();\n\n // Windows: NTFS metadata may not be committed yet, verify accessibility\n // For symlinks (noFollow=true), use lstat to check the link itself exists\n // For files/dirs/hardlinks, use open to verify the file is accessible\n if (noFollow) {\n fs.lstat(fullPath, (err) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitForAccess(fullPath, noFollow, callback, attempts + 1), delay);\n }\n return callback(err);\n }\n callback();\n });\n } else {\n fs.open(fullPath, 'r', (err, fd) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n // Exponential backoff: 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560ms\n // Total max wait: ~5 seconds\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitForAccess(fullPath, noFollow, callback, attempts + 1), delay);\n }\n return callback(err);\n }\n fs.close(fd, () => callback());\n });\n }\n}\n"],"names":["waitForAccess","isWindows","process","platform","test","env","OSTYPE","fullPath","noFollowOrCallback","callbackOrAttempts","attempts","noFollow","callback","fs","lstat","err","code","delay","Math","min","setTimeout","open","fd","close"],"mappings":";;;;+BAMA,gGAAgG;AAChG;;;eAAwBA;;;yDAPT;;;;;;AAIf,IAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAG5E,SAASN,cAAcO,QAAgB,EAAEC,kBAA6C,EAAEC,kBAA6C;QAAEC,WAAAA,iEAAW;IAC/J,6CAA6C;IAC7C,IAAIC;IACJ,IAAIC;IACJ,IAAI,OAAOJ,uBAAuB,YAAY;QAC5C,0DAA0D;QAC1DG,WAAW;QACXC,WAAWJ;QACXE,WAAW,AAACD,sBAAiC;IAC/C,OAAO;QACL,oEAAoE;QACpEE,WAAWH;QACXI,WAAWH;IACb;IAEA,mEAAmE;IACnE,IAAI,CAACR,WAAW,OAAOW;IAEvB,wEAAwE;IACxE,0EAA0E;IAC1E,sEAAsE;IACtE,IAAID,UAAU;QACZE,WAAE,CAACC,KAAK,CAACP,UAAU,SAACQ;YAClB,IAAIA,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYN,WAAW,IAAI;oBAC1C,IAAMO,QAAQC,KAAKC,GAAG,CAAC,aAAI,GAAKT,WAAU;oBAC1C,OAAOU,WAAW;+BAAMpB,cAAcO,UAAUI,UAAUC,UAAUF,WAAW;uBAAIO;gBACrF;gBACA,OAAOL,SAASG;YAClB;YACAH;QACF;IACF,OAAO;QACLC,WAAE,CAACQ,IAAI,CAACd,UAAU,KAAK,SAACQ,KAAKO;YAC3B,IAAIP,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYN,WAAW,IAAI;oBAC1C,sEAAsE;oBACtE,6BAA6B;oBAC7B,IAAMO,QAAQC,KAAKC,GAAG,CAAC,aAAI,GAAKT,WAAU;oBAC1C,OAAOU,WAAW;+BAAMpB,cAAcO,UAAUI,UAAUC,UAAUF,WAAW;uBAAIO;gBACrF;gBACA,OAAOL,SAASG;YAClB;YACAF,WAAE,CAACU,KAAK,CAACD,IAAI;uBAAMV;;QACrB;IACF;AACF"}
|
|
@@ -7,6 +7,8 @@ export default class DirectoryEntry {
|
|
|
7
7
|
basename: string;
|
|
8
8
|
type: string;
|
|
9
9
|
constructor(attributes: DirectoryAttributes);
|
|
10
|
-
create(dest: string,
|
|
10
|
+
create(dest: string, callback: NoParamCallback): void;
|
|
11
|
+
create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;
|
|
12
|
+
create(dest: string, options?: ExtractOptions): Promise<boolean>;
|
|
11
13
|
destroy(): void;
|
|
12
14
|
}
|
|
@@ -7,6 +7,7 @@ import utimes from './fs/utimes.js';
|
|
|
7
7
|
import { objectAssign } from './shared/index.js';
|
|
8
8
|
import stripPath from './stripPath.js';
|
|
9
9
|
import validateAttributes from './validateAttributes.js';
|
|
10
|
+
import waitForAccess from './waitForAccess.js';
|
|
10
11
|
const MANDATORY_ATTRIBUTES = [
|
|
11
12
|
'mode',
|
|
12
13
|
'mtime',
|
|
@@ -26,6 +27,7 @@ let DirectoryEntry = class DirectoryEntry {
|
|
|
26
27
|
// do not check for the existence of the directory but allow out-of-order calling
|
|
27
28
|
const queue = new Queue(1);
|
|
28
29
|
queue.defer(mkdirp.bind(null, fullPath));
|
|
30
|
+
queue.defer(waitForAccess.bind(null, fullPath));
|
|
29
31
|
queue.defer(chmod.bind(null, fullPath, this, options));
|
|
30
32
|
queue.defer(chown.bind(null, fullPath, this, options));
|
|
31
33
|
queue.defer(utimes.bind(null, fullPath, this, options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/DirectoryEntry.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nimport type { Mode } from 'fs';\nimport type { DirectoryAttributes, ExtractOptions, NoParamCallback } from './types.ts';\n\nexport default class DirectoryEntry {\n mode: Mode;\n mtime: number;\n path: string;\n basename: string;\n type: string;\n\n constructor(attributes: DirectoryAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.type === undefined) this.type = 'directory';\n if (this.basename === undefined) this.basename = path.basename(this.path);\n }\n\n create(dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/DirectoryEntry.ts"],"sourcesContent":["import mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\nimport waitForAccess from './waitForAccess.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nimport type { Mode } from 'fs';\nimport type { DirectoryAttributes, ExtractOptions, NoParamCallback } from './types.ts';\n\nexport default class DirectoryEntry {\n mode: Mode;\n mtime: number;\n path: string;\n basename: string;\n type: string;\n\n constructor(attributes: DirectoryAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.type === undefined) this.type = 'directory';\n if (this.basename === undefined) this.basename = path.basename(this.path);\n }\n\n create(dest: string, callback: NoParamCallback): void;\n create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;\n create(dest: string, options?: ExtractOptions): Promise<boolean>;\n create(dest: string, options?: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void | Promise<boolean> {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options as ExtractOptions));\n\n // do not check for the existence of the directory but allow out-of-order calling\n const queue = new Queue(1);\n queue.defer(mkdirp.bind(null, fullPath));\n queue.defer(waitForAccess.bind(null, fullPath));\n queue.defer(chmod.bind(null, fullPath, this, options));\n queue.defer(chown.bind(null, fullPath, this, options));\n queue.defer(utimes.bind(null, fullPath, this, options));\n queue.await(callback);\n return;\n } catch (err) {\n callback(err);\n return;\n }\n }\n\n return new Promise((resolve, reject) => {\n this.create(dest, options as ExtractOptions, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["mkdirp","path","Queue","chmod","chown","utimes","objectAssign","stripPath","validateAttributes","waitForAccess","MANDATORY_ATTRIBUTES","DirectoryEntry","create","dest","options","callback","normalizedPath","normalize","fullPath","join","queue","defer","bind","await","err","Promise","resolve","reject","done","destroy","attributes","type","undefined","basename"],"mappings":"AAAA,OAAOA,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,WAAW,gBAAgB;AAClC,OAAOC,WAAW,gBAAgB;AAClC,OAAOC,YAAY,iBAAiB;AACpC,SAASC,YAAY,QAAQ,oBAAoB;AACjD,OAAOC,eAAe,iBAAiB;AACvC,OAAOC,wBAAwB,0BAA0B;AACzD,OAAOC,mBAAmB,qBAAqB;AAE/C,MAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAKvC,IAAA,AAAMC,iBAAN,MAAMA;IAiBnBC,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B,EAA2B;QACpH,IAAI,OAAOD,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QAEA,IAAI,OAAOC,aAAa,YAAY;YAClCD,UAAUA,WAAW,CAAC;YACtB,IAAI;gBACF,MAAME,iBAAiBf,KAAKgB,SAAS,CAAC,IAAI,CAAChB,IAAI;gBAC/C,MAAMiB,WAAWjB,KAAKkB,IAAI,CAACN,MAAMN,UAAUS,gBAAgBF;gBAE3D,iFAAiF;gBACjF,MAAMM,QAAQ,IAAIlB,MAAM;gBACxBkB,MAAMC,KAAK,CAACrB,OAAOsB,IAAI,CAAC,MAAMJ;gBAC9BE,MAAMC,KAAK,CAACZ,cAAca,IAAI,CAAC,MAAMJ;gBACrCE,MAAMC,KAAK,CAAClB,MAAMmB,IAAI,CAAC,MAAMJ,UAAU,IAAI,EAAEJ;gBAC7CM,MAAMC,KAAK,CAACjB,MAAMkB,IAAI,CAAC,MAAMJ,UAAU,IAAI,EAAEJ;gBAC7CM,MAAMC,KAAK,CAAChB,OAAOiB,IAAI,CAAC,MAAMJ,UAAU,IAAI,EAAEJ;gBAC9CM,MAAMG,KAAK,CAACR;gBACZ;YACF,EAAE,OAAOS,KAAK;gBACZT,SAASS;gBACT;YACF;QACF;QAEA,OAAO,IAAIC,QAAQ,CAACC,SAASC;YAC3B,IAAI,CAACf,MAAM,CAACC,MAAMC,SAA2B,CAACU,KAAaI,OAAoBJ,MAAMG,OAAOH,OAAOE,QAAQE;QAC7G;IACF;IAEAC,UAAU,CAAC;IA1CX,YAAYC,UAA+B,CAAE;QAC3CtB,mBAAmBsB,YAAYpB;QAC/BJ,aAAa,IAAI,EAAEwB;QACnB,IAAI,IAAI,CAACC,IAAI,KAAKC,WAAW,IAAI,CAACD,IAAI,GAAG;QACzC,IAAI,IAAI,CAACE,QAAQ,KAAKD,WAAW,IAAI,CAACC,QAAQ,GAAGhC,KAAKgC,QAAQ,CAAC,IAAI,CAAChC,IAAI;IAC1E;AAsCF;AAlDA,SAAqBU,4BAkDpB"}
|
package/dist/esm/FileEntry.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export default class FileEntry {
|
|
|
7
7
|
basename: string;
|
|
8
8
|
type: string;
|
|
9
9
|
constructor(attributes: FileAttributes);
|
|
10
|
-
create(dest: string,
|
|
10
|
+
create(dest: string, callback: NoParamCallback): void;
|
|
11
|
+
create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;
|
|
12
|
+
create(dest: string, options?: ExtractOptions): Promise<boolean>;
|
|
11
13
|
destroy(): void;
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/FileEntry.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, FileAttributes, NoParamCallback, WriteFileFn } from './types.ts';\n\ninterface AbstractFileEntry {\n _writeFile: WriteFileFn;\n}\n\nexport default class FileEntry {\n mode: Mode;\n mtime: number;\n path: string;\n basename: string;\n type: string;\n\n constructor(attributes: FileAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'file';\n if ((this as unknown as AbstractFileEntry)._writeFile === undefined) throw new Error('File this missing _writeFile. Please implement this method in your subclass');\n }\n\n create(dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/FileEntry.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, FileAttributes, NoParamCallback, WriteFileFn } from './types.ts';\n\ninterface AbstractFileEntry {\n _writeFile: WriteFileFn;\n}\n\nexport default class FileEntry {\n mode: Mode;\n mtime: number;\n path: string;\n basename: string;\n type: string;\n\n constructor(attributes: FileAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'file';\n if ((this as unknown as AbstractFileEntry)._writeFile === undefined) throw new Error('File this missing _writeFile. Please implement this method in your subclass');\n }\n\n create(dest: string, callback: NoParamCallback): void;\n create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;\n create(dest: string, options?: ExtractOptions): Promise<boolean>;\n create(dest: string, options?: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void | Promise<boolean> {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options as ExtractOptions));\n\n const queue = new Queue(1);\n if ((options as ExtractOptions).force) {\n queue.defer((callback) => {\n rm(fullPath, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n } else {\n // Check if file exists - throw EEXIST if it does\n queue.defer((callback) => {\n fs.stat(fullPath, (err) => {\n if (!err) {\n const existsErr = new Error(`EEXIST: file already exists, open '${fullPath}'`) as NodeJS.ErrnoException;\n existsErr.code = 'EEXIST';\n existsErr.path = fullPath;\n return callback(existsErr);\n }\n // ENOENT means file doesn't exist - that's what we want\n if (err.code === 'ENOENT') return callback();\n // Other errors should be reported\n callback(err);\n });\n });\n }\n queue.defer(mkdirp.bind(null, path.dirname(fullPath)));\n queue.defer((this as unknown as AbstractFileEntry)._writeFile.bind(this, fullPath, options));\n queue.defer(chmod.bind(null, fullPath, this, options));\n queue.defer(chown.bind(null, fullPath, this, options));\n queue.defer(utimes.bind(null, fullPath, this, options));\n queue.await(callback);\n return;\n } catch (err) {\n callback(err);\n return;\n }\n }\n\n return new Promise((resolve, reject) => {\n this.create(dest, options as ExtractOptions, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["fs","rm","mkdirp","path","Queue","chmod","chown","utimes","objectAssign","stripPath","validateAttributes","MANDATORY_ATTRIBUTES","FileEntry","create","dest","options","callback","normalizedPath","normalize","fullPath","join","queue","force","defer","err","code","stat","existsErr","Error","bind","dirname","_writeFile","await","Promise","resolve","reject","done","destroy","attributes","basename","undefined","type"],"mappings":"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"}
|
package/dist/esm/LinkEntry.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export default class LinkEntry {
|
|
|
8
8
|
basename: string;
|
|
9
9
|
type: string;
|
|
10
10
|
constructor(attributes: LinkAttributes);
|
|
11
|
-
create(dest: string,
|
|
11
|
+
create(dest: string, callback: NoParamCallback): void;
|
|
12
|
+
create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;
|
|
13
|
+
create(dest: string, options?: ExtractOptions): Promise<boolean>;
|
|
12
14
|
destroy(): void;
|
|
13
15
|
}
|
package/dist/esm/LinkEntry.js
CHANGED
|
@@ -9,6 +9,7 @@ import utimes from './fs/utimes.js';
|
|
|
9
9
|
import { objectAssign } from './shared/index.js';
|
|
10
10
|
import stripPath from './stripPath.js';
|
|
11
11
|
import validateAttributes from './validateAttributes.js';
|
|
12
|
+
import waitForAccess from './waitForAccess.js';
|
|
12
13
|
const MANDATORY_ATTRIBUTES = [
|
|
13
14
|
'mode',
|
|
14
15
|
'mtime',
|
|
@@ -38,6 +39,7 @@ let LinkEntry = class LinkEntry {
|
|
|
38
39
|
}
|
|
39
40
|
queue.defer(mkdirp.bind(null, path.dirname(fullPath)));
|
|
40
41
|
queue.defer(fs.link.bind(fs, linkFullPath, fullPath));
|
|
42
|
+
queue.defer(waitForAccess.bind(null, fullPath));
|
|
41
43
|
queue.defer(chmod.bind(null, fullPath, this, options));
|
|
42
44
|
queue.defer(chown.bind(null, fullPath, this, options));
|
|
43
45
|
queue.defer(utimes.bind(null, fullPath, this, options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/LinkEntry.ts"],"sourcesContent":["import { rm } from 'fs-remove-compat';\nimport fs from 'graceful-fs';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, LinkAttributes, NoParamCallback } from './types.ts';\n\nexport default class LinkEntry {\n mode: Mode;\n mtime: number;\n path: string;\n linkpath: string;\n basename: string;\n type: string;\n\n constructor(attributes: LinkAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'link';\n }\n\n create(dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/LinkEntry.ts"],"sourcesContent":["import { rm } from 'fs-remove-compat';\nimport fs from 'graceful-fs';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport utimes from './fs/utimes.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\nimport waitForAccess from './waitForAccess.ts';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, LinkAttributes, NoParamCallback } from './types.ts';\n\nexport default class LinkEntry {\n mode: Mode;\n mtime: number;\n path: string;\n linkpath: string;\n basename: string;\n type: string;\n\n constructor(attributes: LinkAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'link';\n }\n\n create(dest: string, callback: NoParamCallback): void;\n create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;\n create(dest: string, options?: ExtractOptions): Promise<boolean>;\n create(dest: string, options?: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void | Promise<boolean> {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options as ExtractOptions));\n const normalizedLinkpath = path.normalize(this.linkpath);\n const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options as ExtractOptions));\n\n const queue = new Queue(1);\n if ((options as ExtractOptions).force) {\n queue.defer((callback) => {\n rm(fullPath, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkdirp.bind(null, path.dirname(fullPath)));\n queue.defer(fs.link.bind(fs, linkFullPath, fullPath));\n queue.defer(waitForAccess.bind(null, fullPath));\n queue.defer(chmod.bind(null, fullPath, this, options));\n queue.defer(chown.bind(null, fullPath, this, options));\n queue.defer(utimes.bind(null, fullPath, this, options));\n queue.await(callback);\n return;\n } catch (err) {\n callback(err);\n return;\n }\n }\n\n return new Promise((resolve, reject) => {\n this.create(dest, options as ExtractOptions, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["rm","fs","mkdirp","path","Queue","chmod","chown","utimes","objectAssign","stripPath","validateAttributes","waitForAccess","MANDATORY_ATTRIBUTES","LinkEntry","create","dest","options","callback","normalizedPath","normalize","fullPath","join","normalizedLinkpath","linkpath","linkFullPath","queue","force","defer","err","code","bind","dirname","link","await","Promise","resolve","reject","done","destroy","attributes","basename","undefined","type"],"mappings":"AAAA,SAASA,EAAE,QAAQ,mBAAmB;AACtC,OAAOC,QAAQ,cAAc;AAC7B,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,WAAW;AAC7B,OAAOC,WAAW,gBAAgB;AAClC,OAAOC,WAAW,gBAAgB;AAClC,OAAOC,YAAY,iBAAiB;AACpC,SAASC,YAAY,QAAQ,oBAAoB;AACjD,OAAOC,eAAe,iBAAiB;AACvC,OAAOC,wBAAwB,0BAA0B;AACzD,OAAOC,mBAAmB,qBAAqB;AAE/C,MAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAKnD,IAAA,AAAMC,YAAN,MAAMA;IAkBnBC,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B,EAA2B;QACpH,IAAI,OAAOD,YAAY,YAAY;YACjCC,WAAWD;YACXA,UAAU;QACZ;QAEA,IAAI,OAAOC,aAAa,YAAY;YAClCD,UAAUA,WAAW,CAAC;YACtB,IAAI;gBACF,MAAME,iBAAiBf,KAAKgB,SAAS,CAAC,IAAI,CAAChB,IAAI;gBAC/C,MAAMiB,WAAWjB,KAAKkB,IAAI,CAACN,MAAMN,UAAUS,gBAAgBF;gBAC3D,MAAMM,qBAAqBnB,KAAKgB,SAAS,CAAC,IAAI,CAACI,QAAQ;gBACvD,MAAMC,eAAerB,KAAKkB,IAAI,CAACN,MAAMN,UAAUa,oBAAoBN;gBAEnE,MAAMS,QAAQ,IAAIrB,MAAM;gBACxB,IAAI,AAACY,QAA2BU,KAAK,EAAE;oBACrCD,MAAME,KAAK,CAAC,CAACV;wBACXjB,GAAGoB,UAAU,CAACQ;4BACZA,OAAOA,IAAIC,IAAI,KAAK,WAAWZ,SAASW,OAAOX;wBACjD;oBACF;gBACF;gBACAQ,MAAME,KAAK,CAACzB,OAAO4B,IAAI,CAAC,MAAM3B,KAAK4B,OAAO,CAACX;gBAC3CK,MAAME,KAAK,CAAC1B,GAAG+B,IAAI,CAACF,IAAI,CAAC7B,IAAIuB,cAAcJ;gBAC3CK,MAAME,KAAK,CAAChB,cAAcmB,IAAI,CAAC,MAAMV;gBACrCK,MAAME,KAAK,CAACtB,MAAMyB,IAAI,CAAC,MAAMV,UAAU,IAAI,EAAEJ;gBAC7CS,MAAME,KAAK,CAACrB,MAAMwB,IAAI,CAAC,MAAMV,UAAU,IAAI,EAAEJ;gBAC7CS,MAAME,KAAK,CAACpB,OAAOuB,IAAI,CAAC,MAAMV,UAAU,IAAI,EAAEJ;gBAC9CS,MAAMQ,KAAK,CAAChB;gBACZ;YACF,EAAE,OAAOW,KAAK;gBACZX,SAASW;gBACT;YACF;QACF;QAEA,OAAO,IAAIM,QAAQ,CAACC,SAASC;YAC3B,IAAI,CAACtB,MAAM,CAACC,MAAMC,SAA2B,CAACY,KAAaS,OAAoBT,MAAMQ,OAAOR,OAAOO,QAAQE;QAC7G;IACF;IAEAC,UAAU,CAAC;IAnDX,YAAYC,UAA0B,CAAE;QACtC7B,mBAAmB6B,YAAY3B;QAC/BJ,aAAa,IAAI,EAAE+B;QACnB,IAAI,IAAI,CAACC,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGrC,KAAKqC,QAAQ,CAAC,IAAI,CAACrC,IAAI;QACxE,IAAI,IAAI,CAACuC,IAAI,KAAKD,WAAW,IAAI,CAACC,IAAI,GAAG;IAC3C;AA+CF;AA5DA,SAAqB7B,uBA4DpB"}
|
|
@@ -8,6 +8,8 @@ export default class SymbolicLinkEntry {
|
|
|
8
8
|
basename: string;
|
|
9
9
|
type: string;
|
|
10
10
|
constructor(attributes: LinkAttributes);
|
|
11
|
-
create(dest: string,
|
|
11
|
+
create(dest: string, callback: NoParamCallback): void;
|
|
12
|
+
create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;
|
|
13
|
+
create(dest: string, options?: ExtractOptions): Promise<boolean>;
|
|
12
14
|
destroy(): void;
|
|
13
15
|
}
|
|
@@ -11,6 +11,7 @@ import symlinkWin32 from './fs/symlinkWin32.js';
|
|
|
11
11
|
import { objectAssign } from './shared/index.js';
|
|
12
12
|
import stripPath from './stripPath.js';
|
|
13
13
|
import validateAttributes from './validateAttributes.js';
|
|
14
|
+
import waitForAccess from './waitForAccess.js';
|
|
14
15
|
const isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);
|
|
15
16
|
const MANDATORY_ATTRIBUTES = [
|
|
16
17
|
'mode',
|
|
@@ -47,6 +48,7 @@ let SymbolicLinkEntry = class SymbolicLinkEntry {
|
|
|
47
48
|
queue.defer(mkdirp.bind(null, path.dirname(fullPath)));
|
|
48
49
|
if (isWindows) queue.defer(symlinkWin32.bind(null, linkFullPath, normalizedLinkpath, fullPath));
|
|
49
50
|
else queue.defer(fs.symlink.bind(fs, normalizedLinkpath, fullPath));
|
|
51
|
+
queue.defer(waitForAccess.bind(null, fullPath, true)); // noFollow=true for symlinks
|
|
50
52
|
queue.defer(chmod.bind(null, fullPath, this, options));
|
|
51
53
|
queue.defer(chown.bind(null, fullPath, this, options));
|
|
52
54
|
queue.defer(lutimes.bind(null, fullPath, this, options));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/SymbolicLinkEntry.ts"],"sourcesContent":["import { rm } from 'fs-remove-compat';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport lutimes from './fs/lutimes.ts';\nimport symlinkWin32 from './fs/symlinkWin32.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, LinkAttributes, NoParamCallback } from './types.ts';\n\nexport default class SymbolicLinkEntry {\n mode: Mode;\n mtime: number;\n path: string;\n linkpath: string;\n basename: string;\n type: string;\n\n constructor(attributes: LinkAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'symlink';\n }\n\n create(dest: string, options: ExtractOptions | NoParamCallback, callback?: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/SymbolicLinkEntry.ts"],"sourcesContent":["import { rm } from 'fs-remove-compat';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkdirp from 'mkdirp-classic';\nimport path from 'path';\nimport Queue from 'queue-cb';\nimport chmod from './fs/chmod.ts';\nimport chown from './fs/chown.ts';\nimport lutimes from './fs/lutimes.ts';\nimport symlinkWin32 from './fs/symlinkWin32.ts';\nimport { objectAssign } from './shared/index.ts';\nimport stripPath from './stripPath.ts';\nimport validateAttributes from './validateAttributes.ts';\nimport waitForAccess from './waitForAccess.ts';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nimport type { Mode } from 'fs';\nimport type { ExtractOptions, LinkAttributes, NoParamCallback } from './types.ts';\n\nexport default class SymbolicLinkEntry {\n mode: Mode;\n mtime: number;\n path: string;\n linkpath: string;\n basename: string;\n type: string;\n\n constructor(attributes: LinkAttributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'symlink';\n }\n\n create(dest: string, callback: NoParamCallback): void;\n create(dest: string, options: ExtractOptions, callback: NoParamCallback): void;\n create(dest: string, options?: ExtractOptions): Promise<boolean>;\n create(dest: string, options?: ExtractOptions | NoParamCallback, callback?: NoParamCallback): void | Promise<boolean> {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options as ExtractOptions));\n let normalizedLinkpath = path.normalize(this.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options as ExtractOptions));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), this.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options as ExtractOptions));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if ((options as ExtractOptions).force) {\n queue.defer((callback) => {\n rm(fullPath, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkdirp.bind(null, path.dirname(fullPath)));\n if (isWindows) queue.defer(symlinkWin32.bind(null, linkFullPath, normalizedLinkpath, fullPath));\n else queue.defer(fs.symlink.bind(fs, normalizedLinkpath, fullPath));\n queue.defer(waitForAccess.bind(null, fullPath, true)); // noFollow=true for symlinks\n queue.defer(chmod.bind(null, fullPath, this, options));\n queue.defer(chown.bind(null, fullPath, this, options));\n queue.defer(lutimes.bind(null, fullPath, this, options));\n queue.await(callback);\n return;\n } catch (err) {\n callback(err);\n return;\n }\n }\n\n return new Promise((resolve, reject) => {\n this.create(dest, options as ExtractOptions, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["rm","fs","isAbsolute","mkdirp","path","Queue","chmod","chown","lutimes","symlinkWin32","objectAssign","stripPath","validateAttributes","waitForAccess","isWindows","process","platform","test","env","OSTYPE","MANDATORY_ATTRIBUTES","SymbolicLinkEntry","create","dest","options","callback","normalizedPath","normalize","fullPath","join","normalizedLinkpath","linkpath","linkFullPath","linkRelativePath","dirname","relative","queue","force","defer","err","code","bind","symlink","await","Promise","resolve","reject","done","destroy","attributes","basename","undefined","type"],"mappings":"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"}
|
package/dist/esm/fs/chmod.js
CHANGED
|
@@ -7,10 +7,7 @@ const SMODE = 0o755;
|
|
|
7
7
|
const LMODE = 0o644;
|
|
8
8
|
export default function chmodFn(fullPath, entry, _options, callback) {
|
|
9
9
|
const chmod = entry.type === 'symlink' ? fs.lchmod : fs.chmod;
|
|
10
|
-
if (!chmod || UMASK === null)
|
|
11
|
-
callback(null);
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
10
|
+
if (!chmod || UMASK === null) return callback(null);
|
|
14
11
|
let mode = entry.mode;
|
|
15
12
|
if (!mode) {
|
|
16
13
|
switch(entry.type){
|
package/dist/esm/fs/chmod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/chmod.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nconst UMASK = process.umask ? process.umask() : null;\nconst DMODE = 0o755;\nconst FMODE = 0o644;\nconst SMODE = 0o755;\nconst LMODE = 0o644;\n\nexport default function chmodFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback) {\n const chmod = entry.type === 'symlink' ? fs.lchmod : fs.chmod;\n if (!chmod || UMASK === null)
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/chmod.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nconst UMASK = process.umask ? process.umask() : null;\nconst DMODE = 0o755;\nconst FMODE = 0o644;\nconst SMODE = 0o755;\nconst LMODE = 0o644;\n\nexport default function chmodFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback) {\n const chmod = entry.type === 'symlink' ? fs.lchmod : fs.chmod;\n if (!chmod || UMASK === null) return callback(null);\n\n let mode = entry.mode;\n if (!mode) {\n switch (entry.type) {\n case 'directory':\n mode = DMODE;\n break;\n case 'file':\n mode = FMODE;\n break;\n case 'symlink':\n mode = SMODE;\n break;\n case 'link':\n mode = LMODE;\n break;\n }\n }\n chmod(fullPath, (mode as number) & ~UMASK, callback);\n}\n"],"names":["fs","UMASK","process","umask","DMODE","FMODE","SMODE","LMODE","chmodFn","fullPath","entry","_options","callback","chmod","type","lchmod","mode"],"mappings":"AAAA,mDAAmD;AAGnD,OAAOA,QAAQ,cAAc;AAG7B,MAAMC,QAAQC,QAAQC,KAAK,GAAGD,QAAQC,KAAK,KAAK;AAChD,MAAMC,QAAQ;AACd,MAAMC,QAAQ;AACd,MAAMC,QAAQ;AACd,MAAMC,QAAQ;AAEd,eAAe,SAASC,QAAQC,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,MAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYd,GAAGe,MAAM,GAAGf,GAAGa,KAAK;IAC7D,IAAI,CAACA,SAASZ,UAAU,MAAM,OAAOW,SAAS;IAE9C,IAAII,OAAON,MAAMM,IAAI;IACrB,IAAI,CAACA,MAAM;QACT,OAAQN,MAAMI,IAAI;YAChB,KAAK;gBACHE,OAAOZ;gBACP;YACF,KAAK;gBACHY,OAAOX;gBACP;YACF,KAAK;gBACHW,OAAOV;gBACP;YACF,KAAK;gBACHU,OAAOT;gBACP;QACJ;IACF;IACAM,MAAMJ,UAAU,AAACO,OAAkB,CAACf,OAAOW;AAC7C"}
|
package/dist/esm/fs/chown.js
CHANGED
|
@@ -4,9 +4,6 @@ const UID = process.getuid ? process.getuid() : -1;
|
|
|
4
4
|
const OWN = process.platform !== 'win32' && UID === 0;
|
|
5
5
|
export default function chownFn(fullPath, entry, _options, callback) {
|
|
6
6
|
const chown = entry.type === 'symlink' ? fs.lchown : fs.chown;
|
|
7
|
-
if (!chown || !OWN || !entry.uid || !entry.gid)
|
|
8
|
-
callback(null);
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
7
|
+
if (!chown || !OWN || !entry.uid || !entry.gid) return callback(null);
|
|
11
8
|
chown(fullPath, entry.uid, entry.gid, callback);
|
|
12
9
|
}
|
package/dist/esm/fs/chown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/chown.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nconst UID = process.getuid ? process.getuid() : -1;\nconst OWN = process.platform !== 'win32' && UID === 0;\n\nexport default function chownFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback) {\n const chown = entry.type === 'symlink' ? fs.lchown : fs.chown;\n if (!chown || !OWN || !entry.uid || !entry.gid)
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/chown.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nconst UID = process.getuid ? process.getuid() : -1;\nconst OWN = process.platform !== 'win32' && UID === 0;\n\nexport default function chownFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback) {\n const chown = entry.type === 'symlink' ? fs.lchown : fs.chown;\n if (!chown || !OWN || !entry.uid || !entry.gid) return callback(null);\n chown(fullPath, entry.uid, entry.gid, callback);\n}\n"],"names":["fs","UID","process","getuid","OWN","platform","chownFn","fullPath","entry","_options","callback","chown","type","lchown","uid","gid"],"mappings":"AAAA,mDAAmD;AAGnD,OAAOA,QAAQ,cAAc;AAG7B,MAAMC,MAAMC,QAAQC,MAAM,GAAGD,QAAQC,MAAM,KAAK,CAAC;AACjD,MAAMC,MAAMF,QAAQG,QAAQ,KAAK,WAAWJ,QAAQ;AAEpD,eAAe,SAASK,QAAQC,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,MAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYZ,GAAGa,MAAM,GAAGb,GAAGW,KAAK;IAC7D,IAAI,CAACA,SAAS,CAACP,OAAO,CAACI,MAAMM,GAAG,IAAI,CAACN,MAAMO,GAAG,EAAE,OAAOL,SAAS;IAChEC,MAAMJ,UAAUC,MAAMM,GAAG,EAAEN,MAAMO,GAAG,EAAEL;AACxC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type BigIntStats, type Stats } from 'fs';
|
|
2
2
|
export type Callback = (err: NodeJS.ErrnoException | null, stats?: Stats | BigIntStats) => void;
|
|
3
|
-
export default function lstatReal(path: string, callback: Callback):
|
|
3
|
+
export default function lstatReal(path: string, callback: Callback): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/lstatReal.ts"],"sourcesContent":["import fs, { type BigIntStats, type Stats } from 'fs';\n\nexport type Callback = (err: NodeJS.ErrnoException | null, stats?: Stats | BigIntStats) => void;\n\nexport default function lstatReal(path: string, callback: Callback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/lstatReal.ts"],"sourcesContent":["import fs, { type BigIntStats, type Stats } from 'fs';\n\nexport type Callback = (err: NodeJS.ErrnoException | null, stats?: Stats | BigIntStats) => void;\n\nexport default function lstatReal(path: string, callback: Callback): void {\n fs.realpath(path, (err, realpath) => {\n err ? callback(err) : fs.lstat(realpath, callback);\n });\n}\n"],"names":["fs","lstatReal","path","callback","realpath","err","lstat"],"mappings":"AAAA,OAAOA,QAA0C,KAAK;AAItD,eAAe,SAASC,UAAUC,IAAY,EAAEC,QAAkB;IAChEH,GAAGI,QAAQ,CAACF,MAAM,CAACG,KAAKD;QACtBC,MAAMF,SAASE,OAAOL,GAAGM,KAAK,CAACF,UAAUD;IAC3C;AACF"}
|
package/dist/esm/fs/lutimes.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { NoParamCallback } from 'fs';
|
|
2
2
|
import type { AbstractEntry, ExtractOptions } from '../types.js';
|
|
3
|
-
export default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback):
|
|
3
|
+
export default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/lutimes.ts"],"sourcesContent":["// lutimes - set times on symlinks without following them\n// fs.lutimes was added in Node.js 14.5.0\n// For older versions, we skip setting times on symlinks (no good alternative)\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\n// biome-ignore lint/suspicious/noExplicitAny: fs.lutimes not in older @types/node\nconst HAS_LUTIMES = typeof (fs as any).lutimes === 'function';\n\nexport default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/lutimes.ts"],"sourcesContent":["// lutimes - set times on symlinks without following them\n// fs.lutimes was added in Node.js 14.5.0\n// For older versions, we skip setting times on symlinks (no good alternative)\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\n// biome-ignore lint/suspicious/noExplicitAny: fs.lutimes not in older @types/node\nconst HAS_LUTIMES = typeof (fs as any).lutimes === 'function';\n\nexport default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void {\n if (HAS_LUTIMES) {\n const now = options.now || new Date();\n // biome-ignore lint/suspicious/noExplicitAny: fs.lutimes not in older @types/node\n (fs as any).lutimes(fullPath, now, new Date(entry.mtime), callback);\n } else {\n // On older Node versions, skip setting times on symlinks\n // fs.utimes follows symlinks and will fail with ENOENT if target doesn't exist\n callback(null);\n }\n}\n"],"names":["fs","HAS_LUTIMES","lutimes","fullPath","entry","options","callback","now","Date","mtime"],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AACzC,8EAA8E;AAG9E,OAAOA,QAAQ,cAAc;AAG7B,kFAAkF;AAClF,MAAMC,cAAc,OAAO,AAACD,GAAWE,OAAO,KAAK;AAEnD,eAAe,SAASA,QAAQC,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACxH,IAAIL,aAAa;QACf,MAAMM,MAAMF,QAAQE,GAAG,IAAI,IAAIC;QAC/B,kFAAkF;QACjFR,GAAWE,OAAO,CAACC,UAAUI,KAAK,IAAIC,KAAKJ,MAAMK,KAAK,GAAGH;IAC5D,OAAO;QACL,yDAAyD;QACzD,+EAA+E;QAC/EA,SAAS;IACX;AACF"}
|
package/dist/esm/fs/utimes.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { NoParamCallback } from 'fs';
|
|
2
2
|
import type { AbstractEntry, ExtractOptions } from '../types.js';
|
|
3
|
-
export default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback):
|
|
3
|
+
export default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/utimes.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nexport default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback):
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/fs/utimes.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport type { AbstractEntry, ExtractOptions } from '../types.ts';\n\nexport default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void {\n const now = options.now || new Date();\n fs.utimes(fullPath, now, new Date(entry.mtime), callback);\n}\n"],"names":["fs","utimes","fullPath","entry","options","callback","now","Date","mtime"],"mappings":"AAAA,mDAAmD;AAGnD,OAAOA,QAAQ,cAAc;AAG7B,eAAe,SAASC,OAAOC,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACvH,MAAMC,MAAMF,QAAQE,GAAG,IAAI,IAAIC;IAC/BP,GAAGC,MAAM,CAACC,UAAUI,KAAK,IAAIC,KAAKJ,MAAMK,KAAK,GAAGH;AAClD"}
|
|
@@ -78,5 +78,4 @@ export declare function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?
|
|
|
78
78
|
export declare function isNaN(value: number): boolean;
|
|
79
79
|
export declare function inflateRaw(input: Buffer): Buffer;
|
|
80
80
|
export declare function createInflateRawStream(): NodeJS.ReadWriteStream;
|
|
81
|
-
export declare function setImmediateFn(fn: () => void): void;
|
|
82
81
|
export declare function objectAssign<T, U>(target: T, source: U): T & U;
|
|
@@ -266,15 +266,6 @@ export function createInflateRawStream() {
|
|
|
266
266
|
};
|
|
267
267
|
return transform;
|
|
268
268
|
}
|
|
269
|
-
/**
|
|
270
|
-
* setImmediate wrapper for Node.js 0.8+
|
|
271
|
-
* - Uses native setImmediate on Node 0.10+
|
|
272
|
-
* - Falls back to next-tick for Node 0.8
|
|
273
|
-
*/ const hasSetImmediate = typeof setImmediate === 'function';
|
|
274
|
-
const _nextTick = hasSetImmediate ? setImmediate : _require('next-tick');
|
|
275
|
-
export function setImmediateFn(fn) {
|
|
276
|
-
_nextTick(fn);
|
|
277
|
-
}
|
|
278
269
|
/**
|
|
279
270
|
* Object.assign wrapper for Node.js 0.8+
|
|
280
271
|
* - Uses native Object.assign on Node 4.0+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/compat.ts"],"sourcesContent":["/**\n * Buffer Compatibility Layer for Node.js 0.8+\n *\n * Provides buffer utilities that work across all Node.js versions\n * WITHOUT modifying global Buffer object.\n *\n * Version history:\n * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`\n * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`\n * - Node 10+: Warns or errors on `new Buffer()`\n *\n * Solution: Feature detection with graceful fallback in both directions.\n */\n\n// ESM-compatible require - works in both CJS and ESM\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Feature detection (runs once at module load)\nconst hasBufferAlloc = typeof Buffer.alloc === 'function';\nconst hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';\nconst hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;\n\n/**\n * Allocate a zero-filled buffer (safe)\n * - Uses Buffer.alloc() on Node 4.5+\n * - Falls back to new Buffer() + fill on Node 0.8-4.4\n */\nexport function allocBuffer(size: number): Buffer {\n if (hasBufferAlloc) {\n return Buffer.alloc(size);\n }\n // Legacy fallback: new Buffer() is uninitialized, must zero-fill\n const buf = new Buffer(size);\n buf.fill(0);\n return buf;\n}\n\n/**\n * Allocate a buffer without initialization (unsafe but faster)\n * - Uses Buffer.allocUnsafe() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n *\n * WARNING: Buffer contents are uninitialized and may contain sensitive data.\n * Only use when you will immediately overwrite all bytes.\n */\nexport function allocBufferUnsafe(size: number): Buffer {\n if (hasBufferAllocUnsafe) {\n return Buffer.allocUnsafe(size);\n }\n return new Buffer(size);\n}\n\n/**\n * Create a buffer from string, array, or existing buffer\n * - Uses Buffer.from() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)\n */\nexport function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer {\n if (hasBufferFrom) {\n if (typeof data === 'string') {\n return Buffer.from(data, encoding);\n }\n return Buffer.from(data as number[] | Buffer);\n }\n // Node 0.8 compatibility - deprecated Buffer constructor\n // For Uint8Array, convert to array first (needed for crypto output in Node 0.8)\n if (data instanceof Uint8Array && !(data instanceof Buffer)) {\n const arr: number[] = [];\n for (let i = 0; i < data.length; i++) {\n arr.push(data[i]);\n }\n return new Buffer(arr);\n }\n return new Buffer(data as string & number[], encoding);\n}\n\n/**\n * Compare two buffers or buffer regions\n * - Uses Buffer.compare() on Node 5.10+ (with offset support)\n * - Falls back to manual comparison on Node 0.8-5.9\n */\nexport function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number {\n sourceStart = sourceStart || 0;\n sourceEnd = sourceEnd || source.length;\n targetStart = targetStart || 0;\n targetEnd = targetEnd || target.length;\n\n // Check if native compare with offset support exists (Node 5.10+)\n if (source.compare && source.compare.length >= 5) {\n return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);\n }\n\n // Manual comparison for older Node versions\n const sourceLen = sourceEnd - sourceStart;\n const targetLen = targetEnd - targetStart;\n const len = Math.min(sourceLen, targetLen);\n\n for (let i = 0; i < len; i++) {\n const s = source[sourceStart + i];\n const t = target[targetStart + i];\n if (s !== t) return s < t ? -1 : 1;\n }\n\n return sourceLen - targetLen;\n}\n\n/**\n * Check if buffer region equals byte array\n * Useful for magic number detection without Buffer.from()\n */\nexport function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean {\n if (offset + expected.length > buf.length) return false;\n for (let i = 0; i < expected.length; i++) {\n if (buf[offset + i] !== expected[i]) return false;\n }\n return true;\n}\n\n/**\n * Copy buffer region to new buffer\n * Works on all Node versions\n */\nexport function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer {\n const result = allocBuffer(end - start);\n buf.copy(result, 0, start, end);\n return result;\n}\n\n/**\n * Read 64-bit unsigned integer (little-endian)\n * Uses two 32-bit reads since BigInt not available until Node 10.4\n *\n * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)\n * This covers files up to ~9 PB which is practical for all real use cases.\n */\nexport function readUInt64LE(buf: Buffer, offset: number): number {\n const low = buf.readUInt32LE(offset);\n const high = buf.readUInt32LE(offset + 4);\n return high * 0x100000000 + low;\n}\n\n/**\n * Write 64-bit unsigned integer (little-endian)\n * Same precision limitation as readUInt64LE\n */\nexport function writeUInt64LE(buf: Buffer, value: number, offset: number): void {\n const low = value >>> 0;\n const high = (value / 0x100000000) >>> 0;\n buf.writeUInt32LE(low, offset);\n buf.writeUInt32LE(high, offset + 4);\n}\n\n/**\n * Concatenate buffers - compatible with Node 0.8\n * Handles crypto output which may not be proper Buffer instances in old Node.\n *\n * NOTE: This function is primarily needed for AES decryption compatibility\n * in Node 0.8 where crypto output may not be proper Buffer instances.\n * Libraries not using crypto can use native Buffer.concat() directly.\n */\nexport function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer {\n // Calculate actual total length first\n let actualLength = 0;\n for (let i = 0; i < list.length; i++) {\n actualLength += list[i].length;\n }\n\n // Use specified totalLength or actual length\n const targetLength = totalLength !== undefined ? totalLength : actualLength;\n\n // Check if all items are proper Buffers AND no truncation needed\n // (Node 0.8's Buffer.concat doesn't handle truncation well)\n let allBuffers = true;\n for (let j = 0; j < list.length; j++) {\n if (!(list[j] instanceof Buffer)) {\n allBuffers = false;\n break;\n }\n }\n if (allBuffers && targetLength >= actualLength) {\n return Buffer.concat(list as Buffer[], targetLength);\n }\n\n // Manual concat for mixed types or when truncation is needed\n const result = allocBuffer(targetLength);\n let offset = 0;\n for (let k = 0; k < list.length && offset < targetLength; k++) {\n const buf = list[k];\n for (let l = 0; l < buf.length && offset < targetLength; l++) {\n result[offset++] = buf[l];\n }\n }\n return result;\n}\n\n/**\n * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)\n * Uses self-comparison: NaN is the only value not equal to itself\n */\n// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy compatibility\nexport function isNaN(value: number): boolean {\n // biome-ignore lint/suspicious/noSelfCompare: NaN check pattern\n return value !== value;\n}\n\n/**\n * Decompress raw DEFLATE data (no zlib/gzip header)\n * - Uses native zlib.inflateRawSync() on Node 0.11.12+\n * - Falls back to pako for Node 0.8-0.10\n *\n * Version history:\n * - Node 0.8-0.10: No zlib sync methods, use pako\n * - Node 0.11.12+: zlib.inflateRawSync available\n */\n// Feature detection for native zlib sync methods (Node 0.11.12+)\nlet zlib: typeof import('zlib') | null = null;\ntry {\n zlib = _require('zlib');\n} catch (_e) {\n // zlib not available (shouldn't happen in Node.js)\n}\nconst hasNativeInflateRaw = zlib !== null && typeof zlib.inflateRawSync === 'function';\n\nexport function inflateRaw(input: Buffer): Buffer {\n if (hasNativeInflateRaw && zlib) {\n return zlib.inflateRawSync(input);\n }\n // Fallback to pako for Node 0.8-0.10\n const pako = _require('pako');\n return bufferFrom(pako.inflateRaw(input));\n}\n\n/**\n * Create a streaming raw DEFLATE decompressor (Transform stream)\n * Decompresses data incrementally to avoid holding full output in memory.\n *\n * - Uses native zlib.createInflateRaw() on Node 0.11.12+\n * - Falls back to pako-based Transform for Node 0.8-0.10\n *\n * @returns A Transform stream that decompresses raw DEFLATE data\n */\n// Check for native streaming inflate (Node 0.11.12+ has createInflateRaw)\n// biome-ignore lint/suspicious/noExplicitAny: createInflateRaw not in older TS definitions\nconst hasNativeStreamingInflate = zlib !== null && typeof (zlib as any).createInflateRaw === 'function';\n\nexport function createInflateRawStream(): NodeJS.ReadWriteStream {\n if (hasNativeStreamingInflate && zlib) {\n // Use native zlib streaming Transform\n // biome-ignore lint/suspicious/noExplicitAny: createInflateRaw not in older TS definitions\n return (zlib as any).createInflateRaw();\n }\n\n // Fallback to pako-based Transform for Node 0.8-0.10\n // Use readable-stream for Node 0.8 compatibility\n const Transform = _require('readable-stream').Transform;\n const pako = _require('pako');\n\n const inflate = new pako.Inflate({ raw: true, chunkSize: 16384 });\n const transform = new Transform();\n const pendingChunks: Buffer[] = [];\n let ended = false;\n\n // Pako calls onData synchronously during push()\n inflate.onData = (chunk: Uint8Array) => {\n pendingChunks.push(bufferFrom(chunk));\n };\n\n inflate.onEnd = (status: number) => {\n ended = true;\n if (status !== 0) {\n transform.emit('error', new Error(`Inflate error: ${inflate.msg || 'unknown'}`));\n }\n };\n\n transform._transform = function (chunk: Buffer, _encoding: string, callback: (err?: Error) => void) {\n try {\n inflate.push(chunk, false);\n // Push any pending decompressed chunks\n while (pendingChunks.length > 0) {\n this.push(pendingChunks.shift());\n }\n callback();\n } catch (err) {\n callback(err as Error);\n }\n };\n\n transform._flush = function (callback: (err?: Error) => void) {\n try {\n inflate.push(new Uint8Array(0), true); // Signal end\n // Push any remaining decompressed chunks\n while (pendingChunks.length > 0) {\n this.push(pendingChunks.shift());\n }\n if (ended && inflate.err) {\n callback(new Error(`Inflate error: ${inflate.msg || 'unknown'}`));\n } else {\n callback();\n }\n } catch (err) {\n callback(err as Error);\n }\n };\n\n return transform;\n}\n\n/**\n * setImmediate wrapper for Node.js 0.8+\n * - Uses native setImmediate on Node 0.10+\n * - Falls back to next-tick for Node 0.8\n */\nconst hasSetImmediate = typeof setImmediate === 'function';\nconst _nextTick: (fn: () => void) => void = hasSetImmediate ? setImmediate : _require('next-tick');\n\nexport function setImmediateFn(fn: () => void): void {\n _nextTick(fn);\n}\n\n/**\n * Object.assign wrapper for Node.js 0.8+\n * - Uses native Object.assign on Node 4.0+\n * - Falls back to manual property copy on Node 0.8-3.x\n */\nconst hasObjectAssign = typeof Object.assign === 'function';\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport function objectAssign<T, U>(target: T, source: U): T & U {\n if (hasObjectAssign) {\n return Object.assign(target, source);\n }\n for (const key in source) {\n if (_hasOwnProperty.call(source, key)) {\n // biome-ignore lint/suspicious/noExplicitAny: Generic object assignment for Node 0.8 compat\n (target as any)[key] = (source as any)[key];\n }\n }\n return target as T & U;\n}\n"],"names":["Module","_require","require","createRequire","url","hasBufferAlloc","Buffer","alloc","hasBufferAllocUnsafe","allocUnsafe","hasBufferFrom","from","Uint8Array","allocBuffer","size","buf","fill","allocBufferUnsafe","bufferFrom","data","encoding","arr","i","length","push","bufferCompare","source","target","targetStart","targetEnd","sourceStart","sourceEnd","compare","sourceLen","targetLen","len","Math","min","s","t","bufferEquals","offset","expected","bufferSliceCopy","start","end","result","copy","readUInt64LE","low","readUInt32LE","high","writeUInt64LE","value","writeUInt32LE","bufferConcat","list","totalLength","actualLength","targetLength","undefined","allBuffers","j","concat","k","l","isNaN","zlib","_e","hasNativeInflateRaw","inflateRawSync","inflateRaw","input","pako","hasNativeStreamingInflate","createInflateRaw","createInflateRawStream","Transform","inflate","Inflate","raw","chunkSize","transform","pendingChunks","ended","onData","chunk","onEnd","status","emit","Error","msg","_transform","_encoding","callback","shift","err","_flush","hasSetImmediate","setImmediate","_nextTick","setImmediateFn","fn","hasObjectAssign","Object","assign","_hasOwnProperty","prototype","hasOwnProperty","objectAssign","key","call"],"mappings":"AAAA;;;;;;;;;;;;CAYC,GAED,qDAAqD;AACrD,OAAOA,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,+CAA+C;AAC/C,MAAMG,iBAAiB,OAAOC,OAAOC,KAAK,KAAK;AAC/C,MAAMC,uBAAuB,OAAOF,OAAOG,WAAW,KAAK;AAC3D,MAAMC,gBAAgB,OAAOJ,OAAOK,IAAI,KAAK,cAAcL,OAAOK,IAAI,KAAKC,WAAWD,IAAI;AAE1F;;;;CAIC,GACD,OAAO,SAASE,YAAYC,IAAY;IACtC,IAAIT,gBAAgB;QAClB,OAAOC,OAAOC,KAAK,CAACO;IACtB;IACA,iEAAiE;IACjE,MAAMC,MAAM,IAAIT,OAAOQ;IACvBC,IAAIC,IAAI,CAAC;IACT,OAAOD;AACT;AAEA;;;;;;;CAOC,GACD,OAAO,SAASE,kBAAkBH,IAAY;IAC5C,IAAIN,sBAAsB;QACxB,OAAOF,OAAOG,WAAW,CAACK;IAC5B;IACA,OAAO,IAAIR,OAAOQ;AACpB;AAEA;;;;;CAKC,GACD,OAAO,SAASI,WAAWC,IAA6C,EAAEC,QAAyB;IACjG,IAAIV,eAAe;QACjB,IAAI,OAAOS,SAAS,UAAU;YAC5B,OAAOb,OAAOK,IAAI,CAACQ,MAAMC;QAC3B;QACA,OAAOd,OAAOK,IAAI,CAACQ;IACrB;IACA,yDAAyD;IACzD,gFAAgF;IAChF,IAAIA,gBAAgBP,cAAc,CAAEO,CAAAA,gBAAgBb,MAAK,GAAI;QAC3D,MAAMe,MAAgB,EAAE;QACxB,IAAK,IAAIC,IAAI,GAAGA,IAAIH,KAAKI,MAAM,EAAED,IAAK;YACpCD,IAAIG,IAAI,CAACL,IAAI,CAACG,EAAE;QAClB;QACA,OAAO,IAAIhB,OAAOe;IACpB;IACA,OAAO,IAAIf,OAAOa,MAA2BC;AAC/C;AAEA;;;;CAIC,GACD,OAAO,SAASK,cAAcC,MAAc,EAAEC,MAAc,EAAEC,WAAoB,EAAEC,SAAkB,EAAEC,WAAoB,EAAEC,SAAkB;IAC9ID,cAAcA,eAAe;IAC7BC,YAAYA,aAAaL,OAAOH,MAAM;IACtCK,cAAcA,eAAe;IAC7BC,YAAYA,aAAaF,OAAOJ,MAAM;IAEtC,kEAAkE;IAClE,IAAIG,OAAOM,OAAO,IAAIN,OAAOM,OAAO,CAACT,MAAM,IAAI,GAAG;QAChD,OAAOG,OAAOM,OAAO,CAACL,QAAQC,aAAaC,WAAWC,aAAaC;IACrE;IAEA,4CAA4C;IAC5C,MAAME,YAAYF,YAAYD;IAC9B,MAAMI,YAAYL,YAAYD;IAC9B,MAAMO,MAAMC,KAAKC,GAAG,CAACJ,WAAWC;IAEhC,IAAK,IAAIZ,IAAI,GAAGA,IAAIa,KAAKb,IAAK;QAC5B,MAAMgB,IAAIZ,MAAM,CAACI,cAAcR,EAAE;QACjC,MAAMiB,IAAIZ,MAAM,CAACC,cAAcN,EAAE;QACjC,IAAIgB,MAAMC,GAAG,OAAOD,IAAIC,IAAI,CAAC,IAAI;IACnC;IAEA,OAAON,YAAYC;AACrB;AAEA;;;CAGC,GACD,OAAO,SAASM,aAAazB,GAAW,EAAE0B,MAAc,EAAEC,QAAkB;IAC1E,IAAID,SAASC,SAASnB,MAAM,GAAGR,IAAIQ,MAAM,EAAE,OAAO;IAClD,IAAK,IAAID,IAAI,GAAGA,IAAIoB,SAASnB,MAAM,EAAED,IAAK;QACxC,IAAIP,GAAG,CAAC0B,SAASnB,EAAE,KAAKoB,QAAQ,CAACpB,EAAE,EAAE,OAAO;IAC9C;IACA,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,SAASqB,gBAAgB5B,GAAW,EAAE6B,KAAa,EAAEC,GAAW;IACrE,MAAMC,SAASjC,YAAYgC,MAAMD;IACjC7B,IAAIgC,IAAI,CAACD,QAAQ,GAAGF,OAAOC;IAC3B,OAAOC;AACT;AAEA;;;;;;CAMC,GACD,OAAO,SAASE,aAAajC,GAAW,EAAE0B,MAAc;IACtD,MAAMQ,MAAMlC,IAAImC,YAAY,CAACT;IAC7B,MAAMU,OAAOpC,IAAImC,YAAY,CAACT,SAAS;IACvC,OAAOU,OAAO,cAAcF;AAC9B;AAEA;;;CAGC,GACD,OAAO,SAASG,cAAcrC,GAAW,EAAEsC,KAAa,EAAEZ,MAAc;IACtE,MAAMQ,MAAMI,UAAU;IACtB,MAAMF,OAAO,AAACE,QAAQ,gBAAiB;IACvCtC,IAAIuC,aAAa,CAACL,KAAKR;IACvB1B,IAAIuC,aAAa,CAACH,MAAMV,SAAS;AACnC;AAEA;;;;;;;CAOC,GACD,OAAO,SAASc,aAAaC,IAA6B,EAAEC,WAAoB;IAC9E,sCAAsC;IACtC,IAAIC,eAAe;IACnB,IAAK,IAAIpC,IAAI,GAAGA,IAAIkC,KAAKjC,MAAM,EAAED,IAAK;QACpCoC,gBAAgBF,IAAI,CAAClC,EAAE,CAACC,MAAM;IAChC;IAEA,6CAA6C;IAC7C,MAAMoC,eAAeF,gBAAgBG,YAAYH,cAAcC;IAE/D,iEAAiE;IACjE,4DAA4D;IAC5D,IAAIG,aAAa;IACjB,IAAK,IAAIC,IAAI,GAAGA,IAAIN,KAAKjC,MAAM,EAAEuC,IAAK;QACpC,IAAI,CAAEN,CAAAA,IAAI,CAACM,EAAE,YAAYxD,MAAK,GAAI;YAChCuD,aAAa;YACb;QACF;IACF;IACA,IAAIA,cAAcF,gBAAgBD,cAAc;QAC9C,OAAOpD,OAAOyD,MAAM,CAACP,MAAkBG;IACzC;IAEA,6DAA6D;IAC7D,MAAMb,SAASjC,YAAY8C;IAC3B,IAAIlB,SAAS;IACb,IAAK,IAAIuB,IAAI,GAAGA,IAAIR,KAAKjC,MAAM,IAAIkB,SAASkB,cAAcK,IAAK;QAC7D,MAAMjD,MAAMyC,IAAI,CAACQ,EAAE;QACnB,IAAK,IAAIC,IAAI,GAAGA,IAAIlD,IAAIQ,MAAM,IAAIkB,SAASkB,cAAcM,IAAK;YAC5DnB,MAAM,CAACL,SAAS,GAAG1B,GAAG,CAACkD,EAAE;QAC3B;IACF;IACA,OAAOnB;AACT;AAEA;;;CAGC,GACD,6EAA6E;AAC7E,OAAO,SAASoB,MAAMb,KAAa;IACjC,gEAAgE;IAChE,OAAOA,UAAUA;AACnB;AAEA;;;;;;;;CAQC,GACD,iEAAiE;AACjE,IAAIc,OAAqC;AACzC,IAAI;IACFA,OAAOlE,SAAS;AAClB,EAAE,OAAOmE,IAAI;AACX,mDAAmD;AACrD;AACA,MAAMC,sBAAsBF,SAAS,QAAQ,OAAOA,KAAKG,cAAc,KAAK;AAE5E,OAAO,SAASC,WAAWC,KAAa;IACtC,IAAIH,uBAAuBF,MAAM;QAC/B,OAAOA,KAAKG,cAAc,CAACE;IAC7B;IACA,qCAAqC;IACrC,MAAMC,OAAOxE,SAAS;IACtB,OAAOiB,WAAWuD,KAAKF,UAAU,CAACC;AACpC;AAEA;;;;;;;;CAQC,GACD,0EAA0E;AAC1E,2FAA2F;AAC3F,MAAME,4BAA4BP,SAAS,QAAQ,OAAO,AAACA,KAAaQ,gBAAgB,KAAK;AAE7F,OAAO,SAASC;IACd,IAAIF,6BAA6BP,MAAM;QACrC,sCAAsC;QACtC,2FAA2F;QAC3F,OAAO,AAACA,KAAaQ,gBAAgB;IACvC;IAEA,qDAAqD;IACrD,iDAAiD;IACjD,MAAME,YAAY5E,SAAS,mBAAmB4E,SAAS;IACvD,MAAMJ,OAAOxE,SAAS;IAEtB,MAAM6E,UAAU,IAAIL,KAAKM,OAAO,CAAC;QAAEC,KAAK;QAAMC,WAAW;IAAM;IAC/D,MAAMC,YAAY,IAAIL;IACtB,MAAMM,gBAA0B,EAAE;IAClC,IAAIC,QAAQ;IAEZ,gDAAgD;IAChDN,QAAQO,MAAM,GAAG,CAACC;QAChBH,cAAc3D,IAAI,CAACN,WAAWoE;IAChC;IAEAR,QAAQS,KAAK,GAAG,CAACC;QACfJ,QAAQ;QACR,IAAII,WAAW,GAAG;YAChBN,UAAUO,IAAI,CAAC,SAAS,IAAIC,MAAM,CAAC,eAAe,EAAEZ,QAAQa,GAAG,IAAI,WAAW;QAChF;IACF;IAEAT,UAAUU,UAAU,GAAG,SAAUN,KAAa,EAAEO,SAAiB,EAAEC,QAA+B;QAChG,IAAI;YACFhB,QAAQtD,IAAI,CAAC8D,OAAO;YACpB,uCAAuC;YACvC,MAAOH,cAAc5D,MAAM,GAAG,EAAG;gBAC/B,IAAI,CAACC,IAAI,CAAC2D,cAAcY,KAAK;YAC/B;YACAD;QACF,EAAE,OAAOE,KAAK;YACZF,SAASE;QACX;IACF;IAEAd,UAAUe,MAAM,GAAG,SAAUH,QAA+B;QAC1D,IAAI;YACFhB,QAAQtD,IAAI,CAAC,IAAIZ,WAAW,IAAI,OAAO,aAAa;YACpD,yCAAyC;YACzC,MAAOuE,cAAc5D,MAAM,GAAG,EAAG;gBAC/B,IAAI,CAACC,IAAI,CAAC2D,cAAcY,KAAK;YAC/B;YACA,IAAIX,SAASN,QAAQkB,GAAG,EAAE;gBACxBF,SAAS,IAAIJ,MAAM,CAAC,eAAe,EAAEZ,QAAQa,GAAG,IAAI,WAAW;YACjE,OAAO;gBACLG;YACF;QACF,EAAE,OAAOE,KAAK;YACZF,SAASE;QACX;IACF;IAEA,OAAOd;AACT;AAEA;;;;CAIC,GACD,MAAMgB,kBAAkB,OAAOC,iBAAiB;AAChD,MAAMC,YAAsCF,kBAAkBC,eAAelG,SAAS;AAEtF,OAAO,SAASoG,eAAeC,EAAc;IAC3CF,UAAUE;AACZ;AAEA;;;;CAIC,GACD,MAAMC,kBAAkB,OAAOC,OAAOC,MAAM,KAAK;AACjD,MAAMC,kBAAkBF,OAAOG,SAAS,CAACC,cAAc;AAEvD,OAAO,SAASC,aAAmBlF,MAAS,EAAED,MAAS;IACrD,IAAI6E,iBAAiB;QACnB,OAAOC,OAAOC,MAAM,CAAC9E,QAAQD;IAC/B;IACA,IAAK,MAAMoF,OAAOpF,OAAQ;QACxB,IAAIgF,gBAAgBK,IAAI,CAACrF,QAAQoF,MAAM;YACrC,4FAA4F;YAC3FnF,MAAc,CAACmF,IAAI,GAAG,AAACpF,MAAc,CAACoF,IAAI;QAC7C;IACF;IACA,OAAOnF;AACT"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/compat.ts"],"sourcesContent":["/**\n * Buffer Compatibility Layer for Node.js 0.8+\n *\n * Provides buffer utilities that work across all Node.js versions\n * WITHOUT modifying global Buffer object.\n *\n * Version history:\n * - Node 0.8-4.4: Only has `new Buffer()`, no `Buffer.alloc/from`\n * - Node 4.5+: Has `Buffer.alloc/from`, deprecates `new Buffer()`\n * - Node 10+: Warns or errors on `new Buffer()`\n *\n * Solution: Feature detection with graceful fallback in both directions.\n */\n\n// ESM-compatible require - works in both CJS and ESM\nimport Module from 'module';\n\nconst _require = typeof require === 'undefined' ? Module.createRequire(import.meta.url) : require;\n\n// Feature detection (runs once at module load)\nconst hasBufferAlloc = typeof Buffer.alloc === 'function';\nconst hasBufferAllocUnsafe = typeof Buffer.allocUnsafe === 'function';\nconst hasBufferFrom = typeof Buffer.from === 'function' && Buffer.from !== Uint8Array.from;\n\n/**\n * Allocate a zero-filled buffer (safe)\n * - Uses Buffer.alloc() on Node 4.5+\n * - Falls back to new Buffer() + fill on Node 0.8-4.4\n */\nexport function allocBuffer(size: number): Buffer {\n if (hasBufferAlloc) {\n return Buffer.alloc(size);\n }\n // Legacy fallback: new Buffer() is uninitialized, must zero-fill\n const buf = new Buffer(size);\n buf.fill(0);\n return buf;\n}\n\n/**\n * Allocate a buffer without initialization (unsafe but faster)\n * - Uses Buffer.allocUnsafe() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n *\n * WARNING: Buffer contents are uninitialized and may contain sensitive data.\n * Only use when you will immediately overwrite all bytes.\n */\nexport function allocBufferUnsafe(size: number): Buffer {\n if (hasBufferAllocUnsafe) {\n return Buffer.allocUnsafe(size);\n }\n return new Buffer(size);\n}\n\n/**\n * Create a buffer from string, array, or existing buffer\n * - Uses Buffer.from() on Node 4.5+\n * - Falls back to new Buffer() on Node 0.8-4.4\n * - Handles Uint8Array conversion for Node 0.8 (crypto output compatibility)\n */\nexport function bufferFrom(data: string | number[] | Buffer | Uint8Array, encoding?: BufferEncoding): Buffer {\n if (hasBufferFrom) {\n if (typeof data === 'string') {\n return Buffer.from(data, encoding);\n }\n return Buffer.from(data as number[] | Buffer);\n }\n // Node 0.8 compatibility - deprecated Buffer constructor\n // For Uint8Array, convert to array first (needed for crypto output in Node 0.8)\n if (data instanceof Uint8Array && !(data instanceof Buffer)) {\n const arr: number[] = [];\n for (let i = 0; i < data.length; i++) {\n arr.push(data[i]);\n }\n return new Buffer(arr);\n }\n return new Buffer(data as string & number[], encoding);\n}\n\n/**\n * Compare two buffers or buffer regions\n * - Uses Buffer.compare() on Node 5.10+ (with offset support)\n * - Falls back to manual comparison on Node 0.8-5.9\n */\nexport function bufferCompare(source: Buffer, target: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number {\n sourceStart = sourceStart || 0;\n sourceEnd = sourceEnd || source.length;\n targetStart = targetStart || 0;\n targetEnd = targetEnd || target.length;\n\n // Check if native compare with offset support exists (Node 5.10+)\n if (source.compare && source.compare.length >= 5) {\n return source.compare(target, targetStart, targetEnd, sourceStart, sourceEnd);\n }\n\n // Manual comparison for older Node versions\n const sourceLen = sourceEnd - sourceStart;\n const targetLen = targetEnd - targetStart;\n const len = Math.min(sourceLen, targetLen);\n\n for (let i = 0; i < len; i++) {\n const s = source[sourceStart + i];\n const t = target[targetStart + i];\n if (s !== t) return s < t ? -1 : 1;\n }\n\n return sourceLen - targetLen;\n}\n\n/**\n * Check if buffer region equals byte array\n * Useful for magic number detection without Buffer.from()\n */\nexport function bufferEquals(buf: Buffer, offset: number, expected: number[]): boolean {\n if (offset + expected.length > buf.length) return false;\n for (let i = 0; i < expected.length; i++) {\n if (buf[offset + i] !== expected[i]) return false;\n }\n return true;\n}\n\n/**\n * Copy buffer region to new buffer\n * Works on all Node versions\n */\nexport function bufferSliceCopy(buf: Buffer, start: number, end: number): Buffer {\n const result = allocBuffer(end - start);\n buf.copy(result, 0, start, end);\n return result;\n}\n\n/**\n * Read 64-bit unsigned integer (little-endian)\n * Uses two 32-bit reads since BigInt not available until Node 10.4\n *\n * WARNING: Only accurate for values < Number.MAX_SAFE_INTEGER (2^53 - 1)\n * This covers files up to ~9 PB which is practical for all real use cases.\n */\nexport function readUInt64LE(buf: Buffer, offset: number): number {\n const low = buf.readUInt32LE(offset);\n const high = buf.readUInt32LE(offset + 4);\n return high * 0x100000000 + low;\n}\n\n/**\n * Write 64-bit unsigned integer (little-endian)\n * Same precision limitation as readUInt64LE\n */\nexport function writeUInt64LE(buf: Buffer, value: number, offset: number): void {\n const low = value >>> 0;\n const high = (value / 0x100000000) >>> 0;\n buf.writeUInt32LE(low, offset);\n buf.writeUInt32LE(high, offset + 4);\n}\n\n/**\n * Concatenate buffers - compatible with Node 0.8\n * Handles crypto output which may not be proper Buffer instances in old Node.\n *\n * NOTE: This function is primarily needed for AES decryption compatibility\n * in Node 0.8 where crypto output may not be proper Buffer instances.\n * Libraries not using crypto can use native Buffer.concat() directly.\n */\nexport function bufferConcat(list: (Buffer | Uint8Array)[], totalLength?: number): Buffer {\n // Calculate actual total length first\n let actualLength = 0;\n for (let i = 0; i < list.length; i++) {\n actualLength += list[i].length;\n }\n\n // Use specified totalLength or actual length\n const targetLength = totalLength !== undefined ? totalLength : actualLength;\n\n // Check if all items are proper Buffers AND no truncation needed\n // (Node 0.8's Buffer.concat doesn't handle truncation well)\n let allBuffers = true;\n for (let j = 0; j < list.length; j++) {\n if (!(list[j] instanceof Buffer)) {\n allBuffers = false;\n break;\n }\n }\n if (allBuffers && targetLength >= actualLength) {\n return Buffer.concat(list as Buffer[], targetLength);\n }\n\n // Manual concat for mixed types or when truncation is needed\n const result = allocBuffer(targetLength);\n let offset = 0;\n for (let k = 0; k < list.length && offset < targetLength; k++) {\n const buf = list[k];\n for (let l = 0; l < buf.length && offset < targetLength; l++) {\n result[offset++] = buf[l];\n }\n }\n return result;\n}\n\n/**\n * Node 0.8 compatible isNaN (Number.isNaN didn't exist until ES2015)\n * Uses self-comparison: NaN is the only value not equal to itself\n */\n// biome-ignore lint/suspicious/noShadowRestrictedNames: Legacy compatibility\nexport function isNaN(value: number): boolean {\n // biome-ignore lint/suspicious/noSelfCompare: NaN check pattern\n return value !== value;\n}\n\n/**\n * Decompress raw DEFLATE data (no zlib/gzip header)\n * - Uses native zlib.inflateRawSync() on Node 0.11.12+\n * - Falls back to pako for Node 0.8-0.10\n *\n * Version history:\n * - Node 0.8-0.10: No zlib sync methods, use pako\n * - Node 0.11.12+: zlib.inflateRawSync available\n */\n// Feature detection for native zlib sync methods (Node 0.11.12+)\nlet zlib: typeof import('zlib') | null = null;\ntry {\n zlib = _require('zlib');\n} catch (_e) {\n // zlib not available (shouldn't happen in Node.js)\n}\nconst hasNativeInflateRaw = zlib !== null && typeof zlib.inflateRawSync === 'function';\n\nexport function inflateRaw(input: Buffer): Buffer {\n if (hasNativeInflateRaw && zlib) {\n return zlib.inflateRawSync(input);\n }\n // Fallback to pako for Node 0.8-0.10\n const pako = _require('pako');\n return bufferFrom(pako.inflateRaw(input));\n}\n\n/**\n * Create a streaming raw DEFLATE decompressor (Transform stream)\n * Decompresses data incrementally to avoid holding full output in memory.\n *\n * - Uses native zlib.createInflateRaw() on Node 0.11.12+\n * - Falls back to pako-based Transform for Node 0.8-0.10\n *\n * @returns A Transform stream that decompresses raw DEFLATE data\n */\n// Check for native streaming inflate (Node 0.11.12+ has createInflateRaw)\n// biome-ignore lint/suspicious/noExplicitAny: createInflateRaw not in older TS definitions\nconst hasNativeStreamingInflate = zlib !== null && typeof (zlib as any).createInflateRaw === 'function';\n\nexport function createInflateRawStream(): NodeJS.ReadWriteStream {\n if (hasNativeStreamingInflate && zlib) {\n // Use native zlib streaming Transform\n // biome-ignore lint/suspicious/noExplicitAny: createInflateRaw not in older TS definitions\n return (zlib as any).createInflateRaw();\n }\n\n // Fallback to pako-based Transform for Node 0.8-0.10\n // Use readable-stream for Node 0.8 compatibility\n const Transform = _require('readable-stream').Transform;\n const pako = _require('pako');\n\n const inflate = new pako.Inflate({ raw: true, chunkSize: 16384 });\n const transform = new Transform();\n const pendingChunks: Buffer[] = [];\n let ended = false;\n\n // Pako calls onData synchronously during push()\n inflate.onData = (chunk: Uint8Array) => {\n pendingChunks.push(bufferFrom(chunk));\n };\n\n inflate.onEnd = (status: number) => {\n ended = true;\n if (status !== 0) {\n transform.emit('error', new Error(`Inflate error: ${inflate.msg || 'unknown'}`));\n }\n };\n\n transform._transform = function (chunk: Buffer, _encoding: string, callback: (err?: Error) => void) {\n try {\n inflate.push(chunk, false);\n // Push any pending decompressed chunks\n while (pendingChunks.length > 0) {\n this.push(pendingChunks.shift());\n }\n callback();\n } catch (err) {\n callback(err as Error);\n }\n };\n\n transform._flush = function (callback: (err?: Error) => void) {\n try {\n inflate.push(new Uint8Array(0), true); // Signal end\n // Push any remaining decompressed chunks\n while (pendingChunks.length > 0) {\n this.push(pendingChunks.shift());\n }\n if (ended && inflate.err) {\n callback(new Error(`Inflate error: ${inflate.msg || 'unknown'}`));\n } else {\n callback();\n }\n } catch (err) {\n callback(err as Error);\n }\n };\n\n return transform;\n}\n\n/**\n * Object.assign wrapper for Node.js 0.8+\n * - Uses native Object.assign on Node 4.0+\n * - Falls back to manual property copy on Node 0.8-3.x\n */\nconst hasObjectAssign = typeof Object.assign === 'function';\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport function objectAssign<T, U>(target: T, source: U): T & U {\n if (hasObjectAssign) {\n return Object.assign(target, source);\n }\n for (const key in source) {\n if (_hasOwnProperty.call(source, key)) {\n // biome-ignore lint/suspicious/noExplicitAny: Generic object assignment for Node 0.8 compat\n (target as any)[key] = (source as any)[key];\n }\n }\n return target as T & U;\n}\n"],"names":["Module","_require","require","createRequire","url","hasBufferAlloc","Buffer","alloc","hasBufferAllocUnsafe","allocUnsafe","hasBufferFrom","from","Uint8Array","allocBuffer","size","buf","fill","allocBufferUnsafe","bufferFrom","data","encoding","arr","i","length","push","bufferCompare","source","target","targetStart","targetEnd","sourceStart","sourceEnd","compare","sourceLen","targetLen","len","Math","min","s","t","bufferEquals","offset","expected","bufferSliceCopy","start","end","result","copy","readUInt64LE","low","readUInt32LE","high","writeUInt64LE","value","writeUInt32LE","bufferConcat","list","totalLength","actualLength","targetLength","undefined","allBuffers","j","concat","k","l","isNaN","zlib","_e","hasNativeInflateRaw","inflateRawSync","inflateRaw","input","pako","hasNativeStreamingInflate","createInflateRaw","createInflateRawStream","Transform","inflate","Inflate","raw","chunkSize","transform","pendingChunks","ended","onData","chunk","onEnd","status","emit","Error","msg","_transform","_encoding","callback","shift","err","_flush","hasObjectAssign","Object","assign","_hasOwnProperty","prototype","hasOwnProperty","objectAssign","key","call"],"mappings":"AAAA;;;;;;;;;;;;CAYC,GAED,qDAAqD;AACrD,OAAOA,YAAY,SAAS;AAE5B,MAAMC,WAAW,OAAOC,YAAY,cAAcF,OAAOG,aAAa,CAAC,YAAYC,GAAG,IAAIF;AAE1F,+CAA+C;AAC/C,MAAMG,iBAAiB,OAAOC,OAAOC,KAAK,KAAK;AAC/C,MAAMC,uBAAuB,OAAOF,OAAOG,WAAW,KAAK;AAC3D,MAAMC,gBAAgB,OAAOJ,OAAOK,IAAI,KAAK,cAAcL,OAAOK,IAAI,KAAKC,WAAWD,IAAI;AAE1F;;;;CAIC,GACD,OAAO,SAASE,YAAYC,IAAY;IACtC,IAAIT,gBAAgB;QAClB,OAAOC,OAAOC,KAAK,CAACO;IACtB;IACA,iEAAiE;IACjE,MAAMC,MAAM,IAAIT,OAAOQ;IACvBC,IAAIC,IAAI,CAAC;IACT,OAAOD;AACT;AAEA;;;;;;;CAOC,GACD,OAAO,SAASE,kBAAkBH,IAAY;IAC5C,IAAIN,sBAAsB;QACxB,OAAOF,OAAOG,WAAW,CAACK;IAC5B;IACA,OAAO,IAAIR,OAAOQ;AACpB;AAEA;;;;;CAKC,GACD,OAAO,SAASI,WAAWC,IAA6C,EAAEC,QAAyB;IACjG,IAAIV,eAAe;QACjB,IAAI,OAAOS,SAAS,UAAU;YAC5B,OAAOb,OAAOK,IAAI,CAACQ,MAAMC;QAC3B;QACA,OAAOd,OAAOK,IAAI,CAACQ;IACrB;IACA,yDAAyD;IACzD,gFAAgF;IAChF,IAAIA,gBAAgBP,cAAc,CAAEO,CAAAA,gBAAgBb,MAAK,GAAI;QAC3D,MAAMe,MAAgB,EAAE;QACxB,IAAK,IAAIC,IAAI,GAAGA,IAAIH,KAAKI,MAAM,EAAED,IAAK;YACpCD,IAAIG,IAAI,CAACL,IAAI,CAACG,EAAE;QAClB;QACA,OAAO,IAAIhB,OAAOe;IACpB;IACA,OAAO,IAAIf,OAAOa,MAA2BC;AAC/C;AAEA;;;;CAIC,GACD,OAAO,SAASK,cAAcC,MAAc,EAAEC,MAAc,EAAEC,WAAoB,EAAEC,SAAkB,EAAEC,WAAoB,EAAEC,SAAkB;IAC9ID,cAAcA,eAAe;IAC7BC,YAAYA,aAAaL,OAAOH,MAAM;IACtCK,cAAcA,eAAe;IAC7BC,YAAYA,aAAaF,OAAOJ,MAAM;IAEtC,kEAAkE;IAClE,IAAIG,OAAOM,OAAO,IAAIN,OAAOM,OAAO,CAACT,MAAM,IAAI,GAAG;QAChD,OAAOG,OAAOM,OAAO,CAACL,QAAQC,aAAaC,WAAWC,aAAaC;IACrE;IAEA,4CAA4C;IAC5C,MAAME,YAAYF,YAAYD;IAC9B,MAAMI,YAAYL,YAAYD;IAC9B,MAAMO,MAAMC,KAAKC,GAAG,CAACJ,WAAWC;IAEhC,IAAK,IAAIZ,IAAI,GAAGA,IAAIa,KAAKb,IAAK;QAC5B,MAAMgB,IAAIZ,MAAM,CAACI,cAAcR,EAAE;QACjC,MAAMiB,IAAIZ,MAAM,CAACC,cAAcN,EAAE;QACjC,IAAIgB,MAAMC,GAAG,OAAOD,IAAIC,IAAI,CAAC,IAAI;IACnC;IAEA,OAAON,YAAYC;AACrB;AAEA;;;CAGC,GACD,OAAO,SAASM,aAAazB,GAAW,EAAE0B,MAAc,EAAEC,QAAkB;IAC1E,IAAID,SAASC,SAASnB,MAAM,GAAGR,IAAIQ,MAAM,EAAE,OAAO;IAClD,IAAK,IAAID,IAAI,GAAGA,IAAIoB,SAASnB,MAAM,EAAED,IAAK;QACxC,IAAIP,GAAG,CAAC0B,SAASnB,EAAE,KAAKoB,QAAQ,CAACpB,EAAE,EAAE,OAAO;IAC9C;IACA,OAAO;AACT;AAEA;;;CAGC,GACD,OAAO,SAASqB,gBAAgB5B,GAAW,EAAE6B,KAAa,EAAEC,GAAW;IACrE,MAAMC,SAASjC,YAAYgC,MAAMD;IACjC7B,IAAIgC,IAAI,CAACD,QAAQ,GAAGF,OAAOC;IAC3B,OAAOC;AACT;AAEA;;;;;;CAMC,GACD,OAAO,SAASE,aAAajC,GAAW,EAAE0B,MAAc;IACtD,MAAMQ,MAAMlC,IAAImC,YAAY,CAACT;IAC7B,MAAMU,OAAOpC,IAAImC,YAAY,CAACT,SAAS;IACvC,OAAOU,OAAO,cAAcF;AAC9B;AAEA;;;CAGC,GACD,OAAO,SAASG,cAAcrC,GAAW,EAAEsC,KAAa,EAAEZ,MAAc;IACtE,MAAMQ,MAAMI,UAAU;IACtB,MAAMF,OAAO,AAACE,QAAQ,gBAAiB;IACvCtC,IAAIuC,aAAa,CAACL,KAAKR;IACvB1B,IAAIuC,aAAa,CAACH,MAAMV,SAAS;AACnC;AAEA;;;;;;;CAOC,GACD,OAAO,SAASc,aAAaC,IAA6B,EAAEC,WAAoB;IAC9E,sCAAsC;IACtC,IAAIC,eAAe;IACnB,IAAK,IAAIpC,IAAI,GAAGA,IAAIkC,KAAKjC,MAAM,EAAED,IAAK;QACpCoC,gBAAgBF,IAAI,CAAClC,EAAE,CAACC,MAAM;IAChC;IAEA,6CAA6C;IAC7C,MAAMoC,eAAeF,gBAAgBG,YAAYH,cAAcC;IAE/D,iEAAiE;IACjE,4DAA4D;IAC5D,IAAIG,aAAa;IACjB,IAAK,IAAIC,IAAI,GAAGA,IAAIN,KAAKjC,MAAM,EAAEuC,IAAK;QACpC,IAAI,CAAEN,CAAAA,IAAI,CAACM,EAAE,YAAYxD,MAAK,GAAI;YAChCuD,aAAa;YACb;QACF;IACF;IACA,IAAIA,cAAcF,gBAAgBD,cAAc;QAC9C,OAAOpD,OAAOyD,MAAM,CAACP,MAAkBG;IACzC;IAEA,6DAA6D;IAC7D,MAAMb,SAASjC,YAAY8C;IAC3B,IAAIlB,SAAS;IACb,IAAK,IAAIuB,IAAI,GAAGA,IAAIR,KAAKjC,MAAM,IAAIkB,SAASkB,cAAcK,IAAK;QAC7D,MAAMjD,MAAMyC,IAAI,CAACQ,EAAE;QACnB,IAAK,IAAIC,IAAI,GAAGA,IAAIlD,IAAIQ,MAAM,IAAIkB,SAASkB,cAAcM,IAAK;YAC5DnB,MAAM,CAACL,SAAS,GAAG1B,GAAG,CAACkD,EAAE;QAC3B;IACF;IACA,OAAOnB;AACT;AAEA;;;CAGC,GACD,6EAA6E;AAC7E,OAAO,SAASoB,MAAMb,KAAa;IACjC,gEAAgE;IAChE,OAAOA,UAAUA;AACnB;AAEA;;;;;;;;CAQC,GACD,iEAAiE;AACjE,IAAIc,OAAqC;AACzC,IAAI;IACFA,OAAOlE,SAAS;AAClB,EAAE,OAAOmE,IAAI;AACX,mDAAmD;AACrD;AACA,MAAMC,sBAAsBF,SAAS,QAAQ,OAAOA,KAAKG,cAAc,KAAK;AAE5E,OAAO,SAASC,WAAWC,KAAa;IACtC,IAAIH,uBAAuBF,MAAM;QAC/B,OAAOA,KAAKG,cAAc,CAACE;IAC7B;IACA,qCAAqC;IACrC,MAAMC,OAAOxE,SAAS;IACtB,OAAOiB,WAAWuD,KAAKF,UAAU,CAACC;AACpC;AAEA;;;;;;;;CAQC,GACD,0EAA0E;AAC1E,2FAA2F;AAC3F,MAAME,4BAA4BP,SAAS,QAAQ,OAAO,AAACA,KAAaQ,gBAAgB,KAAK;AAE7F,OAAO,SAASC;IACd,IAAIF,6BAA6BP,MAAM;QACrC,sCAAsC;QACtC,2FAA2F;QAC3F,OAAO,AAACA,KAAaQ,gBAAgB;IACvC;IAEA,qDAAqD;IACrD,iDAAiD;IACjD,MAAME,YAAY5E,SAAS,mBAAmB4E,SAAS;IACvD,MAAMJ,OAAOxE,SAAS;IAEtB,MAAM6E,UAAU,IAAIL,KAAKM,OAAO,CAAC;QAAEC,KAAK;QAAMC,WAAW;IAAM;IAC/D,MAAMC,YAAY,IAAIL;IACtB,MAAMM,gBAA0B,EAAE;IAClC,IAAIC,QAAQ;IAEZ,gDAAgD;IAChDN,QAAQO,MAAM,GAAG,CAACC;QAChBH,cAAc3D,IAAI,CAACN,WAAWoE;IAChC;IAEAR,QAAQS,KAAK,GAAG,CAACC;QACfJ,QAAQ;QACR,IAAII,WAAW,GAAG;YAChBN,UAAUO,IAAI,CAAC,SAAS,IAAIC,MAAM,CAAC,eAAe,EAAEZ,QAAQa,GAAG,IAAI,WAAW;QAChF;IACF;IAEAT,UAAUU,UAAU,GAAG,SAAUN,KAAa,EAAEO,SAAiB,EAAEC,QAA+B;QAChG,IAAI;YACFhB,QAAQtD,IAAI,CAAC8D,OAAO;YACpB,uCAAuC;YACvC,MAAOH,cAAc5D,MAAM,GAAG,EAAG;gBAC/B,IAAI,CAACC,IAAI,CAAC2D,cAAcY,KAAK;YAC/B;YACAD;QACF,EAAE,OAAOE,KAAK;YACZF,SAASE;QACX;IACF;IAEAd,UAAUe,MAAM,GAAG,SAAUH,QAA+B;QAC1D,IAAI;YACFhB,QAAQtD,IAAI,CAAC,IAAIZ,WAAW,IAAI,OAAO,aAAa;YACpD,yCAAyC;YACzC,MAAOuE,cAAc5D,MAAM,GAAG,EAAG;gBAC/B,IAAI,CAACC,IAAI,CAAC2D,cAAcY,KAAK;YAC/B;YACA,IAAIX,SAASN,QAAQkB,GAAG,EAAE;gBACxBF,SAAS,IAAIJ,MAAM,CAAC,eAAe,EAAEZ,QAAQa,GAAG,IAAI,WAAW;YACjE,OAAO;gBACLG;YACF;QACF,EAAE,OAAOE,KAAK;YACZF,SAASE;QACX;IACF;IAEA,OAAOd;AACT;AAEA;;;;CAIC,GACD,MAAMgB,kBAAkB,OAAOC,OAAOC,MAAM,KAAK;AACjD,MAAMC,kBAAkBF,OAAOG,SAAS,CAACC,cAAc;AAEvD,OAAO,SAASC,aAAmB7E,MAAS,EAAED,MAAS;IACrD,IAAIwE,iBAAiB;QACnB,OAAOC,OAAOC,MAAM,CAACzE,QAAQD;IAC/B;IACA,IAAK,MAAM+E,OAAO/E,OAAQ;QACxB,IAAI2E,gBAAgBK,IAAI,CAAChF,QAAQ+E,MAAM;YACrC,4FAA4F;YAC3F9E,MAAc,CAAC8E,IAAI,GAAG,AAAC/E,MAAc,CAAC+E,IAAI;QAC7C;IACF;IACA,OAAO9E;AACT"}
|