extract-base-iterator 3.3.1 → 3.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/dist/cjs/DirectoryEntry.js.map +1 -1
  2. package/dist/cjs/FileEntry.js +2 -2
  3. package/dist/cjs/FileEntry.js.map +1 -1
  4. package/dist/cjs/LinkEntry.js +2 -2
  5. package/dist/cjs/LinkEntry.js.map +1 -1
  6. package/dist/cjs/SymbolicLinkEntry.js +2 -2
  7. package/dist/cjs/SymbolicLinkEntry.js.map +1 -1
  8. package/dist/cjs/fs/chmod.d.cts +1 -1
  9. package/dist/cjs/fs/chmod.d.ts +1 -1
  10. package/dist/cjs/fs/chmod.js +2 -2
  11. package/dist/cjs/fs/chmod.js.map +1 -1
  12. package/dist/cjs/fs/chown.d.cts +1 -1
  13. package/dist/cjs/fs/chown.d.ts +1 -1
  14. package/dist/cjs/fs/chown.js +2 -2
  15. package/dist/cjs/fs/chown.js.map +1 -1
  16. package/dist/cjs/fs/lstatReal.js.map +1 -1
  17. package/dist/cjs/fs/lutimes.d.cts +1 -1
  18. package/dist/cjs/fs/lutimes.d.ts +1 -1
  19. package/dist/cjs/fs/lutimes.js +3 -3
  20. package/dist/cjs/fs/lutimes.js.map +1 -1
  21. package/dist/cjs/fs/symlinkWin32.d.cts +1 -1
  22. package/dist/cjs/fs/symlinkWin32.d.ts +1 -1
  23. package/dist/cjs/fs/symlinkWin32.js +2 -2
  24. package/dist/cjs/fs/symlinkWin32.js.map +1 -1
  25. package/dist/cjs/fs/utimes.d.cts +1 -1
  26. package/dist/cjs/fs/utimes.d.ts +1 -1
  27. package/dist/cjs/fs/utimes.js +2 -2
  28. package/dist/cjs/fs/utimes.js.map +1 -1
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/shared/BufferList.js.map +1 -1
  31. package/dist/cjs/shared/EntryStream.js.map +1 -1
  32. package/dist/cjs/shared/Lock.js.map +1 -1
  33. package/dist/cjs/shared/compat.js.map +1 -1
  34. package/dist/cjs/shared/crc32.js.map +1 -1
  35. package/dist/cjs/shared/index.d.cts +8 -1
  36. package/dist/cjs/shared/index.d.ts +8 -1
  37. package/dist/cjs/shared/index.js.map +1 -1
  38. package/dist/cjs/shared/normalizePath.js.map +1 -1
  39. package/dist/cjs/shared/streamToString.js.map +1 -1
  40. package/dist/cjs/shared/stripPath.js.map +1 -1
  41. package/dist/cjs/validateAttributes.js.map +1 -1
  42. package/dist/cjs/waitForAccess.js +4 -4
  43. package/dist/cjs/waitForAccess.js.map +1 -1
  44. package/dist/esm/DirectoryEntry.js.map +1 -1
  45. package/dist/esm/FileEntry.js +1 -1
  46. package/dist/esm/FileEntry.js.map +1 -1
  47. package/dist/esm/LinkEntry.js +1 -1
  48. package/dist/esm/LinkEntry.js.map +1 -1
  49. package/dist/esm/SymbolicLinkEntry.js +1 -1
  50. package/dist/esm/SymbolicLinkEntry.js.map +1 -1
  51. package/dist/esm/fs/chmod.d.ts +1 -1
  52. package/dist/esm/fs/chmod.js +1 -1
  53. package/dist/esm/fs/chmod.js.map +1 -1
  54. package/dist/esm/fs/chown.d.ts +1 -1
  55. package/dist/esm/fs/chown.js +1 -1
  56. package/dist/esm/fs/chown.js.map +1 -1
  57. package/dist/esm/fs/lstatReal.js.map +1 -1
  58. package/dist/esm/fs/lutimes.d.ts +1 -1
  59. package/dist/esm/fs/lutimes.js +1 -1
  60. package/dist/esm/fs/lutimes.js.map +1 -1
  61. package/dist/esm/fs/symlinkWin32.d.ts +1 -1
  62. package/dist/esm/fs/symlinkWin32.js +1 -1
  63. package/dist/esm/fs/symlinkWin32.js.map +1 -1
  64. package/dist/esm/fs/utimes.d.ts +1 -1
  65. package/dist/esm/fs/utimes.js +1 -1
  66. package/dist/esm/fs/utimes.js.map +1 -1
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/shared/BufferList.js.map +1 -1
  69. package/dist/esm/shared/EntryStream.js.map +1 -1
  70. package/dist/esm/shared/Lock.js.map +1 -1
  71. package/dist/esm/shared/compat.js.map +1 -1
  72. package/dist/esm/shared/crc32.js.map +1 -1
  73. package/dist/esm/shared/index.d.ts +8 -1
  74. package/dist/esm/shared/index.js +2 -1
  75. package/dist/esm/shared/index.js.map +1 -1
  76. package/dist/esm/shared/normalizePath.js.map +1 -1
  77. package/dist/esm/shared/streamToString.js.map +1 -1
  78. package/dist/esm/shared/stripPath.js.map +1 -1
  79. package/dist/esm/types.js.map +1 -1
  80. package/dist/esm/validateAttributes.js.map +1 -1
  81. package/dist/esm/waitForAccess.js +1 -1
  82. package/dist/esm/waitForAccess.js.map +1 -1
  83. package/package.json +1 -1
@@ -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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["DirectoryEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","type","undefined","basename","path","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","queue","Queue","defer","mkdirp","bind","waitForAccess","chmod","chown","utimes","await","err","Promise","resolve","reject","done","destroy"],"mappings":";;;;;;;eAgBqBA;;;oEAhBF;2DACF;8DACC;8DACA;8DACA;+DACC;uBACU;kEACP;2EACS;sEACL;;;;;;;;;;;AAE1B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAKvC,IAAA,AAAMD,+BAAN;;aAAMA,eAOPE,UAA+B;gCAPxBF;QAQjBG,IAAAA,6BAAkB,EAACD,YAAYD;QAC/BG,IAAAA,qBAAY,EAAC,IAAI,EAAEF;QACnB,IAAI,IAAI,CAACG,IAAI,KAAKC,WAAW,IAAI,CAACD,IAAI,GAAG;QACzC,IAAI,IAAI,CAACE,QAAQ,KAAKD,WAAW,IAAI,CAACC,QAAQ,GAAGC,aAAI,CAACD,QAAQ,CAAC,IAAI,CAACC,IAAI;;iBAXvDR;IAiBnBS,OAAAA,MA2BC,GA3BDA,SAAAA,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B;;QACzFA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,IAAI,OAAOC,aAAa,YAAY;YAClC,IAAI;gBACF,IAAMC,iBAAiBL,aAAI,CAACM,SAAS,CAAC,IAAI,CAACN,IAAI;gBAC/C,IAAMO,WAAWP,aAAI,CAACQ,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACJ,gBAAgBF;gBAE3D,iFAAiF;gBACjF,IAAMO,QAAQ,IAAIC,gBAAK,CAAC;gBACxBD,MAAME,KAAK,CAACC,sBAAM,CAACC,IAAI,CAAC,MAAMP;gBAC9BG,MAAME,KAAK,CAACG,wBAAa,CAACD,IAAI,CAAC,MAAMP;gBACrCG,MAAME,KAAK,CAACI,gBAAK,CAACF,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC7CO,MAAME,KAAK,CAACK,gBAAK,CAACH,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC7CO,MAAME,KAAK,CAACM,iBAAM,CAACJ,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC9CO,MAAMS,KAAK,CAACf;gBACZ;YACF,EAAE,OAAOgB,KAAK;gBACZhB,SAASgB;gBACT;YACF;QACF;QAEA,OAAO,IAAIC,QAAQ,SAACC,SAASC;YAC3B,MAAKtB,MAAM,CAACC,MAAMC,SAAS,SAACiB,KAAaI;uBAAoBJ,MAAMG,OAAOH,OAAOE,QAAQE;;QAC3F;IACF;IAEAC,OAAAA,OAAY,GAAZA,SAAAA,WAAW;WA9CQjC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["DirectoryEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","type","undefined","basename","path","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","queue","Queue","defer","mkdirp","bind","waitForAccess","chmod","chown","utimes","await","err","Promise","resolve","reject","done","destroy"],"mappings":";;;;;;;eAgBqBA;;;oEAhBF;2DACF;8DACC;8DACA;8DACA;+DACC;uBACU;kEACP;2EACS;sEACL;;;;;;;;;;;AAE1B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAKvC,IAAA,AAAMD,+BAAN;;aAAMA,eAOPE,UAA+B;gCAPxBF;QAQjBG,IAAAA,6BAAkB,EAACD,YAAYD;QAC/BG,IAAAA,qBAAY,EAAC,IAAI,EAAEF;QACnB,IAAI,IAAI,CAACG,IAAI,KAAKC,WAAW,IAAI,CAACD,IAAI,GAAG;QACzC,IAAI,IAAI,CAACE,QAAQ,KAAKD,WAAW,IAAI,CAACC,QAAQ,GAAGC,aAAI,CAACD,QAAQ,CAAC,IAAI,CAACC,IAAI;;iBAXvDR;IAiBnBS,OAAAA,MA2BC,GA3BDA,SAAAA,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B;;QACzFA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,IAAI,OAAOC,aAAa,YAAY;YAClC,IAAI;gBACF,IAAMC,iBAAiBL,aAAI,CAACM,SAAS,CAAC,IAAI,CAACN,IAAI;gBAC/C,IAAMO,WAAWP,aAAI,CAACQ,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACJ,gBAAgBF;gBAE3D,iFAAiF;gBACjF,IAAMO,QAAQ,IAAIC,gBAAK,CAAC;gBACxBD,MAAME,KAAK,CAACC,sBAAM,CAACC,IAAI,CAAC,MAAMP;gBAC9BG,MAAME,KAAK,CAACG,wBAAa,CAACD,IAAI,CAAC,MAAMP;gBACrCG,MAAME,KAAK,CAACI,gBAAK,CAACF,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC7CO,MAAME,KAAK,CAACK,gBAAK,CAACH,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC7CO,MAAME,KAAK,CAACM,iBAAM,CAACJ,IAAI,CAAC,MAAMP,UAAU,IAAI,EAAEJ;gBAC9CO,MAAMS,KAAK,CAACf;gBACZ;YACF,EAAE,OAAOgB,KAAK;gBACZhB,SAASgB;gBACT;YACF;QACF;QAEA,OAAO,IAAIC,QAAQ,SAACC,SAASC;YAC3B,MAAKtB,MAAM,CAACC,MAAMC,SAAS,SAACiB,KAAaI;uBAAoBJ,MAAMG,OAAOH,OAAOE,QAAQE;;QAC3F;IACF;IAEAC,OAAAA,OAAY,GAAZA,SAAAA,WAAW;WA9CQjC"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
8
8
  return FileEntry;
