@vertesia/memory 0.24.0-dev.202601221707

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 (95) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +473 -0
  3. package/lib/cjs/Builder.js +186 -0
  4. package/lib/cjs/Builder.js.map +1 -0
  5. package/lib/cjs/ContentObject.js +114 -0
  6. package/lib/cjs/ContentObject.js.map +1 -0
  7. package/lib/cjs/ContentSource.js +82 -0
  8. package/lib/cjs/ContentSource.js.map +1 -0
  9. package/lib/cjs/MemoryPack.js +228 -0
  10. package/lib/cjs/MemoryPack.js.map +1 -0
  11. package/lib/cjs/MemoryPackBuilder.js +47 -0
  12. package/lib/cjs/MemoryPackBuilder.js.map +1 -0
  13. package/lib/cjs/commands/copy.js +53 -0
  14. package/lib/cjs/commands/copy.js.map +1 -0
  15. package/lib/cjs/commands/exec.js +82 -0
  16. package/lib/cjs/commands/exec.js.map +1 -0
  17. package/lib/cjs/index.js +28 -0
  18. package/lib/cjs/index.js.map +1 -0
  19. package/lib/cjs/package.json +3 -0
  20. package/lib/cjs/utils/cmdline.js +90 -0
  21. package/lib/cjs/utils/cmdline.js.map +1 -0
  22. package/lib/cjs/utils/rewrite.js +166 -0
  23. package/lib/cjs/utils/rewrite.js.map +1 -0
  24. package/lib/cjs/utils/stream.js +27 -0
  25. package/lib/cjs/utils/stream.js.map +1 -0
  26. package/lib/cjs/utils/tar.js +185 -0
  27. package/lib/cjs/utils/tar.js.map +1 -0
  28. package/lib/esm/Builder.js +178 -0
  29. package/lib/esm/Builder.js.map +1 -0
  30. package/lib/esm/ContentObject.js +103 -0
  31. package/lib/esm/ContentObject.js.map +1 -0
  32. package/lib/esm/ContentSource.js +75 -0
  33. package/lib/esm/ContentSource.js.map +1 -0
  34. package/lib/esm/MemoryPack.js +218 -0
  35. package/lib/esm/MemoryPack.js.map +1 -0
  36. package/lib/esm/MemoryPackBuilder.js +43 -0
  37. package/lib/esm/MemoryPackBuilder.js.map +1 -0
  38. package/lib/esm/commands/copy.js +50 -0
  39. package/lib/esm/commands/copy.js.map +1 -0
  40. package/lib/esm/commands/exec.js +75 -0
  41. package/lib/esm/commands/exec.js.map +1 -0
  42. package/lib/esm/index.js +7 -0
  43. package/lib/esm/index.js.map +1 -0
  44. package/lib/esm/utils/cmdline.js +86 -0
  45. package/lib/esm/utils/cmdline.js.map +1 -0
  46. package/lib/esm/utils/rewrite.js +161 -0
  47. package/lib/esm/utils/rewrite.js.map +1 -0
  48. package/lib/esm/utils/stream.js +23 -0
  49. package/lib/esm/utils/stream.js.map +1 -0
  50. package/lib/esm/utils/tar.js +175 -0
  51. package/lib/esm/utils/tar.js.map +1 -0
  52. package/lib/tsconfig.tsbuildinfo +1 -0
  53. package/lib/types/Builder.d.ts +72 -0
  54. package/lib/types/Builder.d.ts.map +1 -0
  55. package/lib/types/ContentObject.d.ts +43 -0
  56. package/lib/types/ContentObject.d.ts.map +1 -0
  57. package/lib/types/ContentSource.d.ts +32 -0
  58. package/lib/types/ContentSource.d.ts.map +1 -0
  59. package/lib/types/MemoryPack.d.ts +46 -0
  60. package/lib/types/MemoryPack.d.ts.map +1 -0
  61. package/lib/types/MemoryPackBuilder.d.ts +18 -0
  62. package/lib/types/MemoryPackBuilder.d.ts.map +1 -0
  63. package/lib/types/commands/copy.d.ts +8 -0
  64. package/lib/types/commands/copy.d.ts.map +1 -0
  65. package/lib/types/commands/exec.d.ts +7 -0
  66. package/lib/types/commands/exec.d.ts.map +1 -0
  67. package/lib/types/index.d.ts +14 -0
  68. package/lib/types/index.d.ts.map +1 -0
  69. package/lib/types/utils/cmdline.d.ts +10 -0
  70. package/lib/types/utils/cmdline.d.ts.map +1 -0
  71. package/lib/types/utils/rewrite.d.ts +38 -0
  72. package/lib/types/utils/rewrite.d.ts.map +1 -0
  73. package/lib/types/utils/stream.d.ts +9 -0
  74. package/lib/types/utils/stream.d.ts.map +1 -0
  75. package/lib/types/utils/tar.d.ts +40 -0
  76. package/lib/types/utils/tar.d.ts.map +1 -0
  77. package/package.json +53 -0
  78. package/src/Builder.ts +239 -0
  79. package/src/ContentObject.ts +114 -0
  80. package/src/ContentSource.ts +88 -0
  81. package/src/MemoryPack.ts +233 -0
  82. package/src/MemoryPackBuilder.ts +55 -0
  83. package/src/builder.test.ts +214 -0
  84. package/src/commands/copy.ts +53 -0
  85. package/src/commands/exec.test.ts +22 -0
  86. package/src/commands/exec.ts +83 -0
  87. package/src/index.ts +14 -0
  88. package/src/utils/cmdline.test.ts +32 -0
  89. package/src/utils/cmdline.ts +92 -0
  90. package/src/utils/rewrite.test.ts +65 -0
  91. package/src/utils/rewrite.ts +167 -0
  92. package/src/utils/stream.test.ts +13 -0
  93. package/src/utils/stream.ts +27 -0
  94. package/src/utils/tar.test.ts +48 -0
  95. package/src/utils/tar.ts +203 -0
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadTarIndex = exports.TarIndex = exports.TarBuilder = exports.MemoryPackBuilder = exports.loadMemoryPack = exports.TarMemoryPack = exports.MemoryEntry = exports.TextSource = exports.FileSource = exports.BufferSource = exports.AbstractContentSource = exports.PdfObject = exports.MediaObject = exports.JsonObject = exports.DocxObject = exports.ContentObject = exports.buildMemoryPack = exports.Builder = void 0;
4
+ var Builder_js_1 = require("./Builder.js");
5
+ Object.defineProperty(exports, "Builder", { enumerable: true, get: function () { return Builder_js_1.Builder; } });
6
+ Object.defineProperty(exports, "buildMemoryPack", { enumerable: true, get: function () { return Builder_js_1.buildMemoryPack; } });
7
+ var ContentObject_js_1 = require("./ContentObject.js");
8
+ Object.defineProperty(exports, "ContentObject", { enumerable: true, get: function () { return ContentObject_js_1.ContentObject; } });
9
+ Object.defineProperty(exports, "DocxObject", { enumerable: true, get: function () { return ContentObject_js_1.DocxObject; } });
10
+ Object.defineProperty(exports, "JsonObject", { enumerable: true, get: function () { return ContentObject_js_1.JsonObject; } });
11
+ Object.defineProperty(exports, "MediaObject", { enumerable: true, get: function () { return ContentObject_js_1.MediaObject; } });
12
+ Object.defineProperty(exports, "PdfObject", { enumerable: true, get: function () { return ContentObject_js_1.PdfObject; } });
13
+ var ContentSource_js_1 = require("./ContentSource.js");
14
+ Object.defineProperty(exports, "AbstractContentSource", { enumerable: true, get: function () { return ContentSource_js_1.AbstractContentSource; } });
15
+ Object.defineProperty(exports, "BufferSource", { enumerable: true, get: function () { return ContentSource_js_1.BufferSource; } });
16
+ Object.defineProperty(exports, "FileSource", { enumerable: true, get: function () { return ContentSource_js_1.FileSource; } });
17
+ Object.defineProperty(exports, "TextSource", { enumerable: true, get: function () { return ContentSource_js_1.TextSource; } });
18
+ var MemoryPack_js_1 = require("./MemoryPack.js");
19
+ Object.defineProperty(exports, "MemoryEntry", { enumerable: true, get: function () { return MemoryPack_js_1.MemoryEntry; } });
20
+ Object.defineProperty(exports, "TarMemoryPack", { enumerable: true, get: function () { return MemoryPack_js_1.TarMemoryPack; } });
21
+ Object.defineProperty(exports, "loadMemoryPack", { enumerable: true, get: function () { return MemoryPack_js_1.loadMemoryPack; } });
22
+ var MemoryPackBuilder_js_1 = require("./MemoryPackBuilder.js");
23
+ Object.defineProperty(exports, "MemoryPackBuilder", { enumerable: true, get: function () { return MemoryPackBuilder_js_1.MemoryPackBuilder; } });
24
+ var tar_js_1 = require("./utils/tar.js");
25
+ Object.defineProperty(exports, "TarBuilder", { enumerable: true, get: function () { return tar_js_1.TarBuilder; } });
26
+ Object.defineProperty(exports, "TarIndex", { enumerable: true, get: function () { return tar_js_1.TarIndex; } });
27
+ Object.defineProperty(exports, "loadTarIndex", { enumerable: true, get: function () { return tar_js_1.loadTarIndex; } });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AAA9C,qGAAA,OAAO,OAAA;AAAE,6GAAA,eAAe,OAAA;AAIjC,uDAAkG;AAAzF,iHAAA,aAAa,OAAA;AAAE,8GAAA,UAAU,OAAA;AAAE,8GAAA,UAAU,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,6GAAA,SAAS,OAAA;AAEtE,uDAAgG;AAAvF,yHAAA,qBAAqB,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,8GAAA,UAAU,OAAA;AAAE,8GAAA,UAAU,OAAA;AAEpE,iDAA4E;AAAnE,4GAAA,WAAW,OAAA;AAAE,8GAAA,aAAa,OAAA;AAAE,+GAAA,cAAc,OAAA;AAEnD,+DAA0D;AAAjD,yHAAA,iBAAiB,OAAA;AAE1B,yCAAmE;AAA1D,oGAAA,UAAU,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,sGAAA,YAAY,OAAA"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitCommandLine = splitCommandLine;
4
+ exports.splitPipeCommands = splitPipeCommands;
5
+ function readWord(text, index) {
6
+ let i = index, len = text.length;
7
+ while (i < len && (text[i] !== ' ' || text[i] !== '\t')) {
8
+ const c = text[i];
9
+ if (c === ' ' || c === '\t') {
10
+ return [text.substring(index, i), i];
11
+ }
12
+ i++;
13
+ }
14
+ return [text.substring(index), len];
15
+ }
16
+ function readQuotedArg(text, index, quote) {
17
+ let i = index, len = text.length;
18
+ while (i < len) {
19
+ const c = text[i];
20
+ if (c === '\\') {
21
+ i += 2;
22
+ continue;
23
+ }
24
+ else if (c === quote) {
25
+ return [text.substring(index, i), i + 1];
26
+ }
27
+ else {
28
+ i++;
29
+ }
30
+ }
31
+ return [text.substring(index), len];
32
+ }
33
+ function splitCommandLine(text) {
34
+ const args = [];
35
+ let i = 0, len = text.length;
36
+ while (i < len) {
37
+ let c = text[i];
38
+ if (c === ' ' || c === '\t') {
39
+ i++; // skip whitespace
40
+ }
41
+ else if (c === '"' || c === "'") {
42
+ const [word, offset] = readQuotedArg(text, i + 1, c);
43
+ i = offset;
44
+ args.push(word);
45
+ }
46
+ else {
47
+ const [word, offset] = readWord(text, i);
48
+ i = offset;
49
+ args.push(word);
50
+ }
51
+ }
52
+ return args;
53
+ }
54
+ function splitPipeCommands(text) {
55
+ const tokens = splitCommandLine(text);
56
+ const commands = [];
57
+ let args = [];
58
+ for (const token of tokens) {
59
+ if (token === "|") {
60
+ if (args.length < 1) {
61
+ throw new Error("Invalid pipe character. Expecting a command first.");
62
+ }
63
+ const name = args.shift();
64
+ commands.push({
65
+ name,
66
+ args
67
+ });
68
+ args = [];
69
+ }
70
+ else {
71
+ args.push(token);
72
+ }
73
+ }
74
+ let out;
75
+ if (args.length > 0) {
76
+ const name = args.shift();
77
+ if (args.length > 1 && args[args.length - 2] === ">") {
78
+ out = args.pop();
79
+ args.pop(); // remove the ">"
80
+ }
81
+ commands.push({
82
+ name,
83
+ args
84
+ });
85
+ }
86
+ return {
87
+ commands, out
88
+ };
89
+ }
90
+ //# sourceMappingURL=cmdline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmdline.js","sourceRoot":"","sources":["../../../src/utils/cmdline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Path = void 0;
4
+ exports.createPathRewrite = createPathRewrite;
5
+ const path_1 = require("path");
6
+ function createPathRewrite(path) {
7
+ let truncPath;
8
+ let basePath = '';
9
+ let index = path.indexOf('!');
10
+ if (index > -1) {
11
+ basePath = path.substring(0, index);
12
+ if (!basePath.endsWith('/')) {
13
+ basePath += '/';
14
+ }
15
+ truncPath = (path) => {
16
+ return path.substring(basePath.length);
17
+ };
18
+ path = path.substring(index + 1);
19
+ }
20
+ else {
21
+ truncPath = (path) => {
22
+ return (0, path_1.basename)(path);
23
+ };
24
+ }
25
+ if (path === '*') {
26
+ // preserve path
27
+ return truncPath;
28
+ }
29
+ else if (path.endsWith("/*")) {
30
+ const prefix = path.slice(0, -2);
31
+ return (path) => {
32
+ path = truncPath(path);
33
+ return (0, path_1.join)(prefix, path);
34
+ };
35
+ }
36
+ else {
37
+ // use path builder
38
+ return buildPathRewrite(path, truncPath);
39
+ }
40
+ }
41
+ const RX_PARTS = /(%d\/)|(\.?%e)|(%[fnip])/g;
42
+ function buildPathRewrite(path, truncPath) {
43
+ let parts = [];
44
+ let m;
45
+ let lastIndex = 0;
46
+ while (m = RX_PARTS.exec(path)) {
47
+ if (m.index > lastIndex) {
48
+ const literal = path.substring(lastIndex, m.index);
49
+ parts.push(() => literal);
50
+ }
51
+ if (m[1]) { // %d/
52
+ parts.push((path) => path.dirname ? path.dirname + '/' : '');
53
+ }
54
+ else if (m[2]) { // .?%e
55
+ if (m[2][0] === '.') {
56
+ parts.push((path) => path.extname || '');
57
+ }
58
+ else {
59
+ parts.push((path) => path.extname ? path.extname.slice(1) : ''); // extension without dot
60
+ }
61
+ }
62
+ else if (m[3]) {
63
+ switch (m[3]) {
64
+ case '%f':
65
+ parts.push((path) => path.name);
66
+ break;
67
+ case '%n':
68
+ parts.push((path) => path.basename);
69
+ break;
70
+ case '%p': // stringify the path by replacing / with _
71
+ parts.push((path) => {
72
+ let p = path.value;
73
+ if (p.startsWith('/')) {
74
+ p = p.substring(1);
75
+ }
76
+ return p.replaceAll('/', '_');
77
+ });
78
+ break;
79
+ case '%i': // index
80
+ parts.push((_path, index) => String(index));
81
+ break;
82
+ default: throw new Error(`Bug: should never happen`);
83
+ }
84
+ }
85
+ lastIndex = m.index + m[0].length;
86
+ }
87
+ if (!parts.length) {
88
+ return () => path;
89
+ }
90
+ else {
91
+ if (lastIndex < path.length) {
92
+ const literal = path.substring(lastIndex);
93
+ parts.push(() => literal);
94
+ }
95
+ return (path, index) => {
96
+ const pathObj = new Path(truncPath(path));
97
+ const out = [];
98
+ for (const part of parts) {
99
+ out.push(part(pathObj, index));
100
+ }
101
+ return out.join('');
102
+ };
103
+ }
104
+ }
105
+ class Path {
106
+ _name;
107
+ _extname;
108
+ _dirname;
109
+ _basename;
110
+ /**
111
+ * The complete path value
112
+ */
113
+ value;
114
+ /**
115
+ * The file name (the last portion of the path). Includes the extension if present.
116
+ */
117
+ get name() {
118
+ if (!this._name) {
119
+ this._name = (0, path_1.basename)(this.value);
120
+ }
121
+ return this._name;
122
+ }
123
+ /**
124
+ * The extension of the file including the leading '.'.
125
+ * An empty string if the file has no extension.
126
+ */
127
+ get extname() {
128
+ if (!this._extname) {
129
+ this._extname = (0, path_1.extname)(this.value);
130
+ }
131
+ return this._extname;
132
+ }
133
+ /**
134
+ * The directory portion of the path. Doesn't include the trailing slash.
135
+ * If no directory is present, returns an empty string.
136
+ */
137
+ get dirname() {
138
+ if (!this._dirname) {
139
+ this._dirname = (0, path_1.dirname)(this.value);
140
+ if (this._dirname === '.') {
141
+ this._dirname = '';
142
+ }
143
+ }
144
+ return this._dirname;
145
+ }
146
+ /**
147
+ * The path without the extension
148
+ */
149
+ get basename() {
150
+ if (!this._basename) {
151
+ this._basename = this.extname ? this.name.slice(0, -this.extname.length) : this.name;
152
+ }
153
+ return this._basename;
154
+ }
155
+ constructor(value) {
156
+ this.value = value;
157
+ }
158
+ /**
159
+ * Return the complete path value (same as `value`)
160
+ */
161
+ toString() {
162
+ return this.value;
163
+ }
164
+ }
165
+ exports.Path = Path;
166
+ //# sourceMappingURL=rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../../src/utils/rewrite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BufferWritableStream = void 0;
4
+ const stream_1 = require("stream");
5
+ class BufferWritableStream extends stream_1.Writable {
6
+ chunks = [];
7
+ buffer;
8
+ // _write method is required to handle the incoming data
9
+ _write(chunk, _encoding, callback) {
10
+ this.chunks.push(chunk); // Collect the chunk into the array
11
+ callback(); // Indicate that the write is complete
12
+ }
13
+ // Optional _final method is called when the stream is ending
14
+ _final(callback) {
15
+ this.buffer = Buffer.concat(this.chunks); // Concatenate the collected chunks into a buffer
16
+ callback(); // Indicate the stream is finished
17
+ }
18
+ // Method to get the final buffer when the stream is closed
19
+ getBuffer() {
20
+ return this.buffer;
21
+ }
22
+ getText(encoding = "utf-8") {
23
+ return this.buffer?.toString(encoding);
24
+ }
25
+ }
26
+ exports.BufferWritableStream = BufferWritableStream;
27
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/utils/stream.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAElC,MAAa,oBAAqB,SAAQ,iBAAQ;IAC9C,MAAM,GAAa,EAAE,CAAA;IACrB,MAAM,CAAqB;IAE3B,wDAAwD;IACxD,MAAM,CAAC,KAAa,EAAE,SAAyB,EAAE,QAAwC;QACrF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mCAAmC;QAC5D,QAAQ,EAAE,CAAC,CAAC,sCAAsC;IACtD,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,QAAwC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iDAAiD;QAC3F,QAAQ,EAAE,CAAC,CAAC,kCAAkC;IAClD,CAAC;IAED,2DAA2D;IAC3D,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,WAA2B,OAAO;QACtC,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;CACJ;AAxBD,oDAwBC"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TarIndex = exports.TarBuilder = void 0;
7
+ exports.loadTarIndex = loadTarIndex;
8
+ exports.normalizePath = normalizePath;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const promises_1 = require("fs/promises");
11
+ const promises_2 = require("stream/promises");
12
+ const tar_stream_1 = __importDefault(require("tar-stream"));
13
+ const zlib_1 = __importDefault(require("zlib"));
14
+ class TarBuilder {
15
+ pack;
16
+ indexData = [];
17
+ currentOffset = 0;
18
+ tarPromise;
19
+ constructor(file) {
20
+ const pack = tar_stream_1.default.pack(); // Create a new tar stream
21
+ this.pack = pack;
22
+ // Open the output file as a write stream
23
+ const outputStream = fs_1.default.createWriteStream(file);
24
+ if (file.endsWith('.gz')) {
25
+ this.tarPromise = (0, promises_2.pipeline)(pack, zlib_1.default.createGzip(), outputStream);
26
+ }
27
+ else {
28
+ this.tarPromise = (0, promises_2.pipeline)(pack, outputStream);
29
+ }
30
+ }
31
+ async add(name, content) {
32
+ name = normalizePath(name);
33
+ // Calculate header size, 512 bytes for tar headers
34
+ const headerSize = 512;
35
+ const contentSize = content ? Buffer.byteLength(content) : 0;
36
+ const entryHeaderOffset = this.currentOffset;
37
+ // Store the index entry
38
+ // entry data offset is always at header offset + 512 bytes
39
+ if (contentSize > 0) { // do not index directories
40
+ this.indexData.push(`${name}:${entryHeaderOffset},${contentSize}`);
41
+ }
42
+ // Add the file entry to the tar stream
43
+ this.pack.entry({ name, size: contentSize }, content);
44
+ // Update the offset
45
+ this.currentOffset += headerSize + contentSize;
46
+ // Tar files are padded to 512-byte boundaries
47
+ if (contentSize % 512 !== 0) {
48
+ this.currentOffset += 512 - (contentSize % 512);
49
+ }
50
+ }
51
+ async build() {
52
+ const pack = this.pack;
53
+ // Convert index data to string and calculate its size
54
+ const indexContent = this.indexData.join('\n') + '\n';
55
+ const indexContentSize = Buffer.byteLength(indexContent);
56
+ // Add the .index entry to the tar
57
+ pack.entry({ name: '.index', size: indexContentSize }, indexContent);
58
+ pack.finalize(); // Finalize the tar stream
59
+ await this.tarPromise;
60
+ }
61
+ destroy() {
62
+ this.pack.destroy();
63
+ }
64
+ }
65
+ exports.TarBuilder = TarBuilder;
66
+ async function loadTarIndex(tarFile) {
67
+ const fd = await (0, promises_1.open)(tarFile, 'r');
68
+ try {
69
+ return await readTarIndex(fd);
70
+ }
71
+ catch (err) {
72
+ await fd.close();
73
+ throw err;
74
+ }
75
+ }
76
+ async function readTarIndex(fd) {
77
+ const stats = await fd.stat();
78
+ const size = stats.size;
79
+ // we want to find the index header.
80
+ // we read the last chunks of 512 until we find the file name followed by a 0 char.
81
+ // the tar file ends with a segment of 1024 bytes of 0 so we need to skip that.
82
+ // we pick a size for the buffer to also include the file size entry from the header. So the buffer should be
83
+ // of 100 + 8 + 8 + 8 + 12 bytes = 124 + 12 bytes = 136 bytes
84
+ // the file size will be located at offset 124 and is 12 bytes long
85
+ // skip 1024 0 bytes then skip another 1024 bytes to find the first possible location of the index header (512 bytes for content and 512 bytes for the header)
86
+ let offset = size - 1024 - 1024;
87
+ const buffer = Buffer.alloc(512);
88
+ while (offset >= 0) {
89
+ await fd.read(buffer, 0, 512, offset);
90
+ // remove the 0 byte padding
91
+ const fileName = buffer.toString('utf-8', 0, 100);
92
+ if (fileName.startsWith('.index\0')) {
93
+ // we found the index header
94
+ const indexSize = getHeaderFileSize(buffer);
95
+ const indexDataOffset = offset + 512;
96
+ const indexDataEnd = indexDataOffset + indexSize;
97
+ if (indexDataEnd > size - 1024) {
98
+ throw new Error('Invalid index data offsets: [' + indexDataOffset + ':' + indexDataEnd + ']');
99
+ }
100
+ const dataBuffer = Buffer.alloc(indexSize);
101
+ await fd.read(dataBuffer, 0, indexSize, indexDataOffset);
102
+ const indexContent = dataBuffer.toString('utf-8');
103
+ return new TarIndex(fd, indexContent);
104
+ }
105
+ offset -= 512;
106
+ }
107
+ return null;
108
+ }
109
+ class TarIndex {
110
+ fd;
111
+ entries = {};
112
+ headerBuffer = Buffer.alloc(512);
113
+ /**
114
+ * @param fd the tar file descriptor
115
+ * @param content the index content
116
+ */
117
+ constructor(fd, content) {
118
+ this.fd = fd;
119
+ const lines = content.split('\n');
120
+ for (const line of lines) {
121
+ if (line) {
122
+ const [name, value] = line.split(':');
123
+ const [offsetStr, sizeStr] = value.split(',');
124
+ const offset = parseInt(offsetStr);
125
+ const size = parseInt(sizeStr);
126
+ this.entries[name] = { offset, size };
127
+ }
128
+ }
129
+ }
130
+ getPaths() {
131
+ return Object.keys(this.entries);
132
+ }
133
+ getSortedPaths() {
134
+ return Object.keys(this.entries).sort();
135
+ }
136
+ get(name) {
137
+ return this.entries[name];
138
+ }
139
+ async getContentAt(offset, size) {
140
+ const buffer = Buffer.alloc(size);
141
+ await this.fd.read(buffer, 0, size, offset + 512);
142
+ return buffer;
143
+ }
144
+ async getContent(name) {
145
+ const entry = this.entries[name];
146
+ if (entry) {
147
+ return this.getContentAt(entry.offset, entry.size);
148
+ }
149
+ else {
150
+ return null;
151
+ }
152
+ }
153
+ getReadStream(name, encoding) {
154
+ const entry = this.entries[name];
155
+ if (entry) {
156
+ const offset = entry.offset + 512;
157
+ return this.fd.createReadStream({
158
+ encoding,
159
+ start: entry.offset,
160
+ end: offset + entry.size
161
+ });
162
+ }
163
+ else {
164
+ return null;
165
+ }
166
+ }
167
+ async close() {
168
+ await this.fd.close();
169
+ }
170
+ }
171
+ exports.TarIndex = TarIndex;
172
+ function getHeaderFileSize(buffer) {
173
+ const octalSize = buffer.toString('ascii', 124, 136).trim();
174
+ return parseInt(octalSize, 8);
175
+ }
176
+ function normalizePath(path) {
177
+ if (path.startsWith('/')) {
178
+ path = path.slice(1);
179
+ }
180
+ if (path.endsWith('/')) {
181
+ path = path.slice(-1);
182
+ }
183
+ return path;
184
+ }
185
+ //# sourceMappingURL=tar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar.js","sourceRoot":"","sources":["../../../src/utils/tar.ts"],"names":[],"mappings":";;;;;;AA0EA,oCAQC;AAgHD,sCAQC;AA1MD,4CAAoB;AACpB,0CAA+C;AAC/C,8CAA2C;AAC3C,4DAA6B;AAC7B,gDAAwB;AAOxB,MAAa,UAAU;IACnB,IAAI,CAAW;IACf,SAAS,GAAa,EAAE,CAAC;IACzB,aAAa,GAAG,CAAC,CAAC;IAClB,UAAU,CAAmB;IAE7B,YAAY,IAAY;QACpB,MAAM,IAAI,GAAG,oBAAG,CAAC,IAAI,EAAE,CAAC,CAAC,0BAA0B;QACnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,yCAAyC;QACzC,MAAM,YAAY,GAAG,YAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,cAAI,CAAC,UAAU,EAAE,EAAE,YAAY,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,UAAU,GAAG,IAAA,mBAAQ,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,OAAgB;QACpC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3B,mDAAmD;QACnD,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC;QAE7C,wBAAwB;QACxB,2DAA2D;QAC3D,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,2BAA2B;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAEtD,oBAAoB;QACpB,IAAI,CAAC,aAAa,IAAI,UAAU,GAAG,WAAW,CAAC;QAC/C,8CAA8C;QAC9C,IAAI,WAAW,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,sDAAsD;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEzD,kCAAkC;QAClC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,YAAY,CAAC,CAAC;QAErE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,0BAA0B;QAE3C,MAAM,IAAI,CAAC,UAAU,CAAC;IAC1B,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CAEJ;AA7DD,gCA6DC;AAEM,KAAK,UAAU,YAAY,CAAC,OAAe;IAC9C,MAAM,EAAE,GAAG,MAAM,IAAA,eAAI,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC;QACD,OAAO,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC;IACd,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,EAAc;IACtC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,oCAAoC;IACpC,mFAAmF;IACnF,+EAA+E;IAC/E,6GAA6G;IAC7G,6DAA6D;IAC7D,mEAAmE;IACnE,8JAA8J;IAC9J,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC;QACjB,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACtC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,4BAA4B;YAC5B,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,eAAe,GAAG,MAAM,GAAG,GAAG,CAAC;YACrC,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAC;YACjD,IAAI,YAAY,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,eAAe,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3C,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;YACzD,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClD,OAAO,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,IAAI,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAMD,MAAa,QAAQ;IAOE;IANnB,OAAO,GAAkC,EAAE,CAAC;IAC5C,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC;;;OAGG;IACH,YAAmB,EAAc,EAAE,OAAe;QAA/B,OAAE,GAAF,EAAE,CAAY;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1C,CAAC;QACL,CAAC;IACL,CAAC;IAED,QAAQ;QACJ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,cAAc;QACV,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,GAAG,CAAC,IAAY;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,IAAY;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,IAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,QAAyB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAClC,OAAO,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC;gBAC5B,QAAQ;gBACR,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,IAAI;aAC3B,CAAC,CAAA;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CAEJ;AAhED,4BAgEC;AAGD,SAAS,iBAAiB,CAAC,MAAc;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}