extract-base-iterator 3.4.3 → 3.4.5

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 (38) hide show
  1. package/dist/cjs/DirectoryEntry.js +25 -7
  2. package/dist/cjs/DirectoryEntry.js.map +1 -1
  3. package/dist/cjs/FileEntry.js +25 -7
  4. package/dist/cjs/FileEntry.js.map +1 -1
  5. package/dist/cjs/LinkEntry.js +33 -9
  6. package/dist/cjs/LinkEntry.js.map +1 -1
  7. package/dist/cjs/SymbolicLinkEntry.js +37 -10
  8. package/dist/cjs/SymbolicLinkEntry.js.map +1 -1
  9. package/dist/cjs/shared/compat.d.cts +1 -0
  10. package/dist/cjs/shared/compat.d.ts +1 -0
  11. package/dist/cjs/shared/compat.js +14 -0
  12. package/dist/cjs/shared/compat.js.map +1 -1
  13. package/dist/cjs/shared/safeJoinPath.js +2 -1
  14. package/dist/cjs/shared/safeJoinPath.js.map +1 -1
  15. package/dist/cjs/shared/streamToString.js +3 -6
  16. package/dist/cjs/shared/streamToString.js.map +1 -1
  17. package/dist/cjs/validateAttributes.js.map +1 -1
  18. package/dist/cjs/waitForAccess.js +2 -2
  19. package/dist/cjs/waitForAccess.js.map +1 -1
  20. package/dist/esm/DirectoryEntry.js +6 -6
  21. package/dist/esm/DirectoryEntry.js.map +1 -1
  22. package/dist/esm/FileEntry.js +6 -6
  23. package/dist/esm/FileEntry.js.map +1 -1
  24. package/dist/esm/LinkEntry.js +8 -8
  25. package/dist/esm/LinkEntry.js.map +1 -1
  26. package/dist/esm/SymbolicLinkEntry.js +10 -9
  27. package/dist/esm/SymbolicLinkEntry.js.map +1 -1
  28. package/dist/esm/shared/compat.d.ts +1 -0
  29. package/dist/esm/shared/compat.js +10 -0
  30. package/dist/esm/shared/compat.js.map +1 -1
  31. package/dist/esm/shared/safeJoinPath.js +2 -1
  32. package/dist/esm/shared/safeJoinPath.js.map +1 -1
  33. package/dist/esm/shared/streamToString.js +3 -6
  34. package/dist/esm/shared/streamToString.js.map +1 -1
  35. package/dist/esm/validateAttributes.js.map +1 -1
  36. package/dist/esm/waitForAccess.js +2 -2
  37. package/dist/esm/waitForAccess.js.map +1 -1
  38. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/streamToString.ts"],"sourcesContent":["/**\n * Read entire stream content as string\n *\n * Handles both flowing streams and streams that have already\n * buffered data (using readable stream semantics).\n *\n * Node 0.8+ compatible.\n */\n\nimport oo from 'on-one';\nimport { bufferFrom } from './compat.ts';\n\nexport type StreamToStringCallback = (error?: Error, result?: string) => void;\n\nexport default function streamToString(stream: NodeJS.ReadableStream, callback: StreamToStringCallback): void {\n const chunks: Buffer[] = [];\n\n // Handle data from the stream\n stream.on('data', (chunk: Buffer | string) => {\n if (typeof chunk === 'string') {\n chunks.push(bufferFrom(chunk, 'utf8'));\n } else {\n chunks.push(chunk);\n }\n });\n\n // Handle stream end events using on-one for Node 0.8 compatibility\n oo(stream, ['error', 'end', 'close'], (err?: Error) => {\n if (err) {\n callback(err);\n } else {\n const content = Buffer.concat(chunks).toString('utf8');\n callback(null, content);\n }\n });\n\n // Ensure stream is flowing (in case it's paused)\n if (typeof (stream as NodeJS.ReadStream).resume === 'function') {\n (stream as NodeJS.ReadStream).resume();\n }\n}\n"],"names":["oo","bufferFrom","streamToString","stream","callback","chunks","on","chunk","push","err","content","Buffer","concat","toString","resume"],"mappings":"AAAA;;;;;;;CAOC,GAED,OAAOA,QAAQ,SAAS;AACxB,SAASC,UAAU,QAAQ,cAAc;AAIzC,eAAe,SAASC,eAAeC,MAA6B,EAAEC,QAAgC;IACpG,MAAMC,SAAmB,EAAE;IAE3B,8BAA8B;IAC9BF,OAAOG,EAAE,CAAC,QAAQ,CAACC;QACjB,IAAI,OAAOA,UAAU,UAAU;YAC7BF,OAAOG,IAAI,CAACP,WAAWM,OAAO;QAChC,OAAO;YACLF,OAAOG,IAAI,CAACD;QACd;IACF;IAEA,mEAAmE;IACnEP,GAAGG,QAAQ;QAAC;QAAS;QAAO;KAAQ,EAAE,CAACM;QACrC,IAAIA,KAAK;YACPL,SAASK;QACX,OAAO;YACL,MAAMC,UAAUC,OAAOC,MAAM,CAACP,QAAQQ,QAAQ,CAAC;YAC/CT,SAAS,MAAMM;QACjB;IACF;IAEA,iDAAiD;IACjD,IAAI,OAAO,AAACP,OAA6BW,MAAM,KAAK,YAAY;QAC7DX,OAA6BW,MAAM;IACtC;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/shared/streamToString.ts"],"sourcesContent":["/**\n * Read entire stream content as string\n *\n * Handles both flowing streams and streams that have already\n * buffered data (using readable stream semantics).\n *\n * Node 0.8+ compatible.\n */\n\nimport oo from 'on-one';\nimport { bufferFrom } from './compat.ts';\n\nexport type StreamToStringCallback = (error?: Error, result?: string) => void;\n\nexport default function streamToString(stream: NodeJS.ReadableStream, callback: StreamToStringCallback): void {\n const chunks: Buffer[] = [];\n\n // Handle data from the stream\n stream.on('data', (chunk: Buffer | string) => {\n if (typeof chunk === 'string') {\n chunks.push(bufferFrom(chunk, 'utf8'));\n } else {\n chunks.push(chunk);\n }\n });\n\n // Handle stream end events using on-one for Node 0.8 compatibility\n oo(stream, ['error', 'end', 'close'], (err: Error | null) => {\n if (err) return callback(err);\n const content = Buffer.concat(chunks).toString('utf8');\n callback(undefined, content);\n });\n\n // Ensure stream is flowing (in case it's paused)\n if (typeof (stream as NodeJS.ReadStream).resume === 'function') {\n (stream as NodeJS.ReadStream).resume();\n }\n}\n"],"names":["oo","bufferFrom","streamToString","stream","callback","chunks","on","chunk","push","err","content","Buffer","concat","toString","undefined","resume"],"mappings":"AAAA;;;;;;;CAOC,GAED,OAAOA,QAAQ,SAAS;AACxB,SAASC,UAAU,QAAQ,cAAc;AAIzC,eAAe,SAASC,eAAeC,MAA6B,EAAEC,QAAgC;IACpG,MAAMC,SAAmB,EAAE;IAE3B,8BAA8B;IAC9BF,OAAOG,EAAE,CAAC,QAAQ,CAACC;QACjB,IAAI,OAAOA,UAAU,UAAU;YAC7BF,OAAOG,IAAI,CAACP,WAAWM,OAAO;QAChC,OAAO;YACLF,OAAOG,IAAI,CAACD;QACd;IACF;IAEA,mEAAmE;IACnEP,GAAGG,QAAQ;QAAC;QAAS;QAAO;KAAQ,EAAE,CAACM;QACrC,IAAIA,KAAK,OAAOL,SAASK;QACzB,MAAMC,UAAUC,OAAOC,MAAM,CAACP,QAAQQ,QAAQ,CAAC;QAC/CT,SAASU,WAAWJ;IACtB;IAEA,iDAAiD;IACjD,IAAI,OAAO,AAACP,OAA6BY,MAAM,KAAK,YAAY;QAC7DZ,OAA6BY,MAAM;IACtC;AACF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/validateAttributes.ts"],"sourcesContent":["export default function validateAttributes(attributes: object, keys: string[]): void {\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index];\n if (attributes[key] === undefined) throw new Error(`Missing attribute ${key}.Attributes ${JSON.stringify(attributes)}`);\n }\n}\n"],"names":["validateAttributes","attributes","keys","index","length","key","undefined","Error","JSON","stringify"],"mappings":"AAAA,eAAe,SAASA,mBAAmBC,UAAkB,EAAEC,IAAc;IAC3E,IAAK,IAAIC,QAAQ,GAAGA,QAAQD,KAAKE,MAAM,EAAED,QAAS;QAChD,MAAME,MAAMH,IAAI,CAACC,MAAM;QACvB,IAAIF,UAAU,CAACI,IAAI,KAAKC,WAAW,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEF,IAAI,YAAY,EAAEG,KAAKC,SAAS,CAACR,aAAa;IACxH;AACF"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/validateAttributes.ts"],"sourcesContent":["export default function validateAttributes(attributes: object, keys: string[]): void {\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index];\n if ((attributes as Record<string, unknown>)[key] === undefined) throw new Error(`Missing attribute ${key}.Attributes ${JSON.stringify(attributes)}`);\n }\n}\n"],"names":["validateAttributes","attributes","keys","index","length","key","undefined","Error","JSON","stringify"],"mappings":"AAAA,eAAe,SAASA,mBAAmBC,UAAkB,EAAEC,IAAc;IAC3E,IAAK,IAAIC,QAAQ,GAAGA,QAAQD,KAAKE,MAAM,EAAED,QAAS;QAChD,MAAME,MAAMH,IAAI,CAACC,MAAM;QACvB,IAAI,AAACF,UAAsC,CAACI,IAAI,KAAKC,WAAW,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEF,IAAI,YAAY,EAAEG,KAAKC,SAAS,CAACR,aAAa;IACrJ;AACF"}
@@ -12,7 +12,7 @@ export default function waitForAccess(fullPath, noFollow, callback) {
12
12
  const delay = Math.min(5 * 2 ** attempts, 2560);
13
13
  return setTimeout(()=>waitSymlink(attempts + 1, cb), delay);
14
14
  }
15
- return cb(err);
15
+ return cb(err !== null && err !== void 0 ? err : undefined);
16
16
  }