9
9
  }
10
10
  });
11
- var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
11
  var _fsremovecompat = require("fs-remove-compat");
12
+ var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
13
13
  var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
14
14
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
15
15
  var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
@@ -64,7 +64,7 @@ var FileEntry = /*#__PURE__*/ function() {
64
64
  } else {
65
65
  // Check if file exists - throw EEXIST if it does
66
66
  queue.defer(function(callback) {
67
- _fs.default.stat(fullPath, function(err) {
67
+ _gracefulfs.default.stat(fullPath, function(err) {
68
68
  if (!err) {
69
69
  var existsErr = new Error("EEXIST: file already exists, open '".concat(fullPath, "'"));
70
70
  existsErr.code = 'EEXIST';
@@ -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 './shared/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 { 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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n\n const queue = new Queue(1);\n if (options.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(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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["FileEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","_writeFile","Error","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","queue","Queue","force","defer","rm","err","code","fs","stat","existsErr","mkdirp","bind","dirname","waitForAccess","chmod","chown","utimes","await","Promise","resolve","reject","done","destroy"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/FileEntry.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 './shared/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 { 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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n\n const queue = new Queue(1);\n if (options.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(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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["FileEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","_writeFile","Error","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","queue","Queue","force","defer","rm","err","code","fs","stat","existsErr","mkdirp","bind","dirname","waitForAccess","chmod","chown","utimes","await","Promise","resolve","reject","done","destroy"],"mappings":"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"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
8
8
  return LinkEntry;
9
9
  }
10
10
  });
11
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
11
12
  var _fsremovecompat = require("fs-remove-compat");
12
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
13
13
  var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
14
14
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
15
15
  var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
@@ -65,7 +65,7 @@ var LinkEntry = /*#__PURE__*/ function() {
65
65
  });
66
66
  }
67
67
  queue.defer(_mkdirpclassic.default.bind(null, _path.default.dirname(fullPath)));
68
- queue.defer(_gracefulfs.default.link.bind(_gracefulfs.default, linkFullPath, fullPath));
68
+ queue.defer(_fs.default.link.bind(_fs.default, linkFullPath, fullPath));
69
69
  queue.defer(_waitForAccessts.default.bind(null, fullPath));
70
70
  queue.defer(_chmodts.default.bind(null, fullPath, this, options));
71
71
  queue.defer(_chownts.default.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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n const normalizedLinkpath = path.normalize(this.linkpath);\n const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n\n const queue = new Queue(1);\n if (options.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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["LinkEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","queue","Queue","force","defer","rm","err","code","mkdirp","bind","dirname","fs","link","waitForAccess","chmod","chown","utimes","await","Promise","resolve","reject","done","destroy"],"mappings":";;;;;;;eAkBqBA;;;8BAlBF;iEACJ;oEACI;2DACF;8DACC;8DACA;8DACA;+DACC;uBACU;kEACP;2EACS;sEACL;;;;;;;;;;;AAE1B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAKnD,IAAA,AAAMD,0BAAN;;aAAMA,UAQPE,UAA0B;gCARnBF;QASjBG,IAAAA,6BAAkB,EAACD,YAAYD;QAC/BG,IAAAA,qBAAY,EAAC,IAAI,EAAEF;QACnB,IAAI,IAAI,CAACG,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGE,aAAI,CAACF,QAAQ,CAAC,IAAI,CAACE,IAAI;QACxE,IAAI,IAAI,CAACC,IAAI,KAAKF,WAAW,IAAI,CAACE,IAAI,GAAG;;iBAZxBR;IAkBnBS,OAAAA,MAoCC,GApCDA,SAAAA,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B;;QACzFA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,IAAI,OAAOC,aAAa,YAAY;YAClC,IAAI;gBACF,IAAMC,iBAAiBN,aAAI,CAACO,SAAS,CAAC,IAAI,CAACP,IAAI;gBAC/C,IAAMQ,WAAWR,aAAI,CAACS,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACJ,gBAAgBF;gBAC3D,IAAMO,qBAAqBX,aAAI,CAACO,SAAS,CAAC,IAAI,CAACK,QAAQ;gBACvD,IAAMC,eAAeb,aAAI,CAACS,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACC,oBAAoBP;gBAEnE,IAAMU,QAAQ,IAAIC,gBAAK,CAAC;gBACxB,IAAIX,QAAQY,KAAK,EAAE;oBACjBF,MAAMG,KAAK,CAAC,SAACZ;wBACXa,IAAAA,kBAAE,EAACV,UAAU,SAACW;4BACZA,OAAOA,IAAIC,IAAI,KAAK,WAAWf,SAASc,OAAOd;wBACjD;oBACF;gBACF;gBACAS,MAAMG,KAAK,CAACI,sBAAM,CAACC,IAAI,CAAC,MAAMtB,aAAI,CAACuB,OAAO,CAACf;gBAC3CM,MAAMG,KAAK,CAACO,mBAAE,CAACC,IAAI,CAACH,IAAI,CAACE,mBAAE,EAAEX,cAAcL;gBAC3CM,MAAMG,KAAK,CAACS,wBAAa,CAACJ,IAAI,CAAC,MAAMd;gBACrCM,MAAMG,KAAK,CAACU,gBAAK,CAACL,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC7CU,MAAMG,KAAK,CAACW,gBAAK,CAACN,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC7CU,MAAMG,KAAK,CAACY,iBAAM,CAACP,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC9CU,MAAMgB,KAAK,CAACzB;gBACZ;YACF,EAAE,OAAOc,KAAK;gBACZd,SAASc;gBACT;YACF;QACF;QAEA,OAAO,IAAIY,QAAQ,SAACC,SAASC;YAC3B,MAAK/B,MAAM,CAACC,MAAMC,SAAS,SAACe,KAAae;uBAAoBf,MAAMc,OAAOd,OAAOa,QAAQE;;QAC3F;IACF;IAEAC,OAAAA,OAAY,GAAZA,SAAAA,WAAW;WAxDQ1C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/LinkEntry.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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n const normalizedLinkpath = path.normalize(this.linkpath);\n const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n\n const queue = new Queue(1);\n if (options.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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["LinkEntry","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","queue","Queue","force","defer","rm","err","code","mkdirp","bind","dirname","fs","link","waitForAccess","chmod","chown","utimes","await","Promise","resolve","reject","done","destroy"],"mappings":";;;;;;;eAkBqBA;;;yDAlBN;8BACI;oEACA;2DACF;8DACC;8DACA;8DACA;+DACC;uBACU;kEACP;2EACS;sEACL;;;;;;;;;;;AAE1B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAKnD,IAAA,AAAMD,0BAAN;;aAAMA,UAQPE,UAA0B;gCARnBF;QASjBG,IAAAA,6BAAkB,EAACD,YAAYD;QAC/BG,IAAAA,qBAAY,EAAC,IAAI,EAAEF;QACnB,IAAI,IAAI,CAACG,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGE,aAAI,CAACF,QAAQ,CAAC,IAAI,CAACE,IAAI;QACxE,IAAI,IAAI,CAACC,IAAI,KAAKF,WAAW,IAAI,CAACE,IAAI,GAAG;;iBAZxBR;IAkBnBS,OAAAA,MAoCC,GApCDA,SAAAA,OAAOC,IAAY,EAAEC,OAA0C,EAAEC,QAA0B;;QACzFA,WAAW,OAAOD,YAAY,aAAaA,UAAUC;QACrDD,UAAU,OAAOA,YAAY,aAAa,CAAC,IAAMA,WAAW,CAAC;QAE7D,IAAI,OAAOC,aAAa,YAAY;YAClC,IAAI;gBACF,IAAMC,iBAAiBN,aAAI,CAACO,SAAS,CAAC,IAAI,CAACP,IAAI;gBAC/C,IAAMQ,WAAWR,aAAI,CAACS,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACJ,gBAAgBF;gBAC3D,IAAMO,qBAAqBX,aAAI,CAACO,SAAS,CAAC,IAAI,CAACK,QAAQ;gBACvD,IAAMC,eAAeb,aAAI,CAACS,IAAI,CAACN,MAAMO,IAAAA,oBAAS,EAACC,oBAAoBP;gBAEnE,IAAMU,QAAQ,IAAIC,gBAAK,CAAC;gBACxB,IAAIX,QAAQY,KAAK,EAAE;oBACjBF,MAAMG,KAAK,CAAC,SAACZ;wBACXa,IAAAA,kBAAE,EAACV,UAAU,SAACW;4BACZA,OAAOA,IAAIC,IAAI,KAAK,WAAWf,SAASc,OAAOd;wBACjD;oBACF;gBACF;gBACAS,MAAMG,KAAK,CAACI,sBAAM,CAACC,IAAI,CAAC,MAAMtB,aAAI,CAACuB,OAAO,CAACf;gBAC3CM,MAAMG,KAAK,CAACO,WAAE,CAACC,IAAI,CAACH,IAAI,CAACE,WAAE,EAAEX,cAAcL;gBAC3CM,MAAMG,KAAK,CAACS,wBAAa,CAACJ,IAAI,CAAC,MAAMd;gBACrCM,MAAMG,KAAK,CAACU,gBAAK,CAACL,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC7CU,MAAMG,KAAK,CAACW,gBAAK,CAACN,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC7CU,MAAMG,KAAK,CAACY,iBAAM,CAACP,IAAI,CAAC,MAAMd,UAAU,IAAI,EAAEJ;gBAC9CU,MAAMgB,KAAK,CAACzB;gBACZ;YACF,EAAE,OAAOc,KAAK;gBACZd,SAASc;gBACT;YACF;QACF;QAEA,OAAO,IAAIY,QAAQ,SAACC,SAASC;YAC3B,MAAK/B,MAAM,CAACC,MAAMC,SAAS,SAACe,KAAae;uBAAoBf,MAAMc,OAAOd,OAAOa,QAAQE;;QAC3F;IACF;IAEAC,OAAAA,OAAY,GAAZA,SAAAA,WAAW;WAxDQ1C"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "default", {
8
8
  return SymbolicLinkEntry;
9
9
  }
10
10
  });
11
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
11
12
  var _fsremovecompat = require("fs-remove-compat");
12
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
13
13
  var _isabsolute = /*#__PURE__*/ _interop_require_default(require("is-absolute"));
14
14
  var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
15
15
  var _path = /*#__PURE__*/ _interop_require_default(require("path"));
@@ -74,7 +74,7 @@ var SymbolicLinkEntry = /*#__PURE__*/ function() {
74
74
  }
75
75
  queue.defer(_mkdirpclassic.default.bind(null, _path.default.dirname(fullPath)));
76
76
  if (isWindows) queue.defer(_symlinkWin32ts.default.bind(null, linkFullPath, normalizedLinkpath, fullPath));
77
- else queue.defer(_gracefulfs.default.symlink.bind(_gracefulfs.default, normalizedLinkpath, fullPath));
77
+ else queue.defer(_fs.default.symlink.bind(_fs.default, normalizedLinkpath, fullPath));
78
78
  queue.defer(_waitForAccessts.default.bind(null, fullPath, true)); // noFollow=true for symlinks
79
79
  queue.defer(_chmodts.default.bind(null, fullPath, this, options));
80
80
  queue.defer(_chownts.default.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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n let normalizedLinkpath = path.normalize(this.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), this.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if (options.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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["SymbolicLinkEntry","isWindows","process","platform","test","env","OSTYPE","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","isAbsolute","linkRelativePath","dirname","relative","queue","Queue","force","defer","rm","err","code","mkdirp","bind","symlinkWin32","fs","symlink","waitForAccess","chmod","chown","lutimes","await","Promise","resolve","reject","done","destroy"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/SymbolicLinkEntry.ts"],"sourcesContent":["import fs from 'fs';\nimport { rm } from 'fs-remove-compat';\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 './shared/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 callback = typeof options === 'function' ? options : callback;\n options = typeof options === 'function' ? {} : ((options || {}) as ExtractOptions);\n\n if (typeof callback === 'function') {\n try {\n const normalizedPath = path.normalize(this.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n let normalizedLinkpath = path.normalize(this.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), this.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if (options.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, (err?: Error, done?: boolean) => (err ? reject(err) : resolve(done)));\n });\n }\n\n destroy() {}\n}\n"],"names":["SymbolicLinkEntry","isWindows","process","platform","test","env","OSTYPE","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","type","create","dest","options","callback","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","isAbsolute","linkRelativePath","dirname","relative","queue","Queue","force","defer","rm","err","code","mkdirp","bind","symlinkWin32","fs","symlink","waitForAccess","chmod","chown","lutimes","await","Promise","resolve","reject","done","destroy"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function chmodFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback): void;
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function chmodFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback): void;
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  return chmodFn;
10
10
  }
11
11
  });
12
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
12
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
13
  function _interop_require_default(obj) {
14
14
  return obj && obj.__esModule ? obj : {
15
15
  default: obj
@@ -21,7 +21,7 @@ var FMODE = 420;
21
21
  var SMODE = 493;
22
22
  var LMODE = 420;
23
23
  function chmodFn(fullPath, entry, _options, callback) {
24
- var chmod = entry.type === 'symlink' ? _gracefulfs.default.lchmod : _gracefulfs.default.chmod;
24
+ var chmod = entry.type === 'symlink' ? _fs.default.lchmod : _fs.default.chmod;
25
25
  if (!chmod || UMASK === null) return callback(null);
26
26
  var mode = entry.mode;
27
27
  if (!mode) {
@@ -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) 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":["chmodFn","UMASK","process","umask","DMODE","FMODE","SMODE","LMODE","fullPath","entry","_options","callback","chmod","type","fs","lchmod","mode"],"mappings":"AAAA,mDAAmD;;;;;+BAYnD;;;eAAwBA;;;iEATT;;;;;;AAGf,IAAMC,QAAQC,QAAQC,KAAK,GAAGD,QAAQC,KAAK,KAAK;AAChD,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AAEC,SAASP,QAAQQ,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,IAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYC,mBAAE,CAACC,MAAM,GAAGD,mBAAE,CAACF,KAAK;IAC7D,IAAI,CAACA,SAASX,UAAU,MAAM,OAAOU,SAAS;IAE9C,IAAIK,OAAOP,MAAMO,IAAI;IACrB,IAAI,CAACA,MAAM;QACT,OAAQP,MAAMI,IAAI;YAChB,KAAK;gBACHG,OAAOZ;gBACP;YACF,KAAK;gBACHY,OAAOX;gBACP;YACF,KAAK;gBACHW,OAAOV;gBACP;YACF,KAAK;gBACHU,OAAOT;gBACP;QACJ;IACF;IACAK,MAAMJ,UAAU,AAACQ,OAAkB,CAACf,OAAOU;AAC7C"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/fs/chmod.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport fs, { type NoParamCallback } from '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":["chmodFn","UMASK","process","umask","DMODE","FMODE","SMODE","LMODE","fullPath","entry","_options","callback","chmod","type","fs","lchmod","mode"],"mappings":"AAAA,mDAAmD;;;;;+BAWnD;;;eAAwBA;;;yDATiB;;;;;;AAGzC,IAAMC,QAAQC,QAAQC,KAAK,GAAGD,QAAQC,KAAK,KAAK;AAChD,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AACd,IAAMC,QAAQ;AAEC,SAASP,QAAQQ,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,IAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYC,WAAE,CAACC,MAAM,GAAGD,WAAE,CAACF,KAAK;IAC7D,IAAI,CAACA,SAASX,UAAU,MAAM,OAAOU,SAAS;IAE9C,IAAIK,OAAOP,MAAMO,IAAI;IACrB,IAAI,CAACA,MAAM;QACT,OAAQP,MAAMI,IAAI;YAChB,KAAK;gBACHG,OAAOZ;gBACP;YACF,KAAK;gBACHY,OAAOX;gBACP;YACF,KAAK;gBACHW,OAAOV;gBACP;YACF,KAAK;gBACHU,OAAOT;gBACP;QACJ;IACF;IACAK,MAAMJ,UAAU,AAACQ,OAAkB,CAACf,OAAOU;AAC7C"}
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function chownFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback): void;
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function chownFn(fullPath: string, entry: AbstractEntry, _options: ExtractOptions, callback: NoParamCallback): void;
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  return chownFn;
10
10
  }
11
11
  });
12
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
12
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
13
  function _interop_require_default(obj) {
14
14
  return obj && obj.__esModule ? obj : {
15
15
  default: obj
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
18
18
  var UID = process.getuid ? process.getuid() : -1;
19
19
  var OWN = process.platform !== 'win32' && UID === 0;
20
20
  function chownFn(fullPath, entry, _options, callback) {
21
- var chown = entry.type === 'symlink' ? _gracefulfs.default.lchown : _gracefulfs.default.chown;
21
+ var chown = entry.type === 'symlink' ? _fs.default.lchown : _fs.default.chown;
22
22
  if (!chown || !OWN || !entry.uid || !entry.gid) return callback(null);
23
23
  chown(fullPath, entry.uid, entry.gid, callback);
24
24
  }
@@ -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) return callback(null);\n chown(fullPath, entry.uid, entry.gid, callback);\n}\n"],"names":["chownFn","UID","process","getuid","OWN","platform","fullPath","entry","_options","callback","chown","type","fs","lchown","uid","gid"],"mappings":"AAAA,mDAAmD;;;;;+BASnD;;;eAAwBA;;;iEANT;;;;;;AAGf,IAAMC,MAAMC,QAAQC,MAAM,GAAGD,QAAQC,MAAM,KAAK,CAAC;AACjD,IAAMC,MAAMF,QAAQG,QAAQ,KAAK,WAAWJ,QAAQ;AAErC,SAASD,QAAQM,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,IAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYC,mBAAE,CAACC,MAAM,GAAGD,mBAAE,CAACF,KAAK;IAC7D,IAAI,CAACA,SAAS,CAACN,OAAO,CAACG,MAAMO,GAAG,IAAI,CAACP,MAAMQ,GAAG,EAAE,OAAON,SAAS;IAChEC,MAAMJ,UAAUC,MAAMO,GAAG,EAAEP,MAAMQ,GAAG,EAAEN;AACxC"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/fs/chown.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport fs, { type NoParamCallback } from '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":["chownFn","UID","process","getuid","OWN","platform","fullPath","entry","_options","callback","chown","type","fs","lchown","uid","gid"],"mappings":"AAAA,mDAAmD;;;;;+BAQnD;;;eAAwBA;;;yDANiB;;;;;;AAGzC,IAAMC,MAAMC,QAAQC,MAAM,GAAGD,QAAQC,MAAM,KAAK,CAAC;AACjD,IAAMC,MAAMF,QAAQG,QAAQ,KAAK,WAAWJ,QAAQ;AAErC,SAASD,QAAQM,QAAgB,EAAEC,KAAoB,EAAEC,QAAwB,EAAEC,QAAyB;IACzH,IAAMC,QAAQH,MAAMI,IAAI,KAAK,YAAYC,WAAE,CAACC,MAAM,GAAGD,WAAE,CAACF,KAAK;IAC7D,IAAI,CAACA,SAAS,CAACN,OAAO,CAACG,MAAMO,GAAG,IAAI,CAACP,MAAMQ,GAAG,EAAE,OAAON,SAAS;IAChEC,MAAMJ,UAAUC,MAAMO,GAAG,EAAEP,MAAMQ,GAAG,EAAEN;AACxC"}
@@ -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): void {\n fs.realpath(path, (err, realpath) => {\n err ? callback(err) : fs.lstat(realpath, callback);\n });\n}\n"],"names":["lstatReal","path","callback","fs","realpath","err","lstat"],"mappings":";;;;+BAIA;;;eAAwBA;;;yDAJyB;;;;;;AAIlC,SAASA,UAAUC,IAAY,EAAEC,QAAkB;IAChEC,WAAE,CAACC,QAAQ,CAACH,MAAM,SAACI,KAAKD;QACtBC,MAAMH,SAASG,OAAOF,WAAE,CAACG,KAAK,CAACF,UAAUF;IAC3C;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/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":["lstatReal","path","callback","fs","realpath","err","lstat"],"mappings":";;;;+BAIA;;;eAAwBA;;;yDAJyB;;;;;;AAIlC,SAASA,UAAUC,IAAY,EAAEC,QAAkB;IAChEC,WAAE,CAACC,QAAQ,CAACH,MAAM,SAACI,KAAKD;QACtBC,MAAMH,SAASG,OAAOF,WAAE,CAACG,KAAK,CAACF,UAAUF;IAC3C;AACF"}
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function lutimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
@@ -11,19 +11,19 @@ Object.defineProperty(exports, "default", {
11
11
  return lutimes;
12
12
  }
13
13
  });
