@t4h.framework/fs 0.12.2 → 0.13.1

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 (43) hide show
  1. package/.ai/skills/framework-fs/SKILL.md +25 -26
  2. package/.ai/skills/framework-fs-split/SKILL.md +40 -54
  3. package/.ai/skills/framework-fs-write/SKILL.md +13 -15
  4. package/CHANGELOG.md +44 -0
  5. package/README.md +14 -41
  6. package/dist/activities/FileJoinActivity.d.ts +3 -3
  7. package/dist/activities/FileJoinActivity.d.ts.map +1 -1
  8. package/dist/activities/FileJoinActivity.js.map +1 -1
  9. package/dist/activities/FileReadActivity.d.ts +1 -0
  10. package/dist/activities/FileReadActivity.d.ts.map +1 -1
  11. package/dist/activities/FileReadActivity.js +24 -19
  12. package/dist/activities/FileReadActivity.js.map +1 -1
  13. package/dist/activities/FileSplitActivity.d.ts +8 -15
  14. package/dist/activities/FileSplitActivity.d.ts.map +1 -1
  15. package/dist/activities/FileSplitActivity.js +18 -32
  16. package/dist/activities/FileSplitActivity.js.map +1 -1
  17. package/dist/constants/operations.d.ts +1 -1
  18. package/dist/constants/operations.d.ts.map +1 -1
  19. package/dist/constants/operations.js.map +1 -1
  20. package/dist/fs.d.ts +1 -1
  21. package/dist/fs.d.ts.map +1 -1
  22. package/dist/fs.js +0 -1
  23. package/dist/fs.js.map +1 -1
  24. package/dist/helpers/CSV.d.ts.map +1 -1
  25. package/dist/helpers/CSV.js +3 -1
  26. package/dist/helpers/CSV.js.map +1 -1
  27. package/dist/helpers/group-records.d.ts +12 -0
  28. package/dist/helpers/group-records.d.ts.map +1 -0
  29. package/dist/helpers/group-records.js +36 -0
  30. package/dist/helpers/group-records.js.map +1 -0
  31. package/dist/helpers/split-records.d.ts +30 -0
  32. package/dist/helpers/split-records.d.ts.map +1 -0
  33. package/dist/helpers/split-records.js +122 -0
  34. package/dist/helpers/split-records.js.map +1 -0
  35. package/package.json +4 -3
  36. package/dist/helpers/ByteDelimiterScanner.d.ts +0 -50
  37. package/dist/helpers/ByteDelimiterScanner.d.ts.map +0 -1
  38. package/dist/helpers/ByteDelimiterScanner.js +0 -103
  39. package/dist/helpers/ByteDelimiterScanner.js.map +0 -1
  40. package/dist/helpers/ByteRecordFilter.d.ts +0 -32
  41. package/dist/helpers/ByteRecordFilter.d.ts.map +0 -1
  42. package/dist/helpers/ByteRecordFilter.js +0 -89
  43. package/dist/helpers/ByteRecordFilter.js.map +0 -1
@@ -18,7 +18,7 @@ export class FileReadActivity extends SyncActivity {
18
18
  if (range.end > binary.contentLength)
19
19
  throw new TypeError('Read range must not exceed the binary length');
20
20
  if (length > FILE_READ_MAX_BYTES)
21
- throw new RangeError(`Length ${length} exceeded max ${FILE_READ_MAX_BYTES}`);
21
+ throw new RangeError(`Length ${String(length)} exceeded max ${String(FILE_READ_MAX_BYTES)}`);
22
22
  const slice = await this.slice(binary, range, encoding);
23
23
  if (slice)
24
24
  return (await buffer(await slice.stream())).toString(encoding);
@@ -36,30 +36,35 @@ export class FileReadActivity extends SyncActivity {
36
36
  }
37
37
  }
38
38
  async window(readable, range) {
39
- const chunks = [];
40
- let position = 0;
41
- let size = 0;
39
+ let collected;
42
40
  try {
43
- for await (const data of readable) {
44
- const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data);
45
- const chunkStart = position;
46
- position += chunk.length;
47
- if (position <= range.start)
48
- continue;
49
- const from = Math.max(range.start - chunkStart, 0);
50
- const to = Math.min(range.end - chunkStart, chunk.length);
51
- chunks.push(chunk.subarray(from, to));
52
- size += to - from;
53
- if (position >= range.end)
54
- break;
55
- }
41
+ collected = await this.collect(readable, range);
56
42
  }
