@etohq/workflows-input-dataset-pdf-builder 0.0.1-next-20260318155517

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.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @etohq/workflows-input-dataset-pdf-builder
2
+
3
+ Builder/draft model for creating `PdfExtractSpec` without asking users to write regex.
4
+
5
+ The intended UX is:
6
+
7
+ 1. Upload a PDF
8
+ 2. Show extracted text preview (line-numbered)
9
+ 3. User selects a representative row line
10
+ 4. UI tokenizes the line (after normalization) and lets the user pick token ranges as columns
11
+ 5. Builder compiles that draft into a canonical `PdfExtractSpec`
12
+ 6. Runtime previews structured records and import validation
13
+
14
+ ## API
15
+
16
+ ```ts
17
+ import { compilePdfExtractDraft } from "@etohq/workflows-input-dataset-pdf-builder"
18
+ ```
19
+
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=compile.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/compile.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const compile_1 = require("../compile");
4
+ describe("compilePdfExtractDraft", () => {
5
+ test("compiles token_columns draft into PdfExtractSpec", () => {
6
+ const compiled = (0, compile_1.compilePdfExtractDraft)({
7
+ type: "token_columns",
8
+ preprocess: [{ type: "normalize_whitespace" }],
9
+ line_filter: { pattern: "^\\d+\\s", flags: "" },
10
+ columns: [
11
+ { column: "Appnum", from: 1, to: 1 },
12
+ { column: "Surname", from: 2, to: 2 },
13
+ ],
14
+ });
15
+ expect(compiled.ok).toBe(true);
16
+ if (compiled.ok) {
17
+ expect(compiled.value.records.type).toBe("token_columns");
18
+ }
19
+ });
20
+ });
21
+ //# sourceMappingURL=compile.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.spec.js","sourceRoot":"","sources":["../../src/__tests__/compile.spec.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAA,gCAAsB,EAAC;YACtC,IAAI,EAAE,eAAe;YACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;YAC9C,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/C,OAAO,EAAE;gBACP,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;gBACpC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;aACtC;SACF,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tokenize.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/tokenize.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tokenize_1 = require("../tokenize");
4
+ describe("tokenizeLine", () => {
5
+ test("returns token spans after whitespace normalization", () => {
6
+ const res = (0, tokenize_1.tokenizeLine)(" 1 10053739GA MOWETTE RICHARD ", [
7
+ { type: "trim" },
8
+ { type: "normalize_whitespace" },
9
+ ]);
10
+ expect(res.status).toBe("valid");
11
+ expect(res.tokens.map((t) => t.token)).toEqual(["1", "10053739GA", "MOWETTE", "RICHARD"]);
12
+ expect(res.tokens[0].start).toBe(0);
13
+ expect(res.tokens[0].end).toBe(1);
14
+ });
15
+ });
16
+ //# sourceMappingURL=tokenize.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.spec.js","sourceRoot":"","sources":["../../src/__tests__/tokenize.spec.ts"],"names":[],"mappings":";;AAAA,0CAA0C;AAE1C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAG,IAAA,uBAAY,EAAC,wCAAwC,EAAE;YACjE,EAAE,IAAI,EAAE,MAAM,EAAE;YAChB,EAAE,IAAI,EAAE,sBAAsB,EAAE;SACjC,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QACzF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { CompilePdfExtractDraftResult, PdfExtractDraft } from "./model";
2
+ export declare function compilePdfExtractDraft(draft: PdfExtractDraft): CompilePdfExtractDraftResult;
3
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE5E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,4BAA4B,CAqB3F"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compilePdfExtractDraft = compilePdfExtractDraft;
4
+ function compilePdfExtractDraft(draft) {
5
+ if (draft.type === "token_columns") {
6
+ if (!draft.columns.length) {
7
+ return { ok: false, error: "At least one column is required" };
8
+ }
9
+ const spec = {
10
+ preprocess: draft.preprocess ?? null,
11
+ records: {
12
+ type: "token_columns",
13
+ line_filter: draft.line_filter ?? null,
14
+ columns: draft.columns.map((c) => ({
15
+ column: c.column,
16
+ from: c.from,
17
+ to: c.to ?? null,
18
+ })),
19
+ },
20
+ };
21
+ return { ok: true, value: spec };
22
+ }
23
+ return { ok: false, error: "Unsupported draft type" };
24
+ }
25
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":";;AAGA,wDAqBC;AArBD,SAAgB,sBAAsB,CAAC,KAAsB;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAA;QAChE,CAAC;QACD,MAAM,IAAI,GAAmB;YAC3B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,IAAI;YACpC,OAAO,EAAE;gBACP,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI;gBACtC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjC,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI;iBACjB,CAAC,CAAC;aACJ;SACF,CAAA;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAA;AACvD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./model";
2
+ export * from "./compile";
3
+ export * from "./tokenize";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./model"), exports);
18
+ __exportStar(require("./compile"), exports);
19
+ __exportStar(require("./tokenize"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,4CAAyB;AACzB,6CAA0B"}
@@ -0,0 +1,29 @@
1
+ import type { PdfExtractSpec, TextPreprocessSpec } from "@etohq/workflows-input-dataset";
2
+ /**
3
+ * Builder draft for a PDF extraction spec.
4
+ *
5
+ * This draft format is optimized for preview UX:
6
+ * - avoid user-written regex
7
+ * - represent column selection as token index ranges
8
+ */
9
+ export type PdfExtractDraft = {
10
+ type: "token_columns";
11
+ preprocess?: TextPreprocessSpec[] | null;
12
+ line_filter?: {
13
+ pattern: string;
14
+ flags?: string | null;
15
+ } | null;
16
+ columns: Array<{
17
+ column: string;
18
+ from: number;
19
+ to?: number | null;
20
+ }>;
21
+ };
22
+ export type CompilePdfExtractDraftResult = {
23
+ ok: true;
24
+ value: PdfExtractSpec;
25
+ } | {
26
+ ok: false;
27
+ error: string;
28
+ };
29
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAExF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,UAAU,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/D,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KACnB,CAAC,CAAA;CACH,CAAA;AAEL,MAAM,MAAM,4BAA4B,GACpC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA"}
package/dist/model.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { TextPreprocessSpec } from "@etohq/workflows-input-dataset";
2
+ import type { ValidationResult } from "@etohq/workflows-input-schema";
3
+ export type TokenSpan = {
4
+ token: string;
5
+ start: number;
6
+ end: number;
7
+ };
8
+ export type TokenizeLineResult = ValidationResult & {
9
+ line: string;
10
+ tokens: TokenSpan[];
11
+ };
12
+ export declare function tokenizeLine(line: string, preprocess?: TextPreprocessSpec[] | null): TokenizeLineResult;
13
+ //# sourceMappingURL=tokenize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../src/tokenize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEtF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG;IAClD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,EAAE,CAAA;CACpB,CAAA;AAgDD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,GAAG,kBAAkB,CA+BvG"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenizeLine = tokenizeLine;
4
+ function issue(code, message, path, severity = "error") {
5
+ return { code, message, path, severity };
6
+ }
7
+ function applyPreprocess(text, steps) {
8
+ const issues = [];
9
+ let out = text;
10
+ for (const [idx, step] of (steps ?? []).entries()) {
11
+ const path = ["preprocess", String(idx)];
12
+ if (step.type === "trim") {
13
+ out = out.trim();
14
+ continue;
15
+ }
16
+ if (step.type === "normalize_whitespace") {
17
+ // Keep newlines as-is; for line tokenization we expect a single line.
18
+ out = out.replace(/[ \t]+/g, " ");
19
+ continue;
20
+ }
21
+ if (step.type === "remove_empty_lines") {
22
+ // Not meaningful for single-line preview; ignore.
23
+ continue;
24
+ }
25
+ if (step.type === "remove_lines_matching") {
26
+ // Not meaningful for single-line preview; ignore.
27
+ continue;
28
+ }
29
+ if (step.type === "regex_replace") {
30
+ try {
31
+ const re = new RegExp(step.pattern, step.flags ?? "");
32
+ out = out.replace(re, step.replace_with);
33
+ }
34
+ catch {
35
+ issues.push(issue("preprocess", "Invalid regex_replace regex", [...path, "pattern"]));
36
+ }
37
+ continue;
38
+ }
39
+ }
40
+ return { text: out, issues };
41
+ }
42
+ function tokenizeLine(line, preprocess) {
43
+ const pre = applyPreprocess(line, preprocess);
44
+ const issues = [...pre.issues];
45
+ const tokens = [];
46
+ const s = pre.text;
47
+ let i = 0;
48
+ while (i < s.length) {
49
+ while (i < s.length && s[i] === " ") {
50
+ i++;
51
+ }
52
+ if (i >= s.length) {
53
+ break;
54
+ }
55
+ const start = i;
56
+ while (i < s.length && s[i] !== " ") {
57
+ i++;
58
+ }
59
+ const end = i;
60
+ tokens.push({ token: s.slice(start, end), start, end });
61
+ }
62
+ const hasErrors = issues.some((x) => x.severity === "error" || x.severity === undefined);
63
+ const hasWarnings = issues.some((x) => x.severity === "warning");
64
+ return {
65
+ status: hasErrors ? "invalid" : hasWarnings ? "warning" : "valid",
66
+ issues,
67
+ enriched_values: null,
68
+ line: pre.text,
69
+ tokens,
70
+ };
71
+ }
72
+ //# sourceMappingURL=tokenize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../src/tokenize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"root":["../src/compile.ts","../src/index.ts","../src/model.ts","../src/tokenize.ts","../src/__tests__/compile.spec.ts","../src/__tests__/tokenize.spec.ts"],"version":"5.8.3"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@etohq/workflows-input-dataset-pdf-builder",
3
+ "version": "0.0.1-next-20260318155517",
4
+ "description": "Builder/draft model + compilation for PdfExtractSpec (preview-first UX)",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "dependencies": {
18
+ "@etohq/workflows-input-dataset": "0.0.1-next-20260318155517",
19
+ "@etohq/workflows-input-schema": "0.0.1-next-20260318155517"
20
+ },
21
+ "devDependencies": {
22
+ "@types/node": "22.10.5",
23
+ "rimraf": "5.0.2",
24
+ "typescript": "5.8.3"
25
+ },
26
+ "scripts": {
27
+ "build": "rimraf dist && tsc --build",
28
+ "watch": "tsc --build --watch",
29
+ "test": "jest --runInBand --bail --passWithNoTests --forceExit -- src"
30
+ }
31
+ }