14
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
14
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
15
15
  function _interop_require_default(obj) {
16
16
  return obj && obj.__esModule ? obj : {
17
17
  default: obj
18
18
  };
19
19
  }
20
20
  // biome-ignore lint/suspicious/noExplicitAny: fs.lutimes not in older @types/node
21
- var HAS_LUTIMES = typeof _gracefulfs.default.lutimes === 'function';
21
+ var HAS_LUTIMES = typeof _fs.default.lutimes === 'function';
22
22
  function lutimes(fullPath, entry, options, callback) {
23
23
  if (HAS_LUTIMES) {
24
24
  var now = options.now || new Date();
25
25
  // biome-ignore lint/suspicious/noExplicitAny: fs.lutimes not in older @types/node
26
- _gracefulfs.default.lutimes(fullPath, now, new Date(entry.mtime), callback);
26
+ _fs.default.lutimes(fullPath, now, new Date(entry.mtime), callback);
27
27
  } else {
28
28
  // On older Node versions, skip setting times on symlinks
29
29
  // fs.utimes follows symlinks and will fail with ENOENT if target doesn't exist
@@ -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): 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":["lutimes","HAS_LUTIMES","fs","fullPath","entry","options","callback","now","Date","mtime"],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AACzC,8EAA8E;;;;;+BAS9E;;;eAAwBA;;;iEANT;;;;;;AAGf,kFAAkF;AAClF,IAAMC,cAAc,OAAO,AAACC,mBAAE,CAASF,OAAO,KAAK;AAEpC,SAASA,QAAQG,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACxH,IAAIL,aAAa;QACf,IAAMM,MAAMF,QAAQE,GAAG,IAAI,IAAIC;QAC/B,kFAAkF;QACjFN,mBAAE,CAASF,OAAO,CAACG,UAAUI,KAAK,IAAIC,KAAKJ,MAAMK,KAAK,GAAGH;IAC5D,OAAO;QACL,yDAAyD;QACzD,+EAA+E;QAC/EA,SAAS;IACX;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/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 fs, { type NoParamCallback } from '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":["lutimes","HAS_LUTIMES","fs","fullPath","entry","options","callback","now","Date","mtime"],"mappings":"AAAA,yDAAyD;AACzD,yCAAyC;AACzC,8EAA8E;;;;;+BAQ9E;;;eAAwBA;;;yDANiB;;;;;;AAGzC,kFAAkF;AAClF,IAAMC,cAAc,OAAO,AAACC,WAAE,CAASF,OAAO,KAAK;AAEpC,SAASA,QAAQG,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACxH,IAAIL,aAAa;QACf,IAAMM,MAAMF,QAAQE,GAAG,IAAI,IAAIC;QAC/B,kFAAkF;QACjFN,WAAE,CAASF,OAAO,CAACG,UAAUI,KAAK,IAAIC,KAAKJ,MAAMK,KAAK,GAAGH;IAC5D,OAAO;QACL,yDAAyD;QACzD,+EAA+E;QAC/EA,SAAS;IACX;AACF"}
@@ -1,2 +1,2 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  export default function symlinkWin32(linkFullPath: string, linkpath: string, fullPath: string, callback: NoParamCallback): void;
@@ -1,2 +1,2 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  export default function symlinkWin32(linkFullPath: string, linkpath: string, fullPath: string, callback: NoParamCallback): void;
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return symlinkWin32;
9
9
  }