57
43
  finally {
58
44
  readable.destroy();
59
45
  }
60
- if (size < range.end - range.start)
46
+ if (collected.size < range.end - range.start)
61
47
  throw new RangeError('Binary stream ended before the read window was filled');
62
- return Buffer.concat(chunks);
48
+ return Buffer.concat(collected.chunks);
49
+ }
50
+ async collect(readable, range) {
51
+ const chunks = [];
52
+ let position = 0;
53
+ let size = 0;
54
+ for await (const data of readable) {
55
+ const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data);
56
+ const chunkStart = position;
57
+ position += chunk.length;
58
+ if (position <= range.start)
59
+ continue;
60
+ const from = Math.max(range.start - chunkStart, 0);
61
+ const to = Math.min(range.end - chunkStart, chunk.length);
62
+ chunks.push(chunk.subarray(from, to));
63
+ size += to - from;
64
+ if (position >= range.end)
65
+ break;
66
+ }
67
+ return { chunks, size };
63
68
  }
64
69
  }
65
70
  export async function read(binary, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"FileReadActivity.js","sourceRoot":"","sources":["../../src/activities/FileReadActivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileReadActivity.js","sourceRoot":"","sources":["../../src/activities/FileReadActivity.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { AsyncActivity, type Binary, type Workflow, WorkflowBatchCollectionRef, workflowBatchSchema } from '@t4h.framework/core';
2
- import { type ByteTrim, type FileSplitDelimiter } from '../helpers/ByteDelimiterScanner.js';
1
+ import { AsyncActivity, type AsyncActivityResult, type Binary, type AnyWorkflow, WorkflowBatchCollectionRef, workflowBatchSchema } from '@t4h.framework/core';
2
+ import { type ByteTrim, type FileSplitDelimiter } from '../helpers/split-records.js';
3
3
  type FileSplitWhereOperators = {
4
4
  $eq?: string;
5
5
  $ne?: string;
@@ -25,7 +25,6 @@ export type FileSplitOptions = {
25
25
  trim?: ByteTrim;
26
26
  skipEmpty?: boolean;
27
27
  encoding?: BufferEncoding;
28
- inlineMaxBytes?: number;
29
28
  timeoutInMs?: number;
30
29
  };
31
30
  export type FileSplitActivityInput = {
@@ -37,22 +36,16 @@ export type FileSplitBatch = {
37
36
  batch: string;
38
37
  count: number;
39
38
  };
40
- export declare class FileSplitActivity extends AsyncActivity<readonly [
41
- binary: Binary,
42
- workflow: Workflow<any, any>,
43
- options: FileSplitOptions
44
- ], FileSplitActivityInput, FileSplitBatch, WorkflowBatchCollectionRef, FileSplitActivityInput, typeof workflowBatchSchema> {
39
+ export declare class FileSplitActivity extends AsyncActivity<readonly [binary: Binary, workflow: AnyWorkflow, options: FileSplitOptions], FileSplitActivityInput, FileSplitBatch, WorkflowBatchCollectionRef, FileSplitActivityInput, typeof workflowBatchSchema> {
45
40
  private readonly claims;
46
- toInput(binary: Binary, workflow: Workflow<any, any>, options: FileSplitOptions): FileSplitActivityInput;
47
- bootstrap({ binary, workflow, options, }: FileSplitActivityInput): Promise<import("@t4h.framework/core").AsyncActivityResultPending<FileSplitActivityInput, import("typebox").TObject<{
48
- batch: import("typebox").TString;
49
- count: import("typebox").TNumber;
50
- }>> | import("@t4h.framework/core").AsyncActivityResultFulfilled<FileSplitBatch | undefined>>;
51
- private toFilter;
41
+ toInput(binary: Binary, workflow: AnyWorkflow, options: FileSplitOptions): FileSplitActivityInput;
42
+ bootstrap({ binary, workflow, options, }: FileSplitActivityInput): Promise<AsyncActivityResult<FileSplitActivityInput, typeof workflowBatchSchema, FileSplitBatch>>;
43
+ private slices;
44
+ private filter;
52
45
  advance(payload: FileSplitBatch): import("@t4h.framework/core").AsyncActivityResultFulfilled<FileSplitBatch | undefined>;
53
46
  toOutput(output: FileSplitBatch): WorkflowBatchCollectionRef;
54
47
  }
55
- export declare function split(binary: Binary, workflow: Workflow<any, any>, options: FileSplitOptions): Promise<WorkflowBatchCollectionRef>;
48
+ export declare function split(binary: Binary, workflow: AnyWorkflow, options: FileSplitOptions): Promise<WorkflowBatchCollectionRef>;
56
49
  export declare namespace Split {
57
50
  const line: (value?: string) => FileSplitDelimiter;
58
51
  const char: (value: string, keep?: FileSplitDelimiter["keep"]) => FileSplitDelimiter;
@@ -1 +1 @@
1
- {"version":3,"file":"FileSplitActivity.d.ts","sourceRoot":"","sources":["../../src/activities/FileSplitActivity.ts"],"names":[],"mappings":"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"}
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,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,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;IAsBZ,SAAS,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,OAAO,GACR,EAAE,sBAAsB,GAAG,OAAO,CACjC,mBAAmB,CACjB,sBAAsB,EACtB,OAAO,mBAAmB,EAC1B,cAAc,CACf,CACF;YAgBc,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,WAAW,EACrB,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,14 +1,11 @@
1
- import { pipeline } from 'node:stream';
2
1
  import { AsyncActivity, Claim, History, WorkflowBatchCollectionRef, WorkflowBatchQuery, WorkflowClaim, workflowBatchSchema, } from '@t4h.framework/core';
3
2
  import sift from 'sift';
4
3
  import { STRING_OPERATIONS } from '../constants/operations.js';
5
- import { FileSystemClaim } from '../FileSystemClaim.js';
6
- import { ByteDelimiterScanner, } from '../helpers/ByteDelimiterScanner.js';
7
- import { ByteRecordFilter } from '../helpers/ByteRecordFilter.js';
4
+ import { groupRecords } from '../helpers/group-records.js';
5
+ import { splitRecords, } from '../helpers/split-records.js';
8
6
  const { createQueryTester } = sift;
9
7
  export class FileSplitActivity extends AsyncActivity {
10
8
  claims = new Claim({
11
- fs: FileSystemClaim,
12
9
  workflow: WorkflowClaim,
13
10
  });
14
11
  toInput(binary, workflow, options) {
@@ -23,25 +20,7 @@ export class FileSplitActivity extends AsyncActivity {
23
20
  return { binary, workflow: workflow.id, options };
24
21
  }
25
22
  async bootstrap({ binary, workflow, options, }) {
26
- const encoding = options.encoding ?? 'utf8';
27
- const filter = this.toFilter(options.where, options);
28
- const scanner = new ByteDelimiterScanner({
29
- delimiter: options.delimiter,
30
- every: options.every,
31
- trim: filter ? undefined : options.trim,
32
- skipEmpty: options.skipEmpty,
33
- encoding,
34
- inlineMaxBytes: options.inlineMaxBytes,
35
- });
36
- const source = await binary.stream();
37
- const durable = await this.claims.fs.write(`split/${this.id}`, filter
38
- ? pipeline(source, filter, scanner, () => { })
39
- : source.pipe(scanner));
40
- const kept = filter && filter.accepted === 0 ? [] : scanner.slices;
41
- const slices = await Promise.all(kept.map(({ start, end, content }) => content
42
- ? content.toString(encoding)
43
- : this.claims.fs.slice(durable, { start, end }, encoding)));
44
- const batch = await this.claims.workflow.startMany(workflow, slices);
23
+ const batch = await this.claims.workflow.startMany(workflow, this.slices(binary, options));
45
24
  if (batch.count === 0)
46
25
  return this.done({ batch: batch.id, count: 0 });
47
26
  return this.pending({
@@ -51,18 +30,25 @@ export class FileSplitActivity extends AsyncActivity {
51
30
  }),
52
31
  });
53
32
  }
54
- toFilter(where, { delimiter, trim, encoding = 'utf8' }) {
55
- if (!where)
56
- return;
57
- const matches = createQueryTester(where, {
58
- operations: STRING_OPERATIONS,
59
- });
60
- return new ByteRecordFilter({
33
+ async *slices(binary, { delimiter, every, where, trim, skipEmpty = true, ...options }) {
34
+ const encoding = options.encoding ?? 'utf8';
35
+ const records = splitRecords(await binary.stream(), {
61
36
  delimiter,
62
37
  trim,
63
38
  encoding,
64
- accept: record => matches(record.toString(encoding)),
65
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;
66
52
  }
67
53
  advance(payload) {
68
54
  return this.done(payload);
@@ -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":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAoBxD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAgBvE,CAAA"}
@@ -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,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,GAA8C;IAC1E,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"}
package/dist/fs.d.ts CHANGED
@@ -4,5 +4,5 @@ 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 * from './helpers/ByteDelimiterScanner.js';
7
+ export type { ByteTrim, FileSplitDelimiter } from './helpers/split-records.js';
8
8
  //# 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,cAAc,mCAAmC,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,QAAQ,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA"}
package/dist/fs.js CHANGED
@@ -4,5 +4,4 @@ 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 * from './helpers/ByteDelimiterScanner.js';
8
7
  //# sourceMappingURL=fs.js.map
package/dist/fs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","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,cAAc,mCAAmC,CAAA"}
1
+ {"version":3,"file":"fs.js","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"}
@@ -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;AAUvD,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;IA4B9D,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"}
@@ -3,7 +3,9 @@ export var CSV;
3
3
  function escape(value, delimiter) {
4
4
  if (value === null || typeof value === 'undefined')
5
5
  return '';
6
- const text = typeof value === 'object' ? JSON.stringify(value) : String(value);
6
+ const text = typeof value === 'object'
7
+ ? JSON.stringify(value)
8
+ : String(value);
7
9
  const includeQuotes = [delimiter, '"', '\n', '\r'];
8
10
  if (includeQuotes.some(test => text.includes(test)))
9
11
  return `"${text.replaceAll('"', '""')}"`;
@@ -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":"AAcA,MAAM,KAAW,GAAG,CAiEnB;AAjED,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;YACvB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,KAAkB,CAAC,CAAA;QAEhC,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,EAjEgB,GAAG,KAAH,GAAG,QAiEnB"}
@@ -0,0 +1,12 @@
1
+ import { type ByteRecord, type FileSplitDelimiter } from './split-records.js';
2
+ export type ByteSlice = {
3
+ start: number;
4
+ content: Buffer;
5
+ };
6
+ export type GroupRecordsOptions = {
7
+ delimiter: FileSplitDelimiter;
8
+ every?: number;
9
+ encoding?: BufferEncoding;
10
+ };
11
+ export declare function groupRecords(source: AsyncIterable<ByteRecord>, { delimiter, every, encoding }: GroupRecordsOptions): AsyncGenerator<ByteSlice>;
12
+ //# sourceMappingURL=group-records.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,36 @@
1
+ import { MAX_SLICE_BYTES, sliceTooLarge, toDelimiter, } from './split-records.js';
2
+ export function groupRecords(source, { delimiter, every = 1, encoding = 'utf8' }) {
3
+ const { bytes, keepPrevious, keepNext } = toDelimiter(delimiter, encoding);
4
+ if (!Number.isInteger(every) || every < 1)
5
+ throw new TypeError('Split every must be a positive integer');
6
+ return groups(source, bytes.subarray(keepPrevious, bytes.length - keepNext), every);
7
+ }
8
+ async function* groups(source, joint, every) {
9
+ let parts = [];
10
+ let sizeInBytes = 0;
11
+ let count = 0;
12
+ let start = 0;
13
+ for await (const record of source) {
14
+ if (count === 0)
15
+ start = record.start;
16
+ else {
17
+ parts.push(joint);
18
+ sizeInBytes += joint.length;
19
+ }
20
+ for (const piece of record.pieces) {
21
+ parts.push(piece);
22
+ sizeInBytes += piece.length;
23
+ }
24
+ if (sizeInBytes > MAX_SLICE_BYTES)
25
+ throw sliceTooLarge(start, sizeInBytes);
26
+ if (++count < every)
27
+ continue;
28
+ yield { start, content: Buffer.concat(parts, sizeInBytes) };
29
+ parts = [];
30
+ sizeInBytes = 0;
31
+ count = 0;
32
+ }
33
+ if (count > 0)
34
+ yield { start, content: Buffer.concat(parts, sizeInBytes) };
35
+ }
36
+ //# sourceMappingURL=group-records.js.map
@@ -0,0 +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"}
@@ -0,0 +1,30 @@
1
+ export type FileSplitDelimiter = {
2
+ value: string;
3
+ keep?: {
4
+ previous?: number;
5
+ next?: number;
6
+ };
7
+ };
8
+ export type ByteTrim = {
9
+ start?: number;
10
+ end?: number;
11
+ };
12
+ export type ByteRecord = {
13
+ start: number;
14
+ pieces: Buffer[];
15
+ };
16
+ export type SplitRecordsOptions = {
17
+ delimiter: FileSplitDelimiter;
18
+ trim?: ByteTrim;
19
+ encoding?: BufferEncoding;
20
+ };
21
+ export declare const MAX_SLICE_BYTES: number;
22
+ export type ByteDelimiter = {
23
+ bytes: Buffer;
24
+ keepPrevious: number;
25
+ keepNext: number;
26
+ };
27
+ export declare function toDelimiter({ value, keep }: FileSplitDelimiter, encoding: BufferEncoding): ByteDelimiter;
28
+ export declare function sliceTooLarge(start: number, sizeInBytes: number): RangeError;
29
+ export declare function splitRecords(source: AsyncIterable<Buffer>, { delimiter, trim, encoding }: SplitRecordsOptions): AsyncGenerator<ByteRecord>;
30
+ //# sourceMappingURL=split-records.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,122 @@
1
+ export const MAX_SLICE_BYTES = 3 * 1024 * 1024;
2
+ export function toDelimiter({ value, keep }, encoding) {
3
+ const bytes = Buffer.from(value, encoding);
4
+ const keepPrevious = keep?.previous ?? 0;
5
+ const keepNext = keep?.next ?? 0;
6
+ if (bytes.length === 0)
7
+ throw new TypeError('Split delimiter must not be empty');
8
+ if (keepPrevious < 0 || keepNext < 0)
9
+ throw new TypeError('Split delimiter keep sizes must not be negative');
10
+ if (keepPrevious + keepNext > bytes.length)
11
+ throw new TypeError('Split delimiter keep sizes must not exceed the delimiter length');
12
+ return { bytes, keepPrevious, keepNext };
13
+ }
14
+ export function sliceTooLarge(start, sizeInBytes) {
15
+ 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
+ }
17
+ export function splitRecords(source, { delimiter, trim, encoding = 'utf8' }) {
18
+ const cut = toDelimiter(delimiter, encoding);
19
+ const trimStart = trim?.start ?? 0;
20
+ const trimEnd = trim?.end ?? 0;
21
+ if (!Number.isInteger(trimStart) ||
22
+ !Number.isInteger(trimEnd) ||
23
+ trimStart < 0 ||
24
+ trimEnd < 0)
25
+ throw new TypeError('Split trim sizes must be non-negative integers');
26
+ return records(skipLast(skipFirst(source, trimStart), trimEnd), cut, trimStart);
27
+ }
28
+ async function* records(source, { bytes, keepPrevious, keepNext }, offset) {
29
+ let pieces = [];
30
+ let start = offset;
31
+ let consumed = offset;
32
+ let searchAt = offset;
33
+ 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
+ for await (const chunk of source) {
55
+ if (chunk.length === 0)
56
+ continue;
57
+ const chunkAt = consumed;
58
+ pieces.push(chunk);
59
+ 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
+ }
71
+ for (const at of matches) {
72
+ const record = { start, pieces: take(at + keepPrevious) };
73
+ take(at + bytes.length - keepNext);
74
+ yield record;
75
+ }
76
+ if (consumed - start > MAX_SLICE_BYTES)
77
+ throw sliceTooLarge(start, consumed - start);
78
+ tail =
79
+ chunk.length >= bytes.length - 1
80
+ ? Buffer.from(chunk.subarray(chunk.length - (bytes.length - 1)))
81
+ : Buffer.concat([tail, chunk]).subarray(-(bytes.length - 1));
82
+ }
83
+ const last = { start, pieces };
84
+ pieces = [];
85
+ yield last;
86
+ }
87
+ async function* skipFirst(source, count) {
88
+ let remaining = count;
89
+ for await (const chunk of source) {
90
+ if (remaining >= chunk.length) {
91
+ remaining -= chunk.length;
92
+ continue;
93
+ }
94
+ yield chunk.subarray(remaining);
95
+ remaining = 0;
96
+ }
97
+ }
98
+ async function* skipLast(source, count) {
99
+ if (count === 0) {
100
+ yield* source;
101
+ return;
102
+ }
103
+ let tail = Buffer.alloc(0);
104
+ for await (const chunk of source) {
105
+ const buffer = Buffer.concat([tail, chunk]);
106
+ const end = Math.max(0, buffer.length - count);
107
+ if (end > 0)
108
+ yield buffer.subarray(0, end);
109
+ tail = buffer.subarray(end);
110
+ }
111
+ }
112
+ function straddlingMatch(tail, chunk, chunkAt, bytes, searchAt) {
113
+ if (tail.length === 0)
114
+ return -1;
115
+ const probe = Buffer.concat([tail, chunk.subarray(0, bytes.length - 1)]);
116
+ const probeAt = chunkAt - tail.length;
117
+ const index = probe.indexOf(bytes, Math.max(0, searchAt - probeAt));
118
+ if (index === -1 || probeAt + index >= chunkAt)
119
+ return -1;
120
+ return probeAt + index;
121
+ }
122
+ //# sourceMappingURL=split-records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-records.js","sourceRoot":"","sources":["../../src/helpers/split-records.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t4h.framework/fs",
3
- "version": "0.12.2",
3
+ "version": "0.13.1",
4
4
  "description": "File system module for the T4H Framework",
5
5
  "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/fs",
6
6
  "bugs": "https://github.com/tech4humans-brasil/framework/issues",
@@ -26,13 +26,14 @@
26
26
  "scripts": {
27
27
  "build": "tsc --project tsconfig.build.json",
28
28
  "check-types": "tsc --noEmit",
29
- "lint": "eslint .",
29
+ "check-package": "publint --strict && attw --pack . --profile esm-only",
30
+ "lint": "eslint . --max-warnings 0",
30
31
  "prepublishOnly": "yarn build",
31
32
  "test": "vitest run",
32
33
  "test:watch": "vitest"
33
34
  },
34
35
  "devDependencies": {
35
- "@t4h.framework/core": "^0.18.0",
36
+ "@t4h.framework/core": "^0.20.0",
36
37
  "typescript": "^5.9.3",
37
38
  "vitest": "^4.0.18"
38
39
  },
@@ -1,50 +0,0 @@
1
- import { Transform, type TransformCallback } from 'node:stream';
2
- export type ByteRange = {
3
- start: number;
4
- end: number;
5
- };
6
- export type ByteSlice = ByteRange & {
7
- content?: Buffer;
8
- };
9
- export type FileSplitDelimiter = {
10
- value: string;
11
- keep?: {
12
- previous?: number;
13
- next?: number;
14
- };
15
- };
16
- export type ByteTrim = {
17
- start?: number;
18
- end?: number;
19
- };
20
- export type ByteDelimiterScannerOptions = {
21
- delimiter: FileSplitDelimiter;
22
- every?: number;
23
- trim?: ByteTrim;
24
- skipEmpty?: boolean;
25
- encoding?: BufferEncoding;
26
- inlineMaxBytes?: number;
27
- };
28
- export declare const DEFAULT_INLINE_MAX_BYTES: number;
29
- export declare class ByteDelimiterScanner extends Transform {
30
- readonly slices: ByteSlice[];
31
- private readonly delimiter;
32
- private readonly keepPrevious;
33
- private readonly keepNext;
34
- private readonly cutEvery;
35
- private readonly trimStart;
36
- private readonly trimEnd;
37
- private readonly skipEmpty;
38
- private readonly inlineMaxBytes;
39
- private pending;
40
- private pendingAt;
41
- private searchAt;
42
- private sliceStart;
43
- private matches;
44
- constructor({ delimiter, every, trim, skipEmpty, encoding, inlineMaxBytes, }: ByteDelimiterScannerOptions);
45
- _transform(chunk: Buffer, _encoding: BufferEncoding, callback: TransformCallback): void;
46
- _flush(callback: TransformCallback): void;
47
- private scan;
48
- private cut;
49
- }
50
- //# sourceMappingURL=ByteDelimiterScanner.d.ts.map