@t4h.framework/fs 0.13.1 → 0.14.2

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 (78) hide show
  1. package/.ai/skills/framework-fs/SKILL.md +87 -186
  2. package/.ai/skills/framework-fs-split/SKILL.md +134 -306
  3. package/.ai/skills/framework-fs-write/SKILL.md +54 -212
  4. package/CHANGELOG.md +37 -0
  5. package/README.md +29 -345
  6. package/dist/activities/FileJoinActivity.d.ts +1 -2
  7. package/dist/activities/FileJoinActivity.d.ts.map +1 -1
  8. package/dist/activities/FileJoinActivity.js +38 -43
  9. package/dist/activities/FileJoinActivity.js.map +1 -1
  10. package/dist/activities/FileReadActivity.d.ts.map +1 -1
  11. package/dist/activities/FileReadActivity.js +18 -15
  12. package/dist/activities/FileReadActivity.js.map +1 -1
  13. package/dist/activities/FileSplitActivity.d.ts +21 -34
  14. package/dist/activities/FileSplitActivity.d.ts.map +1 -1
  15. package/dist/activities/FileSplitActivity.js +23 -38
  16. package/dist/activities/FileSplitActivity.js.map +1 -1
  17. package/dist/constants/operations.d.ts.map +1 -1
  18. package/dist/constants/operations.js +3 -14
  19. package/dist/constants/operations.js.map +1 -1
  20. package/dist/fs.d.ts +5 -1
  21. package/dist/fs.d.ts.map +1 -1
  22. package/dist/helpers/CSV.d.ts +2 -2
  23. package/dist/helpers/CSV.d.ts.map +1 -1
  24. package/dist/helpers/CSV.js +20 -24
  25. package/dist/helpers/CSV.js.map +1 -1
  26. package/dist/helpers/group-by-key.d.ts +8 -0
  27. package/dist/helpers/group-by-key.d.ts.map +1 -0
  28. package/dist/helpers/group-by-key.js +35 -0
  29. package/dist/helpers/group-by-key.js.map +1 -0
  30. package/dist/helpers/group-records.d.ts +2 -2
  31. package/dist/helpers/group-records.d.ts.map +1 -1
  32. package/dist/helpers/group-records.js +3 -3
  33. package/dist/helpers/group-records.js.map +1 -1
  34. package/dist/helpers/in-chunks.d.ts +5 -0
  35. package/dist/helpers/in-chunks.d.ts.map +1 -0
  36. package/dist/helpers/in-chunks.js +17 -0
  37. package/dist/helpers/in-chunks.js.map +1 -0
  38. package/dist/helpers/split-records.d.ts +4 -3
  39. package/dist/helpers/split-records.d.ts.map +1 -1
  40. package/dist/helpers/split-records.js +60 -41
  41. package/dist/helpers/split-records.js.map +1 -1
  42. package/dist/helpers/where-matcher.d.ts +21 -0
  43. package/dist/helpers/where-matcher.d.ts.map +1 -0
  44. package/dist/helpers/where-matcher.js +11 -0
  45. package/dist/helpers/where-matcher.js.map +1 -0
  46. package/dist/models/BinaryRecordKey.d.ts +27 -0
  47. package/dist/models/BinaryRecordKey.d.ts.map +1 -0
  48. package/dist/models/BinaryRecordKey.js +52 -0
  49. package/dist/models/BinaryRecordKey.js.map +1 -0
  50. package/dist/models/BinarySource.d.ts +45 -0
  51. package/dist/models/BinarySource.d.ts.map +1 -0
  52. package/dist/models/BinarySource.js +58 -0
  53. package/dist/models/BinarySource.js.map +1 -0
  54. package/dist/models/BinarySplit.d.ts +45 -0
  55. package/dist/models/BinarySplit.d.ts.map +1 -0
  56. package/dist/models/BinarySplit.js +81 -0
  57. package/dist/models/BinarySplit.js.map +1 -0
  58. package/dist/models/BinarySplitInput.d.ts +21 -0
  59. package/dist/models/BinarySplitInput.d.ts.map +1 -0
  60. package/dist/models/BinarySplitInput.js +85 -0
  61. package/dist/models/BinarySplitInput.js.map +1 -0
  62. package/dist/models/Database.d.ts +15 -0
  63. package/dist/models/Database.d.ts.map +1 -0
  64. package/dist/models/Database.js +57 -0
  65. package/dist/models/Database.js.map +1 -0
  66. package/dist/models/OpenKeyGroup.d.ts +23 -0
  67. package/dist/models/OpenKeyGroup.d.ts.map +1 -0
  68. package/dist/models/OpenKeyGroup.js +42 -0
  69. package/dist/models/OpenKeyGroup.js.map +1 -0
  70. package/dist/models/SplitDatabaseWorker.d.ts +12 -0
  71. package/dist/models/SplitDatabaseWorker.d.ts.map +1 -0
  72. package/dist/models/SplitDatabaseWorker.js +65 -0
  73. package/dist/models/SplitDatabaseWorker.js.map +1 -0
  74. package/dist/workers/split-database.d.ts +10 -0
  75. package/dist/workers/split-database.d.ts.map +1 -0
  76. package/dist/workers/split-database.js +43 -0
  77. package/dist/workers/split-database.js.map +1 -0
  78. package/package.json +3 -3
