arek-e-docsnap 0.1.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.
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/dist/bin/cli.d.ts +14 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/cli/App.d.ts +15 -0
- package/dist/cli/App.d.ts.map +1 -0
- package/dist/cli/screens/ClassificationScreen.d.ts +13 -0
- package/dist/cli/screens/ClassificationScreen.d.ts.map +1 -0
- package/dist/cli/screens/CompleteScreen.d.ts +13 -0
- package/dist/cli/screens/CompleteScreen.d.ts.map +1 -0
- package/dist/cli/screens/PartnerSetupScreen.d.ts +8 -0
- package/dist/cli/screens/PartnerSetupScreen.d.ts.map +1 -0
- package/dist/cli/screens/SettlementPreviewScreen.d.ts +13 -0
- package/dist/cli/screens/SettlementPreviewScreen.d.ts.map +1 -0
- package/dist/cli/screens/TransactionReviewScreen.d.ts +13 -0
- package/dist/cli/screens/TransactionReviewScreen.d.ts.map +1 -0
- package/dist/cli/state.d.ts +79 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli.js +33723 -0
- package/dist/domain/errors.d.ts +70 -0
- package/dist/domain/errors.d.ts.map +1 -0
- package/dist/domain/models.d.ts +289 -0
- package/dist/domain/models.d.ts.map +1 -0
- package/dist/domain/settlement.d.ts +30 -0
- package/dist/domain/settlement.d.ts.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +312 -0
- package/dist/layers/config.d.ts +14 -0
- package/dist/layers/config.d.ts.map +1 -0
- package/dist/layers/filesystem.d.ts +16 -0
- package/dist/layers/filesystem.d.ts.map +1 -0
- package/dist/layers/logger.d.ts +16 -0
- package/dist/layers/logger.d.ts.map +1 -0
- package/dist/pdf.worker.mjs +28 -0
- package/dist/services/export.d.ts +56 -0
- package/dist/services/export.d.ts.map +1 -0
- package/dist/services/ocr-tesseract.d.ts +2 -0
- package/dist/services/ocr-tesseract.d.ts.map +1 -0
- package/dist/services/ocr.d.ts +32 -0
- package/dist/services/ocr.d.ts.map +1 -0
- package/dist/utils/compression.d.ts +31 -0
- package/dist/utils/compression.d.ts.map +1 -0
- package/dist/utils/console.d.ts +27 -0
- package/dist/utils/console.d.ts.map +1 -0
- package/dist/utils/progress.d.ts +30 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/transaction-parser.d.ts +41 -0
- package/dist/utils/transaction-parser.d.ts.map +1 -0
- package/package.json +95 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export Service
|
|
3
|
+
*
|
|
4
|
+
* Phase 4: Export expense data to multiple formats (Excel, CSV, JSON)
|
|
5
|
+
*/
|
|
6
|
+
import { Effect } from 'effect';
|
|
7
|
+
import { ExpenseItem, Partner, Settlement } from '../domain/models.js';
|
|
8
|
+
import { FileError } from '../domain/errors.js';
|
|
9
|
+
import { Logger } from '../layers/logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Export format options
|
|
12
|
+
*/
|
|
13
|
+
export type ExportFormat = 'xlsx' | 'csv' | 'json';
|
|
14
|
+
/**
|
|
15
|
+
* Export configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface ExportConfig {
|
|
18
|
+
format: ExportFormat;
|
|
19
|
+
outputPath: string;
|
|
20
|
+
includeSettlement?: boolean;
|
|
21
|
+
includeSummary?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Export data structure
|
|
25
|
+
*/
|
|
26
|
+
export interface ExportData {
|
|
27
|
+
items: ExpenseItem[];
|
|
28
|
+
partners: Partner[];
|
|
29
|
+
settlements: Settlement[];
|
|
30
|
+
currency: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Export to Excel with formatting
|
|
34
|
+
*
|
|
35
|
+
* Phase 4.2: Creates a beautifully formatted Excel workbook
|
|
36
|
+
*/
|
|
37
|
+
export declare function exportToExcel(data: ExportData, outputPath: string): Effect.Effect<string, FileError, Logger>;
|
|
38
|
+
/**
|
|
39
|
+
* Export to CSV
|
|
40
|
+
*
|
|
41
|
+
* Phase 4.3: Simple CSV format
|
|
42
|
+
*/
|
|
43
|
+
export declare function exportToCSV(data: ExportData, outputPath: string): Effect.Effect<string, FileError, Logger>;
|
|
44
|
+
/**
|
|
45
|
+
* Export to JSON
|
|
46
|
+
*
|
|
47
|
+
* Phase 4.3: Structured JSON format
|
|
48
|
+
*/
|
|
49
|
+
export declare function exportToJSON(data: ExportData, outputPath: string): Effect.Effect<string, FileError, Logger>;
|
|
50
|
+
/**
|
|
51
|
+
* Main export function - handles all formats
|
|
52
|
+
*
|
|
53
|
+
* Phase 4.3: Multi-format export
|
|
54
|
+
*/
|
|
55
|
+
export declare function exportExpenses(config: ExportConfig, data: ExportData): Effect.Effect<string, FileError, Logger>;
|
|
56
|
+
//# sourceMappingURL=export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/services/export.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAmM1C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAwC1C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CA4D1C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,UAAU,GACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAmB1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocr-tesseract.d.ts","sourceRoot":"","sources":["../../src/services/ocr-tesseract.ts"],"names":[],"mappings":"AA0FA,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDlF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCR Service (Phase 2.1-2.6)
|
|
3
|
+
*
|
|
4
|
+
* Extracts text from PDF files and parses into transactions
|
|
5
|
+
* Uses pdf-parse for simple text-based PDFs
|
|
6
|
+
*/
|
|
7
|
+
import { Effect } from 'effect';
|
|
8
|
+
import { OCRError } from '../domain/errors';
|
|
9
|
+
import { Logger } from '../layers/logger';
|
|
10
|
+
import { type ParseResult, type ParserConfig } from '../utils/transaction-parser';
|
|
11
|
+
/**
|
|
12
|
+
* OCR Configuration
|
|
13
|
+
*/
|
|
14
|
+
export interface OCRConfig extends ParserConfig {
|
|
15
|
+
/** OCR engine to use */
|
|
16
|
+
engine?: 'pdf-parse' | 'tesseract';
|
|
17
|
+
/** Minimum OCR confidence (0-1) */
|
|
18
|
+
minOcrConfidence?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Process a PDF buffer and extract transactions
|
|
22
|
+
*
|
|
23
|
+
* This is the main entry point for Phase 2 OCR functionality.
|
|
24
|
+
* It extracts text from PDF and then parses transactions.
|
|
25
|
+
*/
|
|
26
|
+
export declare function processPdfToTransactions(pdfBuffer: Buffer, config?: OCRConfig): Effect.Effect<ParseResult, OCRError, Logger>;
|
|
27
|
+
/**
|
|
28
|
+
* Legacy function for backward compatibility
|
|
29
|
+
* @deprecated Use processPdfToTransactions instead
|
|
30
|
+
*/
|
|
31
|
+
export declare function processPdf(pdfBuffer: Buffer): Promise<string[]>;
|
|
32
|
+
//# sourceMappingURL=ocr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocr.d.ts","sourceRoot":"","sources":["../../src/services/ocr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAErG;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,wBAAwB;IACxB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACnC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,SAAc,GACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAsB9C;AAkDD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAKrE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Compression Utilities
|
|
3
|
+
*
|
|
4
|
+
* Compress and decompress files using Bun's built-in streams
|
|
5
|
+
*/
|
|
6
|
+
export type CompressionFormat = 'gzip' | 'deflate';
|
|
7
|
+
/**
|
|
8
|
+
* Compress a file using native streams
|
|
9
|
+
*/
|
|
10
|
+
export declare function compressFile(inputPath: string, outputPath: string, format?: CompressionFormat): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Decompress a file using native streams
|
|
13
|
+
*/
|
|
14
|
+
export declare function decompressFile(inputPath: string, outputPath: string, format?: CompressionFormat): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Compress data in memory using Web Streams API
|
|
17
|
+
*/
|
|
18
|
+
export declare function compressData(data: Buffer, format?: CompressionFormat): Promise<Buffer>;
|
|
19
|
+
/**
|
|
20
|
+
* Decompress data in memory using Web Streams API
|
|
21
|
+
*/
|
|
22
|
+
export declare function decompressData(data: Buffer, format?: CompressionFormat): Promise<Buffer>;
|
|
23
|
+
/**
|
|
24
|
+
* Get file size reduction ratio
|
|
25
|
+
*/
|
|
26
|
+
export declare function calculateCompressionRatio(originalSize: number, compressedSize: number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Get file size in bytes
|
|
29
|
+
*/
|
|
30
|
+
export declare function getFileSize(filePath: string): number;
|
|
31
|
+
//# sourceMappingURL=compression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/utils/compression.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,iBAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,iBAA0B,GACjC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,iBAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,iBAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBtG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Utilities
|
|
3
|
+
*
|
|
4
|
+
* Enhanced console utilities using Bun features
|
|
5
|
+
*/
|
|
6
|
+
export type LogLevel = 'info' | 'warn' | 'error' | 'success';
|
|
7
|
+
/**
|
|
8
|
+
* Format console output with emoji and colors
|
|
9
|
+
*/
|
|
10
|
+
export declare function log(level: LogLevel, message: string, data?: unknown): void;
|
|
11
|
+
/**
|
|
12
|
+
* Display an info message
|
|
13
|
+
*/
|
|
14
|
+
export declare const info: (message: string, data?: unknown) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Display a warning message
|
|
17
|
+
*/
|
|
18
|
+
export declare const warn: (message: string, data?: unknown) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Display an error message
|
|
21
|
+
*/
|
|
22
|
+
export declare const error: (message: string, data?: unknown) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Display a success message
|
|
25
|
+
*/
|
|
26
|
+
export declare const success: (message: string, data?: unknown) => void;
|
|
27
|
+
//# sourceMappingURL=console.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAS7D;;GAEG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAI1E;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,SAA+B,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,SAA+B,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,SAAgC,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,EAAE,OAAO,OAAO,SAAkC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import cliProgress from 'cli-progress';
|
|
2
|
+
/**
|
|
3
|
+
* Progress Bar Utilities
|
|
4
|
+
*
|
|
5
|
+
* CLI progress bars for long-running operations
|
|
6
|
+
*/
|
|
7
|
+
export type ProgressOptions = {
|
|
8
|
+
total: number;
|
|
9
|
+
format?: string;
|
|
10
|
+
barCompleteString?: string;
|
|
11
|
+
barIncompleteString?: string;
|
|
12
|
+
width?: number;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Create a progress bar
|
|
16
|
+
*/
|
|
17
|
+
export declare function createProgressBar(options: ProgressOptions): cliProgress.SingleBar;
|
|
18
|
+
/**
|
|
19
|
+
* Update progress bar
|
|
20
|
+
*/
|
|
21
|
+
export declare function updateProgress(bar: cliProgress.SingleBar, current: number): void;
|
|
22
|
+
/**
|
|
23
|
+
* Complete progress bar
|
|
24
|
+
*/
|
|
25
|
+
export declare function completeProgress(bar: cliProgress.SingleBar): void;
|
|
26
|
+
/**
|
|
27
|
+
* Multi-bar progress for parallel operations
|
|
28
|
+
*/
|
|
29
|
+
export declare function createMultiBar(): cliProgress.MultiBar;
|
|
30
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AAEH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CAAC,SAAS,CAWjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,SAAS,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAAC,QAAQ,CAKrD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic Transaction Parser
|
|
3
|
+
*
|
|
4
|
+
* Phase 2.7: Parse OCR text into structured transactions
|
|
5
|
+
*
|
|
6
|
+
* This parser is designed to work with ANY invoice/receipt format,
|
|
7
|
+
* not just Amex statements. It uses multiple heuristic strategies
|
|
8
|
+
* to extract transaction data from unstructured text.
|
|
9
|
+
*/
|
|
10
|
+
import { Effect } from 'effect';
|
|
11
|
+
import { RawTransaction } from '../domain/models';
|
|
12
|
+
import { ParseError } from '../domain/errors';
|
|
13
|
+
import { Logger } from '../layers/logger';
|
|
14
|
+
/**
|
|
15
|
+
* Transaction parsing configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface ParserConfig {
|
|
18
|
+
/** Default currency if not detected */
|
|
19
|
+
defaultCurrency?: 'SEK' | 'EUR' | 'USD' | 'CHF';
|
|
20
|
+
/** Minimum confidence threshold (0-1) */
|
|
21
|
+
minConfidence?: number;
|
|
22
|
+
/** Enable debug logging */
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse result with confidence scoring
|
|
27
|
+
*/
|
|
28
|
+
export interface ParseResult {
|
|
29
|
+
transactions: RawTransaction[];
|
|
30
|
+
totalLines: number;
|
|
31
|
+
parsedLines: number;
|
|
32
|
+
confidence: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse raw OCR text into transactions
|
|
36
|
+
*
|
|
37
|
+
* This is a generic parser that works with various invoice formats.
|
|
38
|
+
* It uses multiple strategies to extract date, description, and amount.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseTransactions(text: string, config?: ParserConfig): Effect.Effect<ParseResult, ParseError, Logger>;
|
|
41
|
+
//# sourceMappingURL=transaction-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-parser.d.ts","sourceRoot":"","sources":["../../src/utils/transaction-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAChD,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAqBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,YAAiB,GACxB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CA8EhD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "arek-e-docsnap",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Parse invoices and split expenses between partners",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"docsnap": "./dist/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE",
|
|
16
|
+
"CHANGELOG.md"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"dev": "bun run --watch ./src/bin/cli.ts",
|
|
20
|
+
"build": "rm -rf dist && bun build ./src/bin/cli.ts --outdir ./dist --format esm --target node --external ink --external react --external effect --external exceljs --external 'ink-*' --external 'react-*' && bun build ./src/index.ts --outdir ./dist --format esm --target node --external effect --external exceljs && tsc --declaration --emitDeclarationOnly && chmod +x dist/cli.js && cp vendor/pdf.worker.min.mjs dist/pdf.worker.mjs",
|
|
21
|
+
"build:watch": "bun --watch run build",
|
|
22
|
+
"type-check": "tsc --noEmit",
|
|
23
|
+
"test": "bun test",
|
|
24
|
+
"test:watch": "bun test --watch",
|
|
25
|
+
"test:coverage": "bun test --coverage",
|
|
26
|
+
"lint": "biome lint src tests --fix",
|
|
27
|
+
"format": "biome format src tests docs --write",
|
|
28
|
+
"format:check": "biome format src tests docs --check",
|
|
29
|
+
"lint:check": "biome lint src tests",
|
|
30
|
+
"prepublishOnly": "bun run build && bun run test && bun run lint:check",
|
|
31
|
+
"prepack": "bun run build",
|
|
32
|
+
"publish": "bun publish"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public",
|
|
36
|
+
"tag": "latest"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"invoice",
|
|
40
|
+
"receipt",
|
|
41
|
+
"ocr",
|
|
42
|
+
"pdf",
|
|
43
|
+
"expense",
|
|
44
|
+
"splitting",
|
|
45
|
+
"partners",
|
|
46
|
+
"settlement",
|
|
47
|
+
"typescript",
|
|
48
|
+
"effect-ts",
|
|
49
|
+
"cli"
|
|
50
|
+
],
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/arek-e/docsnap.git"
|
|
54
|
+
},
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/arek-e/docsnap/issues"
|
|
57
|
+
},
|
|
58
|
+
"homepage": "https://github.com/arek-e/docsnap#readme",
|
|
59
|
+
"author": {
|
|
60
|
+
"name": "arek-e",
|
|
61
|
+
"url": "https://github.com/arek-e"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=18.0.0",
|
|
65
|
+
"bun": ">=1.3.0"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"cli-progress": "^3.12.0",
|
|
69
|
+
"date-fns": "^3.0.0",
|
|
70
|
+
"dommatrix": "^1.0.3",
|
|
71
|
+
"effect": "^3.0.0",
|
|
72
|
+
"exceljs": "^4.4.0",
|
|
73
|
+
"ink": "^6.6.0",
|
|
74
|
+
"ink-select-input": "^5.0.0",
|
|
75
|
+
"ink-spinner": "^5.0.0",
|
|
76
|
+
"ink-text-input": "^6.0.0",
|
|
77
|
+
"jsdom": "^27.4.0",
|
|
78
|
+
"pdf-parse": "^2.4.5",
|
|
79
|
+
"uuid": "^9.0.0"
|
|
80
|
+
},
|
|
81
|
+
"optionalDependencies": {
|
|
82
|
+
"sharp": "^0.33.0",
|
|
83
|
+
"tesseract.js": "^7.0.0",
|
|
84
|
+
"tesseract.js-core": "^6.1.2"
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@types/bun": "latest",
|
|
88
|
+
"@types/node": "^20.0.0",
|
|
89
|
+
"@types/react": "^19.2.7",
|
|
90
|
+
"@types/react-dom": "^19.2.3",
|
|
91
|
+
"@types/uuid": "^11.0.0",
|
|
92
|
+
"biome": "latest",
|
|
93
|
+
"typescript": "^5"
|
|
94
|
+
}
|
|
95
|
+
}
|