@t4h.framework/fs 0.13.0 → 0.14.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.
Files changed (80) hide show
  1. package/.ai/skills/framework-fs/SKILL.md +87 -186
  2. package/.ai/skills/framework-fs-split/SKILL.md +134 -314
  3. package/.ai/skills/framework-fs-write/SKILL.md +54 -214
  4. package/CHANGELOG.md +56 -0
  5. package/README.md +20 -351
  6. package/dist/activities/FileJoinActivity.d.ts +4 -5
  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 +1 -0
  11. package/dist/activities/FileReadActivity.d.ts.map +1 -1
  12. package/dist/activities/FileReadActivity.js +34 -26
  13. package/dist/activities/FileReadActivity.js.map +1 -1
  14. package/dist/activities/FileSplitActivity.d.ts +23 -43
  15. package/dist/activities/FileSplitActivity.d.ts.map +1 -1
  16. package/dist/activities/FileSplitActivity.js +23 -38
  17. package/dist/activities/FileSplitActivity.js.map +1 -1
  18. package/dist/constants/operations.d.ts +1 -1
  19. package/dist/constants/operations.d.ts.map +1 -1
  20. package/dist/constants/operations.js +3 -14
  21. package/dist/constants/operations.js.map +1 -1
  22. package/dist/fs.d.ts +5 -1
  23. package/dist/fs.d.ts.map +1 -1
  24. package/dist/helpers/CSV.d.ts +2 -2
  25. package/dist/helpers/CSV.d.ts.map +1 -1
  26. package/dist/helpers/CSV.js +20 -22
  27. package/dist/helpers/CSV.js.map +1 -1
  28. package/dist/helpers/group-by-key.d.ts +8 -0
  29. package/dist/helpers/group-by-key.d.ts.map +1 -0
  30. package/dist/helpers/group-by-key.js +35 -0
  31. package/dist/helpers/group-by-key.js.map +1 -0
  32. package/dist/helpers/group-records.d.ts +2 -2
  33. package/dist/helpers/group-records.d.ts.map +1 -1
  34. package/dist/helpers/group-records.js +3 -3
  35. package/dist/helpers/group-records.js.map +1 -1
  36. package/dist/helpers/in-chunks.d.ts +5 -0
  37. package/dist/helpers/in-chunks.d.ts.map +1 -0
  38. package/dist/helpers/in-chunks.js +17 -0
  39. package/dist/helpers/in-chunks.js.map +1 -0
  40. package/dist/helpers/split-records.d.ts +4 -3
  41. package/dist/helpers/split-records.d.ts.map +1 -1
  42. package/dist/helpers/split-records.js +75 -46
  43. package/dist/helpers/split-records.js.map +1 -1
  44. package/dist/helpers/where-matcher.d.ts +21 -0
  45. package/dist/helpers/where-matcher.d.ts.map +1 -0
  46. package/dist/helpers/where-matcher.js +11 -0
  47. package/dist/helpers/where-matcher.js.map +1 -0
  48. package/dist/models/BinaryRecordKey.d.ts +27 -0
  49. package/dist/models/BinaryRecordKey.d.ts.map +1 -0
  50. package/dist/models/BinaryRecordKey.js +52 -0
  51. package/dist/models/BinaryRecordKey.js.map +1 -0
  52. package/dist/models/BinarySource.d.ts +45 -0
  53. package/dist/models/BinarySource.d.ts.map +1 -0
  54. package/dist/models/BinarySource.js +58 -0
  55. package/dist/models/BinarySource.js.map +1 -0
  56. package/dist/models/BinarySplit.d.ts +45 -0
  57. package/dist/models/BinarySplit.d.ts.map +1 -0
  58. package/dist/models/BinarySplit.js +81 -0
  59. package/dist/models/BinarySplit.js.map +1 -0
  60. package/dist/models/BinarySplitInput.d.ts +21 -0
  61. package/dist/models/BinarySplitInput.d.ts.map +1 -0
  62. package/dist/models/BinarySplitInput.js +85 -0
  63. package/dist/models/BinarySplitInput.js.map +1 -0
  64. package/dist/models/Database.d.ts +15 -0
  65. package/dist/models/Database.d.ts.map +1 -0
  66. package/dist/models/Database.js +57 -0
  67. package/dist/models/Database.js.map +1 -0
  68. package/dist/models/OpenKeyGroup.d.ts +23 -0
  69. package/dist/models/OpenKeyGroup.d.ts.map +1 -0
  70. package/dist/models/OpenKeyGroup.js +42 -0
  71. package/dist/models/OpenKeyGroup.js.map +1 -0
  72. package/dist/models/SplitDatabaseWorker.d.ts +12 -0
  73. package/dist/models/SplitDatabaseWorker.d.ts.map +1 -0
  74. package/dist/models/SplitDatabaseWorker.js +65 -0
  75. package/dist/models/SplitDatabaseWorker.js.map +1 -0
  76. package/dist/workers/split-database.d.ts +10 -0
  77. package/dist/workers/split-database.d.ts.map +1 -0
  78. package/dist/workers/split-database.js +43 -0
  79. package/dist/workers/split-database.js.map +1 -0
  80. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"FileReadActivity.js","sourceRoot":"","sources":["../../src/activities/FileReadActivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,OAAO,EAAe,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAYvD,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvC,MAAM,OAAO,gBAAiB,SAAQ,YAKrC;IACkB,MAAM,GAAG,IAAI,KAAK,CAAC;QAClC,EAAE,EAAE,eAAe;KACpB,CAAC,CAAA;IAEK,OAAO,CACZ,MAAc,EACd,OAAwB;QAExB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,EACf,MAAM,EACN,OAAO,GACe;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAA;QAE3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,aAAa,EAAE,CAAA;QAEtE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAA;QAEtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC;YACjE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAA;QAEtE,IAAI,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,aAAa;YAClC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA;QAErE,IAAI,MAAM,GAAG,mBAAmB;YAC9B,MAAM,IAAI,UAAU,CAClB,UAAU,MAAM,iBAAiB,mBAAmB,EAAE,CACvD,CAAA;QAEH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEvD,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,MAAM,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAEzE,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC7E,CAAC;IAEM,QAAQ,CAAC,MAAc;QAC5B,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,MAAc,EACd,KAAqC,EACrC,QAAwB;QAExB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,QAAkB,EAClB,KAAqC;QAErC,MAAM,MAAM,GAAa,EAAE,CAAA;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,IAAI,IAAI,GAAG,CAAC,CAAA;QAEZ,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAE9D,MAAM,UAAU,GAAG,QAAQ,CAAA;gBAE3B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAA;gBAExB,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK;oBAAE,SAAQ;gBAErC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,CAAA;gBAClD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;gBAEzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;gBAErC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAA;gBAEjB,IAAI,QAAQ,IAAI,KAAK,CAAC,GAAG;oBAAE,MAAK;YAClC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK;YAChC,MAAM,IAAI,UAAU,CAClB,uDAAuD,CACxD,CAAA;QAEH,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,MAAc,EACd,UAA2B,EAAE;IAE7B,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AACpE,CAAC"}