10
10
  });
11
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
11
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
12
12
  var _lstatRealts = /*#__PURE__*/ _interop_require_default(require("./lstatReal.js"));
13
13
  function _interop_require_default(obj) {
14
14
  return obj && obj.__esModule ? obj : {
@@ -19,7 +19,7 @@ function symlinkWin32(linkFullPath, linkpath, fullPath, callback) {
19
19
  (0, _lstatRealts.default)(linkFullPath, function(err, targetStat) {
20
20
  // If target doesn't exist, default to 'file' type (Windows requires a type for symlinks)
21
21
  var type = !err && (targetStat === null || targetStat === void 0 ? void 0 : targetStat.isDirectory()) ? 'dir' : 'file';
22
- _gracefulfs.default.symlink(linkpath, fullPath, type, callback);
22
+ _fs.default.symlink(linkpath, fullPath, type, callback);
23
23
  });
24
24
  }
25
25
  /* 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/fs/symlinkWin32.ts"],"sourcesContent":["import type { NoParamCallback } from 'fs';\nimport fs from 'graceful-fs';\nimport lstatReal from './lstatReal.ts';\n\nexport default function symlinkWin32(linkFullPath: string, linkpath: string, fullPath: string, callback: NoParamCallback) {\n lstatReal(linkFullPath, (err, targetStat) => {\n // If target doesn't exist, default to 'file' type (Windows requires a type for symlinks)\n const type = !err && targetStat?.isDirectory() ? 'dir' : 'file';\n fs.symlink(linkpath, fullPath, type, callback);\n });\n}\n"],"names":["symlinkWin32","linkFullPath","linkpath","fullPath","callback","lstatReal","err","targetStat","type","isDirectory","fs","symlink"],"mappings":";;;;+BAIA;;;eAAwBA;;;iEAHT;kEACO;;;;;;AAEP,SAASA,aAAaC,YAAoB,EAAEC,QAAgB,EAAEC,QAAgB,EAAEC,QAAyB;IACtHC,IAAAA,oBAAS,EAACJ,cAAc,SAACK,KAAKC;QAC5B,yFAAyF;QACzF,IAAMC,OAAO,CAACF,QAAOC,uBAAAA,iCAAAA,WAAYE,WAAW,MAAK,QAAQ;QACzDC,mBAAE,CAACC,OAAO,CAACT,UAAUC,UAAUK,MAAMJ;IACvC;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/fs/symlinkWin32.ts"],"sourcesContent":["import fs, { type NoParamCallback } from 'fs';\nimport lstatReal from './lstatReal.ts';\n\nexport default function symlinkWin32(linkFullPath: string, linkpath: string, fullPath: string, callback: NoParamCallback) {\n lstatReal(linkFullPath, (err, targetStat) => {\n // If target doesn't exist, default to 'file' type (Windows requires a type for symlinks)\n const type = !err && targetStat?.isDirectory() ? 'dir' : 'file';\n fs.symlink(linkpath, fullPath, type, callback);\n });\n}\n"],"names":["symlinkWin32","linkFullPath","linkpath","fullPath","callback","lstatReal","err","targetStat","type","isDirectory","fs","symlink"],"mappings":";;;;+BAGA;;;eAAwBA;;;yDAHiB;kEACnB;;;;;;AAEP,SAASA,aAAaC,YAAoB,EAAEC,QAAgB,EAAEC,QAAgB,EAAEC,QAAyB;IACtHC,IAAAA,oBAAS,EAACJ,cAAc,SAACK,KAAKC;QAC5B,yFAAyF;QACzF,IAAMC,OAAO,CAACF,QAAOC,uBAAAA,iCAAAA,WAAYE,WAAW,MAAK,QAAQ;QACzDC,WAAE,CAACC,OAAO,CAACT,UAAUC,UAAUK,MAAMJ;IACvC;AACF"}
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
@@ -1,3 +1,3 @@
1
- import type { NoParamCallback } from 'fs';
1
+ import { type NoParamCallback } from 'fs';
2
2
  import type { AbstractEntry, ExtractOptions } from '../types.js';
3
3
  export default function utimes(fullPath: string, entry: AbstractEntry, options: ExtractOptions, callback: NoParamCallback): void;
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "default", {
9
9
  return utimes;
10
10
  }
11
11
  });
12
- var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
12
+ var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
13
13
  function _interop_require_default(obj) {
14
14
  return obj && obj.__esModule ? obj : {
15
15
  default: obj
@@ -17,6 +17,6 @@ function _interop_require_default(obj) {
17
17
  }
18
18
  function utimes(fullPath, entry, options, callback) {
19
19
  var now = options.now || new Date();
20
- _gracefulfs.default.utimes(fullPath, now, new Date(entry.mtime), callback);
20
+ _fs.default.utimes(fullPath, now, new Date(entry.mtime), callback);
21
21
  }
22
22
  /* 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/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":["utimes","fullPath","entry","options","callback","now","Date","fs","mtime"],"mappings":"AAAA,mDAAmD;;;;;+BAMnD;;;eAAwBA;;;iEAHT;;;;;;AAGA,SAASA,OAAOC,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACvH,IAAMC,MAAMF,QAAQE,GAAG,IAAI,IAAIC;IAC/BC,mBAAE,CAACP,MAAM,CAACC,UAAUI,KAAK,IAAIC,KAAKJ,MAAMM,KAAK,GAAGJ;AAClD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/fs/utimes.ts"],"sourcesContent":["// adapted from https://github.com/mafintosh/tar-fs\n\nimport fs, { type NoParamCallback } from '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":["utimes","fullPath","entry","options","callback","now","Date","fs","mtime"],"mappings":"AAAA,mDAAmD;;;;;+BAKnD;;;eAAwBA;;;yDAHiB;;;;;;AAG1B,SAASA,OAAOC,QAAgB,EAAEC,KAAoB,EAAEC,OAAuB,EAAEC,QAAyB;IACvH,IAAMC,MAAMF,QAAQE,GAAG,IAAI,IAAIC;IAC/BC,WAAE,CAACP,MAAM,CAACC,UAAUI,KAAK,IAAIC,KAAKJ,MAAMM,KAAK,GAAGJ;AAClD"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/index.ts"],"sourcesContent":["import StackBaseIterator from 'stack-base-iterator';\n\nimport type { Entry } from './types.ts';\n\nexport default class ExtractBaseIterator<T = Entry> extends StackBaseIterator<T> {}\n\nexport { default as DirectoryEntry } from './DirectoryEntry.ts';\nexport { default as FileEntry } from './FileEntry.ts';\nexport { default as LinkEntry } from './LinkEntry.ts';\nexport { default as SymbolicLinkEntry } from './SymbolicLinkEntry.ts';\n// Shared utilities for iterator libraries\nexport * from './shared/index.ts';\nexport * from './types.ts';\nexport { default as waitForAccess } from './waitForAccess.ts';\n"],"names":["DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","ExtractBaseIterator","waitForAccess","StackBaseIterator"],"mappings":";;;;;;;;;;;QAMoBA;eAAAA,yBAAc;;QACdC;eAAAA,oBAAS;;QACTC;eAAAA,oBAAS;;QACTC;eAAAA,4BAAiB;;;eALhBC;;QASDC;eAAAA,wBAAa;;;wEAbH;uEAMY;kEACL;kEACA;0EACQ;qBAE/B;qBACA;sEAC2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAT1B,IAAA,AAAMD,oCAAN;;cAAMA;aAAAA;gCAAAA;QAAN,OAAA,kBAAMA;;WAAAA;EAAuCE,0BAAiB"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/index.ts"],"sourcesContent":["import StackBaseIterator from 'stack-base-iterator';\n\nimport type { Entry } from './types.ts';\n\nexport default class ExtractBaseIterator<T = Entry> extends StackBaseIterator<T> {}\n\nexport { default as DirectoryEntry } from './DirectoryEntry.ts';\nexport { default as FileEntry } from './FileEntry.ts';\nexport { default as LinkEntry } from './LinkEntry.ts';\nexport { default as SymbolicLinkEntry } from './SymbolicLinkEntry.ts';\n// Shared utilities for iterator libraries\nexport * from './shared/index.ts';\nexport * from './types.ts';\nexport { default as waitForAccess } from './waitForAccess.ts';\n"],"names":["DirectoryEntry","FileEntry","LinkEntry","SymbolicLinkEntry","ExtractBaseIterator","waitForAccess","StackBaseIterator"],"mappings":";;;;;;;;;;;QAMoBA;eAAAA,yBAAc;;QACdC;eAAAA,oBAAS;;QACTC;eAAAA,oBAAS;;QACTC;eAAAA,4BAAiB;;;eALhBC;;QASDC;eAAAA,wBAAa;;;wEAbH;uEAMY;kEACL;kEACA;0EACQ;qBAE/B;qBACA;sEAC2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAT1B,IAAA,AAAMD,oCAAN;;cAAMA;aAAAA;gCAAAA;QAAN,OAAA,kBAAMA;;WAAAA;EAAuCE,0BAAiB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/BufferList.ts"],"sourcesContent":["/**\n * Buffer List for Streaming\n *\n * Simple linked list for accumulating buffer chunks during streaming.\n * Provides efficient append, consume, and slice operations.\n */\n\nimport { allocBuffer } from 'extract-base-iterator';\n\ninterface BufferNode {\n data: Buffer;\n next: BufferNode | null;\n}\n\nexport default class BufferList {\n private head: BufferNode | null = null;\n private tail: BufferNode | null = null;\n\n /** Total bytes in the buffer list */\n public length = 0;\n\n /**\n * Append a buffer to the end of the list\n */\n append(buf: Buffer): void {\n if (buf.length === 0) return;\n\n const node: BufferNode = { data: buf, next: null };\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = this.tail = node;\n }\n\n this.length += buf.length;\n }\n\n /**\n * Prepend a buffer to the front of the list\n */\n prepend(buf: Buffer): void {\n if (buf.length === 0) return;\n\n const node: BufferNode = { data: buf, next: this.head };\n\n if (!this.tail) {\n this.tail = node;\n }\n this.head = node;\n\n this.length += buf.length;\n }\n\n /**\n * Consume n bytes from the front of the list\n * Returns a new buffer containing the consumed bytes\n */\n consume(n: number): Buffer {\n if (n <= 0) return allocBuffer(0);\n if (n > this.length) n = this.length;\n\n const result = allocBuffer(n);\n let offset = 0;\n\n while (offset < n && this.head) {\n const chunk = this.head.data;\n const needed = n - offset;\n\n if (chunk.length <= needed) {\n // Use entire chunk\n chunk.copy(result, offset);\n offset += chunk.length;\n this.head = this.head.next;\n if (!this.head) this.tail = null;\n } else {\n // Use partial chunk\n chunk.copy(result, offset, 0, needed);\n this.head.data = chunk.slice(needed);\n offset = n;\n }\n }\n\n this.length -= n;\n return result;\n }\n\n /**\n * Get a slice of the buffer without consuming\n * Returns a new buffer containing the bytes\n */\n slice(start: number, end: number): Buffer {\n const len = end - start;\n if (len <= 0) return allocBuffer(0);\n if (start >= this.length) return allocBuffer(0);\n\n const result = allocBuffer(Math.min(len, this.length - start));\n let resultOffset = 0;\n let bufOffset = 0;\n let node = this.head;\n\n // Skip to start position\n while (node && bufOffset + node.data.length <= start) {\n bufOffset += node.data.length;\n node = node.next;\n }\n\n // Copy data\n while (node && resultOffset < result.length) {\n const chunk = node.data;\n const chunkStart = Math.max(0, start - bufOffset);\n const chunkEnd = Math.min(chunk.length, end - bufOffset);\n const toCopy = chunkEnd - chunkStart;\n\n if (toCopy > 0) {\n chunk.copy(result, resultOffset, chunkStart, chunkEnd);\n resultOffset += toCopy;\n }\n\n bufOffset += chunk.length;\n node = node.next;\n }\n\n return result;\n }\n\n /**\n * Read a single byte at offset without consuming\n */\n readByte(offset: number): number {\n if (offset < 0 || offset >= this.length) return -1;\n\n let bufOffset = 0;\n let node = this.head;\n\n while (node) {\n if (offset < bufOffset + node.data.length) {\n return node.data[offset - bufOffset];\n }\n bufOffset += node.data.length;\n node = node.next;\n }\n\n return -1;\n }\n\n /**\n * Search for a byte sequence in the buffer\n * Returns offset of first match, or -1 if not found\n */\n indexOf(signature: number[], startOffset = 0): number {\n if (signature.length === 0) return startOffset;\n if (startOffset + signature.length > this.length) return -1;\n\n // Simple byte-by-byte search\n // Could be optimized with KMP/Boyer-Moore for larger signatures\n for (let i = startOffset; i <= this.length - signature.length; i++) {\n let match = true;\n for (let j = 0; j < signature.length; j++) {\n if (this.readByte(i + j) !== signature[j]) {\n match = false;\n break;\n }\n }\n if (match) return i;\n }\n\n return -1;\n }\n\n /**\n * Skip (consume) n bytes without returning them\n */\n skip(n: number): void {\n if (n <= 0) return;\n if (n >= this.length) {\n this.clear();\n return;\n }\n\n let remaining = n;\n\n while (remaining > 0 && this.head) {\n const chunk = this.head.data;\n\n if (chunk.length <= remaining) {\n remaining -= chunk.length;\n this.head = this.head.next;\n if (!this.head) this.tail = null;\n } else {\n this.head.data = chunk.slice(remaining);\n remaining = 0;\n }\n }\n\n this.length -= n;\n }\n\n /**\n * Clear all buffers\n */\n clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n /**\n * Check if buffer has at least n bytes available\n */\n has(n: number): boolean {\n return this.length >= n;\n }\n\n /**\n * Check if the buffer starts with a signature at offset 0\n */\n startsWith(signature: number[]): boolean {\n if (signature.length > this.length) return false;\n for (let i = 0; i < signature.length; i++) {\n if (this.readByte(i) !== signature[i]) return false;\n }\n return true;\n }\n\n /**\n * Get a consolidated buffer of the entire contents\n * Note: This creates a copy, so use sparingly for large buffers\n */\n toBuffer(): Buffer {\n if (this.length === 0) return allocBuffer(0);\n return this.slice(0, this.length);\n }\n\n /**\n * Read UInt16 (little-endian) at offset without consuming\n * Returns null if not enough data\n */\n readUInt16LEAt(offset: number): number | null {\n if (offset < 0 || offset + 2 > this.length) return null;\n\n const bytes = this.readBytesAt(offset, 2);\n if (bytes.length < 2) return null;\n\n return bytes.readUInt16LE(0);\n }\n\n /**\n * Read UInt32 (little-endian) at offset without consuming\n * Returns null if not enough data\n */\n readUInt32LEAt(offset: number): number | null {\n if (offset < 0 || offset + 4 > this.length) return null;\n\n const bytes = this.readBytesAt(offset, 4);\n if (bytes.length < 4) return null;\n\n return bytes.readUInt32LE(0);\n }\n\n /**\n * Read bytes at offset without consuming.\n * Returns a slice (zero-copy) when data fits within a single chunk,\n * otherwise allocates and copies from multiple chunks.\n */\n readBytesAt(offset: number, length: number): Buffer {\n if (length <= 0) return allocBuffer(0);\n if (offset < 0 || offset >= this.length) return allocBuffer(0);\n\n // Clamp length to available data\n const available = this.length - offset;\n if (length > available) length = available;\n\n // Find the node containing the offset\n let bufOffset = 0;\n let node = this.head;\n while (node && bufOffset + node.data.length <= offset) {\n bufOffset += node.data.length;\n node = node.next;\n }\n\n if (!node) return allocBuffer(0);\n\n const startInChunk = offset - bufOffset;\n\n // Single-buffer optimization: zero-copy slice\n if (startInChunk + length <= node.data.length) {\n return node.data.slice(startInChunk, startInChunk + length);\n }\n\n // Multi-buffer case: must allocate and copy\n const result = allocBuffer(length);\n let resultOffset = 0;\n\n while (node && resultOffset < length) {\n const chunk = node.data;\n const chunkStart = resultOffset === 0 ? startInChunk : 0;\n const chunkAvailable = chunk.length - chunkStart;\n const toCopy = Math.min(chunkAvailable, length - resultOffset);\n\n chunk.copy(result, resultOffset, chunkStart, chunkStart + toCopy);\n resultOffset += toCopy;\n\n node = node.next;\n }\n\n return result;\n }\n}\n"],"names":["BufferList","head","tail","length","append","buf","node","data","next","prepend","consume","n","allocBuffer","result","offset","chunk","needed","copy","slice","start","end","len","Math","min","resultOffset","bufOffset","chunkStart","max","chunkEnd","toCopy","readByte","indexOf","signature","startOffset","i","match","j","skip","clear","remaining","has","startsWith","toBuffer","readUInt16LEAt","bytes","readBytesAt","readUInt16LE","readUInt32LEAt","readUInt32LE","available","startInChunk","chunkAvailable"],"mappings":"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"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/shared/BufferList.ts"],"sourcesContent":["/**\n * Buffer List for Streaming\n *\n * Simple linked list for accumulating buffer chunks during streaming.\n * Provides efficient append, consume, and slice operations.\n */\n\nimport { allocBuffer } from 'extract-base-iterator';\n\ninterface BufferNode {\n data: Buffer;\n next: BufferNode | null;\n}\n\nexport default class BufferList {\n private head: BufferNode | null = null;\n private tail: BufferNode | null = null;\n\n /** Total bytes in the buffer list */\n public length = 0;\n\n /**\n * Append a buffer to the end of the list\n */\n append(buf: Buffer): void {\n if (buf.length === 0) return;\n\n const node: BufferNode = { data: buf, next: null };\n\n if (this.tail) {\n this.tail.next = node;\n this.tail = node;\n } else {\n this.head = this.tail = node;\n }\n\n this.length += buf.length;\n }\n\n /**\n * Prepend a buffer to the front of the list\n */\n prepend(buf: Buffer): void {\n if (buf.length === 0) return;\n\n const node: BufferNode = { data: buf, next: this.head };\n\n if (!this.tail) {\n this.tail = node;\n }\n this.head = node;\n\n this.length += buf.length;\n }\n\n /**\n * Consume n bytes from the front of the list\n * Returns a new buffer containing the consumed bytes\n */\n consume(n: number): Buffer {\n if (n <= 0) return allocBuffer(0);\n if (n > this.length) n = this.length;\n\n const result = allocBuffer(n);\n let offset = 0;\n\n while (offset < n && this.head) {\n const chunk = this.head.data;\n const needed = n - offset;\n\n if (chunk.length <= needed) {\n // Use entire chunk\n chunk.copy(result, offset);\n offset += chunk.length;\n this.head = this.head.next;\n if (!this.head) this.tail = null;\n } else {\n // Use partial chunk\n chunk.copy(result, offset, 0, needed);\n this.head.data = chunk.slice(needed);\n offset = n;\n }\n }\n\n this.length -= n;\n return result;\n }\n\n /**\n * Get a slice of the buffer without consuming\n * Returns a new buffer containing the bytes\n */\n slice(start: number, end: number): Buffer {\n const len = end - start;\n if (len <= 0) return allocBuffer(0);\n if (start >= this.length) return allocBuffer(0);\n\n const result = allocBuffer(Math.min(len, this.length - start));\n let resultOffset = 0;\n let bufOffset = 0;\n let node = this.head;\n\n // Skip to start position\n while (node && bufOffset + node.data.length <= start) {\n bufOffset += node.data.length;\n node = node.next;\n }\n\n // Copy data\n while (node && resultOffset < result.length) {\n const chunk = node.data;\n const chunkStart = Math.max(0, start - bufOffset);\n const chunkEnd = Math.min(chunk.length, end - bufOffset);\n const toCopy = chunkEnd - chunkStart;\n\n if (toCopy > 0) {\n chunk.copy(result, resultOffset, chunkStart, chunkEnd);\n resultOffset += toCopy;\n }\n\n bufOffset += chunk.length;\n node = node.next;\n }\n\n return result;\n }\n\n /**\n * Read a single byte at offset without consuming\n */\n readByte(offset: number): number {\n if (offset < 0 || offset >= this.length) return -1;\n\n let bufOffset = 0;\n let node = this.head;\n\n while (node) {\n if (offset < bufOffset + node.data.length) {\n return node.data[offset - bufOffset];\n }\n bufOffset += node.data.length;\n node = node.next;\n }\n\n return -1;\n }\n\n /**\n * Search for a byte sequence in the buffer\n * Returns offset of first match, or -1 if not found\n */\n indexOf(signature: number[], startOffset = 0): number {\n if (signature.length === 0) return startOffset;\n if (startOffset + signature.length > this.length) return -1;\n\n // Simple byte-by-byte search\n // Could be optimized with KMP/Boyer-Moore for larger signatures\n for (let i = startOffset; i <= this.length - signature.length; i++) {\n let match = true;\n for (let j = 0; j < signature.length; j++) {\n if (this.readByte(i + j) !== signature[j]) {\n match = false;\n break;\n }\n }\n if (match) return i;\n }\n\n return -1;\n }\n\n /**\n * Skip (consume) n bytes without returning them\n */\n skip(n: number): void {\n if (n <= 0) return;\n if (n >= this.length) {\n this.clear();\n return;\n }\n\n let remaining = n;\n\n while (remaining > 0 && this.head) {\n const chunk = this.head.data;\n\n if (chunk.length <= remaining) {\n remaining -= chunk.length;\n this.head = this.head.next;\n if (!this.head) this.tail = null;\n } else {\n this.head.data = chunk.slice(remaining);\n remaining = 0;\n }\n }\n\n this.length -= n;\n }\n\n /**\n * Clear all buffers\n */\n clear(): void {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n /**\n * Check if buffer has at least n bytes available\n */\n has(n: number): boolean {\n return this.length >= n;\n }\n\n /**\n * Check if the buffer starts with a signature at offset 0\n */\n startsWith(signature: number[]): boolean {\n if (signature.length > this.length) return false;\n for (let i = 0; i < signature.length; i++) {\n if (this.readByte(i) !== signature[i]) return false;\n }\n return true;\n }\n\n /**\n * Get a consolidated buffer of the entire contents\n * Note: This creates a copy, so use sparingly for large buffers\n */\n toBuffer(): Buffer {\n if (this.length === 0) return allocBuffer(0);\n return this.slice(0, this.length);\n }\n\n /**\n * Read UInt16 (little-endian) at offset without consuming\n * Returns null if not enough data\n */\n readUInt16LEAt(offset: number): number | null {\n if (offset < 0 || offset + 2 > this.length) return null;\n\n const bytes = this.readBytesAt(offset, 2);\n if (bytes.length < 2) return null;\n\n return bytes.readUInt16LE(0);\n }\n\n /**\n * Read UInt32 (little-endian) at offset without consuming\n * Returns null if not enough data\n */\n readUInt32LEAt(offset: number): number | null {\n if (offset < 0 || offset + 4 > this.length) return null;\n\n const bytes = this.readBytesAt(offset, 4);\n if (bytes.length < 4) return null;\n\n return bytes.readUInt32LE(0);\n }\n\n /**\n * Read bytes at offset without consuming.\n * Returns a slice (zero-copy) when data fits within a single chunk,\n * otherwise allocates and copies from multiple chunks.\n */\n readBytesAt(offset: number, length: number): Buffer {\n if (length <= 0) return allocBuffer(0);\n if (offset < 0 || offset >= this.length) return allocBuffer(0);\n\n // Clamp length to available data\n const available = this.length - offset;\n if (length > available) length = available;\n\n // Find the node containing the offset\n let bufOffset = 0;\n let node = this.head;\n while (node && bufOffset + node.data.length <= offset) {\n bufOffset += node.data.length;\n node = node.next;\n }\n\n if (!node) return allocBuffer(0);\n\n const startInChunk = offset - bufOffset;\n\n // Single-buffer optimization: zero-copy slice\n if (startInChunk + length <= node.data.length) {\n return node.data.slice(startInChunk, startInChunk + length);\n }\n\n // Multi-buffer case: must allocate and copy\n const result = allocBuffer(length);\n let resultOffset = 0;\n\n while (node && resultOffset < length) {\n const chunk = node.data;\n const chunkStart = resultOffset === 0 ? startInChunk : 0;\n const chunkAvailable = chunk.length - chunkStart;\n const toCopy = Math.min(chunkAvailable, length - resultOffset);\n\n chunk.copy(result, resultOffset, chunkStart, chunkStart + toCopy);\n resultOffset += toCopy;\n\n node = node.next;\n }\n\n return result;\n }\n}\n"],"names":["BufferList","head","tail","length","append","buf","node","data","next","prepend","consume","n","allocBuffer","result","offset","chunk","needed","copy","slice","start","end","len","Math","min","resultOffset","bufOffset","chunkStart","max","chunkEnd","toCopy","readByte","indexOf","signature","startOffset","i","match","j","skip","clear","remaining","has","startsWith","toBuffer","readUInt16LEAt","bytes","readBytesAt","readUInt16LE","readUInt32LEAt","readUInt32LE","available","startInChunk","chunkAvailable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/EntryStream.ts"],"sourcesContent":["/**\n * EntryStream - Simple readable stream for entry content\n *\n * Extends Readable to emit 'data', 'end', 'error' events.\n * Node 0.8 compatible via readable-stream polyfill.\n *\n * This base class is designed to be used by:\n * - zip-iterator\n * - 7z-iterator\n * - tar-iterator\n * - Any other archive iterator library\n */\n\nimport Stream from 'stream';\n\n// Use native streams when available, readable-stream only for Node 0.x\nconst major = +process.versions.node.split('.')[0];\nlet ReadableBase: typeof Stream.Readable;\nif (major > 0) {\n ReadableBase = Stream.Readable;\n} else {\n ReadableBase = require('readable-stream').Readable;\n}\n\n/**\n * Base stream class for archive entry content.\n * Can be extended for special entry types like sparse files.\n */\nexport default class EntryStream extends ReadableBase {\n protected _ended = false;\n\n /**\n * Signal end of stream by pushing null\n */\n end(): void {\n if (this._ended) return;\n this._ended = true;\n this.push(null);\n }\n\n /**\n * Check if stream has ended\n */\n get ended(): boolean {\n return this._ended;\n }\n\n /**\n * Required by Readable - called when consumer wants data.\n * Data is pushed externally via push(), nothing to do here.\n */\n _read(_size: number): void {\n // Data is pushed externally, nothing to do here\n }\n}\n"],"names":["EntryStream","major","process","versions","node","split","ReadableBase","Stream","Readable","require","_ended","end","push","_read","_size","ended"],"mappings":"AAAA;;;;;;;;;;;CAWC;;;;;;;eAiBoBA;;;6DAfF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnB,uEAAuE;AACvE,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAIC;AACJ,IAAIL,QAAQ,GAAG;IACbK,eAAeC,eAAM,CAACC,QAAQ;AAChC,OAAO;IACLF,eAAeG,QAAQ,mBAAmBD,QAAQ;AACpD;AAMe,IAAA,AAAMR,4BAAN;;cAAMA;aAAAA;gCAAAA;;gBAAN,kBAAMA,+BACTU,SAAS;;;iBADAV;IAGnB;;GAEC,GACDW,OAAAA,GAIC,GAJDA,SAAAA;QACE,IAAI,IAAI,CAACD,MAAM,EAAE;QACjB,IAAI,CAACA,MAAM,GAAG;QACd,IAAI,CAACE,IAAI,CAAC;IACZ;IASA;;;GAGC,GACDC,OAAAA,KAEC,GAFDA,SAAAA,MAAMC,KAAa;IACjB,gDAAgD;IAClD;kBAzBmBd;;YAefe,KAAAA;iBAAJ,AAHA;;GAEC,GACD;gBACE,OAAO,IAAI,CAACL,MAAM;YACpB;;;WAjBmBV;EAAoBM"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/shared/EntryStream.ts"],"sourcesContent":["/**\n * EntryStream - Simple readable stream for entry content\n *\n * Extends Readable to emit 'data', 'end', 'error' events.\n * Node 0.8 compatible via readable-stream polyfill.\n *\n * This base class is designed to be used by:\n * - zip-iterator\n * - 7z-iterator\n * - tar-iterator\n * - Any other archive iterator library\n */\n\nimport Stream from 'stream';\n\n// Use native streams when available, readable-stream only for Node 0.x\nconst major = +process.versions.node.split('.')[0];\nlet ReadableBase: typeof Stream.Readable;\nif (major > 0) {\n ReadableBase = Stream.Readable;\n} else {\n ReadableBase = require('readable-stream').Readable;\n}\n\n/**\n * Base stream class for archive entry content.\n * Can be extended for special entry types like sparse files.\n */\nexport default class EntryStream extends ReadableBase {\n protected _ended = false;\n\n /**\n * Signal end of stream by pushing null\n */\n end(): void {\n if (this._ended) return;\n this._ended = true;\n this.push(null);\n }\n\n /**\n * Check if stream has ended\n */\n get ended(): boolean {\n return this._ended;\n }\n\n /**\n * Required by Readable - called when consumer wants data.\n * Data is pushed externally via push(), nothing to do here.\n */\n _read(_size: number): void {\n // Data is pushed externally, nothing to do here\n }\n}\n"],"names":["EntryStream","major","process","versions","node","split","ReadableBase","Stream","Readable","require","_ended","end","push","_read","_size","ended"],"mappings":"AAAA;;;;;;;;;;;CAWC;;;;;;;eAiBoBA;;;6DAfF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnB,uEAAuE;AACvE,IAAMC,QAAQ,CAACC,QAAQC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,EAAE;AAClD,IAAIC;AACJ,IAAIL,QAAQ,GAAG;IACbK,eAAeC,eAAM,CAACC,QAAQ;AAChC,OAAO;IACLF,eAAeG,QAAQ,mBAAmBD,QAAQ;AACpD;AAMe,IAAA,AAAMR,4BAAN;;cAAMA;aAAAA;gCAAAA;;gBAAN,kBAAMA,+BACTU,SAAS;;;iBADAV;IAGnB;;GAEC,GACDW,OAAAA,GAIC,GAJDA,SAAAA;QACE,IAAI,IAAI,CAACD,MAAM,EAAE;QACjB,IAAI,CAACA,MAAM,GAAG;QACd,IAAI,CAACE,IAAI,CAAC;IACZ;IASA;;;GAGC,GACDC,OAAAA,KAEC,GAFDA,SAAAA,MAAMC,KAAa;IACjB,gDAAgD;IAClD;kBAzBmBd;;YAefe,KAAAA;iBAAJ,AAHA;;GAEC,GACD;gBACE,OAAO,IAAI,CAACL,MAAM;YACpB;;;WAjBmBV;EAAoBM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/Lock.ts"],"sourcesContent":["/**\n * Lock - Reference counting for iterator lifecycle\n *\n * Ensures the iterator doesn't complete until all entries have been processed.\n * Uses cleanup registration pattern so each iterator can register its specific\n * cleanup functions (e.g., close file descriptors, delete temp files, end parsers).\n *\n * Usage:\n * const lock = new Lock();\n * lock.onDestroy = (err) => BaseIterator.prototype.end.call(this, err);\n * lock.registerCleanup(() => { this.extract.end(); });\n * lock.registerCleanup(() => { fs.unlinkSync(this.tempPath); });\n *\n * // For each entry:\n * lock.retain();\n * // ... when entry is consumed:\n * lock.release();\n *\n * // When iteration complete:\n * lock.err = err; // optional error\n * lock.release(); // Initial count\n */\n\nexport type CleanupFn = () => void;\n\nexport default class Lock {\n private count = 1;\n private cleanupFns: CleanupFn[] = [];\n\n /** Error to pass to onDestroy callback */\n err: Error | null = null;\n\n /** Called after all cleanups when count reaches 0 */\n onDestroy: ((err: Error | null) => void) | null = null;\n\n /**\n * Register a cleanup function to be called when the lock is destroyed.\n * Cleanup functions are called in registration order, before onDestroy.\n * @param fn Cleanup function (should not throw)\n */\n registerCleanup(fn: CleanupFn): void {\n this.cleanupFns.push(fn);\n }\n\n /**\n * Increment reference count.\n * Call when starting to process a new entry.\n */\n retain(): void {\n this.count++;\n }\n\n /**\n * Decrement reference count.\n * Call when an entry has been fully consumed.\n * When count reaches 0, cleanup is triggered.\n */\n release(): void {\n if (this.count <= 0) {\n throw new Error('Lock count is corrupted');\n }\n this.count--;\n if (this.count === 0) {\n this._destroy();\n }\n }\n\n /**\n * Internal cleanup - called when reference count reaches 0\n */\n private _destroy(): void {\n // Run all registered cleanup functions in order\n // Note: Use traditional for loop for Node 0.8 compatibility (no Symbol.iterator)\n const fns = this.cleanupFns;\n for (let i = 0; i < fns.length; i++) {\n try {\n fns[i]();\n } catch (_e) {\n // Ignore cleanup errors to ensure all cleanup runs\n }\n }\n this.cleanupFns = [];\n\n // Call onDestroy callback LAST (typically calls iterator.end())\n if (this.onDestroy) {\n this.onDestroy(this.err);\n this.onDestroy = null;\n }\n }\n}\n"],"names":["Lock","count","cleanupFns","err","onDestroy","registerCleanup","fn","push","retain","release","Error","_destroy","fns","i","length","_e"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;CAqBC;;;;;;;eAIoBA;;;;;;;;AAAN,IAAA,AAAMA,qBAAN;;aAAMA;gCAAAA;aACXC,QAAQ;aACRC,aAA0B,EAAE;QAEpC,wCAAwC,QACxCC,MAAoB;QAEpB,mDAAmD,QACnDC,YAAkD;;iBAR/BJ;IAUnB;;;;GAIC,GACDK,OAAAA,eAEC,GAFDA,SAAAA,gBAAgBC,EAAa;QAC3B,IAAI,CAACJ,UAAU,CAACK,IAAI,CAACD;IACvB;IAEA;;;GAGC,GACDE,OAAAA,MAEC,GAFDA,SAAAA;QACE,IAAI,CAACP,KAAK;IACZ;IAEA;;;;GAIC,GACDQ,OAAAA,OAQC,GARDA,SAAAA;QACE,IAAI,IAAI,CAACR,KAAK,IAAI,GAAG;YACnB,MAAM,IAAIS,MAAM;QAClB;QACA,IAAI,CAACT,KAAK;QACV,IAAI,IAAI,CAACA,KAAK,KAAK,GAAG;YACpB,IAAI,CAACU,QAAQ;QACf;IACF;IAEA;;GAEC,GACD,OAAQA,QAkBP,GAlBD,SAAQA;QACN,gDAAgD;QAChD,iFAAiF;QACjF,IAAMC,MAAM,IAAI,CAACV,UAAU;QAC3B,IAAK,IAAIW,IAAI,GAAGA,IAAID,IAAIE,MAAM,EAAED,IAAK;YACnC,IAAI;gBACFD,GAAG,CAACC,EAAE;YACR,EAAE,OAAOE,IAAI;YACX,mDAAmD;YACrD;QACF;QACA,IAAI,CAACb,UAAU,GAAG,EAAE;QAEpB,gEAAgE;QAChE,IAAI,IAAI,CAACE,SAAS,EAAE;YAClB,IAAI,CAACA,SAAS,CAAC,IAAI,CAACD,GAAG;YACvB,IAAI,CAACC,SAAS,GAAG;QACnB;IACF;WA/DmBJ"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/iterators/extract-base-iterator/src/shared/Lock.ts"],"sourcesContent":["/**\n * Lock - Reference counting for iterator lifecycle\n *\n * Ensures the iterator doesn't complete until all entries have been processed.\n * Uses cleanup registration pattern so each iterator can register its specific\n * cleanup functions (e.g., close file descriptors, delete temp files, end parsers).\n *\n * Usage:\n * const lock = new Lock();\n * lock.onDestroy = (err) => BaseIterator.prototype.end.call(this, err);\n * lock.registerCleanup(() => { this.extract.end(); });\n * lock.registerCleanup(() => { fs.unlinkSync(this.tempPath); });\n *\n * // For each entry:\n * lock.retain();\n * // ... when entry is consumed:\n * lock.release();\n *\n * // When iteration complete:\n * lock.err = err; // optional error\n * lock.release(); // Initial count\n */\n\nexport type CleanupFn = () => void;\n\nexport default class Lock {\n private count = 1;\n private cleanupFns: CleanupFn[] = [];\n\n /** Error to pass to onDestroy callback */\n err: Error | null = null;\n\n /** Called after all cleanups when count reaches 0 */\n onDestroy: ((err: Error | null) => void) | null = null;\n\n /**\n * Register a cleanup function to be called when the lock is destroyed.\n * Cleanup functions are called in registration order, before onDestroy.\n * @param fn Cleanup function (should not throw)\n */\n registerCleanup(fn: CleanupFn): void {\n this.cleanupFns.push(fn);\n }\n\n /**\n * Increment reference count.\n * Call when starting to process a new entry.\n */\n retain(): void {\n this.count++;\n }\n\n /**\n * Decrement reference count.\n * Call when an entry has been fully consumed.\n * When count reaches 0, cleanup is triggered.\n */\n release(): void {\n if (this.count <= 0) {\n throw new Error('Lock count is corrupted');\n }\n this.count--;\n if (this.count === 0) {\n this._destroy();\n }\n }\n\n /**\n * Internal cleanup - called when reference count reaches 0\n */\n private _destroy(): void {\n // Run all registered cleanup functions in order\n // Note: Use traditional for loop for Node 0.8 compatibility (no Symbol.iterator)\n const fns = this.cleanupFns;\n for (let i = 0; i < fns.length; i++) {\n try {\n fns[i]();\n } catch (_e) {\n // Ignore cleanup errors to ensure all cleanup runs\n }\n }\n this.cleanupFns = [];\n\n // Call onDestroy callback LAST (typically calls iterator.end())\n if (this.onDestroy) {\n this.onDestroy(this.err);\n this.onDestroy = null;\n }\n }\n}\n"],"names":["Lock","count","cleanupFns","err","onDestroy","registerCleanup","fn","push","retain","release","Error","_destroy","fns","i","length","_e"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;CAqBC;;;;;;;eAIoBA;;;;;;;;AAAN,IAAA,AAAMA,qBAAN;;aAAMA;gCAAAA;aACXC,QAAQ;aACRC,aAA0B,EAAE;QAEpC,wCAAwC,QACxCC,MAAoB;QAEpB,mDAAmD,QACnDC,YAAkD;;iBAR/BJ;IAUnB;;;;GAIC,GACDK,OAAAA,eAEC,GAFDA,SAAAA,gBAAgBC,EAAa;QAC3B,IAAI,CAACJ,UAAU,CAACK,IAAI,CAACD;IACvB;IAEA;;;GAGC,GACDE,OAAAA,MAEC,GAFDA,SAAAA;QACE,IAAI,CAACP,KAAK;IACZ;IAEA;;;;GAIC,GACDQ,OAAAA,OAQC,GARDA,SAAAA;QACE,IAAI,IAAI,CAACR,KAAK,IAAI,GAAG;YACnB,MAAM,IAAIS,MAAM;QAClB;QACA,IAAI,CAACT,KAAK;QACV,IAAI,IAAI,CAACA,KAAK,KAAK,GAAG;YACpB,IAAI,CAACU,QAAQ;QACf;IACF;IAEA;;GAEC,GACD,OAAQA,QAkBP,GAlBD,SAAQA;QACN,gDAAgD;QAChD,iFAAiF;QACjF,IAAMC,MAAM,IAAI,CAACV,UAAU;QAC3B,IAAK,IAAIW,IAAI,GAAGA,IAAID,IAAIE,MAAM,EAAED,IAAK;YACnC,IAAI;gBACFD,GAAG,CAACC,EAAE;YACR,EAAE,OAAOE,IAAI;YACX,mDAAmD;YACrD;QACF;QACA,IAAI,CAACb,UAAU,GAAG,EAAE;QAEpB,gEAAgE;QAChE,IAAI,IAAI,CAACE,SAAS,EAAE;YAClB,IAAI,CAACA,SAAS,CAAC,IAAI,CAACD,GAAG;YACvB,IAAI,CAACC,SAAS,GAAG;QACnB;IACF;WA/DmBJ"}