@@ -11,6 +11,10 @@ export function toDelimiter({ value, keep }, encoding) {
11
11
  throw new TypeError('Split delimiter keep sizes must not exceed the delimiter length');
12
12
  return { bytes, keepPrevious, keepNext };
13
13
  }
14
+ export function toJoint(delimiter, encoding) {
15
+ const { bytes, keepPrevious, keepNext } = toDelimiter(delimiter, encoding);
16
+ return bytes.subarray(keepPrevious, bytes.length - keepNext);
17
+ }
14
18
  export function sliceTooLarge(start, sizeInBytes) {
15
19
  return new RangeError(`Split slice starting at byte ${String(start)} is larger than ${String(MAX_SLICE_BYTES)} bytes (${String(sizeInBytes)} so far): lower every or check the delimiter`);
16
20
  }
@@ -26,63 +30,78 @@ export function splitRecords(source, { delimiter, trim, encoding = 'utf8' }) {
26
30
  return records(skipLast(skipFirst(source, trimStart), trimEnd), cut, trimStart);
27
31
  }
28
32
  async function* records(source, { bytes, keepPrevious, keepNext }, offset) {
29
- let pieces = [];
30
- let start = offset;
33
+ const queue = new ByteQueue(offset);
31
34
  let consumed = offset;
32
35
  let searchAt = offset;
33
36
  let tail = Buffer.alloc(0);
34
- const take = (end) => {
35
- const taken = [];
36
- let remaining = end - start;
37
- while (remaining > 0) {
38
- const piece = pieces[0];
39
- if (piece === undefined)
40
- throw new RangeError('Split ran out of buffered bytes to take');
41
- if (piece.length <= remaining) {
42
- taken.push(piece);
43
- pieces.shift();
44
- remaining -= piece.length;
45
- continue;
46
- }
47
- taken.push(piece.subarray(0, remaining));
48
- pieces[0] = piece.subarray(remaining);
49
- remaining = 0;
50
- }
51
- start = end;
52
- return taken;
53
- };
54
37
  for await (const chunk of source) {
55
38
  if (chunk.length === 0)
56
39
  continue;
57
40
  const chunkAt = consumed;
58
- pieces.push(chunk);
41
+ queue.push(chunk);
59
42
  consumed += chunk.length;
60
- const matches = [];
61
- const straddling = straddlingMatch(tail, chunk, chunkAt, bytes, searchAt);
62
- if (straddling !== -1) {
63
- matches.push(straddling);
64
- searchAt = straddling + bytes.length;
65
- }
66
- let index;
67
- while ((index = chunk.indexOf(bytes, Math.max(0, searchAt - chunkAt))) !== -1) {
68
- matches.push(chunkAt + index);
69
- searchAt = chunkAt + index + bytes.length;
70
- }
43
+ const matches = findMatches(tail, chunk, chunkAt, bytes, searchAt);
71
44
  for (const at of matches) {
72
- const record = { start, pieces: take(at + keepPrevious) };
73
- take(at + bytes.length - keepNext);
74
- yield record;
45
+ const start = queue.start;
46
+ const pieces = queue.take(at + keepPrevious);
47
+ queue.take(at + bytes.length - keepNext);
48
+ searchAt = at + bytes.length;
49
+ yield { start, pieces };
75
50
  }
76
- if (consumed - start > MAX_SLICE_BYTES)
77
- throw sliceTooLarge(start, consumed - start);
51
+ if (consumed - queue.start > MAX_SLICE_BYTES)
52
+ throw sliceTooLarge(queue.start, consumed - queue.start);
78
53
  tail =
79
54
  chunk.length >= bytes.length - 1
80
55
  ? Buffer.from(chunk.subarray(chunk.length - (bytes.length - 1)))
81
56
  : Buffer.concat([tail, chunk]).subarray(-(bytes.length - 1));
82
57
  }
83
- const last = { start, pieces };
58
+ yield queue.rest();
59
+ }
60
+ class ByteQueue {
61
+ start;
84
62
  pieces = [];
85
- yield last;
63
+ constructor(start) {
64
+ this.start = start;
65
+ }
66
+ push(chunk) {
67
+ this.pieces.push(chunk);
68
+ }
69
+ take(end) {
70
+ const taken = [];
71
+ let remaining = end - this.start;
72
+ while (remaining > 0) {
73
+ const piece = this.pieces.shift();
74
+ if (piece === undefined)
75
+ throw new RangeError('Split ran out of buffered bytes to take');
76
+ if (piece.length > remaining) {
77
+ taken.push(piece.subarray(0, remaining));
78
+ this.pieces.unshift(piece.subarray(remaining));
79
+ break;
80
+ }
81
+ taken.push(piece);
82
+ remaining -= piece.length;
83
+ }
84
+ this.start = end;
85
+ return taken;
86
+ }
87
+ rest() {
88
+ return { start: this.start, pieces: this.pieces };
89
+ }
90
+ }
91
+ function findMatches(tail, chunk, chunkAt, bytes, searchAt) {
92
+ const matches = [];
93
+ const straddling = straddlingMatch(tail, chunk, chunkAt, bytes, searchAt);
94
+ let from = searchAt;
95
+ if (straddling !== -1) {
96
+ matches.push(straddling);
97
+ from = straddling + bytes.length;
98
+ }
99
+ let index = chunk.indexOf(bytes, Math.max(0, from - chunkAt));
100
+ while (index !== -1) {
101
+ matches.push(chunkAt + index);
102
+ index = chunk.indexOf(bytes, index + bytes.length);
103
+ }
104
+ return matches;
86
105
  }
