@t4h.framework/fs 0.5.0 → 0.6.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 (33) hide show
  1. package/.ai/skills/framework-fs/SKILL.md +18 -3
  2. package/.ai/skills/framework-fs-split/SKILL.md +255 -0
  3. package/README.md +184 -3
  4. package/dist/FileSystemClaim.d.ts +4 -0
  5. package/dist/FileSystemClaim.d.ts.map +1 -1
  6. package/dist/FileSystemClaim.js.map +1 -1
  7. package/dist/activities/FileJoinActivity.d.ts +39 -0
  8. package/dist/activities/FileJoinActivity.d.ts.map +1 -0
  9. package/dist/activities/FileJoinActivity.js +87 -0
  10. package/dist/activities/FileJoinActivity.js.map +1 -0
  11. package/dist/activities/FileSplitActivity.d.ts +30 -28
  12. package/dist/activities/FileSplitActivity.d.ts.map +1 -1
  13. package/dist/activities/FileSplitActivity.js +39 -34
  14. package/dist/activities/FileSplitActivity.js.map +1 -1
  15. package/dist/activities/__tests__/FileJoinActivity.spec.d.ts +2 -0
  16. package/dist/activities/__tests__/FileJoinActivity.spec.d.ts.map +1 -0
  17. package/dist/activities/__tests__/FileJoinActivity.spec.js +160 -0
  18. package/dist/activities/__tests__/FileJoinActivity.spec.js.map +1 -0
  19. package/dist/activities/__tests__/FileSplitActivity.spec.js +114 -132
  20. package/dist/activities/__tests__/FileSplitActivity.spec.js.map +1 -1
  21. package/dist/fs.d.ts +3 -0
  22. package/dist/fs.d.ts.map +1 -1
  23. package/dist/fs.js +3 -0
  24. package/dist/fs.js.map +1 -1
  25. package/dist/helpers/__tests__/byte-delimiter-scanner.spec.d.ts +2 -0
  26. package/dist/helpers/__tests__/byte-delimiter-scanner.spec.d.ts.map +1 -0
  27. package/dist/helpers/__tests__/byte-delimiter-scanner.spec.js +127 -0
  28. package/dist/helpers/__tests__/byte-delimiter-scanner.spec.js.map +1 -0
  29. package/dist/helpers/byte-delimiter-scanner.d.ts +36 -0
  30. package/dist/helpers/byte-delimiter-scanner.d.ts.map +1 -0
  31. package/dist/helpers/byte-delimiter-scanner.js +61 -0
  32. package/dist/helpers/byte-delimiter-scanner.js.map +1 -0
  33. package/package.json +8 -5
@@ -0,0 +1,61 @@
1
+ import { Transform } from 'node:stream';
2
+ export class ByteDelimiterScanner extends Transform {
3
+ ranges = [];
4
+ delimiter;
5
+ keepPrevious;
6
+ keepNext;
7
+ cutEvery;
8
+ skipEmpty;
9
+ pending = Buffer.alloc(0);
10
+ pendingAt = 0;
11
+ sliceStart = 0;
12
+ matches = 0;
13
+ constructor({ delimiter, every = 1, skipEmpty = true, encoding = 'utf8', }) {
14
+ super();
15
+ this.delimiter = Buffer.from(delimiter.value, encoding);
16
+ this.keepPrevious = delimiter.keep?.previous ?? 0;
17
+ this.keepNext = delimiter.keep?.next ?? 0;
18
+ this.cutEvery = every;
19
+ this.skipEmpty = skipEmpty;
20
+ if (this.delimiter.length === 0)
21
+ throw new TypeError('Split delimiter must not be empty');
22
+ if (this.keepPrevious < 0 || this.keepNext < 0)
23
+ throw new TypeError('Split delimiter keep sizes must not be negative');
24
+ if (this.keepPrevious + this.keepNext > this.delimiter.length)
25
+ throw new TypeError('Split delimiter keep sizes must not exceed the delimiter length');
26
+ if (!Number.isInteger(every) || every < 1)
27
+ throw new TypeError('Split every must be a positive integer');
28
+ }
29
+ _transform(chunk, _encoding, callback) {
30
+ this.scan(this.pending.length > 0 ? Buffer.concat([this.pending, chunk]) : chunk);
31
+ callback(null, chunk);
32
+ }
33
+ _flush(callback) {
34
+ this.cut(this.sliceStart, this.pendingAt + this.pending.length);
35
+ callback();
36
+ }
37
+ scan(buffer) {
38
+ let searchFrom = 0;
39
+ while (true) {
40
+ const index = buffer.indexOf(this.delimiter, searchFrom);
41
+ if (index === -1)
42
+ break;
43
+ const at = this.pendingAt + index;
44
+ searchFrom = index + this.delimiter.length;
45
+ this.matches += 1;
46
+ if (this.matches % this.cutEvery !== 0)
47
+ continue;
48
+ this.cut(this.sliceStart, at + this.keepPrevious);
49
+ this.sliceStart = at + this.delimiter.length - this.keepNext;
50
+ }
51
+ const tail = Math.max(searchFrom, buffer.length - (this.delimiter.length - 1));
52
+ this.pending = buffer.subarray(tail);
53
+ this.pendingAt += tail;
54
+ }
55
+ cut(start, end) {
56
+ if (this.skipEmpty && end <= start)
57
+ return;
58
+ this.ranges.push({ start, end });
59
+ }
60
+ }
61
+ //# sourceMappingURL=byte-delimiter-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byte-delimiter-scanner.js","sourceRoot":"","sources":["../../src/helpers/byte-delimiter-scanner.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.5.0",
3
+ "version": "0.6.0",
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",
@@ -27,14 +27,17 @@
27
27
  "build": "tsc --project tsconfig.build.json",
28
28
  "check-types": "tsc --noEmit",
29
29
  "lint": "eslint .",
30
- "prepublishOnly": "yarn build"
30
+ "prepublishOnly": "yarn build",
31
+ "test": "vitest run",
32
+ "test:watch": "vitest"
31
33
  },
32
34
  "devDependencies": {
33
- "@t4h.framework/core": "^0.8.0",
34
- "typescript": "^5.9.3"
35
+ "@t4h.framework/core": "^0.9.0",
36
+ "typescript": "^5.9.3",
37
+ "vitest": "^4.0.18"
35
38
  },
36
39
  "peerDependencies": {
37
- "@t4h.framework/core": "^0.8.0"
40
+ "@t4h.framework/core": "^0.9.0"
38
41
  },
39
42
  "packageManager": "yarn@4.12.0",
40
43
  "engines": {