@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 +19 -0
- package/dist/__tests__/compile.spec.d.ts +2 -0
- package/dist/__tests__/compile.spec.d.ts.map +1 -0
- package/dist/__tests__/compile.spec.js +21 -0
- package/dist/__tests__/compile.spec.js.map +1 -0
- package/dist/__tests__/tokenize.spec.d.ts +2 -0
- package/dist/__tests__/tokenize.spec.d.ts.map +1 -0
- package/dist/__tests__/tokenize.spec.js +16 -0
- package/dist/__tests__/tokenize.spec.js.map +1 -0
- package/dist/compile.d.ts +3 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +25 -0
- package/dist/compile.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +29 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +3 -0
- package/dist/model.js.map +1 -0
- package/dist/tokenize.d.ts +13 -0
- package/dist/tokenize.d.ts.map +1 -0
- package/dist/tokenize.js +72 -0
- package/dist/tokenize.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +31 -0
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/compile.js
ADDED
|
@@ -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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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"}
|
package/dist/model.d.ts
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/tokenize.js
ADDED
|
@@ -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
|
+
}
|