@hxccoder/context-packer 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,8 @@ const node_fs_1 = require("node:fs");
5
5
  const promises_1 = require("node:fs/promises");
6
6
  const node_path_1 = require("node:path");
7
7
  const node_stream_1 = require("node:stream");
8
+ const xmlEscape_1 = require("../utils/xmlEscape");
9
+ const directoryTreeBuilder_1 = require("./directoryTreeBuilder");
8
10
  class ContextCompiler {
9
11
  scanner;
10
12
  fileManager;
@@ -27,7 +29,9 @@ class ContextCompiler {
27
29
  const outputStream = this.fileManager.createTempStream(token.getSignal());
28
30
  this.writer.initialize(outputStream);
29
31
  try {
30
- await this.writer.writeHeader('/* Estructura del repositorio mapeada secuencialmente */\n');
32
+ const treeBuilder = new directoryTreeBuilder_1.DirectoryTreeBuilder(this.rootDir, this.scanner.getIgnoreFilter());
33
+ const tree = await treeBuilder.build();
34
+ await this.writer.writeHeader(tree);
31
35
  for await (const absolutePath of this.scanner.scan(token)) {
32
36
  token.throwIfCancelled();
33
37
  const relativePath = (0, node_path_1.relative)(this.rootDir, absolutePath);
@@ -45,10 +49,7 @@ class ContextCompiler {
45
49
  transform(chunk, encoding, callback) {
46
50
  try {
47
51
  totalTokensCounted += currentTokenizer.countTokensExact(chunk);
48
- const sanitizedChunk = chunk
49
- .replace(/&/g, '&')
50
- .replace(/</g, '&lt;')
51
- .replace(/>/g, '&gt;');
52
+ const sanitizedChunk = (0, xmlEscape_1.escapeXml)(chunk);
52
53
  callback(null, sanitizedChunk);
53
54
  }
54
55
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/core/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/core/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DirectoryTreeBuilder = void 0;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_path_1 = require("node:path");
6
+ class DirectoryTreeBuilder {
7
+ rootDir;
8
+ ignoreFilter;
9
+ constructor(rootDir, ignoreFilter) {
10
+ this.rootDir = rootDir;
11
+ this.ignoreFilter = ignoreFilter;
12
+ }
13
+ async build() {
14
+ const lines = [];
15
+ await this.walk(this.rootDir, '', lines);
16
+ return lines.join('\n');
17
+ }
18
+ async walk(currentDir, prefix, lines) {
19
+ const dir = await (0, promises_1.opendir)(currentDir);
20
+ const entries = [];
21
+ for await (const entry of dir) {
22
+ entries.push(entry);
23
+ }
24
+ entries.sort((a, b) => a.name.localeCompare(b.name));
25
+ for (let i = 0; i < entries.length; i++) {
26
+ const entry = entries[i];
27
+ const fullPath = (0, node_path_1.join)(currentDir, entry.name);
28
+ const relativePath = fullPath
29
+ .replace(this.rootDir, '')
30
+ .replace(/^[/\\]/, '');
31
+ if (this.ignoreFilter.ignores(relativePath)) {
32
+ continue;
33
+ }
34
+ const isLast = i === entries.length - 1;
35
+ const connector = isLast
36
+ ? '└── '
37
+ : '├── ';
38
+ lines.push(prefix + connector + entry.name);
39
+ if (entry.isDirectory()) {
40
+ const nextPrefix = isLast
41
+ ? prefix + ' '
42
+ : prefix + '│ ';
43
+ await this.walk(fullPath, nextPrefix, lines);
44
+ }
45
+ }
46
+ }
47
+ }
48
+ exports.DirectoryTreeBuilder = DirectoryTreeBuilder;
49
+ //# sourceMappingURL=directoryTreeBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directoryTreeBuilder.js","sourceRoot":"","sources":["../../src/core/directoryTreeBuilder.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAE3C,yCAAiC;AAGjC,MAAa,oBAAoB;IAER;IACA;IAFrB,YACqB,OAAe,EACf,YAAoB;QADpB,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAQ;IACtC,CAAC;IAEG,KAAK,CAAC,KAAK;QACd,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAEzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,IAAI,CACd,UAAkB,EAClB,MAAc,EACd,KAAe;QAEf,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAO,EAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YAE1B,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,YAAY,GAAG,QAAQ;iBACxB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;iBACzB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAE3B,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,SAAS;YACb,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAExC,MAAM,SAAS,GAAG,MAAM;gBACpB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAC;YAEb,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAG,MAAM;oBACrB,CAAC,CAAC,MAAM,GAAG,MAAM;oBACjB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;gBAEtB,MAAM,IAAI,CAAC,IAAI,CACX,QAAQ,EACR,UAAU,EACV,KAAK,CACR,CAAC;YACN,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AA/DD,oDA+DC"}
@@ -6,6 +6,9 @@ const node_path_1 = require("node:path");
6
6
  class RepoScanner {
7
7
  rootDir;
8
8
  ignoreFilter;
9
+ getIgnoreFilter() {
10
+ return this.ignoreFilter;
11
+ }
9
12
  constructor(rootDir, ignoreFilter) {
10
13
  this.rootDir = rootDir;
11
14
  this.ignoreFilter = ignoreFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,yCAA2C;AAI3C,MAAa,WAAW;IACH,OAAO,CAAS;IAChB,YAAY,CAAS;IAE1C,YAAY,OAAe,EAAE,YAAoB;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAMQ,KAAK,CAAC,CAAC,IAAI,CAAC,KAAwB;QACzC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAKS,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAkB,EAAE,KAAwB;QAElE,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAGzB,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAO,EAAC,UAAU,CAAC,CAAC;QAItC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YAE5B,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAEzB,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAG9C,MAAM,YAAY,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAGtD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACjB,CAAC;YAEO,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAE9B,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC;YACnB,CAAC;QACD,CAAC;IACL,CAAC;CACA;AAnDD,kCAmDC"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/core/scanner.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,yCAA2C;AAI3C,MAAa,WAAW;IACH,OAAO,CAAS;IAChB,YAAY,CAAS;IAE/B,eAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IACD,YAAY,OAAe,EAAE,YAAoB;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAMQ,KAAK,CAAC,CAAC,IAAI,CAAC,KAAwB;QACzC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAKS,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAkB,EAAE,KAAwB;QAElE,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAGzB,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAO,EAAC,UAAU,CAAC,CAAC;QAItC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YAE5B,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAEzB,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAG9C,MAAM,YAAY,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAGtD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACjB,CAAC;YAEO,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAE9B,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5B,MAAM,QAAQ,CAAC;YACnB,CAAC;QACD,CAAC;IACL,CAAC;CACA;AAtDD,kCAsDC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HeuristicTokenizerStrategy = void 0;
4
+ const node_buffer_1 = require("node:buffer");
4
5
  class HeuristicTokenizerStrategy {
5
6
  modelName;
6
7
  contextLimit;
@@ -23,7 +24,8 @@ class HeuristicTokenizerStrategy {
23
24
  return Math.ceil(bytes / this.bytesPerToken);
24
25
  }
25
26
  countTokensExact(text) {
26
- return Math.ceil(text.length / this.bytesPerToken);
27
+ const bytes = node_buffer_1.Buffer.byteLength(text, 'utf8');
28
+ return Math.ceil(bytes / this.bytesPerToken);
27
29
  }
28
30
  destroy() {
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HeuristicTokenizerStrategy.js","sourceRoot":"","sources":["../../src/strategies/HeuristicTokenizerStrategy.ts"],"names":[],"mappings":";;;AAEA,MAAa,0BAA0B;IAClB,SAAS,CAAS;IAClB,YAAY,CAAS;IACrB,aAAa,CAAS;IAK3C,YACI,YAAoB,gBAAgB,EACpC,eAAuB,MAAM,EAC7B,gBAAwB,GAAG;QAE3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QAEZ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB,CAAC,IAAY;QAGzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;IAEH,CAAC;CACJ;AA5CD,gEA4CC"}
1
+ {"version":3,"file":"HeuristicTokenizerStrategy.js","sourceRoot":"","sources":["../../src/strategies/HeuristicTokenizerStrategy.ts"],"names":[],"mappings":";;;AACA,6CAAqC;AAErC,MAAa,0BAA0B;IAClB,SAAS,CAAS;IAClB,YAAY,CAAS;IACrB,aAAa,CAAS;IAK3C,YACI,YAAoB,gBAAgB,EACpC,eAAuB,MAAM,EAC7B,gBAAwB,GAAG;QAE3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,UAAU;QAEZ,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,MAAM,KAAK,GAAG,oBAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;IAEH,CAAC;CACJ;AA3CD,gEA2CC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XmlWriter = void 0;
4
4
  const promises_1 = require("node:stream/promises");
5
+ const xmlEscape_1 = require("../utils/xmlEscape");
5
6
  class XmlWriter {
6
7
  outputStream;
7
8
  initialize(outputStream) {
@@ -16,13 +17,24 @@ class XmlWriter {
16
17
  }
17
18
  async writeFileBlock(filePath, transformedStream) {
18
19
  this.ensureInitialized();
19
- this.outputStream.write(`<file path="${filePath}">\n`);
20
+ const safePath = (0, xmlEscape_1.escapeXml)(filePath);
21
+ this.outputStream.write(`<file path="${safePath}">\n`);
20
22
  await (0, promises_1.pipeline)(transformedStream, this.outputStream, { end: false });
21
23
  this.outputStream.write('\n</file>\n\n');
22
24
  }
23
25
  async finalize() {
24
26
  this.ensureInitialized();
25
27
  this.outputStream.write('</repository>\n');
28
+ await new Promise((resolve, reject) => {
29
+ this.outputStream.end((error) => {
30
+ if (error) {
31
+ reject(error);
32
+ }
33
+ else {
34
+ resolve();
35
+ }
36
+ });
37
+ });
26
38
  }
27
39
  ensureInitialized() {
28
40
  if (!this.outputStream) {
@@ -1 +1 @@
1
- {"version":3,"file":"XmlWriter.js","sourceRoot":"","sources":["../../src/strategies/XmlWriter.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAGhD,MAAa,SAAS;IACd,YAAY,CAAY;IAEhC,UAAU,CAAC,YAAsB;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAG5C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,iBAA2B;QAC9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,QAAQ,MAAM,CAAC,CAAC;QAQvD,MAAM,IAAA,mBAAQ,EAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAGrE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;IAKO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAChH,CAAC;IACL,CAAC;CACA;AApDD,8BAoDC"}
1
+ {"version":3,"file":"XmlWriter.js","sourceRoot":"","sources":["../../src/strategies/XmlWriter.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAEhD,kDAA+C;AAE/C,MAAa,SAAS;IACd,YAAY,CAAY;IAEhC,UAAU,CAAC,YAAsB;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAG5C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,iBAA2B;QAC9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAGzB,MAAM,QAAQ,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,YAAY,CAAC,KAAK,CACnB,eAAe,QAAQ,MAAM,CAChC,CAAC;QAQE,MAAM,IAAA,mBAAQ,EAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAGrE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE3C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAoB,EAAE,EAAE;gBAC3C,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAE,CAAC;gBACd,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IAEH,CAAC;IAKO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAChH,CAAC;IACL,CAAC;CACA;AAlED,8BAkEC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeXml = escapeXml;
4
+ function escapeXml(text) {
5
+ return text
6
+ .replace(/&/g, '&amp;')
7
+ .replace(/</g, '&lt;')
8
+ .replace(/>/g, '&gt;')
9
+ .replace(/"/g, '&quot;')
10
+ .replace(/'/g, '&apos;');
11
+ }
12
+ //# sourceMappingURL=xmlEscape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xmlEscape.js","sourceRoot":"","sources":["../../src/utils/xmlEscape.ts"],"names":[],"mappings":";;AAAA,8BAOC;AAPD,SAAgB,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI;SACN,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hxccoder/context-packer",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI avanzado para empaquetar repositorios de código para LLMs",
5
5
  "main": "dist/core/compiler.js",
6
6
  "bin": {
@@ -40,4 +40,4 @@
40
40
  "@types/node": "^20.19.43",
41
41
  "typescript": "^5.4.0"
42
42
  }
43
- }
43
+ }