87
106
  async function* skipFirst(source, count) {
88
107
  let remaining = count;
@@ -1 +1 @@
1
- {"version":3,"file":"split-records.js","sourceRoot":"","sources":["../../src/helpers/split-records.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAQ9C,MAAM,UAAU,WAAW,CACzB,EAAE,KAAK,EAAE,IAAI,EAAsB,EACnC,QAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,IAAI,CAAC,CAAA;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAA;IAE1D,IAAI,YAAY,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IAExE,IAAI,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM;QACxC,MAAM,IAAI,SAAS,CACjB,iEAAiE,CAClE,CAAA;IAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,WAAmB;IAC9D,OAAO,IAAI,UAAU,CACnB,gCAAgC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,eAAe,CAAC,WAAW,MAAM,CAAC,WAAW,CAAC,8CAA8C,CACpK,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA6B,EAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAuB;IAE3D,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAA;IAE9B,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QAEX,MAAM,IAAI,SAAS,CAAC,gDAAgD,CAAC,CAAA;IAEvE,OAAO,OAAO,CACZ,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,EAC/C,GAAG,EACH,SAAS,CACV,CAAA;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,OAAO,CACrB,MAA6B,EAC7B,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAiB,EAChD,MAAc;IAEd,IAAI,MAAM,GAAa,EAAE,CAAA;IACzB,IAAI,KAAK,GAAG,MAAM,CAAA;IAClB,IAAI,QAAQ,GAAG,MAAM,CAAA;IACrB,IAAI,QAAQ,GAAG,MAAM,CAAA;IACrB,IAAI,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAElC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,IAAI,SAAS,GAAG,GAAG,GAAG,KAAK,CAAA;QAE3B,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEvB,IAAI,KAAK,KAAK,SAAS;gBACrB,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAA;YAEjE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAEjB,MAAM,CAAC,KAAK,EAAE,CAAA;gBAEd,SAAS,IAAI,KAAK,CAAC,MAAM,CAAA;gBAEzB,SAAQ;YACV,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;YAExC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YAErC,SAAS,GAAG,CAAC,CAAA;QACf,CAAC;QAED,KAAK,GAAG,GAAG,CAAA;QAEX,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAEhC,MAAM,OAAO,GAAG,QAAQ,CAAA;QAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAElB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAA;QAExB,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEzE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAExB,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAA;QACtC,CAAC;QAED,IAAI,KAAa,CAAA;QAEjB,OACE,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACtE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA;YAE7B,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3C,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAA;YAEzD,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAA;YAElC,MAAM,MAAM,CAAA;QACd,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,GAAG,eAAe;YACpC,MAAM,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAA;QAE9C,IAAI;YACF,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAE9B,MAAM,GAAG,EAAE,CAAA;IAEX,MAAM,IAAI,CAAA;AACZ,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,SAAS,CAAC,MAA6B,EAAE,KAAa;IACpE,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC9B,SAAS,IAAI,KAAK,CAAC,MAAM,CAAA;YAEzB,SAAQ;QACV,CAAC;QAED,MAAM,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAE/B,SAAS,GAAG,CAAC,CAAA;IACf,CAAC;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,QAAQ,CAAC,MAA6B,EAAE,KAAa;IACnE,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,CAAC,MAAM,CAAA;QAEb,OAAM;IACR,CAAC;IAED,IAAI,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;QAE9C,IAAI,GAAG,GAAG,CAAC;YAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAE1C,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,KAAa,EACb,OAAe,EACf,KAAa,EACb,QAAgB;IAEhB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAA;IAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAA;IAEnE,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,KAAK,IAAI,OAAO;QAAE,OAAO,CAAC,CAAC,CAAA;IAEzD,OAAO,OAAO,GAAG,KAAK,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"split-records.js","sourceRoot":"","sources":["../../src/helpers/split-records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ type BinaryWhereOperators = {
2
+ $eq?: string;
3
+ $ne?: string;
4
+ $lt?: string;
5
+ $lte?: string;
6
+ $gt?: string;
7
+ $gte?: string;
8
+ $in?: string[];
9
+ $nin?: string[];
10
+ $regex?: string;
11
+ $options?: string;
12
+ $not?: BinaryWhere;
13
+ };
14
+ export type BinaryWhere = string | (BinaryWhereOperators & {
15
+ $and?: BinaryWhere[];
16
+ $or?: BinaryWhere[];
17
+ $nor?: BinaryWhere[];
18
+ });
19
+ export declare function createWhereMatcher(where: BinaryWhere): (item: unknown, key?: import("sift/lib/utils.js").Key, owner?: any) => boolean;
20
+ export {};
21
+ //# sourceMappingURL=where-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-matcher.d.ts","sourceRoot":"","sources":["../../src/helpers/where-matcher.ts"],"names":[],"mappings":"AAQA,KAAK,oBAAoB,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,CAAC,oBAAoB,GAAG;IACtB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAA;IACpB,GAAG,CAAC,EAAE,WAAW,EAAE,CAAA;IACnB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAA;CACrB,CAAC,CAAA;AAEN,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,kFAWpD"}
@@ -0,0 +1,11 @@
1
+ import { WorkflowBatchQuery } from '@t4h.framework/core';
2
+ import sift from 'sift';
3
+ import { STRING_OPERATIONS } from '../constants/operations.js';
4
+ const { createQueryTester } = sift;
5
+ export function createWhereMatcher(where) {
6
+ WorkflowBatchQuery.assertSerializable(where, 'where', 'Split where', STRING_OPERATIONS);
7
+ return createQueryTester(where, {
8
+ operations: STRING_OPERATIONS,
9
+ });
10
+ }
11
+ //# sourceMappingURL=where-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-matcher.js","sourceRoot":"","sources":["../../src/helpers/where-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAA;AAwBlC,MAAM,UAAU,kBAAkB,CAAC,KAAkB;IACnD,kBAAkB,CAAC,kBAAkB,CACnC,KAAK,EACL,OAAO,EACP,aAAa,EACb,iBAAiB,CAClB,CAAA;IAED,OAAO,iBAAiB,CAAC,KAAsB,EAAE;QAC/C,UAAU,EAAE,iBAAiB;KAC9B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type BinaryReplace = {
2
+ pattern: string;
3
+ flags?: string;
4
+ with?: string;
5
+ };
6
+ export type BinaryRecordKeyOptions = {
7
+ match: RegExp;
8
+ replace?: BinaryReplace[];
9
+ };
10
+ export type BinaryRecordKeyJSON = {
11
+ match: string;
12
+ flags?: string;
13
+ replace?: BinaryReplace[];
14
+ };
15
+ export declare class BinaryRecordKey {
16
+ private readonly match;
17
+ private readonly flags;
18
+ private readonly replace;
19
+ private readonly matcher;
20
+ private readonly steps;
21
+ private constructor();
22
+ static from(key: BinaryRecordKeyOptions | BinaryRecordKeyJSON): BinaryRecordKey;
23
+ get captureGroups(): number;
24
+ toJSON(): BinaryRecordKeyJSON;
25
+ read(text: string): string | undefined;
26
+ }
27
+ //# sourceMappingURL=BinaryRecordKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryRecordKey.d.ts","sourceRoot":"","sources":["../../src/models/BinaryRecordKey.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;CAC1B,CAAA;AAcD,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,OAAO;WAeO,IAAI,CAChB,GAAG,EAAE,sBAAsB,GAAG,mBAAmB,GAChD,eAAe;IAalB,IAAW,aAAa,WAKvB;IAEM,MAAM,IAAI,mBAAmB;IAI7B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAkB9C"}
@@ -0,0 +1,52 @@
1
+ const STATEFUL_FLAGS = /[gy]/;
2
+ function compile(pattern, flags, label) {
3
+ try {
4
+ return new RegExp(pattern, flags);
5
+ }
6
+ catch (error) {
7
+ throw new TypeError(`${label} "${pattern}" is not valid`, { cause: error });
8
+ }
9
+ }
10
+ export class BinaryRecordKey {
11
+ match;
12
+ flags;
13
+ replace;
14
+ matcher;
15
+ steps;
16
+ constructor(match, flags, replace) {
17
+ this.match = match;
18
+ this.flags = flags;
19
+ this.replace = replace;
20
+ if (flags && STATEFUL_FLAGS.test(flags))
21
+ throw new TypeError('Split key match must not use the g or y flag');
22
+ this.matcher = compile(match, flags, 'Split key match');
23
+ this.steps = (replace ?? []).map(step => ({
24
+ regex: compile(step.pattern, step.flags, 'Split key replace pattern'),
25
+ replacement: step.with ?? '',
26
+ }));
27
+ }
28
+ static from(key) {
29
+ const { match, replace } = key;
30
+ if (match instanceof RegExp)
31
+ return new BinaryRecordKey(match.source, match.flags, replace);
32
+ return new BinaryRecordKey(match, 'flags' in key ? key.flags : undefined, replace);
33
+ }
34
+ get captureGroups() {
35
+ const captures = new RegExp(`${this.match}|`, this.flags).exec('')?.length ?? 1;
36
+ return Math.max(1, captures - 1);
37
+ }
38
+ toJSON() {
39
+ return { match: this.match, flags: this.flags, replace: this.replace };
40
+ }
41
+ read(text) {
42
+ const found = this.matcher.exec(text);
43
+ if (!found)
44
+ return undefined;
45
+ const groups = found.length > 1 ? found.slice(1) : [found[0]];
46
+ const parts = groups.map(group => this.steps.reduce((value, { regex, replacement }) => value.replace(regex, replacement), group ?? ''));
47
+ if (parts.every(part => part === ''))
48
+ return undefined;
49
+ return parts.length === 1 ? parts[0] : JSON.stringify(parts);
50
+ }
51
+ }
52
+ //# sourceMappingURL=BinaryRecordKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryRecordKey.js","sourceRoot":"","sources":["../../src/models/BinaryRecordKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { Binary } from '@t4h.framework/core';
2
+ import { BinaryRecordKey, type BinaryRecordKeyJSON, type BinaryRecordKeyOptions } from './BinaryRecordKey.js';
3
+ import { type BinaryDelimiter, type ByteTrim } from '../helpers/split-records.js';
4
+ import { type BinaryWhere } from '../helpers/where-matcher.js';
5
+ export type BinarySourceOptions = {
6
+ file: Binary;
7
+ delimiter: BinaryDelimiter;
8
+ key: BinaryRecordKeyOptions;
9
+ where?: BinaryWhere;
10
+ trim?: ByteTrim;
11
+ skipEmpty?: boolean;
12
+ encoding?: BufferEncoding;
13
+ };
14
+ export type BinarySourceJSON = Omit<BinarySourceOptions, 'key'> & {
15
+ key?: BinaryRecordKeyJSON;
16
+ };
17
+ export type BinaryRecord = {
18
+ key: string;
19
+ text: string;
20
+ };
21
+ export type OrderedRecord = BinaryRecord & ({
22
+ isMain: true;
23
+ } | {
24
+ isMain: false;
25
+ name: string;
26
+ });
27
+ type AnySourceOptions = Omit<BinarySourceOptions, 'key'> & {
28
+ key?: BinaryRecordKeyOptions | BinaryRecordKeyJSON;
29
+ };
30
+ export declare class BinarySource {
31
+ private readonly layout;
32
+ private readonly where;
33
+ readonly key: BinaryRecordKey | undefined;
34
+ private readonly matches;
35
+ private constructor();
36
+ static from({ key, where, ...layout }: AnySourceOptions): BinarySource;
37
+ toJSON(): BinarySourceJSON;
38
+ get size(): number;
39
+ get joint(): string;
40
+ slices(every: number | undefined): AsyncGenerator<string>;
41
+ entries(): AsyncGenerator<BinaryRecord>;
42
+ private records;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=BinarySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinarySource.d.ts","sourceRoot":"","sources":["../../src/models/BinarySource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,QAAQ,EAGd,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAA;AAEpC,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,eAAe,CAAA;IAC1B,GAAG,EAAE,sBAAsB,CAAA;IAC3B,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,GAAG;IAChE,GAAG,CAAC,EAAE,mBAAmB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,MAAM,MAAM,aAAa,GAAG,YAAY,GACtC,CAAC;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEtD,KAAK,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,GAAG;IACzD,GAAG,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAAA;CACnD,CAAA;AAMD,qBAAa,YAAY;IAIrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;aACN,GAAG,EAAE,eAAe,GAAG,SAAS;IALlD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,OAAO;WAQO,IAAI,CAAC,EACjB,GAAG,EACH,KAAK,EACL,GAAG,MAAM,EACV,EAAE,gBAAgB,GAAG,YAAY;IAQ3B,MAAM,IAAI,gBAAgB;IAIjC,IAAW,IAAI,WAEd;IAED,IAAW,KAAK,WAIf;IAEa,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC;IAQzD,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC;YAUtC,OAAO;CAcvB"}
@@ -0,0 +1,58 @@
1
+ import { BinaryRecordKey, } from './BinaryRecordKey.js';
2
+ import { groupRecords } from '../helpers/group-records.js';
3
+ import { splitRecords, toJoint, } from '../helpers/split-records.js';
4
+ import { createWhereMatcher, } from '../helpers/where-matcher.js';
5
+ export class BinarySource {
6
+ layout;
7
+ where;
8
+ key;
9
+ matches;
10
+ constructor(layout, where, key) {
11
+ this.layout = layout;
12
+ this.where = where;
13
+ this.key = key;
14
+ this.matches = where === undefined ? () => true : createWhereMatcher(where);
15
+ }
16
+ static from({ key, where, ...layout }) {
17
+ return new BinarySource(layout, where, key ? BinaryRecordKey.from(key) : undefined);
18
+ }
19
+ toJSON() {
20
+ return { ...this.layout, where: this.where, key: this.key?.toJSON() };
21
+ }
22
+ get size() {
23
+ return this.layout.file.contentLength;
24
+ }
25
+ get joint() {
26
+ const { delimiter, encoding = 'utf8' } = this.layout;
27
+ return toJoint(delimiter, encoding).toString(encoding);
28
+ }
29
+ async *slices(every) {
30
+ const { delimiter, skipEmpty = true, encoding = 'utf8' } = this.layout;
31
+ const slices = groupRecords(this.records(), { delimiter, every, encoding });
32
+ for await (const { content } of slices)
33
+ if (!skipEmpty || content.length > 0)
34
+ yield content.toString(encoding);
35
+ }
36
+ async *entries() {
37
+ const { skipEmpty = true } = this.layout;
38
+ for await (const { text } of this.records()) {
39
+ const key = skipEmpty && text === '' ? undefined : this.key?.read(text);
40
+ if (key !== undefined)
41
+ yield { key, text };
42
+ }
43
+ }
44
+ async *records() {
45
+ const { file, delimiter, trim, encoding = 'utf8' } = this.layout;
46
+ const records = splitRecords(await file.stream(), {
47
+ delimiter,
48
+ trim,
49
+ encoding,
50
+ });
51
+ for await (const record of records) {
52
+ const text = Buffer.concat(record.pieces).toString(encoding);
53
+ if (this.matches(text))
54
+ yield { ...record, text };
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=BinarySource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinarySource.js","sourceRoot":"","sources":["../../src/models/BinarySource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { Binary, Serializable } from '@t4h.framework/core';
2
+ import type { BinaryRecordKeyJSON, BinaryRecordKeyOptions } from './BinaryRecordKey.js';
3
+ import { type BinarySourceJSON, type BinarySourceOptions } from './BinarySource.js';
4
+ import type { BinaryDelimiter, ByteTrim } from '../helpers/split-records.js';
5
+ import type { BinaryWhere } from '../helpers/where-matcher.js';
6
+ export type BinarySplitOptions = {
7
+ delimiter: BinaryDelimiter;
8
+ every?: number;
9
+ where?: BinaryWhere;
10
+ trim?: ByteTrim;
11
+ skipEmpty?: boolean;
12
+ encoding?: BufferEncoding;
13
+ groupBy?: BinaryRecordKeyOptions;
14
+ with?: Record<string, BinarySourceOptions>;
15
+ };
16
+ export type BinarySplitOptionsJSON = Omit<BinarySplitOptions, 'groupBy' | 'with'> & {
17
+ groupBy?: BinaryRecordKeyJSON;
18
+ with?: Record<string, BinarySourceJSON>;
19
+ };
20
+ export type BinarySplitJSON = {
21
+ binary: Binary;
22
+ options: BinarySplitOptionsJSON;
23
+ input?: Serializable;
24
+ };
25
+ type AnySplit = {
26
+ binary: Binary;
27
+ options: Omit<BinarySplitOptions, 'groupBy' | 'with'> & {
28
+ groupBy?: BinaryRecordKeyOptions | BinaryRecordKeyJSON;
29
+ with?: Record<string, BinarySourceOptions | BinarySourceJSON>;
30
+ };
31
+ input?: Serializable;
32
+ };
33
+ export declare class BinarySplit {
34
+ private readonly main;
35
+ private readonly withSources;
36
+ private readonly every;
37
+ private readonly input;
38
+ private constructor();
39
+ static from({ binary, options, input }: AnySplit): BinarySplit;
40
+ toJSON(): BinarySplitJSON;
41
+ inputs(): AsyncGenerator<Serializable>;
42
+ private groups;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=BinarySplit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinarySplit.d.ts","sourceRoot":"","sources":["../../src/models/BinarySplit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE/D,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,eAAe,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,kBAAkB,EAClB,SAAS,GAAG,MAAM,CACnB,GAAG;IACF,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,sBAAsB,CAAA;IAC/B,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG;QACtD,OAAO,CAAC,EAAE,sBAAsB,GAAG,mBAAmB,CAAA;QACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,CAAC,CAAA;KAC9D,CAAA;IACD,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO;WAOO,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAG,WAAW;IAmD9D,MAAM,IAAI,eAAe;IAuBlB,MAAM,IAAI,cAAc,CAAC,YAAY,CAAC;YAKrC,MAAM;CAStB"}
@@ -0,0 +1,81 @@
1
+ import { BinarySource, } from './BinarySource.js';
2
+ import { BinarySplitInput } from './BinarySplitInput.js';
3
+ import { groupByKey } from '../helpers/group-by-key.js';
4
+ export class BinarySplit {
5
+ main;
6
+ withSources;
7
+ every;
8
+ input;
9
+ constructor(main, withSources, every, input) {
10
+ this.main = main;
11
+ this.withSources = withSources;
12
+ this.every = every;
13
+ this.input = input;
14
+ }
15
+ static from({ binary, options, input }) {
16
+ const { groupBy, with: sources = {}, every } = options;
17
+ const names = Object.keys(sources);
18
+ if (!groupBy && names.length > 0)
19
+ throw new TypeError('Split with needs groupBy');
20
+ if (groupBy && every !== undefined)
21
+ throw new TypeError('Split every does not apply with groupBy');
22
+ if (groupBy && input === undefined)
23
+ throw new TypeError('Split groupBy needs an input');
24
+ const { delimiter, where, trim, skipEmpty, encoding } = options;
25
+ const main = BinarySource.from({
26
+ file: binary,
27
+ delimiter,
28
+ where,
29
+ trim,
30
+ skipEmpty,
31
+ encoding,
32
+ key: groupBy,
33
+ });
34
+ const withSources = Object.fromEntries(Object.entries(sources).map(([name, source]) => [
35
+ name,
36
+ BinarySource.from(source),
37
+ ]));
38
+ const captureGroups = new Set([main, ...Object.values(withSources)].map(source => source.key?.captureGroups));
39
+ if (captureGroups.size > 1)
40
+ throw new TypeError('Split groupBy and the keys of with must have the same number of capture groups');
41
+ const template = input === undefined
42
+ ? undefined
43
+ : BinarySplitInput.from(input, {
44
+ isGrouped: groupBy !== undefined,
45
+ sources: names,
46
+ });
47
+ return new BinarySplit(main, withSources, every, template);
48
+ }
49
+ toJSON() {
50
+ const { file, key, ...main } = this.main.toJSON();
51
+ const hasWith = Object.keys(this.withSources).length > 0;
52
+ return {
53
+ binary: file,
54
+ options: {
55
+ ...main,
56
+ every: this.every,
57
+ groupBy: key,
58
+ with: hasWith
59
+ ? Object.fromEntries(Object.entries(this.withSources).map(([name, source]) => [
60
+ name,
61
+ source.toJSON(),
62
+ ]))
63
+ : undefined,
64
+ },
65
+ input: this.input?.toJSON(),
66
+ };
67
+ }
68
+ async *inputs() {
69
+ for await (const group of this.groups())
70
+ yield this.input ? this.input.fill(group) : group.slice;
71
+ }
72
+ async *groups() {
73
+ if (this.main.key) {
74
+ yield* groupByKey(this.main, this.withSources);
75
+ return;
76
+ }
77
+ for await (const slice of this.main.slices(this.every))
78
+ yield { slice };
79
+ }
80
+ }
81
+ //# sourceMappingURL=BinarySplit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinarySplit.js","sourceRoot":"","sources":["../../src/models/BinarySplit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { Serializable } from '@t4h.framework/core';
2
+ export declare const SLICE_MARKER = "@t4h.framework/fs:split:slice";
3
+ export declare const KEY_MARKER = "@t4h.framework/fs:split:key";
4
+ export declare const ROWS_MARKER = "@t4h.framework/fs:split:rows:";
5
+ export type SplitValues = {
6
+ slice: string;
7
+ key?: string;
8
+ rows?: Record<string, string>;
9
+ };
10
+ export type SplitInputContext = {
11
+ isGrouped: boolean;
12
+ sources: string[];
13
+ };
14
+ export declare class BinarySplitInput {
15
+ private readonly template;
16
+ private constructor();
17
+ static from(template: Serializable, { isGrouped, sources }: SplitInputContext): BinarySplitInput;
18
+ toJSON(): Serializable;
19
+ fill(values: SplitValues): Serializable;
20
+ }
21
+ //# sourceMappingURL=BinarySplitInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinarySplitInput.d.ts","sourceRoot":"","sources":["../../src/models/BinarySplitInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,eAAO,MAAM,YAAY,kCAAmB,CAAA;AAE5C,eAAO,MAAM,UAAU,gCAAiB,CAAA;AAExC,eAAO,MAAM,WAAW,kCAAmB,CAAA;AAE3C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AA4ED,qBAAa,gBAAgB;IACP,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAA7C,OAAO;WAEO,IAAI,CAChB,QAAQ,EAAE,YAAY,EACtB,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,iBAAiB,GACxC,gBAAgB;IA6BZ,MAAM,IAAI,YAAY;IAItB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY;CAG/C"}