1
+ {"version":3,"file":"FileReadActivity.js","sourceRoot":"","sources":["../../src/activities/FileReadActivity.ts"],"names":[],"mappings":"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"}
@@ -1,61 +1,41 @@
1
- import { AsyncActivity, type Binary, type Workflow, WorkflowBatchCollectionRef, workflowBatchSchema } from '@t4h.framework/core';
2
- import { type ByteTrim, type FileSplitDelimiter } from '../helpers/split-records.js';
3
- type FileSplitWhereOperators = {
4
- $eq?: string;
5
- $ne?: string;
6
- $lt?: string;
7
- $lte?: string;
8
- $gt?: string;
9
- $gte?: string;
10
- $in?: string[];
11
- $nin?: string[];
12
- $regex?: string;
13
- $options?: string;
14
- $not?: FileSplitWhere;
1
+ import { AsyncActivity, type AsyncActivityResult, type Binary, type AnyWorkflow, type Serializable, WorkflowBatchCollectionRef, workflowBatchSchema, type WorkflowInput } from '@t4h.framework/core';
2
+ import type { BinaryDelimiter } from '../helpers/split-records.js';
3
+ import type { BinaryWhere } from '../helpers/where-matcher.js';
4
+ import { type BinarySplitOptions, type BinarySplitOptionsJSON } from '../models/BinarySplit.js';
5
+ /** @deprecated Use `BinaryDelimiter`. */
6
+ export type FileSplitDelimiter = BinaryDelimiter;
7
+ /** @deprecated Use `BinaryWhere`. */
8
+ export type FileSplitWhere = BinaryWhere;
9
+ export type FileSplitOptions<TWorkflow extends AnyWorkflow = AnyWorkflow> = BinarySplitOptions & {
10
+ timeoutInMs?: number;
11
+ input?: WorkflowInput<TWorkflow>;
15
12
  };
16
- export type FileSplitWhere = string | (FileSplitWhereOperators & {
17
- $and?: FileSplitWhere[];
18
- $or?: FileSplitWhere[];
19
- $nor?: FileSplitWhere[];
20
- });
21
- export type FileSplitOptions = {
22
- delimiter: FileSplitDelimiter;
23
- every?: number;
24
- where?: FileSplitWhere;
25
- trim?: ByteTrim;
26
- skipEmpty?: boolean;
27
- encoding?: BufferEncoding;
13
+ export type FileSplitActivityOptions = BinarySplitOptionsJSON & {
28
14
  timeoutInMs?: number;
29
15
  };
30
16
  export type FileSplitActivityInput = {
31
17
  binary: Binary;
32
18
  workflow: string;
33
- options: FileSplitOptions;
19
+ options: FileSplitActivityOptions;
20
+ input?: Serializable;
34
21
  };
35
22
  export type FileSplitBatch = {
36
23
  batch: string;
37
24
  count: number;
38
25
  };
39
- export declare class FileSplitActivity extends AsyncActivity<readonly [
40
- binary: Binary,
41
- workflow: Workflow<any, any>,
42
- options: FileSplitOptions
43
- ], FileSplitActivityInput, FileSplitBatch, WorkflowBatchCollectionRef, FileSplitActivityInput, typeof workflowBatchSchema> {
26
+ export declare class FileSplitActivity extends AsyncActivity<readonly [binary: Binary, workflow: AnyWorkflow, options: FileSplitOptions], FileSplitActivityInput, FileSplitBatch, WorkflowBatchCollectionRef, FileSplitActivityInput, typeof workflowBatchSchema> {
44
27
  private readonly claims;
45
- toInput(binary: Binary, workflow: Workflow<any, any>, options: FileSplitOptions): FileSplitActivityInput;
46
- bootstrap({ binary, workflow, options, }: FileSplitActivityInput): Promise<import("@t4h.framework/core").AsyncActivityResultPending<FileSplitActivityInput, import("typebox").TObject<{
47
- batch: import("typebox").TString;
48
- count: import("typebox").TNumber;
49
- }>> | import("@t4h.framework/core").AsyncActivityResultFulfilled<FileSplitBatch | undefined>>;
50
- private slices;
51
- private filter;
28
+ toInput(binary: Binary, workflow: AnyWorkflow, options: FileSplitOptions): FileSplitActivityInput;
29
+ bootstrap(input: FileSplitActivityInput): Promise<AsyncActivityResult<FileSplitActivityInput, typeof workflowBatchSchema, FileSplitBatch>>;
52
30
  advance(payload: FileSplitBatch): import("@t4h.framework/core").AsyncActivityResultFulfilled<FileSplitBatch | undefined>;
53
31
  toOutput(output: FileSplitBatch): WorkflowBatchCollectionRef;
54
32
  }
55
- export declare function split(binary: Binary, workflow: Workflow<any, any>, options: FileSplitOptions): Promise<WorkflowBatchCollectionRef>;
33
+ export declare function split<TWorkflow extends AnyWorkflow>(binary: Binary, workflow: TWorkflow, options: FileSplitOptions<TWorkflow>): Promise<WorkflowBatchCollectionRef>;
56
34
  export declare namespace Split {
57
- const line: (value?: string) => FileSplitDelimiter;
58
- const char: (value: string, keep?: FileSplitDelimiter["keep"]) => FileSplitDelimiter;
35
+ const line: (value?: string) => BinaryDelimiter;
36
+ const char: (value: string, keep?: BinaryDelimiter["keep"]) => BinaryDelimiter;
37
+ const slice: string;
38
+ const key: string;
39
+ const rows: (name: string) => string;
59
40
  }
60
- export {};
61
41
  //# sourceMappingURL=FileSplitActivity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSplitActivity.d.ts","sourceRoot":"","sources":["../../src/activities/FileSplitActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,MAAM,EAGX,KAAK,QAAQ,EACb,0BAA0B,EAG1B,mBAAmB,EACpB,MAAM,qBAAqB,CAAA;AAM5B,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAExB,MAAM,6BAA6B,CAAA;AAIpC,KAAK,uBAAuB,GAAG;IAC7B,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,cAAc,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,CAAC,uBAAuB,GAAG;IACzB,IAAI,CAAC,EAAE,cAAc,EAAE,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,EAAE,CAAA;IACtB,IAAI,CAAC,EAAE,cAAc,EAAE,CAAA;CACxB,CAAC,CAAA;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,iBAAkB,SAAQ,aAAa,CAClD,SAAS;IACP,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAC5B,OAAO,EAAE,gBAAgB;CAC1B,EACD,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,OAAO,mBAAmB,CAC3B;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEK,OAAO,CACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,OAAO,EAAE,gBAAgB,GACxB,sBAAsB;IAsBZ,SAAS,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,sBAAsB;;;;YAgBV,MAAM;YA4BN,MAAM;IAad,OAAO,CAAC,OAAO,EAAE,cAAc;IAI/B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,0BAA0B;CAGpE;AAED,wBAAsB,KAAK,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,0BAA0B,CAAC,CASrC;AAED,yBAAiB,KAAK,CAAC;IACd,MAAM,IAAI,GAAI,cAAY,KAAG,kBAAiC,CAAA;IAE9D,MAAM,IAAI,GACf,OAAO,MAAM,EACb,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAChC,kBAAuC,CAAA;CAC3C"}
1
+ {"version":3,"file":"FileSplitActivity.d.ts","sourceRoot":"","sources":["../../src/activities/FileSplitActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,MAAM,EAGX,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,0BAA0B,EAE1B,mBAAmB,EACnB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAA;AAOjC,yCAAyC;AACzC,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAA;AAEhD,qCAAqC;AACrC,MAAM,MAAM,cAAc,GAAG,WAAW,CAAA;AAExC,MAAM,MAAM,gBAAgB,CAAC,SAAS,SAAS,WAAW,GAAG,WAAW,IACtE,kBAAkB,GAAG;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CACjC,CAAA;AAEH,MAAM,MAAM,wBAAwB,GAAG,sBAAsB,GAAG;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,wBAAwB,CAAA;IACjC,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,qBAAa,iBAAkB,SAAQ,aAAa,CAClD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAC3E,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,OAAO,mBAAmB,CAC3B;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IAEK,OAAO,CACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,gBAAgB,GACxB,sBAAsB;IAoBZ,SAAS,CACpB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CACR,mBAAmB,CACjB,sBAAsB,EACtB,OAAO,mBAAmB,EAC1B,cAAc,CACf,CACF;IAiBM,OAAO,CAAC,OAAO,EAAE,cAAc;IAI/B,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,0BAA0B;CAGpE;AAED,wBAAsB,KAAK,CAAC,SAAS,SAAS,WAAW,EACvD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,GACnC,OAAO,CAAC,0BAA0B,CAAC,CASrC;AAED,yBAAiB,KAAK,CAAC;IACd,MAAM,IAAI,GAAI,cAAY,KAAG,eAA8B,CAAA;IAE3D,MAAM,IAAI,GACf,OAAO,MAAM,EACb,OAAO,eAAe,CAAC,MAAM,CAAC,KAC7B,eAAoC,CAAA;IAEhC,MAAM,KAAK,EAAE,MAAqB,CAAA;IAElC,MAAM,GAAG,EAAE,MAAmB,CAAA;IAE9B,MAAM,IAAI,GAAI,MAAM,MAAM,KAAG,MAA4B,CAAA;CACjE"}
@@ -1,9 +1,6 @@
1
- import { AsyncActivity, Claim, History, WorkflowBatchCollectionRef, WorkflowBatchQuery, WorkflowClaim, workflowBatchSchema, } from '@t4h.framework/core';
2
- import sift from 'sift';
3
- import { STRING_OPERATIONS } from '../constants/operations.js';
4
- import { groupRecords } from '../helpers/group-records.js';
5
- import { splitRecords, } from '../helpers/split-records.js';
6
- const { createQueryTester } = sift;
1
+ import { AsyncActivity, Claim, History, WorkflowBatchCollectionRef, WorkflowClaim, workflowBatchSchema, } from '@t4h.framework/core';
2
+ import { BinarySplit, } from '../models/BinarySplit.js';
3
+ import { KEY_MARKER, ROWS_MARKER, SLICE_MARKER, } from '../models/BinarySplitInput.js';
7
4
  export class FileSplitActivity extends AsyncActivity {
8
5
  claims = new Claim({
9
6
  workflow: WorkflowClaim,
@@ -11,45 +8,30 @@ export class FileSplitActivity extends AsyncActivity {
11
8
  toInput(binary, workflow, options) {
12
9
  if (!workflow.id)
13
10
  throw new TypeError('Could not split a file into a workflow without an id');
14
- if (options.where !== undefined) {
15
- WorkflowBatchQuery.assertSerializable(options.where, 'where', 'Split where', STRING_OPERATIONS);
16
- createQueryTester(options.where, {
17
- operations: STRING_OPERATIONS,
18
- });
19
- }
20
- return { binary, workflow: workflow.id, options };
11
+ const { timeoutInMs, input, ...split } = options;
12
+ const stored = BinarySplit.from({
13
+ binary,
14
+ options: split,
15
+ input: input,
16
+ }).toJSON();
17
+ return {
18
+ ...stored,
19
+ workflow: workflow.id,
20
+ options: { ...stored.options, timeoutInMs },
21
+ };
21
22
  }
22
- async bootstrap({ binary, workflow, options, }) {
23
- const batch = await this.claims.workflow.startMany(workflow, this.slices(binary, options));
23
+ async bootstrap(input) {
24
+ const { workflow, options } = input;
25
+ const batch = await this.claims.workflow.startMany(workflow, BinarySplit.from(input).inputs());
24
26
  if (batch.count === 0)
25
27
  return this.done({ batch: batch.id, count: 0 });
26
28
  return this.pending({
27
29
  schema: workflowBatchSchema,
28
- ...(options.timeoutInMs && {
29
- timeoutAt: new Date(Date.now() + options.timeoutInMs),
30
- }),
30
+ timeoutAt: options.timeoutInMs
31
+ ? new Date(Date.now() + options.timeoutInMs)
32
+ : undefined,
31
33
  });
32
34
  }
33
- async *slices(binary, { delimiter, every, where, trim, skipEmpty = true, ...options }) {
34
- const encoding = options.encoding ?? 'utf8';
35
- const records = splitRecords(await binary.stream(), {
36
- delimiter,
37
- trim,
38
- encoding,
39
- });
40
- const slices = groupRecords(where === undefined ? records : this.filter(records, where, encoding), { delimiter, every, encoding });
41
- for await (const { content } of slices)
42
- if (!skipEmpty || content.length > 0)
43
- yield content.toString(encoding);
44
- }
45
- async *filter(records, where, encoding) {
46
- const matches = createQueryTester(where, {
47
- operations: STRING_OPERATIONS,
48
- });
49
- for await (const record of records)
50
- if (matches(Buffer.concat(record.pieces).toString(encoding)))
51
- yield record;
52
- }
53
35
  advance(payload) {
54
36
  return this.done(payload);
55
37
  }
@@ -65,5 +47,8 @@ export var Split;
65
47
  (function (Split) {
66
48
  Split.line = (value = '\n') => ({ value });
67
49
  Split.char = (value, keep) => ({ value, keep });
50
+ Split.slice = SLICE_MARKER;
51
+ Split.key = KEY_MARKER;
52
+ Split.rows = (name) => ROWS_MARKER + name;
68
53
  })(Split || (Split = {}));
69
54
  //# sourceMappingURL=FileSplitActivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileSplitActivity.js","sourceRoot":"","sources":["../../src/activities/FileSplitActivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileSplitActivity.js","sourceRoot":"","sources":["../../src/activities/FileSplitActivity.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { OperationCreator } from 'sift/lib/core.js';
2
- export declare const STRING_OPERATIONS: Record<string, OperationCreator<any>>;
2
+ export declare const STRING_OPERATIONS: Record<string, OperationCreator<unknown>>;
3
3
  //# sourceMappingURL=operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/constants/operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAoBxD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAgBnE,CAAA"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/constants/operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAIxD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAIvE,CAAA"}
@@ -1,20 +1,9 @@
1
+ import { WorkflowBatchQuery } from '@t4h.framework/core';
1
2
  import sift from 'sift';
2
- const { $and, $eq, $exists, $gt, $gte, $in, $lt, $lte, $ne, $nin, $nor, $not, $options, $or, $regex, } = sift;
3
+ const { $options, $regex } = sift;
3
4
  export const STRING_OPERATIONS = {
4
- $and,
5
- $eq,
6
- $exists,
7
- $gt,
8
- $gte,
9
- $in,
10
- $lt,
11
- $lte,
12
- $ne,
13
- $nin,
14
- $nor,
15
- $not,
5
+ ...WorkflowBatchQuery.OPERATIONS,
16
6
  $options,
17
- $or,
18
7
  $regex,
19
8
  };
20
9
  //# sourceMappingURL=operations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/constants/operations.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,EACJ,IAAI,EACJ,GAAG,EACH,OAAO,EACP,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,MAAM,GACP,GAAG,IAAI,CAAA;AAER,MAAM,CAAC,MAAM,iBAAiB,GAA0C;IACtE,IAAI;IACJ,GAAG;IACH,OAAO;IACP,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,GAAG;IACH,MAAM;CACP,CAAA"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/constants/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AAEjC,MAAM,CAAC,MAAM,iBAAiB,GAA8C;IAC1E,GAAG,kBAAkB,CAAC,UAAU;IAChC,QAAQ;IACR,MAAM;CACP,CAAA"}
package/dist/fs.d.ts CHANGED
@@ -4,5 +4,9 @@ export * from './activities/FileJoinActivity.js';
4
4
  export * from './activities/FileReadActivity.js';
5
5
  export * from './activities/FileSplitActivity.js';
6
6
  export * from './activities/FileWriteActivity.js';
7
- export type { ByteTrim, FileSplitDelimiter } from './helpers/split-records.js';
7
+ export type { BinaryDelimiter, ByteTrim } from './helpers/split-records.js';
8
+ export type { BinaryWhere } from './helpers/where-matcher.js';
9
+ export type { BinaryRecordKeyJSON, BinaryRecordKeyOptions, BinaryReplace, } from './models/BinaryRecordKey.js';
10
+ export type { BinarySourceJSON, BinarySourceOptions, } from './models/BinarySource.js';
11
+ export type { BinarySplitOptions, BinarySplitOptionsJSON, } from './models/BinarySplit.js';
8
12
  //# sourceMappingURL=fs.d.ts.map
package/dist/fs.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAC3E,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC7D,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,GACd,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAA"}
@@ -7,8 +7,8 @@ export declare namespace CSV {
7
7
  key: string;
8
8
  header?: string;
9
9
  };
10
- function toHeader(columns: CSV.Column[], options?: ToLineOptions): string;
11
- function toLine(value: Serializable, columns: CSV.Column[], options?: ToLineOptions): string;
10
+ function toHeader(columns: Column[], options?: ToLineOptions): string;
11
+ function toLine(value: Serializable, columns: Column[], options?: ToLineOptions): string;
12
12
  }
13
13
  export {};
14
14
  //# sourceMappingURL=CSV.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CSV.d.ts","sourceRoot":"","sources":["../../src/helpers/CSV.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,yBAAiB,GAAG,CAAC;IACnB,KAAY,MAAM,GAAG,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IA0B9D,SAAgB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,UAatE;IAED,SAAgB,MAAM,CACpB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,aAAa,UAiBxB;CACF"}
1
+ {"version":3,"file":"CSV.d.ts","sourceRoot":"","sources":["../../src/helpers/CSV.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,yBAAiB,GAAG,CAAC;IACnB,KAAY,MAAM,GAAG,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAqC9D,SAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,UAOlE;IAED,SAAgB,MAAM,CACpB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,aAAa,UAaxB;CACF"}
@@ -1,13 +1,24 @@
1
+ const QUOTED_CHARACTERS = ['"', '\n', '\r'];
1
2
  export var CSV;
2
3
  (function (CSV) {
3
- function escape(value, delimiter) {
4
- if (value === null || typeof value === 'undefined')
4
+ function toText(value) {
5
+ if (value === null || value === undefined)
5
6
  return '';
6
- const text = typeof value === 'object' ? JSON.stringify(value) : String(value);
7
- const includeQuotes = [delimiter, '"', '\n', '\r'];
8
- if (includeQuotes.some(test => text.includes(test)))
9
- return `"${text.replaceAll('"', '""')}"`;
10
- return text;
7
+ if (typeof value === 'string')
8
+ return value;
9
+ if (typeof value === 'object')
10
+ return JSON.stringify(value);
11
+ return String(value);
12
+ }
13
+ function escape(value, delimiter) {
14
+ const text = toText(value);
15
+ if (![delimiter, ...QUOTED_CHARACTERS].some(test => text.includes(test)))
16
+ return text;
17
+ return `"${text.replaceAll('"', '""')}"`;
18
+ }
19
+ function toRow(cells, options) {
20
+ const delimiter = options?.delimiter ?? ',';
21
+ return cells.map(cell => escape(cell, delimiter)).join(delimiter) + '\n';
11
22
  }
12
23
  function getColumnValue(output, key) {
13
24
  if (key in output)
@@ -19,25 +30,12 @@ export var CSV;
19
30
  }, output);
20
31
  }
21
32
  function toHeader(columns, options) {
22
- const delimiter = options?.delimiter ?? ',';
23
- return (columns
24
- .map(column => {
25
- const header = typeof column === 'string' ? column : (column.header ?? column.key);
26
- return escape(header, delimiter);
27
- })
28
- .join(delimiter) + '\n');
33
+ return toRow(columns.map(column => typeof column === 'string' ? column : (column.header ?? column.key)), options);
29
34
  }
30
35
  CSV.toHeader = toHeader;
31
36
  function toLine(value, columns, options) {
32
- const delimiter = options?.delimiter ?? ',';
33
37
  const output = (value ?? {});
34
- return (columns
35
- .map(column => {
36
- const key = typeof column === 'string' ? column : column.key;
37
- const value = getColumnValue(output, key);
38
- return escape(value, delimiter);
39
- })
40
- .join(delimiter) + '\n');
38
+ return toRow(columns.map(column => getColumnValue(output, typeof column === 'string' ? column : column.key)), options);
41
39
  }
42
40
  CSV.toLine = toLine;
43
41
  })(CSV || (CSV = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"CSV.js","sourceRoot":"","sources":["../../src/helpers/CSV.ts"],"names":[],"mappings":"AAMA,MAAM,KAAW,GAAG,CA+DnB;AA/DD,WAAiB,GAAG;IAGlB,SAAS,MAAM,CAAC,KAAc,EAAE,SAAiB;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW;YAAE,OAAO,EAAE,CAAA;QAE7D,MAAM,IAAI,GACR,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEnE,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAElD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAA;QAE1C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,cAAc,CAAC,MAA+B,EAAE,GAAW;QAClE,IAAI,GAAG,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QAErC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACtD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YAE/D,OAAQ,IAAgC,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC,EAAE,MAAM,CAAC,CAAA;IACZ,CAAC;IAED,SAAgB,QAAQ,CAAC,OAAqB,EAAE,OAAuB;QACrE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAA;QAE3C,OAAO,CACL,OAAO;aACJ,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAA;YAErE,OAAO,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QAClC,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAC1B,CAAA;IACH,CAAC;IAbe,YAAQ,WAavB,CAAA;IAED,SAAgB,MAAM,CACpB,KAAmB,EACnB,OAAqB,EACrB,OAAuB;QAEvB,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAA;QAE3C,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAEvD,OAAO,CACL,OAAO;aACJ,GAAG,CAAC,MAAM,CAAC,EAAE;YACZ,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;YAE5D,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAEzC,OAAO,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QACjC,CAAC,CAAC;aACD,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAC1B,CAAA;IACH,CAAC;IApBe,UAAM,SAoBrB,CAAA;AACH,CAAC,EA/DgB,GAAG,KAAH,GAAG,QA+DnB"}
1
+ {"version":3,"file":"CSV.js","sourceRoot":"","sources":["../../src/helpers/CSV.ts"],"names":[],"mappings":"AAMA,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAE3C,MAAM,KAAW,GAAG,CAgEnB;AAhED,WAAiB,GAAG;IAGlB,SAAS,MAAM,CAAC,KAAc;QAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;QAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAE3C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAE3D,OAAO,MAAM,CAAC,KAAkC,CAAC,CAAA;IACnD,CAAC;IAED,SAAS,MAAM,CAAC,KAAc,EAAE,SAAiB;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAE1B,IAAI,CAAC,CAAC,SAAS,EAAE,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtE,OAAO,IAAI,CAAA;QAEb,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAA;IAC1C,CAAC;IAED,SAAS,KAAK,CAAC,KAAgB,EAAE,OAAuB;QACtD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAA;QAE3C,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;IAC1E,CAAC;IAED,SAAS,cAAc,CAAC,MAA+B,EAAE,GAAW;QAClE,IAAI,GAAG,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QAErC,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YACtD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,SAAS,CAAA;YAE/D,OAAQ,IAAgC,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC,EAAE,MAAM,CAAC,CAAA;IACZ,CAAC;IAED,SAAgB,QAAQ,CAAC,OAAiB,EAAE,OAAuB;QACjE,OAAO,KAAK,CACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACnB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CACpE,EACD,OAAO,CACR,CAAA;IACH,CAAC;IAPe,YAAQ,WAOvB,CAAA;IAED,SAAgB,MAAM,CACpB,KAAmB,EACnB,OAAiB,EACjB,OAAuB;QAEvB,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAEvD,OAAO,KAAK,CACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACnB,cAAc,CACZ,MAAM,EACN,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,CACF,EACD,OAAO,CACR,CAAA;IACH,CAAC;IAhBe,UAAM,SAgBrB,CAAA;AACH,CAAC,EAhEgB,GAAG,KAAH,GAAG,QAgEnB"}
@@ -0,0 +1,8 @@
1
+ import type { BinarySource, OrderedRecord } from '../models/BinarySource.js';
2
+ import { type GroupJoints, type KeyGroup } from '../models/OpenKeyGroup.js';
3
+ export type GroupByKeyOptions = {
4
+ directory?: string;
5
+ };
6
+ export declare function toGroups(records: AsyncIterable<OrderedRecord> | Iterable<OrderedRecord>, joints: GroupJoints): AsyncGenerator<KeyGroup>;
7
+ export declare function groupByKey(main: BinarySource, withSources: Record<string, BinarySource>, { directory }?: GroupByKeyOptions): AsyncGenerator<KeyGroup>;
8
+ //# sourceMappingURL=group-by-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by-key.d.ts","sourceRoot":"","sources":["../../src/helpers/group-by-key.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEd,MAAM,2BAA2B,CAAA;AAGlC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAID,wBAAuB,QAAQ,CAC7B,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,EAC/D,MAAM,EAAE,WAAW,GAClB,cAAc,CAAC,QAAQ,CAAC,CAY1B;AAED,wBAAuB,UAAU,CAC/B,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,EAAE,SAAoB,EAAE,GAAE,iBAAsB,GAC/C,cAAc,CAAC,QAAQ,CAAC,CAiC1B"}
@@ -0,0 +1,35 @@
1
+ import { tmpdir } from 'node:os';
2
+ import { OpenKeyGroup, } from '../models/OpenKeyGroup.js';
3
+ import { SplitDatabaseWorker } from '../models/SplitDatabaseWorker.js';
4
+ const MAX_GROUP_BY_BYTES = 1024 ** 3;
5
+ export async function* toGroups(records, joints) {
6
+ let group;
7
+ for await (const record of records) {
8
+ if (group && !group.accepts(record))
9
+ yield group.build();
10
+ if (!group?.accepts(record))
11
+ group = new OpenKeyGroup(record.key, joints);
12
+ group.add(record);
13
+ }
14
+ if (group)
15
+ yield group.build();
16
+ }
17
+ export async function* groupByKey(main, withSources, { directory = tmpdir() } = {}) {
18
+ const sources = Object.entries(withSources);
19
+ const total = [main, ...Object.values(withSources)].reduce((sum, source) => sum + source.size, 0);
20
+ if (total > MAX_GROUP_BY_BYTES)
21
+ throw new RangeError(`Split groupBy reads at most ${String(MAX_GROUP_BY_BYTES)} bytes of files, and the files have ${String(total)}`);
22
+ const joints = {
23
+ main: main.joint,
24
+ with: Object.fromEntries(sources.map(([name, source]) => [name, source.joint])),
25
+ };
26
+ const database = await SplitDatabaseWorker.open(directory);
27
+ try {
28
+ const records = database.recordsByKey(main.entries(), Object.fromEntries(sources.map(([name, source]) => [name, source.entries()])));
29
+ yield* toGroups(records, joints);
30
+ }
31
+ finally {
32
+ await database.close();
33
+ }
34
+ }
35
+ //# sourceMappingURL=group-by-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by-key.js","sourceRoot":"","sources":["../../src/helpers/group-by-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAGhC,OAAO,EAGL,YAAY,GACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAMtE,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,CAAA;AAEpC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,OAA+D,EAC/D,MAAmB;IAEnB,IAAI,KAA+B,CAAA;IAEnC,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QAExD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC;YAAE,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAEzE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC;IAED,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,CAC/B,IAAkB,EAClB,WAAyC,EACzC,EAAE,SAAS,GAAG,MAAM,EAAE,KAAwB,EAAE;IAEhD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CACxD,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,EAClC,CAAC,CACF,CAAA;IAED,IAAI,KAAK,GAAG,kBAAkB;QAC5B,MAAM,IAAI,UAAU,CAClB,+BAA+B,MAAM,CAAC,kBAAkB,CAAC,uCAAuC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChH,CAAA;IAEH,MAAM,MAAM,GAAgB;QAC1B,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,IAAI,EAAE,MAAM,CAAC,WAAW,CACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CACtD;KACF,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAE1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CACnC,IAAI,CAAC,OAAO,EAAE,EACd,MAAM,CAAC,WAAW,CAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAC1D,CACF,CAAA;QAED,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAClC,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;AACH,CAAC"}
@@ -1,10 +1,10 @@
1
- import { type ByteRecord, type FileSplitDelimiter } from './split-records.js';
1
+ import { type ByteRecord, type BinaryDelimiter } from './split-records.js';
2
2
  export type ByteSlice = {
3
3
  start: number;
4
4
  content: Buffer;
5
5
  };
6
6
  export type GroupRecordsOptions = {
7
- delimiter: FileSplitDelimiter;
7
+ delimiter: BinaryDelimiter;
8
8
  every?: number;
9
9
  encoding?: BufferEncoding;
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"group-records.d.ts","sourceRoot":"","sources":["../../src/helpers/group-records.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EAIxB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,EAAE,SAAS,EAAE,KAAS,EAAE,QAAiB,EAAE,EAAE,mBAAmB,GAC/D,cAAc,CAAC,SAAS,CAAC,CAW3B"}
1
+ {"version":3,"file":"group-records.d.ts","sourceRoot":"","sources":["../../src/helpers/group-records.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EAIrB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,EAAE,SAAS,EAAE,KAAS,EAAE,QAAiB,EAAE,EAAE,mBAAmB,GAC/D,cAAc,CAAC,SAAS,CAAC,CAO3B"}
@@ -1,9 +1,9 @@
1
- import { MAX_SLICE_BYTES, sliceTooLarge, toDelimiter, } from './split-records.js';
1
+ import { MAX_SLICE_BYTES, sliceTooLarge, toJoint, } from './split-records.js';
2
2
  export function groupRecords(source, { delimiter, every = 1, encoding = 'utf8' }) {
3
- const { bytes, keepPrevious, keepNext } = toDelimiter(delimiter, encoding);
3
+ const joint = toJoint(delimiter, encoding);
4
4
  if (!Number.isInteger(every) || every < 1)
5
5
  throw new TypeError('Split every must be a positive integer');
6
- return groups(source, bytes.subarray(keepPrevious, bytes.length - keepNext), every);
6
+ return groups(source, joint, every);
7
7
  }
8
8
  async function* groups(source, joint, every) {
9
9
  let parts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"group-records.js","sourceRoot":"","sources":["../../src/helpers/group-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EACf,aAAa,EACb,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAa3B,MAAM,UAAU,YAAY,CAC1B,MAAiC,EACjC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAuB;IAEhE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAA;IAE/D,OAAO,MAAM,CACX,MAAM,EACN,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,EACrD,KAAK,CACN,CAAA;AACH,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,MAAM,CACpB,MAAiC,EACjC,KAAa,EACb,KAAa;IAEb,IAAI,KAAK,GAAa,EAAE,CAAA;IACxB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,CAAC;YAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;aAChC,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEjB,WAAW,IAAI,KAAK,CAAC,MAAM,CAAA;QAC7B,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEjB,WAAW,IAAI,KAAK,CAAC,MAAM,CAAA;QAC7B,CAAC;QAED,IAAI,WAAW,GAAG,eAAe;YAAE,MAAM,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAE1E,IAAI,EAAE,KAAK,GAAG,KAAK;YAAE,SAAQ;QAE7B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAA;QAE3D,KAAK,GAAG,EAAE,CAAA;QACV,WAAW,GAAG,CAAC,CAAA;QACf,KAAK,GAAG,CAAC,CAAA;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"group-records.js","sourceRoot":"","sources":["../../src/helpers/group-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EACf,aAAa,EACb,OAAO,GACR,MAAM,oBAAoB,CAAA;AAa3B,MAAM,UAAU,YAAY,CAC1B,MAAiC,EACjC,EAAE,SAAS,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,MAAM,EAAuB;IAEhE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAA;IAE/D,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AACrC,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,MAAM,CACpB,MAAiC,EACjC,KAAa,EACb,KAAa;IAEb,IAAI,KAAK,GAAa,EAAE,CAAA;IACxB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,KAAK,CAAC;YAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;aAChC,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEjB,WAAW,IAAI,KAAK,CAAC,MAAM,CAAA;QAC7B,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAEjB,WAAW,IAAI,KAAK,CAAC,MAAM,CAAA;QAC7B,CAAC;QAED,IAAI,WAAW,GAAG,eAAe;YAAE,MAAM,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAE1E,IAAI,EAAE,KAAK,GAAG,KAAK;YAAE,SAAQ;QAE7B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAA;QAE3D,KAAK,GAAG,EAAE,CAAA;QACV,WAAW,GAAG,CAAC,CAAA;QACf,KAAK,GAAG,CAAC,CAAA;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAA;AAC5E,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const CHUNK_LENGTH: number;
2
+ export declare function inChunks<Row extends {
3
+ text: string;
4
+ }>(rows: AsyncIterable<Row> | Iterable<Row>): AsyncGenerator<Row[]>;
5
+ //# sourceMappingURL=in-chunks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-chunks.d.ts","sourceRoot":"","sources":["../../src/helpers/in-chunks.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,QAAY,CAAA;AAErC,wBAAuB,QAAQ,CAAC,GAAG,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1D,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GACvC,cAAc,CAAC,GAAG,EAAE,CAAC,CAiBvB"}
@@ -0,0 +1,17 @@
1
+ export const CHUNK_LENGTH = 64 * 1024;
2
+ export async function* inChunks(rows) {
3
+ let chunk = [];
4
+ let length = 0;
5
+ for await (const row of rows) {
6
+ chunk.push(row);
7
+ length += row.text.length;
8
+ if (length < CHUNK_LENGTH)
9
+ continue;
10
+ yield chunk;
11
+ chunk = [];
12
+ length = 0;
13
+ }
14
+ if (chunk.length > 0)
15
+ yield chunk;
16
+ }
17
+ //# sourceMappingURL=in-chunks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-chunks.js","sourceRoot":"","sources":["../../src/helpers/in-chunks.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAA;AAErC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,QAAQ,CAC7B,IAAwC;IAExC,IAAI,KAAK,GAAU,EAAE,CAAA;IACrB,IAAI,MAAM,GAAG,CAAC,CAAA;IAEd,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAA;QAEzB,IAAI,MAAM,GAAG,YAAY;YAAE,SAAQ;QAEnC,MAAM,KAAK,CAAA;QAEX,KAAK,GAAG,EAAE,CAAA;QACV,MAAM,GAAG,CAAC,CAAA;IACZ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,KAAK,CAAA;AACnC,CAAC"}
@@ -1,4 +1,4 @@
1
- export type FileSplitDelimiter = {
1
+ export type BinaryDelimiter = {
2
2
  value: string;
3
3
  keep?: {
4
4
  previous?: number;
@@ -14,7 +14,7 @@ export type ByteRecord = {
14
14
  pieces: Buffer[];
15
15
  };
16
16
  export type SplitRecordsOptions = {
17
- delimiter: FileSplitDelimiter;
17
+ delimiter: BinaryDelimiter;
18
18
  trim?: ByteTrim;
19
19
  encoding?: BufferEncoding;
20
20
  };
@@ -24,7 +24,8 @@ export type ByteDelimiter = {
24
24
  keepPrevious: number;
25
25
  keepNext: number;
26
26
  };
27
- export declare function toDelimiter({ value, keep }: FileSplitDelimiter, encoding: BufferEncoding): ByteDelimiter;
27
+ export declare function toDelimiter({ value, keep }: BinaryDelimiter, encoding: BufferEncoding): ByteDelimiter;
28
+ export declare function toJoint(delimiter: BinaryDelimiter, encoding: BufferEncoding): Buffer;
28
29
  export declare function sliceTooLarge(start: number, sizeInBytes: number): RangeError;
29
30
  export declare function splitRecords(source: AsyncIterable<Buffer>, { delimiter, trim, encoding }: SplitRecordsOptions): AsyncGenerator<ByteRecord>;
30
31
  //# sourceMappingURL=split-records.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"split-records.d.ts","sourceRoot":"","sources":["../../src/helpers/split-records.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,kBAAkB,CAAA;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,eAAe,QAAkB,CAAA;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,WAAW,CACzB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,kBAAkB,EACnC,QAAQ,EAAE,cAAc,GACvB,aAAa,CAiBf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAI/D;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE,mBAAmB,GAC1D,cAAc,CAAC,UAAU,CAAC,CAkB5B"}
1
+ {"version":3,"file":"split-records.d.ts","sourceRoot":"","sources":["../../src/helpers/split-records.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,eAAe,QAAkB,CAAA;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAgB,WAAW,CACzB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe,EAChC,QAAQ,EAAE,cAAc,GACvB,aAAa,CAiBf;AAED,wBAAgB,OAAO,CACrB,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,cAAc,GACvB,MAAM,CAIR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAI/D;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE,mBAAmB,GAC1D,cAAc,CAAC,UAAU,CAAC,CAkB5B"}