@okrapdf/cli 0.2.11 → 0.2.12
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 +27 -38
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +25 -4
- package/dist/cli.js.map +1 -1
- package/dist/cli.test.d.ts +2 -0
- package/dist/cli.test.d.ts.map +1 -0
- package/dist/cli.test.js +35 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +5 -5
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/docs.js +3 -3
- package/dist/commands/docs.js.map +1 -1
- package/dist/commands/entities.js +3 -3
- package/dist/commands/entities.js.map +1 -1
- package/dist/commands/exit-codes.d.ts +6 -0
- package/dist/commands/exit-codes.d.ts.map +1 -0
- package/dist/commands/exit-codes.js +51 -0
- package/dist/commands/exit-codes.js.map +1 -0
- package/dist/commands/exit-codes.test.d.ts +2 -0
- package/dist/commands/exit-codes.test.d.ts.map +1 -0
- package/dist/commands/exit-codes.test.js +20 -0
- package/dist/commands/exit-codes.test.js.map +1 -0
- package/dist/commands/jobs.js +4 -4
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/logs.js +4 -4
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/processors.js +5 -5
- package/dist/commands/processors.js.map +1 -1
- package/dist/commands/providers.js +3 -3
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/query.d.ts +13 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +213 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +4 -12
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/schema.d.ts +6 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +117 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/schema.test.d.ts +2 -0
- package/dist/commands/schema.test.d.ts.map +1 -0
- package/dist/commands/schema.test.js +23 -0
- package/dist/commands/schema.test.js.map +1 -0
- package/dist/commands/shortcuts.d.ts.map +1 -1
- package/dist/commands/shortcuts.js +39 -26
- package/dist/commands/shortcuts.js.map +1 -1
- package/dist/commands/step.d.ts +17 -0
- package/dist/commands/step.d.ts.map +1 -0
- package/dist/commands/step.js +212 -0
- package/dist/commands/step.js.map +1 -0
- package/dist/commands/tables.js +2 -2
- package/dist/commands/tables.js.map +1 -1
- package/dist/commands/templates.js +7 -7
- package/dist/commands/templates.js.map +1 -1
- package/dist/commands/toc.d.ts +12 -0
- package/dist/commands/toc.d.ts.map +1 -0
- package/dist/commands/toc.js +129 -0
- package/dist/commands/toc.js.map +1 -0
- package/dist/commands/workflow.d.ts +18 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +340 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/index.js +0 -0
- package/dist/lib/cache.d.ts +91 -0
- package/dist/lib/cache.d.ts.map +1 -0
- package/dist/lib/cache.js +307 -0
- package/dist/lib/cache.js.map +1 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +4 -1
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/config.d.ts +5 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +11 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/dom-emitter.d.ts +14 -0
- package/dist/lib/dom-emitter.d.ts.map +1 -0
- package/dist/lib/dom-emitter.js +66 -0
- package/dist/lib/dom-emitter.js.map +1 -0
- package/dist/lib/dom-ops.d.ts +55 -0
- package/dist/lib/dom-ops.d.ts.map +1 -0
- package/dist/lib/dom-ops.js +93 -0
- package/dist/lib/dom-ops.js.map +1 -0
- package/dist/lib/output.d.ts +4 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +15 -0
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/pdfquery-adapter.d.ts +43 -0
- package/dist/lib/pdfquery-adapter.d.ts.map +1 -0
- package/dist/lib/pdfquery-adapter.js +82 -0
- package/dist/lib/pdfquery-adapter.js.map +1 -0
- package/dist/lib/pdfquery.d.ts +57 -0
- package/dist/lib/pdfquery.d.ts.map +1 -0
- package/dist/lib/pdfquery.js +101 -0
- package/dist/lib/pdfquery.js.map +1 -0
- package/dist/lib/progress.d.ts.map +1 -1
- package/dist/lib/progress.js +15 -5
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/runtime.d.ts +10 -0
- package/dist/lib/runtime.d.ts.map +1 -0
- package/dist/lib/runtime.js +37 -0
- package/dist/lib/runtime.js.map +1 -0
- package/dist/lib/sinks/file.d.ts +8 -0
- package/dist/lib/sinks/file.d.ts.map +1 -0
- package/dist/lib/sinks/file.js +30 -0
- package/dist/lib/sinks/file.js.map +1 -0
- package/dist/lib/sinks/index.d.ts +6 -0
- package/dist/lib/sinks/index.d.ts.map +1 -0
- package/dist/lib/sinks/index.js +30 -0
- package/dist/lib/sinks/index.js.map +1 -0
- package/dist/lib/sinks/partykit.d.ts +14 -0
- package/dist/lib/sinks/partykit.d.ts.map +1 -0
- package/dist/lib/sinks/partykit.js +124 -0
- package/dist/lib/sinks/partykit.js.map +1 -0
- package/dist/lib/sinks/stdout.d.ts +6 -0
- package/dist/lib/sinks/stdout.d.ts.map +1 -0
- package/dist/lib/sinks/stdout.js +9 -0
- package/dist/lib/sinks/stdout.js.map +1 -0
- package/dist/lib/validator.d.ts +58 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +181 -0
- package/dist/lib/validator.js.map +1 -0
- package/package.json +8 -9
- package/LICENSE +0 -21
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM Operations for streaming document extraction
|
|
3
|
+
*
|
|
4
|
+
* Generic tree mutations (like React's virtual DOM) that can be
|
|
5
|
+
* transformed to any target format (PartyKit JdomPatch, NDJSON, etc.)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Convert a DomOp to JdomPatch format
|
|
9
|
+
*
|
|
10
|
+
* Note: This is a simplified conversion that assumes a flat node structure.
|
|
11
|
+
* For nested trees, path resolution would need access to the full tree state.
|
|
12
|
+
*/
|
|
13
|
+
export function domOpToJdomPatch(op) {
|
|
14
|
+
switch (op.op) {
|
|
15
|
+
case 'ADD_NODE':
|
|
16
|
+
return [{
|
|
17
|
+
op: 'add',
|
|
18
|
+
path: ['children', op.index ?? -1], // -1 = append
|
|
19
|
+
value: domNodeToJdom(op.node),
|
|
20
|
+
}];
|
|
21
|
+
case 'REMOVE_NODE':
|
|
22
|
+
return [{
|
|
23
|
+
op: 'remove',
|
|
24
|
+
path: ['children', op.nodeId], // Simplified - actual impl needs index lookup
|
|
25
|
+
}];
|
|
26
|
+
case 'UPDATE_NODE':
|
|
27
|
+
const patches = [];
|
|
28
|
+
if (op.patch.text !== undefined) {
|
|
29
|
+
patches.push({
|
|
30
|
+
op: 'replace',
|
|
31
|
+
path: [op.nodeId, 'textContent'],
|
|
32
|
+
value: op.patch.text,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (op.patch.attrs) {
|
|
36
|
+
for (const [key, value] of Object.entries(op.patch.attrs)) {
|
|
37
|
+
patches.push({
|
|
38
|
+
op: 'replace',
|
|
39
|
+
path: [op.nodeId, 'attributes', key],
|
|
40
|
+
value,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return patches;
|
|
45
|
+
case 'SET_ATTR':
|
|
46
|
+
return [{
|
|
47
|
+
op: 'replace',
|
|
48
|
+
path: [op.nodeId, 'attributes', op.key],
|
|
49
|
+
value: op.value,
|
|
50
|
+
}];
|
|
51
|
+
case 'SET_TEXT':
|
|
52
|
+
return [{
|
|
53
|
+
op: 'replace',
|
|
54
|
+
path: [op.nodeId, 'textContent'],
|
|
55
|
+
value: op.text,
|
|
56
|
+
}];
|
|
57
|
+
default:
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Convert DomNode to Jdom format
|
|
63
|
+
*/
|
|
64
|
+
function domNodeToJdom(node) {
|
|
65
|
+
return {
|
|
66
|
+
id: node.id,
|
|
67
|
+
type: node.type,
|
|
68
|
+
tagName: nodeTypeToTagName(node.type),
|
|
69
|
+
page: node.attrs?.page ?? 0,
|
|
70
|
+
textContent: node.text ?? null,
|
|
71
|
+
attributes: node.attrs ?? {},
|
|
72
|
+
children: node.children?.map(domNodeToJdom) ?? [],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Map node type to HTML-like tag name
|
|
77
|
+
*/
|
|
78
|
+
function nodeTypeToTagName(type) {
|
|
79
|
+
const tagMap = {
|
|
80
|
+
'document': 'article',
|
|
81
|
+
'page': 'section',
|
|
82
|
+
'table': 'table',
|
|
83
|
+
'figure': 'figure',
|
|
84
|
+
'paragraph': 'p',
|
|
85
|
+
'heading': 'h1',
|
|
86
|
+
'footnote': 'aside',
|
|
87
|
+
'list': 'ul',
|
|
88
|
+
'list-item': 'li',
|
|
89
|
+
'ocr-block': 'div',
|
|
90
|
+
};
|
|
91
|
+
return tagMap[type] ?? 'div';
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=dom-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-ops.js","sourceRoot":"","sources":["../../src/lib/dom-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/output.d.ts
CHANGED
|
@@ -57,6 +57,10 @@ export declare function warn(message: string): void;
|
|
|
57
57
|
* Print an info message
|
|
58
58
|
*/
|
|
59
59
|
export declare function info(message: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Print a verbose diagnostic message to stderr.
|
|
62
|
+
*/
|
|
63
|
+
export declare function verbose(message: string): void;
|
|
60
64
|
/**
|
|
61
65
|
* Format file size in human readable format
|
|
62
66
|
*/
|
package/dist/lib/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEpC;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1D,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAK9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,EACvD,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1C,MAAM,CAgBR;AAYD;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,EACzD,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1D,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,EAC5D,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,GAC1C,MAAM,CAiBR;AAgCD;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG7C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG1C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAG7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAa3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBlD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAenD"}
|
package/dist/lib/output.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import Table from 'cli-table3';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
+
import { isQuietMode, isVerboseMode } from './runtime.js';
|
|
6
7
|
/**
|
|
7
8
|
* Format data based on the output format
|
|
8
9
|
*/
|
|
@@ -126,6 +127,8 @@ function formatValue(value) {
|
|
|
126
127
|
* Print a success message
|
|
127
128
|
*/
|
|
128
129
|
export function success(message) {
|
|
130
|
+
if (isQuietMode())
|
|
131
|
+
return;
|
|
129
132
|
console.log(chalk.green('✓'), message);
|
|
130
133
|
}
|
|
131
134
|
/**
|
|
@@ -138,14 +141,26 @@ export function error(message) {
|
|
|
138
141
|
* Print a warning message
|
|
139
142
|
*/
|
|
140
143
|
export function warn(message) {
|
|
144
|
+
if (isQuietMode())
|
|
145
|
+
return;
|
|
141
146
|
console.warn(chalk.yellow('!'), message);
|
|
142
147
|
}
|
|
143
148
|
/**
|
|
144
149
|
* Print an info message
|
|
145
150
|
*/
|
|
146
151
|
export function info(message) {
|
|
152
|
+
if (isQuietMode())
|
|
153
|
+
return;
|
|
147
154
|
console.log(chalk.blue('ℹ'), message);
|
|
148
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Print a verbose diagnostic message to stderr.
|
|
158
|
+
*/
|
|
159
|
+
export function verbose(message) {
|
|
160
|
+
if (!isVerboseMode() || isQuietMode())
|
|
161
|
+
return;
|
|
162
|
+
console.error(chalk.dim(message));
|
|
163
|
+
}
|
|
149
164
|
/**
|
|
150
165
|
* Format file size in human readable format
|
|
151
166
|
*/
|
package/dist/lib/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pdfquery Integration — OkraPDF CLI → pdfquery Session API
|
|
3
|
+
*
|
|
4
|
+
* This is the app-layer boundary. OkraPDF-specific types (JobResults, TableResult)
|
|
5
|
+
* get converted to Tags here. pdfquery only receives Tags.
|
|
6
|
+
*
|
|
7
|
+
* Uses lazy imports so `pdfquery` is only loaded when `okra query` runs —
|
|
8
|
+
* all other CLI commands stay unblocked even if pdfquery has issues.
|
|
9
|
+
*/
|
|
10
|
+
import type { JobResults } from '../types.js';
|
|
11
|
+
export type { QueryResult, Tag as PdfQueryTag, BBox as PdfQueryBBox } from 'pdfquery';
|
|
12
|
+
type BBox = {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
18
|
+
type Tag = {
|
|
19
|
+
id: string;
|
|
20
|
+
type: string;
|
|
21
|
+
page: number;
|
|
22
|
+
bbox: BBox;
|
|
23
|
+
text?: string;
|
|
24
|
+
attrs?: Record<string, unknown>;
|
|
25
|
+
};
|
|
26
|
+
/** Convert OkraPDF job results to Tags */
|
|
27
|
+
export declare function jobResultsToTags(jobResults: JobResults): Tag[];
|
|
28
|
+
/** Create a pdfquery session from OkraPDF job results */
|
|
29
|
+
export declare function createSessionFromJob(jobResults: JobResults): Promise<any>;
|
|
30
|
+
export declare function formatAsMarkdown(queryResult: any): string;
|
|
31
|
+
export declare function formatAsEntities(queryResult: any): any[];
|
|
32
|
+
export declare function formatWithStats(queryResult: any): {
|
|
33
|
+
entities: any[];
|
|
34
|
+
stats: {
|
|
35
|
+
total: number;
|
|
36
|
+
verified: number;
|
|
37
|
+
flagged: number;
|
|
38
|
+
pending: number;
|
|
39
|
+
score: number;
|
|
40
|
+
avgConfidence: number;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=pdfquery-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfquery-adapter.d.ts","sourceRoot":"","sources":["../../src/lib/pdfquery-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9C,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AAMtF,KAAK,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAYpE,KAAK,GAAG,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,GAAG,EAAE,CAsB9D;AAMD,yDAAyD;AACzD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,UAAU,gBAIhE;AAMD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,GAAG,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,EAAE,CAExD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,GAAG,GAAG;IACjD,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAeA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pdfquery Integration — OkraPDF CLI → pdfquery Session API
|
|
3
|
+
*
|
|
4
|
+
* This is the app-layer boundary. OkraPDF-specific types (JobResults, TableResult)
|
|
5
|
+
* get converted to Tags here. pdfquery only receives Tags.
|
|
6
|
+
*
|
|
7
|
+
* Uses lazy imports so `pdfquery` is only loaded when `okra query` runs —
|
|
8
|
+
* all other CLI commands stay unblocked even if pdfquery has issues.
|
|
9
|
+
*/
|
|
10
|
+
// Lazy-loaded module reference
|
|
11
|
+
let _pdfquery = null;
|
|
12
|
+
async function getPdfquery() {
|
|
13
|
+
if (!_pdfquery) {
|
|
14
|
+
_pdfquery = await import('pdfquery');
|
|
15
|
+
}
|
|
16
|
+
return _pdfquery;
|
|
17
|
+
}
|
|
18
|
+
/** Convert corner-format bbox to Tag bbox */
|
|
19
|
+
function bboxFromCorners(b) {
|
|
20
|
+
return {
|
|
21
|
+
x: b.xmin,
|
|
22
|
+
y: b.ymin,
|
|
23
|
+
width: b.xmax - b.xmin,
|
|
24
|
+
height: b.ymax - b.ymin,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Convert OkraPDF job results to Tags */
|
|
28
|
+
export function jobResultsToTags(jobResults) {
|
|
29
|
+
const tags = [];
|
|
30
|
+
if (jobResults.tables?.length) {
|
|
31
|
+
for (const table of jobResults.tables) {
|
|
32
|
+
tags.push({
|
|
33
|
+
id: table.id,
|
|
34
|
+
type: 'table',
|
|
35
|
+
page: table.page_number,
|
|
36
|
+
bbox: table.bbox
|
|
37
|
+
? bboxFromCorners(table.bbox)
|
|
38
|
+
: { x: 0, y: 0, width: 1, height: 1 },
|
|
39
|
+
text: table.content_markdown,
|
|
40
|
+
attrs: {
|
|
41
|
+
confidence: table.confidence ?? 0.9,
|
|
42
|
+
verificationStatus: 'pending',
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return tags;
|
|
48
|
+
}
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Session Factory (async — lazy loads pdfquery)
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/** Create a pdfquery session from OkraPDF job results */
|
|
53
|
+
export async function createSessionFromJob(jobResults) {
|
|
54
|
+
const pdfquery = await getPdfquery();
|
|
55
|
+
const tags = jobResultsToTags(jobResults);
|
|
56
|
+
return pdfquery.default.ready({ tags });
|
|
57
|
+
}
|
|
58
|
+
// ============================================================================
|
|
59
|
+
// Format Helpers (operate on QueryResult — lazy loaded)
|
|
60
|
+
// ============================================================================
|
|
61
|
+
export function formatAsMarkdown(queryResult) {
|
|
62
|
+
return queryResult.html();
|
|
63
|
+
}
|
|
64
|
+
export function formatAsEntities(queryResult) {
|
|
65
|
+
return queryResult.toArray();
|
|
66
|
+
}
|
|
67
|
+
export function formatWithStats(queryResult) {
|
|
68
|
+
const entities = queryResult.toArray();
|
|
69
|
+
const stats = queryResult.stats();
|
|
70
|
+
return {
|
|
71
|
+
entities,
|
|
72
|
+
stats: {
|
|
73
|
+
total: stats.total,
|
|
74
|
+
verified: stats.verified,
|
|
75
|
+
flagged: stats.flagged,
|
|
76
|
+
pending: stats.pending,
|
|
77
|
+
score: stats.score,
|
|
78
|
+
avgConfidence: stats.avgConfidence ?? 0,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=pdfquery-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfquery-adapter.js","sourceRoot":"","sources":["../../src/lib/pdfquery-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,+BAA+B;AAC/B,IAAI,SAAS,GAAQ,IAAI,CAAC;AAE1B,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,6CAA6C;AAC7C,SAAS,eAAe,CAAC,CAA6D;IACpF,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,IAAI;QACT,CAAC,EAAE,CAAC,CAAC,IAAI;QACT,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;QACtB,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI;KACxB,CAAC;AACJ,CAAC;AAWD,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,MAAM,IAAI,GAAU,EAAE,CAAC;IAEvB,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK,CAAC,WAAW;gBACvB,IAAI,EAAE,KAAK,CAAC,IAAI;oBACd,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,gBAAgB;gBAC5B,KAAK,EAAE;oBACL,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG;oBACnC,kBAAkB,EAAE,SAAS;iBAC9B;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAsB;IAC/D,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,+EAA+E;AAC/E,wDAAwD;AACxD,+EAA+E;AAE/E,MAAM,UAAU,gBAAgB,CAAC,WAAgB;IAC/C,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAgB;IAC/C,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAgB;IAW9C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IAElC,OAAO;QACL,QAAQ;QACR,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;SACxC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pdfquery Integration Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around existing pdfquery library - DO NOT reimplement
|
|
5
|
+
* Converts OkraPDF API job results to VirtualDoc format for jQuery-style queries
|
|
6
|
+
*/
|
|
7
|
+
import { type VirtualDoc, type QueryEngine, type QueryResult, type QueryConfig, type QueryResponse } from 'pdfquery';
|
|
8
|
+
import type { JobResults } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Build VirtualDoc from OkraPDF job results
|
|
11
|
+
*
|
|
12
|
+
* Converts API response format to pdfquery compiler input
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildVirtualDocFromJob(jobResults: JobResults): VirtualDoc;
|
|
15
|
+
/**
|
|
16
|
+
* Create query engine from job results
|
|
17
|
+
*
|
|
18
|
+
* Convenience function that builds VirtualDoc and creates query engine
|
|
19
|
+
*/
|
|
20
|
+
export declare function createQueryEngineFromJob(jobResults: JobResults): QueryEngine;
|
|
21
|
+
/**
|
|
22
|
+
* Execute a query config against job results
|
|
23
|
+
*
|
|
24
|
+
* Uses pdfquery's executeQuery for config-based queries
|
|
25
|
+
*/
|
|
26
|
+
export declare function executeJobQuery(jobResults: JobResults, config: QueryConfig): QueryResponse;
|
|
27
|
+
/**
|
|
28
|
+
* Format query result as markdown
|
|
29
|
+
*
|
|
30
|
+
* Uses pdfquery's built-in .html() method which returns markdown-like HTML
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatAsMarkdown(queryResult: QueryResult): string;
|
|
33
|
+
/**
|
|
34
|
+
* Format query result as JSON entities
|
|
35
|
+
*
|
|
36
|
+
* Uses pdfquery's built-in .toArray() method
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatAsEntities(queryResult: QueryResult): any[];
|
|
39
|
+
/**
|
|
40
|
+
* Format query result with statistics
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatWithStats(queryResult: QueryResult): {
|
|
43
|
+
entities: any[];
|
|
44
|
+
stats: {
|
|
45
|
+
total: number;
|
|
46
|
+
verified: number;
|
|
47
|
+
flagged: number;
|
|
48
|
+
pending: number;
|
|
49
|
+
score: number;
|
|
50
|
+
avgConfidence: number;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Re-export pdfquery types and functions for convenience
|
|
55
|
+
*/
|
|
56
|
+
export { createQueryEngine, executeQuery, type QueryEngine, type QueryResult, type QueryConfig, type QueryResponse, type VirtualDoc, } from 'pdfquery';
|
|
57
|
+
//# sourceMappingURL=pdfquery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfquery.d.ts","sourceRoot":"","sources":["../../src/lib/pdfquery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAE3D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAmCzE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,aAAa,CAG1F;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,GAAG,EAAE,CAEhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG;IACzD,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAeA;AAED;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pdfquery Integration Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around existing pdfquery library - DO NOT reimplement
|
|
5
|
+
* Converts OkraPDF API job results to VirtualDoc format for jQuery-style queries
|
|
6
|
+
*/
|
|
7
|
+
import { DocCompiler, createQueryEngine, executeQuery, } from 'pdfquery';
|
|
8
|
+
/**
|
|
9
|
+
* Build VirtualDoc from OkraPDF job results
|
|
10
|
+
*
|
|
11
|
+
* Converts API response format to pdfquery compiler input
|
|
12
|
+
*/
|
|
13
|
+
export function buildVirtualDocFromJob(jobResults) {
|
|
14
|
+
const compiler = new DocCompiler({
|
|
15
|
+
documentId: jobResults.job_id,
|
|
16
|
+
fileName: jobResults.filename,
|
|
17
|
+
autoDetectTypes: true,
|
|
18
|
+
});
|
|
19
|
+
// Add tables
|
|
20
|
+
if (jobResults.tables && jobResults.tables.length > 0) {
|
|
21
|
+
const tables = jobResults.tables.map((table) => ({
|
|
22
|
+
id: table.id,
|
|
23
|
+
page_number: table.page_number,
|
|
24
|
+
markdown: table.content_markdown, // Note: field name is 'markdown' not 'content_markdown'
|
|
25
|
+
bbox: table.bbox ? {
|
|
26
|
+
xmin: table.bbox.xmin,
|
|
27
|
+
ymin: table.bbox.ymin,
|
|
28
|
+
xmax: table.bbox.xmax,
|
|
29
|
+
ymax: table.bbox.ymax,
|
|
30
|
+
} : { xmin: 0, ymin: 0, xmax: 1, ymax: 1 },
|
|
31
|
+
confidence: table.confidence ?? 0.9,
|
|
32
|
+
verification_status: 'pending',
|
|
33
|
+
verified_by: null,
|
|
34
|
+
verified_at: null,
|
|
35
|
+
}));
|
|
36
|
+
compiler.addTables(tables);
|
|
37
|
+
}
|
|
38
|
+
// Add pages (text content)
|
|
39
|
+
if (jobResults.pages && jobResults.pages.length > 0) {
|
|
40
|
+
// For now, we'll skip OCR blocks since we have tables
|
|
41
|
+
// Can add OCR block support later if needed
|
|
42
|
+
}
|
|
43
|
+
return compiler.compile();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Create query engine from job results
|
|
47
|
+
*
|
|
48
|
+
* Convenience function that builds VirtualDoc and creates query engine
|
|
49
|
+
*/
|
|
50
|
+
export function createQueryEngineFromJob(jobResults) {
|
|
51
|
+
const doc = buildVirtualDocFromJob(jobResults);
|
|
52
|
+
return createQueryEngine(doc);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Execute a query config against job results
|
|
56
|
+
*
|
|
57
|
+
* Uses pdfquery's executeQuery for config-based queries
|
|
58
|
+
*/
|
|
59
|
+
export function executeJobQuery(jobResults, config) {
|
|
60
|
+
const doc = buildVirtualDocFromJob(jobResults);
|
|
61
|
+
return executeQuery(doc, config);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Format query result as markdown
|
|
65
|
+
*
|
|
66
|
+
* Uses pdfquery's built-in .html() method which returns markdown-like HTML
|
|
67
|
+
*/
|
|
68
|
+
export function formatAsMarkdown(queryResult) {
|
|
69
|
+
return queryResult.html();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Format query result as JSON entities
|
|
73
|
+
*
|
|
74
|
+
* Uses pdfquery's built-in .toArray() method
|
|
75
|
+
*/
|
|
76
|
+
export function formatAsEntities(queryResult) {
|
|
77
|
+
return queryResult.toArray();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Format query result with statistics
|
|
81
|
+
*/
|
|
82
|
+
export function formatWithStats(queryResult) {
|
|
83
|
+
const entities = queryResult.toArray();
|
|
84
|
+
const stats = queryResult.stats();
|
|
85
|
+
return {
|
|
86
|
+
entities,
|
|
87
|
+
stats: {
|
|
88
|
+
total: stats.total,
|
|
89
|
+
verified: stats.verified,
|
|
90
|
+
flagged: stats.flagged,
|
|
91
|
+
pending: stats.pending,
|
|
92
|
+
score: stats.score,
|
|
93
|
+
avgConfidence: stats.avgConfidence ?? 0,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Re-export pdfquery types and functions for convenience
|
|
99
|
+
*/
|
|
100
|
+
export { createQueryEngine, executeQuery, } from 'pdfquery';
|
|
101
|
+
//# sourceMappingURL=pdfquery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfquery.js","sourceRoot":"","sources":["../../src/lib/pdfquery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAIpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAK/C;AAMD;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,EAAE,MAAM,EAAE,KAAK,SAAa,EAAE,KAAK,SAAK;IAMzD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK7B,SAAS,CAAC,MAAM,SAAI,GAAG,IAAI;IAK3B,OAAO,CAAC,MAAM;IAWd,QAAQ,IAAI,IAAI;CAKjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,EACpF,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,OAAO,CAAC,CAAC,CAAC,CAoCZ;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
package/dist/lib/progress.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import ora from 'ora';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
+
import { isQuietMode } from './runtime.js';
|
|
6
7
|
/**
|
|
7
8
|
* Create a spinner
|
|
8
9
|
*/
|
|
@@ -12,10 +13,16 @@ export function createSpinner(text) {
|
|
|
12
13
|
spinner: 'dots',
|
|
13
14
|
});
|
|
14
15
|
}
|
|
16
|
+
function shouldUseSpinner() {
|
|
17
|
+
return !isQuietMode() && Boolean(process.stderr.isTTY);
|
|
18
|
+
}
|
|
15
19
|
/**
|
|
16
20
|
* Run an async operation with a spinner
|
|
17
21
|
*/
|
|
18
22
|
export async function withSpinner(text, operation, successText) {
|
|
23
|
+
if (!shouldUseSpinner()) {
|
|
24
|
+
return operation();
|
|
25
|
+
}
|
|
19
26
|
const spinner = createSpinner(text);
|
|
20
27
|
spinner.start();
|
|
21
28
|
try {
|
|
@@ -69,14 +76,15 @@ export class ProgressBar {
|
|
|
69
76
|
export async function pollWithProgress(pollFn, options = {}) {
|
|
70
77
|
const { interval = 2000, timeout = 300000, label = 'Processing' } = options;
|
|
71
78
|
const startTime = Date.now();
|
|
72
|
-
const
|
|
73
|
-
spinner
|
|
79
|
+
const useSpinner = shouldUseSpinner();
|
|
80
|
+
const spinner = useSpinner ? createSpinner(label) : null;
|
|
81
|
+
spinner?.start();
|
|
74
82
|
let lastProgress = 0;
|
|
75
83
|
let lastTotal = 0;
|
|
76
84
|
while (true) {
|
|
77
85
|
const elapsed = Date.now() - startTime;
|
|
78
86
|
if (elapsed > timeout) {
|
|
79
|
-
spinner
|
|
87
|
+
spinner?.fail('Timeout waiting for completion');
|
|
80
88
|
throw new Error('Operation timed out');
|
|
81
89
|
}
|
|
82
90
|
const result = await pollFn();
|
|
@@ -84,10 +92,12 @@ export async function pollWithProgress(pollFn, options = {}) {
|
|
|
84
92
|
lastProgress = result.progress;
|
|
85
93
|
lastTotal = result.total;
|
|
86
94
|
const percent = lastTotal > 0 ? Math.round((lastProgress / lastTotal) * 100) : 0;
|
|
87
|
-
spinner
|
|
95
|
+
if (spinner) {
|
|
96
|
+
spinner.text = `${label}: ${percent}% (${lastProgress}/${lastTotal} pages)`;
|
|
97
|
+
}
|
|
88
98
|
}
|
|
89
99
|
if (result.done) {
|
|
90
|
-
spinner
|
|
100
|
+
spinner?.succeed(`${label}: Complete`);
|
|
91
101
|
return result.data;
|
|
92
102
|
}
|
|
93
103
|
await sleep(interval);
|
package/dist/lib/progress.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,GAAiB,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime helpers for global CLI behavior.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Bootstrap environment variables from global CLI flags before command defaults are read.
|
|
6
|
+
*/
|
|
7
|
+
export declare function bootstrapGlobalEnv(argv: string[]): void;
|
|
8
|
+
export declare function isQuietMode(): boolean;
|
|
9
|
+
export declare function isVerboseMode(): boolean;
|
|
10
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgBvD;AAED,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime helpers for global CLI behavior.
|
|
3
|
+
*/
|
|
4
|
+
function envEnabled(value) {
|
|
5
|
+
if (!value)
|
|
6
|
+
return false;
|
|
7
|
+
const normalized = value.trim().toLowerCase();
|
|
8
|
+
return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
|
|
9
|
+
}
|
|
10
|
+
function shortFlagPresent(arg, flag) {
|
|
11
|
+
return arg.startsWith('-') && !arg.startsWith('--') && arg.slice(1).includes(flag);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Bootstrap environment variables from global CLI flags before command defaults are read.
|
|
15
|
+
*/
|
|
16
|
+
export function bootstrapGlobalEnv(argv) {
|
|
17
|
+
for (const arg of argv) {
|
|
18
|
+
if (arg === '--')
|
|
19
|
+
break;
|
|
20
|
+
if (arg === '--json') {
|
|
21
|
+
process.env.OKRA_OUTPUT_FORMAT = 'json';
|
|
22
|
+
}
|
|
23
|
+
if (arg === '--quiet' || shortFlagPresent(arg, 'q')) {
|
|
24
|
+
process.env.OKRA_QUIET = '1';
|
|
25
|
+
}
|
|
26
|
+
if (arg === '--verbose' || shortFlagPresent(arg, 'V')) {
|
|
27
|
+
process.env.OKRA_VERBOSE = '1';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function isQuietMode() {
|
|
32
|
+
return envEnabled(process.env.OKRA_QUIET);
|
|
33
|
+
}
|
|
34
|
+
export function isVerboseMode() {
|
|
35
|
+
return envEnabled(process.env.OKRA_VERBOSE) || envEnabled(process.env.DEBUG);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,SAAS,UAAU,CAAC,KAAyB;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY;IACjD,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QAExB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAC1C,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC"}
|