@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,114 @@
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.DocxObject = exports.PdfObject = exports.MediaObject = exports.JsonObject = exports.ContentObject = void 0;
7
+ const converters_1 = require("@vertesia/converters");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const stream_1 = require("stream");
10
+ class ContentObject {
11
+ builder;
12
+ source;
13
+ encoding;
14
+ constructor(builder, source, encoding = "utf-8") {
15
+ this.builder = builder;
16
+ this.source = source;
17
+ this.encoding = encoding;
18
+ }
19
+ getContent() {
20
+ return this.source.getContent();
21
+ }
22
+ getStream() {
23
+ return this.source.getStream();
24
+ }
25
+ copyTo(entry) {
26
+ this.builder.addEntry(entry, this);
27
+ }
28
+ async copyToFile(file) {
29
+ const input = await this.getStream();
30
+ const out = fs_1.default.createWriteStream(file);
31
+ const stream = input.pipe(out);
32
+ return new Promise((resolve, reject) => {
33
+ const handleError = (err) => {
34
+ reject(err);
35
+ out.close();
36
+ };
37
+ stream.on('finish', () => {
38
+ resolve(stream);
39
+ out.close();
40
+ });
41
+ input.on('error', handleError);
42
+ stream.on('error', handleError);
43
+ });
44
+ }
45
+ /**
46
+ * Get a text representation of the object
47
+ */
48
+ async getText(encoding) {
49
+ const t = (await this.getContent()).toString(encoding || this.encoding);
50
+ return t;
51
+ }
52
+ getJsonValue() {
53
+ return this.getText();
54
+ }
55
+ }
56
+ exports.ContentObject = ContentObject;
57
+ class JsonObject extends ContentObject {
58
+ async getJsonValue() {
59
+ return JSON.parse(await this.getText());
60
+ }
61
+ }
62
+ exports.JsonObject = JsonObject;
63
+ class MediaObject extends ContentObject {
64
+ options;
65
+ constructor(builder, source, options = {}) {
66
+ super(builder, source);
67
+ this.options = options;
68
+ this.encoding = "base64";
69
+ }
70
+ async getStream() {
71
+ const stream = await super.getStream();
72
+ const out = new stream_1.PassThrough();
73
+ await (0, converters_1.transformImage)(stream, out, this.options);
74
+ return out;
75
+ }
76
+ async getContent() {
77
+ const stream = await super.getStream();
78
+ return await (0, converters_1.transformImageToBuffer)(stream, this.options);
79
+ }
80
+ }
81
+ exports.MediaObject = MediaObject;
82
+ class PdfObject extends ContentObject {
83
+ constructor(builder, source) {
84
+ super(builder, source);
85
+ }
86
+ async getStream() {
87
+ return stream_1.Readable.from(await this.getContent());
88
+ }
89
+ async getContent() {
90
+ return (0, converters_1.pdfToTextBuffer)(await super.getContent());
91
+ }
92
+ async getText() {
93
+ return await (0, converters_1.pdfToText)(await super.getContent());
94
+ }
95
+ }
96
+ exports.PdfObject = PdfObject;
97
+ class DocxObject extends ContentObject {
98
+ constructor(builder, source) {
99
+ super(builder, source);
100
+ }
101
+ async getBuffer() {
102
+ return Buffer.from(await (0, converters_1.manyToMarkdown)(await this.getStream(), "docx"), "utf-8");
103
+ }
104
+ async getStream() {
105
+ const stream = new stream_1.PassThrough();
106
+ stream.end(await this.getBuffer());
107
+ return stream;
108
+ }
109
+ async getText() {
110
+ return await (0, converters_1.manyToMarkdown)(await this.getStream(), "docx");
111
+ }
112
+ }
113
+ exports.DocxObject = DocxObject;
114
+ //# sourceMappingURL=ContentObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentObject.js","sourceRoot":"","sources":["../../src/ContentObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileSource = exports.TextSource = exports.BufferSource = exports.AbstractContentSource = void 0;
4
+ const fs_1 = require("fs");
5
+ const promises_1 = require("fs/promises");
6
+ const glob_1 = require("glob");
7
+ const path_1 = require("path");
8
+ const stream_1 = require("stream");
9
+ class AbstractContentSource {
10
+ async getStream() {
11
+ return stream_1.Readable.from(await this.getContent());
12
+ }
13
+ static resolve(source) {
14
+ if (typeof source === 'string') {
15
+ return FileSource.resolve(source);
16
+ }
17
+ else if (source instanceof AbstractContentSource) {
18
+ return source;
19
+ }
20
+ throw new Error("Unsupported content source: " + source);
21
+ }
22
+ }
23
+ exports.AbstractContentSource = AbstractContentSource;
24
+ class BufferSource extends AbstractContentSource {
25
+ buffer;
26
+ constructor(buffer) {
27
+ super();
28
+ this.buffer = buffer;
29
+ }
30
+ getContent() {
31
+ return Promise.resolve(this.buffer);
32
+ }
33
+ }
34
+ exports.BufferSource = BufferSource;
35
+ class TextSource extends AbstractContentSource {
36
+ value;
37
+ encoding;
38
+ constructor(value, encoding = "utf-8") {
39
+ super();
40
+ this.value = value;
41
+ this.encoding = encoding;
42
+ }
43
+ getContent() {
44
+ return Promise.resolve(Buffer.from(this.value, this.encoding));
45
+ }
46
+ }
47
+ exports.TextSource = TextSource;
48
+ class FileSource extends AbstractContentSource {
49
+ file;
50
+ constructor(file, resolvePath = true) {
51
+ super();
52
+ this.file = resolvePath ? (0, path_1.resolve)(file) : file;
53
+ }
54
+ get path() {
55
+ return this.file;
56
+ }
57
+ get name() {
58
+ return (0, path_1.basename)(this.file);
59
+ }
60
+ get extname() {
61
+ return (0, path_1.extname)(this.file);
62
+ }
63
+ get nameWithoutExt() {
64
+ return this.name.slice(0, -this.extname.length);
65
+ }
66
+ getContent() {
67
+ return (0, promises_1.readFile)(this.file);
68
+ }
69
+ async getStream() {
70
+ return (0, fs_1.createReadStream)(this.file);
71
+ }
72
+ static resolve(location) {
73
+ if (location.includes('*')) {
74
+ return (0, glob_1.globSync)(location, { absolute: true, withFileTypes: false }).map(f => new FileSource(f));
75
+ }
76
+ else {
77
+ return new FileSource(location);
78
+ }
79
+ }
80
+ }
81
+ exports.FileSource = FileSource;
82
+ //# sourceMappingURL=ContentSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentSource.js","sourceRoot":"","sources":["../../src/ContentSource.ts"],"names":[],"mappings":";;;AAAA,2BAAsC;AACtC,0CAAuC;AACvC,+BAAgC;AAChC,+BAAkD;AAClD,mCAAkC;AAQlC,MAAsB,qBAAqB;IAGvC,KAAK,CAAC,SAAS;QACX,OAAO,iBAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAkB;QAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,MAAM,YAAY,qBAAqB,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,MAAM,CAAC,CAAC;IAC7D,CAAC;CACJ;AAfD,sDAeC;AAED,MAAa,YAAa,SAAQ,qBAAqB;IAChC;IAAnB,YAAmB,MAAc;QAC7B,KAAK,EAAE,CAAA;QADQ,WAAM,GAAN,MAAM,CAAQ;IAEjC,CAAC;IACD,UAAU;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACJ;AAPD,oCAOC;AAED,MAAa,UAAW,SAAQ,qBAAqB;IAC9B;IAAsB;IAAzC,YAAmB,KAAa,EAAS,WAA2B,OAAO;QACvE,KAAK,EAAE,CAAC;QADO,UAAK,GAAL,KAAK,CAAQ;QAAS,aAAQ,GAAR,QAAQ,CAA0B;IAE3E,CAAC;IAED,UAAU;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;CACJ;AARD,gCAQC;AAED,MAAa,UAAW,SAAQ,qBAAqB;IACjD,IAAI,CAAS;IACb,YAAY,IAAY,EAAE,WAAW,GAAG,IAAI;QACxC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAA,eAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACN,OAAO,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACX,OAAO,IAAA,qBAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC3B,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAA,eAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;CAEJ;AAvCD,gCAuCC"}
@@ -0,0 +1,228 @@
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.TarMemoryPack = exports.MemoryEntry = exports.MemoryPack = exports.MEMORY_METADATA_ENTRY = void 0;
7
+ exports.loadMemoryPack = loadMemoryPack;
8
+ const micromatch_1 = __importDefault(require("micromatch"));
9
+ const path_1 = require("path");
10
+ const ContentSource_js_1 = require("./ContentSource.js");
11
+ const tar_js_1 = require("./utils/tar.js");
12
+ exports.MEMORY_METADATA_ENTRY = "metadata.json";
13
+ const EXPORT_CONTENT_KEY = '@content:';
14
+ const EXPORT_ENTRY_KEY = '@file:';
15
+ const EXPORT_PROPERTY_KEY = '@';
16
+ const mediaExtensions = new Set([".jpg", ".jpeg", ".png"]);
17
+ function applyProjection(projection, object) {
18
+ const keys = Object.keys(projection);
19
+ if (keys.length < 1) {
20
+ return object;
21
+ }
22
+ const isInclusion = !!projection[keys[0]];
23
+ const out = {};
24
+ if (isInclusion) {
25
+ for (const key of Object.keys(object)) {
26
+ if (projection[key]) {
27
+ out[key] = object[key];
28
+ }
29
+ }
30
+ }
31
+ else {
32
+ for (const key of Object.keys(object)) {
33
+ const value = projection[key];
34
+ if (value === undefined || value) {
35
+ out[key] = object[key];
36
+ }
37
+ }
38
+ }
39
+ return out;
40
+ }
41
+ class MemoryPack {
42
+ async exportObject(mapping) {
43
+ let metadata;
44
+ const result = {};
45
+ for (const key of Object.keys(mapping)) {
46
+ const value = mapping[key];
47
+ if (typeof value === 'string') {
48
+ if (value === '@') {
49
+ if (!metadata) {
50
+ metadata = await this.getMetadata();
51
+ }
52
+ if (key === '@') {
53
+ Object.assign(result, metadata);
54
+ }
55
+ else {
56
+ result[key] = metadata;
57
+ }
58
+ }
59
+ else if (value.startsWith(EXPORT_CONTENT_KEY)) {
60
+ const selector = value.slice(EXPORT_CONTENT_KEY.length);
61
+ const isMulti = selector.includes('*') || selector.includes(',');
62
+ if (isMulti) {
63
+ result[key] = await this.getEntriesText(selector.split(','));
64
+ }
65
+ else {
66
+ result[key] = await this.getEntryText(selector);
67
+ }
68
+ }
69
+ else if (value.startsWith(EXPORT_ENTRY_KEY)) {
70
+ const selector = value.slice(EXPORT_ENTRY_KEY.length);
71
+ const isMulti = selector.includes('*') || selector.includes(',');
72
+ if (isMulti) {
73
+ const entries = this.getEntries(selector.split(','));
74
+ result[key] = await Promise.all(entries.map(entry => entry.getText().then(content => ({ name: entry.name, content }))));
75
+ }
76
+ else {
77
+ const entry = this.getEntry(selector);
78
+ result[key] = entry ? { name: entry.name, content: await entry.getText() } : null;
79
+ }
80
+ }
81
+ else if (value.startsWith(EXPORT_PROPERTY_KEY)) {
82
+ if (!metadata) {
83
+ metadata = await this.getMetadata();
84
+ }
85
+ const accessor = value.substring(EXPORT_PROPERTY_KEY.length);
86
+ result[key] = resolveProperty(metadata, accessor);
87
+ }
88
+ else {
89
+ result[key] = value;
90
+ }
91
+ }
92
+ else {
93
+ result[key] = value;
94
+ }
95
+ }
96
+ return result;
97
+ }
98
+ }
99
+ exports.MemoryPack = MemoryPack;
100
+ class MemoryEntry extends ContentSource_js_1.AbstractContentSource {
101
+ index;
102
+ name;
103
+ offset;
104
+ size;
105
+ constructor(index, name, offset, size) {
106
+ super();
107
+ this.index = index;
108
+ this.name = name;
109
+ this.offset = offset;
110
+ this.size = size;
111
+ }
112
+ getContent() {
113
+ return this.index.getContentAt(this.offset, this.size);
114
+ }
115
+ getText(encoding = "utf-8") {
116
+ return this.getContent().then((b) => b.toString(encoding));
117
+ }
118
+ }
119
+ exports.MemoryEntry = MemoryEntry;
120
+ class TarMemoryPack extends MemoryPack {
121
+ file;
122
+ index;
123
+ constructor(file, index) {
124
+ super();
125
+ this.file = file;
126
+ this.index = index;
127
+ if (!index.get(exports.MEMORY_METADATA_ENTRY)) {
128
+ throw new Error("Invalid memory tar file. Context entry not found");
129
+ }
130
+ }
131
+ async getMetadata(projection) {
132
+ const content = await this.index.getContent(exports.MEMORY_METADATA_ENTRY);
133
+ if (content) {
134
+ let metadata = JSON.parse(content.toString('utf-8'));
135
+ if (projection) {
136
+ metadata = applyProjection(projection, metadata);
137
+ }
138
+ return metadata;
139
+ }
140
+ else {
141
+ throw new Error("Invalid memory tar file. Context entry not found");
142
+ }
143
+ }
144
+ getPaths(filters) {
145
+ let paths = this.index.getSortedPaths();
146
+ if (filters && filters.length > 0) {
147
+ paths = (0, micromatch_1.default)(paths, filters);
148
+ }
149
+ return paths;
150
+ }
151
+ getEntries(filters) {
152
+ return this._getEntries(this.getPaths(filters));
153
+ }
154
+ _getEntries(paths) {
155
+ const entries = [];
156
+ const index = this.index;
157
+ for (const path of paths) {
158
+ const entry = index.get(path);
159
+ entries.push(new MemoryEntry(index, path, entry.offset, entry.size));
160
+ }
161
+ return entries;
162
+ }
163
+ getEntriesContent(filters) {
164
+ const paths = this.getPaths(filters);
165
+ const promises = [];
166
+ for (const path of paths) {
167
+ promises.push(this.getEntryContent(path));
168
+ }
169
+ return Promise.all(promises);
170
+ }
171
+ getEntriesText(filters, encoding) {
172
+ const paths = this.getPaths(filters);
173
+ const promises = [];
174
+ for (const path of paths) {
175
+ promises.push(this.getEntryText(path, encoding));
176
+ }
177
+ return Promise.all(promises);
178
+ }
179
+ getEntry(path) {
180
+ const entry = this.index.get(path);
181
+ return entry ? new MemoryEntry(this.index, path, entry.offset, entry.size) : null;
182
+ }
183
+ getEntryContent(path) {
184
+ const entry = this.index.get(path);
185
+ if (!entry) {
186
+ return Promise.resolve(null);
187
+ }
188
+ else {
189
+ return this.index.getContentAt(entry.offset, entry.size);
190
+ }
191
+ }
192
+ getEntryText(path, encoding) {
193
+ return this.getEntryContent(path).then((b) => b?.toString(encoding || getTextEncodingForPath(path)) || null);
194
+ }
195
+ static async loadFile(file) {
196
+ const index = await (0, tar_js_1.loadTarIndex)(file);
197
+ if (!index) {
198
+ throw new Error("Invalid memory tar file. Cannot load index");
199
+ }
200
+ return new TarMemoryPack(file, index);
201
+ }
202
+ }
203
+ exports.TarMemoryPack = TarMemoryPack;
204
+ function loadMemoryPack(location) {
205
+ // TODO we only support file paths as location for now
206
+ return TarMemoryPack.loadFile(location);
207
+ }
208
+ function getTextEncodingForPath(path) {
209
+ const ext = (0, path_1.extname)(path);
210
+ return mediaExtensions.has(ext) ? "base64" : "utf-8";
211
+ }
212
+ function resolveProperty(obj, key) {
213
+ if (key.includes('.')) {
214
+ const keys = key.split('.');
215
+ let value = obj;
216
+ for (const k of keys) {
217
+ value = value[k];
218
+ if (value == undefined) {
219
+ return undefined;
220
+ }
221
+ }
222
+ return value;
223
+ }
224
+ else {
225
+ return obj[key];
226
+ }
227
+ }
228
+ //# sourceMappingURL=MemoryPack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPack.js","sourceRoot":"","sources":["../../src/MemoryPack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryPackBuilder = void 0;
4
+ const MemoryPack_js_1 = require("./MemoryPack.js");
5
+ const tar_js_1 = require("./utils/tar.js");
6
+ class MemoryPackBuilder {
7
+ builder;
8
+ baseMetadata = {};
9
+ entries = {};
10
+ constructor(builder) {
11
+ this.builder = builder;
12
+ }
13
+ async load(memory, options = {}) {
14
+ const files = options.files || [];
15
+ // do not fetch the context entry an the metadata.json file
16
+ files.push(`!${MemoryPack_js_1.MEMORY_METADATA_ENTRY}`);
17
+ const entries = memory.getEntries(files);
18
+ for (const entry of entries) {
19
+ this.add(entry.name, entry);
20
+ }
21
+ this.baseMetadata = await memory.getMetadata(options.projection);
22
+ }
23
+ add(path, content) {
24
+ path = (0, tar_js_1.normalizePath)(path);
25
+ this.entries[path] = content;
26
+ }
27
+ async build(file, metadata) {
28
+ metadata = { ...this.baseMetadata, ...metadata };
29
+ if (!file.endsWith('.tar')) {
30
+ file += '.tar';
31
+ }
32
+ if (this.builder.options.gzip) {
33
+ file += ".gz";
34
+ }
35
+ const tar = new tar_js_1.TarBuilder(file);
36
+ const keys = Object.keys(this.entries).sort();
37
+ for (const key of keys) {
38
+ const source = this.entries[key];
39
+ tar.add(key, await source.getContent());
40
+ }
41
+ tar.add(MemoryPack_js_1.MEMORY_METADATA_ENTRY, Buffer.from(JSON.stringify(metadata, undefined, this.builder.options.indent || undefined), "utf-8"));
42
+ await tar.build();
43
+ return file;
44
+ }
45
+ }
46
+ exports.MemoryPackBuilder = MemoryPackBuilder;
47
+ //# sourceMappingURL=MemoryPackBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPackBuilder.js","sourceRoot":"","sources":["../../src/MemoryPackBuilder.ts"],"names":[],"mappings":";;;AAEA,mDAA0F;AAC1F,2CAA2D;AAO3D,MAAa,iBAAiB;IAIP;IAHnB,YAAY,GAAwB,EAAE,CAAC;IACvC,OAAO,GAAsC,EAAE,CAAC;IAEhD,YAAmB,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IACnC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAkB,EAAE,UAAuB,EAAE;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAClC,2DAA2D;QAC3D,KAAK,CAAC,IAAI,CAAC,IAAI,qCAAqB,EAAE,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAED,GAAG,CAAC,IAAY,EAAE,OAAsB;QACpC,IAAI,GAAG,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,QAAgB;QACtC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,MAAM,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,IAAI,KAAK,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,mBAAU,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,qCAAqB,EAAE,MAAM,CAAC,IAAI,CACtC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,EAC7E,OAAO,CAAC,CACX,CAAC;QACF,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AA5CD,8CA4CC"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.copy = copy;
4
+ const ContentObject_js_1 = require("../ContentObject.js");
5
+ const ContentSource_js_1 = require("../ContentSource.js");
6
+ const rewrite_js_1 = require("../utils/rewrite.js");
7
+ function rewritePath(source, index, mapper) {
8
+ const path = source instanceof ContentSource_js_1.FileSource ? source.file : '';
9
+ return mapper(path, index);
10
+ }
11
+ function copy(builder, source, toPath, options = {}) {
12
+ const resolved = ContentSource_js_1.AbstractContentSource.resolve(source);
13
+ const mapperFn = (0, rewrite_js_1.createPathRewrite)(toPath);
14
+ if (Array.isArray(resolved)) {
15
+ for (let i = 0, l = resolved.length; i < l; i++) {
16
+ const cs = resolved[i];
17
+ copyOne(builder, cs, rewritePath(cs, i, mapperFn), options);
18
+ }
19
+ }
20
+ else {
21
+ return copyOne(builder, resolved, rewritePath(resolved, 0, mapperFn), options);
22
+ }
23
+ }
24
+ function copyOne(builder, source, toPath, options) {
25
+ if (options.media) {
26
+ new ContentObject_js_1.MediaObject(builder, source, options.media).copyTo(toPath);
27
+ }
28
+ else if (options.extractText) {
29
+ let type = options.extractText;
30
+ if (typeof type === "boolean") {
31
+ if (source instanceof ContentSource_js_1.FileSource) {
32
+ type = source.extname ? source.extname.slice(1) : source.extname;
33
+ }
34
+ else {
35
+ throw new Error("source type for extractText must be specified");
36
+ }
37
+ }
38
+ switch (type) {
39
+ case "pdf":
40
+ new ContentObject_js_1.PdfObject(builder, source).copyTo(toPath);
41
+ break;
42
+ case "docx":
43
+ new ContentObject_js_1.DocxObject(builder, source).copyTo(toPath);
44
+ break;
45
+ default:
46
+ throw new Error("Unsupported extractText type: " + type);
47
+ }
48
+ }
49
+ else {
50
+ builder.addEntry(toPath, source);
51
+ }
52
+ }
53
+ //# sourceMappingURL=copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/commands/copy.ts"],"names":[],"mappings":";;AAcA,oBAWC;AAxBD,0DAAuF;AACvF,0DAAmG;AACnG,oDAAsE;AAEtE,SAAS,WAAW,CAAC,MAAqB,EAAE,KAAa,EAAE,MAAoB;IAC3E,MAAM,IAAI,GAAG,MAAM,YAAY,6BAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAMD,SAAgB,IAAI,CAAC,OAAgB,EAAE,MAAkB,EAAE,MAAc,EAAE,UAAuB,EAAE;IAChG,MAAM,QAAQ,GAAG,wCAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAA,8BAAiB,EAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;AACL,CAAC;AAED,SAAS,OAAO,CAAC,OAAgB,EAAE,MAAqB,EAAE,MAAc,EAAE,OAAoB;IAC1F,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,8BAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,MAAM,YAAY,6BAAU,EAAE,CAAC;gBAC/B,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACrE,CAAC;QACL,CAAC;QACD,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,KAAK;gBACN,IAAI,4BAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACV,KAAK,MAAM;gBACP,IAAI,6BAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;AACL,CAAC"}
@@ -0,0 +1,82 @@
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.exec = exec;
7
+ exports.executePipe = executePipe;
8
+ const child_process_1 = require("child_process");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const cmdline_js_1 = require("../utils/cmdline.js");
11
+ const stream_js_1 = require("../utils/stream.js");
12
+ async function exec(commandLine, options = {}) {
13
+ const verbose = !options.quiet;
14
+ commandLine = commandLine.trim();
15
+ const { commands, out } = (0, cmdline_js_1.splitPipeCommands)(commandLine);
16
+ if (!commands.length) {
17
+ throw new Error('Invalid command line. No command: ' + commandLine);
18
+ }
19
+ let outStream;
20
+ if (out) {
21
+ outStream = fs_1.default.createWriteStream(out, { flags: 'w' });
22
+ }
23
+ else {
24
+ outStream = new stream_js_1.BufferWritableStream();
25
+ }
26
+ const pipePromise = executePipe(commands, outStream, verbose);
27
+ const outPromise = new Promise((resolve, reject) => {
28
+ outStream.on('finish', () => {
29
+ resolve(undefined);
30
+ });
31
+ outStream.on('error', (err) => {
32
+ reject(err);
33
+ outStream.destroy();
34
+ });
35
+ });
36
+ const [status] = await Promise.all([pipePromise, outPromise]);
37
+ if (verbose) {
38
+ if (!status) {
39
+ console.log(`Command: ${commandLine} exited with status ${status}`);
40
+ }
41
+ else {
42
+ console.error(`Command: ${commandLine} exited with status ${status}`);
43
+ }
44
+ }
45
+ if (outStream instanceof stream_js_1.BufferWritableStream) {
46
+ return outStream.getText();
47
+ }
48
+ else {
49
+ return undefined;
50
+ }
51
+ }
52
+ function executePipe(commands, finalOutput, verbose = false) {
53
+ return new Promise((resolve, reject) => {
54
+ let input;
55
+ let child;
56
+ for (const cmd of commands) {
57
+ verbose && console.log(`Running: ${cmd.name} ${cmd.args?.join(' ')}`);
58
+ child = (0, child_process_1.spawn)(cmd.name, cmd.args, {
59
+ // in, out, err
60
+ stdio: ['pipe', 'pipe', 'inherit'],
61
+ });
62
+ if (input) {
63
+ input.pipe(child.stdin);
64
+ }
65
+ input = child.stdout;
66
+ child.on("error", (err) => {
67
+ console.error(`Failed to run ${cmd.name}`, err);
68
+ reject(err);
69
+ });
70
+ }
71
+ if (child) {
72
+ child.on("exit", (code, signal) => {
73
+ resolve(code !== null ? code : signal);
74
+ });
75
+ finalOutput && child.stdout?.pipe(finalOutput);
76
+ }
77
+ else {
78
+ reject(new Error("no child spawned"));
79
+ }
80
+ });
81
+ }
82
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/commands/exec.ts"],"names":[],"mappings":"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"}