17
17
  cb();
18
18
  });
@@ -24,7 +24,7 @@ export default function waitForAccess(fullPath, noFollow, callback) {
24
24
  const delay = Math.min(5 * 2 ** attempts, 2560);
25
25
  return setTimeout(()=>waitOpen(attempts + 1, cb), delay);
26
26
  }
27
- return cb(err);
27
+ return cb(err !== null && err !== void 0 ? err : undefined);
28
28
  }
29
29
  fs.close(fd, ()=>cb());
30
30
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/waitForAccess.ts"],"sourcesContent":["import fs from 'graceful-fs';\n\nimport type { NoParamCallback } from './types.ts';\n\n// Backward compatible: waitForAccess(path, callback) or waitForAccess(path, noFollow, callback)\nexport default function waitForAccess(fullPath: string, noFollow: boolean | NoParamCallback, callback?: NoParamCallback | number) {\n callback = typeof noFollow === 'function' ? noFollow : callback;\n noFollow = typeof noFollow === 'function' ? false : (noFollow as boolean);\n\n // Exponential backoff: 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560ms\n // Total max wait: ~5 seconds\n function waitSymlink(attempts, cb) {\n fs.lstat(fullPath, (err) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitSymlink(attempts + 1, cb), delay);\n }\n return cb(err);\n }\n cb();\n });\n }\n function waitOpen(attempts, cb) {\n fs.open(fullPath, 'r', (err, fd) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitOpen(attempts + 1, cb), delay);\n }\n return cb(err);\n }\n fs.close(fd, () => cb());\n });\n }\n\n // Windows: NTFS metadata may not be committed yet, verify accessibility\n // Node 0.10: the write stream's finish/close events may fire before the file is fully flushed to disk\n // For symlinks (noFollow=true), use lstat to check the link itself exists\n // For files/dirs/hardlinks, use open to verify the file is accessible\n noFollow ? waitSymlink(0, callback) : waitOpen(0, callback);\n}\n"],"names":["fs","waitForAccess","fullPath","noFollow","callback","waitSymlink","attempts","cb","lstat","err","code","delay","Math","min","setTimeout","waitOpen","open","fd","close"],"mappings":"AAAA,OAAOA,QAAQ,cAAc;AAI7B,gGAAgG;AAChG,eAAe,SAASC,cAAcC,QAAgB,EAAEC,QAAmC,EAAEC,QAAmC;IAC9HA,WAAW,OAAOD,aAAa,aAAaA,WAAWC;IACvDD,WAAW,OAAOA,aAAa,aAAa,QAASA;IAErD,sEAAsE;IACtE,6BAA6B;IAC7B,SAASE,YAAYC,QAAQ,EAAEC,EAAE;QAC/BP,GAAGQ,KAAK,CAACN,UAAU,CAACO;YAClB,IAAIA,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYJ,WAAW,IAAI;oBAC1C,MAAMK,QAAQC,KAAKC,GAAG,CAAC,IAAI,KAAKP,UAAU;oBAC1C,OAAOQ,WAAW,IAAMT,YAAYC,WAAW,GAAGC,KAAKI;gBACzD;gBACA,OAAOJ,GAAGE;YACZ;YACAF;QACF;IACF;IACA,SAASQ,SAAST,QAAQ,EAAEC,EAAE;QAC5BP,GAAGgB,IAAI,CAACd,UAAU,KAAK,CAACO,KAAKQ;YAC3B,IAAIR,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYJ,WAAW,IAAI;oBAC1C,MAAMK,QAAQC,KAAKC,GAAG,CAAC,IAAI,KAAKP,UAAU;oBAC1C,OAAOQ,WAAW,IAAMC,SAAST,WAAW,GAAGC,KAAKI;gBACtD;gBACA,OAAOJ,GAAGE;YACZ;YACAT,GAAGkB,KAAK,CAACD,IAAI,IAAMV;QACrB;IACF;IAEA,wEAAwE;IACxE,sGAAsG;IACtG,0EAA0E;IAC1E,sEAAsE;IACtEJ,WAAWE,YAAY,GAAGD,YAAYW,SAAS,GAAGX;AACpD"}
1
+ {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/waitForAccess.ts"],"sourcesContent":["import fs from 'graceful-fs';\n\nimport type { NoParamCallback } from './types.ts';\n\n// Backward compatible: waitForAccess(path, callback) or waitForAccess(path, noFollow, callback)\nexport default function waitForAccess(fullPath: string, noFollow: boolean | NoParamCallback, callback?: NoParamCallback | number) {\n callback = typeof noFollow === 'function' ? noFollow : callback;\n noFollow = typeof noFollow === 'function' ? false : (noFollow as boolean);\n\n // Exponential backoff: 5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560ms\n // Total max wait: ~5 seconds\n function waitSymlink(attempts: number, cb: NoParamCallback): void {\n fs.lstat(fullPath, (err) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitSymlink(attempts + 1, cb), delay);\n }\n return cb(err ?? undefined);\n }\n cb();\n });\n }\n function waitOpen(attempts: number, cb: NoParamCallback): void {\n fs.open(fullPath, 'r', (err, fd) => {\n if (err) {\n if (err.code === 'ENOENT' && attempts < 10) {\n const delay = Math.min(5 * 2 ** attempts, 2560);\n return setTimeout(() => waitOpen(attempts + 1, cb), delay);\n }\n return cb(err ?? undefined);\n }\n fs.close(fd, () => cb());\n });\n }\n\n // Windows: NTFS metadata may not be committed yet, verify accessibility\n // Node 0.10: the write stream's finish/close events may fire before the file is fully flushed to disk\n // For symlinks (noFollow=true), use lstat to check the link itself exists\n // For files/dirs/hardlinks, use open to verify the file is accessible\n noFollow ? waitSymlink(0, callback as NoParamCallback) : waitOpen(0, callback as NoParamCallback);\n}\n"],"names":["fs","waitForAccess","fullPath","noFollow","callback","waitSymlink","attempts","cb","lstat","err","code","delay","Math","min","setTimeout","undefined","waitOpen","open","fd","close"],"mappings":"AAAA,OAAOA,QAAQ,cAAc;AAI7B,gGAAgG;AAChG,eAAe,SAASC,cAAcC,QAAgB,EAAEC,QAAmC,EAAEC,QAAmC;IAC9HA,WAAW,OAAOD,aAAa,aAAaA,WAAWC;IACvDD,WAAW,OAAOA,aAAa,aAAa,QAASA;IAErD,sEAAsE;IACtE,6BAA6B;IAC7B,SAASE,YAAYC,QAAgB,EAAEC,EAAmB;QACxDP,GAAGQ,KAAK,CAACN,UAAU,CAACO;YAClB,IAAIA,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYJ,WAAW,IAAI;oBAC1C,MAAMK,QAAQC,KAAKC,GAAG,CAAC,IAAI,KAAKP,UAAU;oBAC1C,OAAOQ,WAAW,IAAMT,YAAYC,WAAW,GAAGC,KAAKI;gBACzD;gBACA,OAAOJ,GAAGE,gBAAAA,iBAAAA,MAAOM;YACnB;YACAR;QACF;IACF;IACA,SAASS,SAASV,QAAgB,EAAEC,EAAmB;QACrDP,GAAGiB,IAAI,CAACf,UAAU,KAAK,CAACO,KAAKS;YAC3B,IAAIT,KAAK;gBACP,IAAIA,IAAIC,IAAI,KAAK,YAAYJ,WAAW,IAAI;oBAC1C,MAAMK,QAAQC,KAAKC,GAAG,CAAC,IAAI,KAAKP,UAAU;oBAC1C,OAAOQ,WAAW,IAAME,SAASV,WAAW,GAAGC,KAAKI;gBACtD;gBACA,OAAOJ,GAAGE,gBAAAA,iBAAAA,MAAOM;YACnB;YACAf,GAAGmB,KAAK,CAACD,IAAI,IAAMX;QACrB;IACF;IAEA,wEAAwE;IACxE,sGAAsG;IACtG,0EAA0E;IAC1E,sEAAsE;IACtEJ,WAAWE,YAAY,GAAGD,YAA+BY,SAAS,GAAGZ;AACvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extract-base-iterator",
3
- "version": "3.4.3",
3
+ "version": "3.4.5",
4
4
  "description": "Base iterator for extract iterators like tar-iterator and zip-iterator",
5
5
  "keywords": [
6
6
  "extract",
@@ -54,6 +54,8 @@
54
54
  "stack-base-iterator": "^3.0.0"
55
55
  },
56
56
  "devDependencies": {
57
+ "@types/graceful-fs": "^4.1.9",
58
+ "@types/is-absolute": "^1.0.2",
57
59
  "@types/mocha": "*",
58
60
  "@types/node": "*",
59
61
  "cr": "^0.1.0",