@xpns-it/shared 1.0.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/README.md +33 -0
- package/dist/db/index.cjs +4 -0
- package/dist/db/index.cjs.map +1 -0
- package/dist/db/index.d.cts +70 -0
- package/dist/db/index.d.ts +70 -0
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -0
- package/dist/dto/index.cjs +4 -0
- package/dist/dto/index.cjs.map +1 -0
- package/dist/dto/index.d.cts +56 -0
- package/dist/dto/index.d.ts +56 -0
- package/dist/dto/index.js +3 -0
- package/dist/dto/index.js.map +1 -0
- package/dist/index.cjs +46 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs-rk1qaTvJ.d.cts +61 -0
- package/dist/jobs-rk1qaTvJ.d.ts +61 -0
- package/dist/schema/index.cjs +46 -0
- package/dist/schema/index.cjs.map +1 -0
- package/dist/schema/index.d.cts +152 -0
- package/dist/schema/index.d.ts +152 -0
- package/dist/schema/index.js +40 -0
- package/dist/schema/index.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# @xpns-it/shared
|
|
2
|
+
|
|
3
|
+
Shared types, DTOs, and schemas for xpns.it platform.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @xpns-it/shared
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { CreateJobRequestDTO, JobStatusDTO } from '@xpns-it/shared'
|
|
15
|
+
import { NormalizedTransactionSchema, SCHEMA_VERSION } from '@xpns-it/shared/schema'
|
|
16
|
+
import { JobRow } from '@xpns-it/shared/db'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Building
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm run build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This generates both ESM and CJS outputs with TypeScript declarations.
|
|
26
|
+
|
|
27
|
+
## Publishing
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm version patch | minor | major
|
|
31
|
+
npm publish --access=public
|
|
32
|
+
```
|
|
33
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { J as JobStatus, a as JobStage } from '../jobs-rk1qaTvJ.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Database row type definitions (interfaces only, no Sequelize dependency)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
interface JobRow {
|
|
8
|
+
id: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
uploadInstanceId: string;
|
|
11
|
+
taxYearId: string;
|
|
12
|
+
type: 'document_analysis' | 'email_analysis';
|
|
13
|
+
status: JobStatus;
|
|
14
|
+
priority: number;
|
|
15
|
+
attempts: number;
|
|
16
|
+
maxAttempts: number;
|
|
17
|
+
lockedAt: Date | null;
|
|
18
|
+
lockedBy: string | null;
|
|
19
|
+
runAfter: Date | null;
|
|
20
|
+
progress: number;
|
|
21
|
+
stage: JobStage;
|
|
22
|
+
errorCode: string | null;
|
|
23
|
+
errorMessage: string | null;
|
|
24
|
+
createdAt: Date;
|
|
25
|
+
updatedAt: Date;
|
|
26
|
+
}
|
|
27
|
+
interface JobResultRow {
|
|
28
|
+
id: string;
|
|
29
|
+
jobId: string;
|
|
30
|
+
schemaVersion: string;
|
|
31
|
+
resultJson: Record<string, any>;
|
|
32
|
+
summaryJson: Record<string, any>;
|
|
33
|
+
createdAt: Date;
|
|
34
|
+
updatedAt: Date;
|
|
35
|
+
}
|
|
36
|
+
interface JobEventRow {
|
|
37
|
+
id: string;
|
|
38
|
+
jobId: string;
|
|
39
|
+
level: 'info' | 'warn' | 'error';
|
|
40
|
+
message: string;
|
|
41
|
+
meta: Record<string, any> | null;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
}
|
|
44
|
+
interface UploadRow {
|
|
45
|
+
id: string;
|
|
46
|
+
userId: string;
|
|
47
|
+
taxYearId: string;
|
|
48
|
+
source: 'upload' | 'email_scan';
|
|
49
|
+
uploadedAt: Date;
|
|
50
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
51
|
+
error: string | null;
|
|
52
|
+
createdAt: Date;
|
|
53
|
+
updatedAt: Date;
|
|
54
|
+
}
|
|
55
|
+
interface DocumentRow {
|
|
56
|
+
id: string;
|
|
57
|
+
userId: string;
|
|
58
|
+
uploadInstanceId: string;
|
|
59
|
+
taxYearId: string;
|
|
60
|
+
filename: string;
|
|
61
|
+
mimeType: string;
|
|
62
|
+
size: number;
|
|
63
|
+
uploadedAt: Date;
|
|
64
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
65
|
+
type: 'bank_statement' | 'invoice' | 'receipt' | 'other';
|
|
66
|
+
createdAt: Date;
|
|
67
|
+
updatedAt: Date;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type { DocumentRow, JobEventRow, JobResultRow, JobRow, UploadRow };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { J as JobStatus, a as JobStage } from '../jobs-rk1qaTvJ.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Database row type definitions (interfaces only, no Sequelize dependency)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
interface JobRow {
|
|
8
|
+
id: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
uploadInstanceId: string;
|
|
11
|
+
taxYearId: string;
|
|
12
|
+
type: 'document_analysis' | 'email_analysis';
|
|
13
|
+
status: JobStatus;
|
|
14
|
+
priority: number;
|
|
15
|
+
attempts: number;
|
|
16
|
+
maxAttempts: number;
|
|
17
|
+
lockedAt: Date | null;
|
|
18
|
+
lockedBy: string | null;
|
|
19
|
+
runAfter: Date | null;
|
|
20
|
+
progress: number;
|
|
21
|
+
stage: JobStage;
|
|
22
|
+
errorCode: string | null;
|
|
23
|
+
errorMessage: string | null;
|
|
24
|
+
createdAt: Date;
|
|
25
|
+
updatedAt: Date;
|
|
26
|
+
}
|
|
27
|
+
interface JobResultRow {
|
|
28
|
+
id: string;
|
|
29
|
+
jobId: string;
|
|
30
|
+
schemaVersion: string;
|
|
31
|
+
resultJson: Record<string, any>;
|
|
32
|
+
summaryJson: Record<string, any>;
|
|
33
|
+
createdAt: Date;
|
|
34
|
+
updatedAt: Date;
|
|
35
|
+
}
|
|
36
|
+
interface JobEventRow {
|
|
37
|
+
id: string;
|
|
38
|
+
jobId: string;
|
|
39
|
+
level: 'info' | 'warn' | 'error';
|
|
40
|
+
message: string;
|
|
41
|
+
meta: Record<string, any> | null;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
}
|
|
44
|
+
interface UploadRow {
|
|
45
|
+
id: string;
|
|
46
|
+
userId: string;
|
|
47
|
+
taxYearId: string;
|
|
48
|
+
source: 'upload' | 'email_scan';
|
|
49
|
+
uploadedAt: Date;
|
|
50
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
51
|
+
error: string | null;
|
|
52
|
+
createdAt: Date;
|
|
53
|
+
updatedAt: Date;
|
|
54
|
+
}
|
|
55
|
+
interface DocumentRow {
|
|
56
|
+
id: string;
|
|
57
|
+
userId: string;
|
|
58
|
+
uploadInstanceId: string;
|
|
59
|
+
taxYearId: string;
|
|
60
|
+
filename: string;
|
|
61
|
+
mimeType: string;
|
|
62
|
+
size: number;
|
|
63
|
+
uploadedAt: Date;
|
|
64
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
65
|
+
type: 'bank_statement' | 'invoice' | 'receipt' | 'other';
|
|
66
|
+
createdAt: Date;
|
|
67
|
+
updatedAt: Date;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type { DocumentRow, JobEventRow, JobResultRow, JobRow, UploadRow };
|
package/dist/db/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export { C as CreateJobRequestDTO, b as CreateJobResponseDTO, d as JobResultDTO, a as JobStage, J as JobStatus, c as JobStatusDTO } from '../jobs-rk1qaTvJ.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Upload-related DTOs
|
|
5
|
+
*/
|
|
6
|
+
interface UploadDTO {
|
|
7
|
+
id: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
taxYearId: string;
|
|
10
|
+
source: 'upload' | 'email_scan';
|
|
11
|
+
uploadedAt: string;
|
|
12
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
interface DocumentDTO {
|
|
16
|
+
id: string;
|
|
17
|
+
userId: string;
|
|
18
|
+
uploadInstanceId: string;
|
|
19
|
+
taxYearId: string;
|
|
20
|
+
filename: string;
|
|
21
|
+
mimeType: string;
|
|
22
|
+
size: number;
|
|
23
|
+
uploadedAt: string;
|
|
24
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
25
|
+
type: 'bank_statement' | 'invoice' | 'receipt' | 'other';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Result-related DTOs
|
|
30
|
+
*/
|
|
31
|
+
interface ExpenseResultDTO {
|
|
32
|
+
id: string;
|
|
33
|
+
documentId: string;
|
|
34
|
+
date: string;
|
|
35
|
+
description: string;
|
|
36
|
+
amount: number;
|
|
37
|
+
category: string;
|
|
38
|
+
confidence: 'low' | 'medium' | 'high';
|
|
39
|
+
source?: 'email' | 'file' | null;
|
|
40
|
+
sourceFileName?: string | null;
|
|
41
|
+
metadata?: Record<string, any>;
|
|
42
|
+
}
|
|
43
|
+
interface ProcessingSummaryDTO {
|
|
44
|
+
totalExpenses: number;
|
|
45
|
+
totalDocuments: number;
|
|
46
|
+
totalEmailBatches: number;
|
|
47
|
+
totalAmount: number;
|
|
48
|
+
categoryBreakdown: Record<string, number>;
|
|
49
|
+
dateRange?: {
|
|
50
|
+
start: string;
|
|
51
|
+
end: string;
|
|
52
|
+
};
|
|
53
|
+
warnings?: string[];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type { DocumentDTO, ExpenseResultDTO, ProcessingSummaryDTO, UploadDTO };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export { C as CreateJobRequestDTO, b as CreateJobResponseDTO, d as JobResultDTO, a as JobStage, J as JobStatus, c as JobStatusDTO } from '../jobs-rk1qaTvJ.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Upload-related DTOs
|
|
5
|
+
*/
|
|
6
|
+
interface UploadDTO {
|
|
7
|
+
id: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
taxYearId: string;
|
|
10
|
+
source: 'upload' | 'email_scan';
|
|
11
|
+
uploadedAt: string;
|
|
12
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
interface DocumentDTO {
|
|
16
|
+
id: string;
|
|
17
|
+
userId: string;
|
|
18
|
+
uploadInstanceId: string;
|
|
19
|
+
taxYearId: string;
|
|
20
|
+
filename: string;
|
|
21
|
+
mimeType: string;
|
|
22
|
+
size: number;
|
|
23
|
+
uploadedAt: string;
|
|
24
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
25
|
+
type: 'bank_statement' | 'invoice' | 'receipt' | 'other';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Result-related DTOs
|
|
30
|
+
*/
|
|
31
|
+
interface ExpenseResultDTO {
|
|
32
|
+
id: string;
|
|
33
|
+
documentId: string;
|
|
34
|
+
date: string;
|
|
35
|
+
description: string;
|
|
36
|
+
amount: number;
|
|
37
|
+
category: string;
|
|
38
|
+
confidence: 'low' | 'medium' | 'high';
|
|
39
|
+
source?: 'email' | 'file' | null;
|
|
40
|
+
sourceFileName?: string | null;
|
|
41
|
+
metadata?: Record<string, any>;
|
|
42
|
+
}
|
|
43
|
+
interface ProcessingSummaryDTO {
|
|
44
|
+
totalExpenses: number;
|
|
45
|
+
totalDocuments: number;
|
|
46
|
+
totalEmailBatches: number;
|
|
47
|
+
totalAmount: number;
|
|
48
|
+
categoryBreakdown: Record<string, number>;
|
|
49
|
+
dateRange?: {
|
|
50
|
+
start: string;
|
|
51
|
+
end: string;
|
|
52
|
+
};
|
|
53
|
+
warnings?: string[];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export type { DocumentDTO, ExpenseResultDTO, ProcessingSummaryDTO, UploadDTO };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var zod = require('zod');
|
|
4
|
+
|
|
5
|
+
// src/schema/parsing.ts
|
|
6
|
+
var SCHEMA_VERSION = "1.0.0";
|
|
7
|
+
var NormalizedTransactionSchema = zod.z.object({
|
|
8
|
+
date: zod.z.string().datetime(),
|
|
9
|
+
// ISO 8601
|
|
10
|
+
description: zod.z.string(),
|
|
11
|
+
amountSigned: zod.z.number(),
|
|
12
|
+
// Positive for income, negative for expenses
|
|
13
|
+
currency: zod.z.string().optional().default("USD"),
|
|
14
|
+
balance: zod.z.number().optional(),
|
|
15
|
+
source: zod.z.enum(["email", "file"]).optional(),
|
|
16
|
+
confidence: zod.z.enum(["low", "medium", "high"]).optional().default("medium"),
|
|
17
|
+
metadata: zod.z.record(zod.z.unknown()).optional()
|
|
18
|
+
});
|
|
19
|
+
var NormalizedExpenseReportSchema = zod.z.object({
|
|
20
|
+
statementPeriod: zod.z.object({
|
|
21
|
+
start: zod.z.string().datetime(),
|
|
22
|
+
end: zod.z.string().datetime()
|
|
23
|
+
}).optional(),
|
|
24
|
+
transactions: zod.z.array(NormalizedTransactionSchema),
|
|
25
|
+
totals: zod.z.object({
|
|
26
|
+
income: zod.z.number().optional(),
|
|
27
|
+
expenses: zod.z.number().optional(),
|
|
28
|
+
net: zod.z.number().optional()
|
|
29
|
+
}).optional(),
|
|
30
|
+
warnings: zod.z.array(zod.z.string()).optional(),
|
|
31
|
+
metadata: zod.z.record(zod.z.unknown()).optional()
|
|
32
|
+
});
|
|
33
|
+
function validateTransaction(data) {
|
|
34
|
+
return NormalizedTransactionSchema.parse(data);
|
|
35
|
+
}
|
|
36
|
+
function validateExpenseReport(data) {
|
|
37
|
+
return NormalizedExpenseReportSchema.parse(data);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.NormalizedExpenseReportSchema = NormalizedExpenseReportSchema;
|
|
41
|
+
exports.NormalizedTransactionSchema = NormalizedTransactionSchema;
|
|
42
|
+
exports.SCHEMA_VERSION = SCHEMA_VERSION;
|
|
43
|
+
exports.validateExpenseReport = validateExpenseReport;
|
|
44
|
+
exports.validateTransaction = validateTransaction;
|
|
45
|
+
//# sourceMappingURL=index.cjs.map
|
|
46
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema/parsing.ts"],"names":["z"],"mappings":";;;;;AAMO,IAAM,cAAA,GAAiB;AAKvB,IAAM,2BAAA,GAA8BA,MAAE,MAAA,CAAO;AAAA,EAClD,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC1B,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA;AAAA,EACvB,UAAUA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EAC7C,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,MAAA,EAAQA,MAAE,IAAA,CAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAYA,KAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACzE,UAAUA,KAAA,CAAE,MAAA,CAAOA,MAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA,EACpD,eAAA,EAAiBA,MACd,MAAA,CAAO;AAAA,IACN,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC3B,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,YAAA,EAAcA,KAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA;AAAA,EACjD,MAAA,EAAQA,MACL,MAAA,CAAO;AAAA,IACN,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC9B,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,UAAUA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,UAAUA,KAAA,CAAE,MAAA,CAAOA,MAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,SAAS,oBAAoB,IAAA,EAAsC;AACxE,EAAA,OAAO,2BAAA,CAA4B,MAAM,IAAI,CAAA;AAC/C;AAKO,SAAS,sBAAsB,IAAA,EAAwC;AAC5E,EAAA,OAAO,6BAAA,CAA8B,MAAM,IAAI,CAAA;AACjD","file":"index.cjs","sourcesContent":["import { z } from 'zod'\n\n/**\n * Schema version for parsing results\n * Increment when breaking changes are made\n */\nexport const SCHEMA_VERSION = '1.0.0'\n\n/**\n * Normalized transaction schema\n */\nexport const NormalizedTransactionSchema = z.object({\n date: z.string().datetime(), // ISO 8601\n description: z.string(),\n amountSigned: z.number(), // Positive for income, negative for expenses\n currency: z.string().optional().default('USD'),\n balance: z.number().optional(),\n source: z.enum(['email', 'file']).optional(),\n confidence: z.enum(['low', 'medium', 'high']).optional().default('medium'),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>\n\n/**\n * Normalized expense report schema\n */\nexport const NormalizedExpenseReportSchema = z.object({\n statementPeriod: z\n .object({\n start: z.string().datetime(),\n end: z.string().datetime(),\n })\n .optional(),\n transactions: z.array(NormalizedTransactionSchema),\n totals: z\n .object({\n income: z.number().optional(),\n expenses: z.number().optional(),\n net: z.number().optional(),\n })\n .optional(),\n warnings: z.array(z.string()).optional(),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>\n\n/**\n * Validate a transaction against the schema\n */\nexport function validateTransaction(data: unknown): NormalizedTransaction {\n return NormalizedTransactionSchema.parse(data)\n}\n\n/**\n * Validate an expense report against the schema\n */\nexport function validateExpenseReport(data: unknown): NormalizedExpenseReport {\n return NormalizedExpenseReportSchema.parse(data)\n}\n\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { C as CreateJobRequestDTO, b as CreateJobResponseDTO, d as JobResultDTO, a as JobStage, J as JobStatus, c as JobStatusDTO } from './jobs-rk1qaTvJ.cjs';
|
|
2
|
+
export { DocumentDTO, ExpenseResultDTO, ProcessingSummaryDTO, UploadDTO } from './dto/index.cjs';
|
|
3
|
+
export { NormalizedExpenseReport, NormalizedExpenseReportSchema, NormalizedTransaction, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction } from './schema/index.cjs';
|
|
4
|
+
export { DocumentRow, JobEventRow, JobResultRow, JobRow, UploadRow } from './db/index.cjs';
|
|
5
|
+
import 'zod';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { C as CreateJobRequestDTO, b as CreateJobResponseDTO, d as JobResultDTO, a as JobStage, J as JobStatus, c as JobStatusDTO } from './jobs-rk1qaTvJ.js';
|
|
2
|
+
export { DocumentDTO, ExpenseResultDTO, ProcessingSummaryDTO, UploadDTO } from './dto/index.js';
|
|
3
|
+
export { NormalizedExpenseReport, NormalizedExpenseReportSchema, NormalizedTransaction, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction } from './schema/index.js';
|
|
4
|
+
export { DocumentRow, JobEventRow, JobResultRow, JobRow, UploadRow } from './db/index.js';
|
|
5
|
+
import 'zod';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
// src/schema/parsing.ts
|
|
4
|
+
var SCHEMA_VERSION = "1.0.0";
|
|
5
|
+
var NormalizedTransactionSchema = z.object({
|
|
6
|
+
date: z.string().datetime(),
|
|
7
|
+
// ISO 8601
|
|
8
|
+
description: z.string(),
|
|
9
|
+
amountSigned: z.number(),
|
|
10
|
+
// Positive for income, negative for expenses
|
|
11
|
+
currency: z.string().optional().default("USD"),
|
|
12
|
+
balance: z.number().optional(),
|
|
13
|
+
source: z.enum(["email", "file"]).optional(),
|
|
14
|
+
confidence: z.enum(["low", "medium", "high"]).optional().default("medium"),
|
|
15
|
+
metadata: z.record(z.unknown()).optional()
|
|
16
|
+
});
|
|
17
|
+
var NormalizedExpenseReportSchema = z.object({
|
|
18
|
+
statementPeriod: z.object({
|
|
19
|
+
start: z.string().datetime(),
|
|
20
|
+
end: z.string().datetime()
|
|
21
|
+
}).optional(),
|
|
22
|
+
transactions: z.array(NormalizedTransactionSchema),
|
|
23
|
+
totals: z.object({
|
|
24
|
+
income: z.number().optional(),
|
|
25
|
+
expenses: z.number().optional(),
|
|
26
|
+
net: z.number().optional()
|
|
27
|
+
}).optional(),
|
|
28
|
+
warnings: z.array(z.string()).optional(),
|
|
29
|
+
metadata: z.record(z.unknown()).optional()
|
|
30
|
+
});
|
|
31
|
+
function validateTransaction(data) {
|
|
32
|
+
return NormalizedTransactionSchema.parse(data);
|
|
33
|
+
}
|
|
34
|
+
function validateExpenseReport(data) {
|
|
35
|
+
return NormalizedExpenseReportSchema.parse(data);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { NormalizedExpenseReportSchema, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction };
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema/parsing.ts"],"names":[],"mappings":";;;AAMO,IAAM,cAAA,GAAiB;AAKvB,IAAM,2BAAA,GAA8B,EAAE,MAAA,CAAO;AAAA,EAClD,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC1B,WAAA,EAAa,EAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAc,EAAE,MAAA,EAAO;AAAA;AAAA,EACvB,UAAU,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EAC7C,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,MAAA,EAAQ,EAAE,IAAA,CAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAY,CAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACzE,UAAU,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,eAAA,EAAiB,EACd,MAAA,CAAO;AAAA,IACN,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC3B,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,YAAA,EAAc,CAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA;AAAA,EACjD,MAAA,EAAQ,EACL,MAAA,CAAO;AAAA,IACN,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC9B,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,UAAU,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,UAAU,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,SAAS,oBAAoB,IAAA,EAAsC;AACxE,EAAA,OAAO,2BAAA,CAA4B,MAAM,IAAI,CAAA;AAC/C;AAKO,SAAS,sBAAsB,IAAA,EAAwC;AAC5E,EAAA,OAAO,6BAAA,CAA8B,MAAM,IAAI,CAAA;AACjD","file":"index.js","sourcesContent":["import { z } from 'zod'\n\n/**\n * Schema version for parsing results\n * Increment when breaking changes are made\n */\nexport const SCHEMA_VERSION = '1.0.0'\n\n/**\n * Normalized transaction schema\n */\nexport const NormalizedTransactionSchema = z.object({\n date: z.string().datetime(), // ISO 8601\n description: z.string(),\n amountSigned: z.number(), // Positive for income, negative for expenses\n currency: z.string().optional().default('USD'),\n balance: z.number().optional(),\n source: z.enum(['email', 'file']).optional(),\n confidence: z.enum(['low', 'medium', 'high']).optional().default('medium'),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>\n\n/**\n * Normalized expense report schema\n */\nexport const NormalizedExpenseReportSchema = z.object({\n statementPeriod: z\n .object({\n start: z.string().datetime(),\n end: z.string().datetime(),\n })\n .optional(),\n transactions: z.array(NormalizedTransactionSchema),\n totals: z\n .object({\n income: z.number().optional(),\n expenses: z.number().optional(),\n net: z.number().optional(),\n })\n .optional(),\n warnings: z.array(z.string()).optional(),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>\n\n/**\n * Validate a transaction against the schema\n */\nexport function validateTransaction(data: unknown): NormalizedTransaction {\n return NormalizedTransactionSchema.parse(data)\n}\n\n/**\n * Validate an expense report against the schema\n */\nexport function validateExpenseReport(data: unknown): NormalizedExpenseReport {\n return NormalizedExpenseReportSchema.parse(data)\n}\n\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Job-related DTOs
|
|
3
|
+
*/
|
|
4
|
+
type JobStatus = 'queued' | 'processing' | 'completed' | 'failed' | 'canceled';
|
|
5
|
+
type JobStage = 'start' | 'load' | 'preprocess' | 'email_batching' | 'document_processing' | 'llm' | 'aggregate' | 'finalize';
|
|
6
|
+
interface CreateJobRequestDTO {
|
|
7
|
+
uploadInstanceId: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
taxYearId: string;
|
|
10
|
+
type: 'document_analysis' | 'email_analysis';
|
|
11
|
+
}
|
|
12
|
+
interface CreateJobResponseDTO {
|
|
13
|
+
jobId: string;
|
|
14
|
+
status: JobStatus;
|
|
15
|
+
uploadId: string;
|
|
16
|
+
}
|
|
17
|
+
interface JobStatusDTO {
|
|
18
|
+
jobId: string;
|
|
19
|
+
status: JobStatus;
|
|
20
|
+
progress: number;
|
|
21
|
+
stage: JobStage;
|
|
22
|
+
errorCode?: string;
|
|
23
|
+
errorMessage?: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
updatedAt: string;
|
|
26
|
+
startedAt?: string;
|
|
27
|
+
completedAt?: string;
|
|
28
|
+
}
|
|
29
|
+
interface JobResultDTO {
|
|
30
|
+
jobId: string;
|
|
31
|
+
status: 'completed';
|
|
32
|
+
schemaVersion: string;
|
|
33
|
+
result: {
|
|
34
|
+
totalExpenses: number;
|
|
35
|
+
totalDocuments: number;
|
|
36
|
+
totalEmailBatches: number;
|
|
37
|
+
expenses: Array<{
|
|
38
|
+
id: string;
|
|
39
|
+
documentId: string;
|
|
40
|
+
date: string;
|
|
41
|
+
description: string;
|
|
42
|
+
amount: number;
|
|
43
|
+
category: string;
|
|
44
|
+
confidence: 'low' | 'medium' | 'high';
|
|
45
|
+
source?: 'email' | 'file' | null;
|
|
46
|
+
sourceFileName?: string | null;
|
|
47
|
+
metadata?: Record<string, any>;
|
|
48
|
+
}>;
|
|
49
|
+
summary: {
|
|
50
|
+
totalAmount: number;
|
|
51
|
+
categoryBreakdown: Record<string, number>;
|
|
52
|
+
dateRange?: {
|
|
53
|
+
start: string;
|
|
54
|
+
end: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
warnings?: string[];
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type { CreateJobRequestDTO as C, JobStatus as J, JobStage as a, CreateJobResponseDTO as b, JobStatusDTO as c, JobResultDTO as d };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Job-related DTOs
|
|
3
|
+
*/
|
|
4
|
+
type JobStatus = 'queued' | 'processing' | 'completed' | 'failed' | 'canceled';
|
|
5
|
+
type JobStage = 'start' | 'load' | 'preprocess' | 'email_batching' | 'document_processing' | 'llm' | 'aggregate' | 'finalize';
|
|
6
|
+
interface CreateJobRequestDTO {
|
|
7
|
+
uploadInstanceId: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
taxYearId: string;
|
|
10
|
+
type: 'document_analysis' | 'email_analysis';
|
|
11
|
+
}
|
|
12
|
+
interface CreateJobResponseDTO {
|
|
13
|
+
jobId: string;
|
|
14
|
+
status: JobStatus;
|
|
15
|
+
uploadId: string;
|
|
16
|
+
}
|
|
17
|
+
interface JobStatusDTO {
|
|
18
|
+
jobId: string;
|
|
19
|
+
status: JobStatus;
|
|
20
|
+
progress: number;
|
|
21
|
+
stage: JobStage;
|
|
22
|
+
errorCode?: string;
|
|
23
|
+
errorMessage?: string;
|
|
24
|
+
createdAt: string;
|
|
25
|
+
updatedAt: string;
|
|
26
|
+
startedAt?: string;
|
|
27
|
+
completedAt?: string;
|
|
28
|
+
}
|
|
29
|
+
interface JobResultDTO {
|
|
30
|
+
jobId: string;
|
|
31
|
+
status: 'completed';
|
|
32
|
+
schemaVersion: string;
|
|
33
|
+
result: {
|
|
34
|
+
totalExpenses: number;
|
|
35
|
+
totalDocuments: number;
|
|
36
|
+
totalEmailBatches: number;
|
|
37
|
+
expenses: Array<{
|
|
38
|
+
id: string;
|
|
39
|
+
documentId: string;
|
|
40
|
+
date: string;
|
|
41
|
+
description: string;
|
|
42
|
+
amount: number;
|
|
43
|
+
category: string;
|
|
44
|
+
confidence: 'low' | 'medium' | 'high';
|
|
45
|
+
source?: 'email' | 'file' | null;
|
|
46
|
+
sourceFileName?: string | null;
|
|
47
|
+
metadata?: Record<string, any>;
|
|
48
|
+
}>;
|
|
49
|
+
summary: {
|
|
50
|
+
totalAmount: number;
|
|
51
|
+
categoryBreakdown: Record<string, number>;
|
|
52
|
+
dateRange?: {
|
|
53
|
+
start: string;
|
|
54
|
+
end: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
warnings?: string[];
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export type { CreateJobRequestDTO as C, JobStatus as J, JobStage as a, CreateJobResponseDTO as b, JobStatusDTO as c, JobResultDTO as d };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var zod = require('zod');
|
|
4
|
+
|
|
5
|
+
// src/schema/parsing.ts
|
|
6
|
+
var SCHEMA_VERSION = "1.0.0";
|
|
7
|
+
var NormalizedTransactionSchema = zod.z.object({
|
|
8
|
+
date: zod.z.string().datetime(),
|
|
9
|
+
// ISO 8601
|
|
10
|
+
description: zod.z.string(),
|
|
11
|
+
amountSigned: zod.z.number(),
|
|
12
|
+
// Positive for income, negative for expenses
|
|
13
|
+
currency: zod.z.string().optional().default("USD"),
|
|
14
|
+
balance: zod.z.number().optional(),
|
|
15
|
+
source: zod.z.enum(["email", "file"]).optional(),
|
|
16
|
+
confidence: zod.z.enum(["low", "medium", "high"]).optional().default("medium"),
|
|
17
|
+
metadata: zod.z.record(zod.z.unknown()).optional()
|
|
18
|
+
});
|
|
19
|
+
var NormalizedExpenseReportSchema = zod.z.object({
|
|
20
|
+
statementPeriod: zod.z.object({
|
|
21
|
+
start: zod.z.string().datetime(),
|
|
22
|
+
end: zod.z.string().datetime()
|
|
23
|
+
}).optional(),
|
|
24
|
+
transactions: zod.z.array(NormalizedTransactionSchema),
|
|
25
|
+
totals: zod.z.object({
|
|
26
|
+
income: zod.z.number().optional(),
|
|
27
|
+
expenses: zod.z.number().optional(),
|
|
28
|
+
net: zod.z.number().optional()
|
|
29
|
+
}).optional(),
|
|
30
|
+
warnings: zod.z.array(zod.z.string()).optional(),
|
|
31
|
+
metadata: zod.z.record(zod.z.unknown()).optional()
|
|
32
|
+
});
|
|
33
|
+
function validateTransaction(data) {
|
|
34
|
+
return NormalizedTransactionSchema.parse(data);
|
|
35
|
+
}
|
|
36
|
+
function validateExpenseReport(data) {
|
|
37
|
+
return NormalizedExpenseReportSchema.parse(data);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
exports.NormalizedExpenseReportSchema = NormalizedExpenseReportSchema;
|
|
41
|
+
exports.NormalizedTransactionSchema = NormalizedTransactionSchema;
|
|
42
|
+
exports.SCHEMA_VERSION = SCHEMA_VERSION;
|
|
43
|
+
exports.validateExpenseReport = validateExpenseReport;
|
|
44
|
+
exports.validateTransaction = validateTransaction;
|
|
45
|
+
//# sourceMappingURL=index.cjs.map
|
|
46
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/schema/parsing.ts"],"names":["z"],"mappings":";;;;;AAMO,IAAM,cAAA,GAAiB;AAKvB,IAAM,2BAAA,GAA8BA,MAAE,MAAA,CAAO;AAAA,EAClD,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC1B,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA;AAAA,EACvB,UAAUA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EAC7C,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,MAAA,EAAQA,MAAE,IAAA,CAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAYA,KAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACzE,UAAUA,KAAA,CAAE,MAAA,CAAOA,MAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,IAAM,6BAAA,GAAgCA,MAAE,MAAA,CAAO;AAAA,EACpD,eAAA,EAAiBA,MACd,MAAA,CAAO;AAAA,IACN,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC3B,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,YAAA,EAAcA,KAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA;AAAA,EACjD,MAAA,EAAQA,MACL,MAAA,CAAO;AAAA,IACN,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC9B,GAAA,EAAKA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,UAAUA,KAAA,CAAE,KAAA,CAAMA,MAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,UAAUA,KAAA,CAAE,MAAA,CAAOA,MAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,SAAS,oBAAoB,IAAA,EAAsC;AACxE,EAAA,OAAO,2BAAA,CAA4B,MAAM,IAAI,CAAA;AAC/C;AAKO,SAAS,sBAAsB,IAAA,EAAwC;AAC5E,EAAA,OAAO,6BAAA,CAA8B,MAAM,IAAI,CAAA;AACjD","file":"index.cjs","sourcesContent":["import { z } from 'zod'\n\n/**\n * Schema version for parsing results\n * Increment when breaking changes are made\n */\nexport const SCHEMA_VERSION = '1.0.0'\n\n/**\n * Normalized transaction schema\n */\nexport const NormalizedTransactionSchema = z.object({\n date: z.string().datetime(), // ISO 8601\n description: z.string(),\n amountSigned: z.number(), // Positive for income, negative for expenses\n currency: z.string().optional().default('USD'),\n balance: z.number().optional(),\n source: z.enum(['email', 'file']).optional(),\n confidence: z.enum(['low', 'medium', 'high']).optional().default('medium'),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>\n\n/**\n * Normalized expense report schema\n */\nexport const NormalizedExpenseReportSchema = z.object({\n statementPeriod: z\n .object({\n start: z.string().datetime(),\n end: z.string().datetime(),\n })\n .optional(),\n transactions: z.array(NormalizedTransactionSchema),\n totals: z\n .object({\n income: z.number().optional(),\n expenses: z.number().optional(),\n net: z.number().optional(),\n })\n .optional(),\n warnings: z.array(z.string()).optional(),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>\n\n/**\n * Validate a transaction against the schema\n */\nexport function validateTransaction(data: unknown): NormalizedTransaction {\n return NormalizedTransactionSchema.parse(data)\n}\n\n/**\n * Validate an expense report against the schema\n */\nexport function validateExpenseReport(data: unknown): NormalizedExpenseReport {\n return NormalizedExpenseReportSchema.parse(data)\n}\n\n"]}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Schema version for parsing results
|
|
5
|
+
* Increment when breaking changes are made
|
|
6
|
+
*/
|
|
7
|
+
declare const SCHEMA_VERSION = "1.0.0";
|
|
8
|
+
/**
|
|
9
|
+
* Normalized transaction schema
|
|
10
|
+
*/
|
|
11
|
+
declare const NormalizedTransactionSchema: z.ZodObject<{
|
|
12
|
+
date: z.ZodString;
|
|
13
|
+
description: z.ZodString;
|
|
14
|
+
amountSigned: z.ZodNumber;
|
|
15
|
+
currency: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
balance: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
source: z.ZodOptional<z.ZodEnum<["email", "file"]>>;
|
|
18
|
+
confidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>>;
|
|
19
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
date: string;
|
|
22
|
+
description: string;
|
|
23
|
+
amountSigned: number;
|
|
24
|
+
currency: string;
|
|
25
|
+
confidence: "low" | "medium" | "high";
|
|
26
|
+
balance?: number | undefined;
|
|
27
|
+
source?: "email" | "file" | undefined;
|
|
28
|
+
metadata?: Record<string, unknown> | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
date: string;
|
|
31
|
+
description: string;
|
|
32
|
+
amountSigned: number;
|
|
33
|
+
currency?: string | undefined;
|
|
34
|
+
balance?: number | undefined;
|
|
35
|
+
source?: "email" | "file" | undefined;
|
|
36
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
37
|
+
metadata?: Record<string, unknown> | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* Normalized expense report schema
|
|
42
|
+
*/
|
|
43
|
+
declare const NormalizedExpenseReportSchema: z.ZodObject<{
|
|
44
|
+
statementPeriod: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
start: z.ZodString;
|
|
46
|
+
end: z.ZodString;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
start: string;
|
|
49
|
+
end: string;
|
|
50
|
+
}, {
|
|
51
|
+
start: string;
|
|
52
|
+
end: string;
|
|
53
|
+
}>>;
|
|
54
|
+
transactions: z.ZodArray<z.ZodObject<{
|
|
55
|
+
date: z.ZodString;
|
|
56
|
+
description: z.ZodString;
|
|
57
|
+
amountSigned: z.ZodNumber;
|
|
58
|
+
currency: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
59
|
+
balance: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
source: z.ZodOptional<z.ZodEnum<["email", "file"]>>;
|
|
61
|
+
confidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>>;
|
|
62
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
date: string;
|
|
65
|
+
description: string;
|
|
66
|
+
amountSigned: number;
|
|
67
|
+
currency: string;
|
|
68
|
+
confidence: "low" | "medium" | "high";
|
|
69
|
+
balance?: number | undefined;
|
|
70
|
+
source?: "email" | "file" | undefined;
|
|
71
|
+
metadata?: Record<string, unknown> | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
date: string;
|
|
74
|
+
description: string;
|
|
75
|
+
amountSigned: number;
|
|
76
|
+
currency?: string | undefined;
|
|
77
|
+
balance?: number | undefined;
|
|
78
|
+
source?: "email" | "file" | undefined;
|
|
79
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
80
|
+
metadata?: Record<string, unknown> | undefined;
|
|
81
|
+
}>, "many">;
|
|
82
|
+
totals: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
income: z.ZodOptional<z.ZodNumber>;
|
|
84
|
+
expenses: z.ZodOptional<z.ZodNumber>;
|
|
85
|
+
net: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
income?: number | undefined;
|
|
88
|
+
expenses?: number | undefined;
|
|
89
|
+
net?: number | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
income?: number | undefined;
|
|
92
|
+
expenses?: number | undefined;
|
|
93
|
+
net?: number | undefined;
|
|
94
|
+
}>>;
|
|
95
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
96
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
transactions: {
|
|
99
|
+
date: string;
|
|
100
|
+
description: string;
|
|
101
|
+
amountSigned: number;
|
|
102
|
+
currency: string;
|
|
103
|
+
confidence: "low" | "medium" | "high";
|
|
104
|
+
balance?: number | undefined;
|
|
105
|
+
source?: "email" | "file" | undefined;
|
|
106
|
+
metadata?: Record<string, unknown> | undefined;
|
|
107
|
+
}[];
|
|
108
|
+
metadata?: Record<string, unknown> | undefined;
|
|
109
|
+
statementPeriod?: {
|
|
110
|
+
start: string;
|
|
111
|
+
end: string;
|
|
112
|
+
} | undefined;
|
|
113
|
+
totals?: {
|
|
114
|
+
income?: number | undefined;
|
|
115
|
+
expenses?: number | undefined;
|
|
116
|
+
net?: number | undefined;
|
|
117
|
+
} | undefined;
|
|
118
|
+
warnings?: string[] | undefined;
|
|
119
|
+
}, {
|
|
120
|
+
transactions: {
|
|
121
|
+
date: string;
|
|
122
|
+
description: string;
|
|
123
|
+
amountSigned: number;
|
|
124
|
+
currency?: string | undefined;
|
|
125
|
+
balance?: number | undefined;
|
|
126
|
+
source?: "email" | "file" | undefined;
|
|
127
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
128
|
+
metadata?: Record<string, unknown> | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
metadata?: Record<string, unknown> | undefined;
|
|
131
|
+
statementPeriod?: {
|
|
132
|
+
start: string;
|
|
133
|
+
end: string;
|
|
134
|
+
} | undefined;
|
|
135
|
+
totals?: {
|
|
136
|
+
income?: number | undefined;
|
|
137
|
+
expenses?: number | undefined;
|
|
138
|
+
net?: number | undefined;
|
|
139
|
+
} | undefined;
|
|
140
|
+
warnings?: string[] | undefined;
|
|
141
|
+
}>;
|
|
142
|
+
type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>;
|
|
143
|
+
/**
|
|
144
|
+
* Validate a transaction against the schema
|
|
145
|
+
*/
|
|
146
|
+
declare function validateTransaction(data: unknown): NormalizedTransaction;
|
|
147
|
+
/**
|
|
148
|
+
* Validate an expense report against the schema
|
|
149
|
+
*/
|
|
150
|
+
declare function validateExpenseReport(data: unknown): NormalizedExpenseReport;
|
|
151
|
+
|
|
152
|
+
export { type NormalizedExpenseReport, NormalizedExpenseReportSchema, type NormalizedTransaction, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Schema version for parsing results
|
|
5
|
+
* Increment when breaking changes are made
|
|
6
|
+
*/
|
|
7
|
+
declare const SCHEMA_VERSION = "1.0.0";
|
|
8
|
+
/**
|
|
9
|
+
* Normalized transaction schema
|
|
10
|
+
*/
|
|
11
|
+
declare const NormalizedTransactionSchema: z.ZodObject<{
|
|
12
|
+
date: z.ZodString;
|
|
13
|
+
description: z.ZodString;
|
|
14
|
+
amountSigned: z.ZodNumber;
|
|
15
|
+
currency: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
16
|
+
balance: z.ZodOptional<z.ZodNumber>;
|
|
17
|
+
source: z.ZodOptional<z.ZodEnum<["email", "file"]>>;
|
|
18
|
+
confidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>>;
|
|
19
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
date: string;
|
|
22
|
+
description: string;
|
|
23
|
+
amountSigned: number;
|
|
24
|
+
currency: string;
|
|
25
|
+
confidence: "low" | "medium" | "high";
|
|
26
|
+
balance?: number | undefined;
|
|
27
|
+
source?: "email" | "file" | undefined;
|
|
28
|
+
metadata?: Record<string, unknown> | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
date: string;
|
|
31
|
+
description: string;
|
|
32
|
+
amountSigned: number;
|
|
33
|
+
currency?: string | undefined;
|
|
34
|
+
balance?: number | undefined;
|
|
35
|
+
source?: "email" | "file" | undefined;
|
|
36
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
37
|
+
metadata?: Record<string, unknown> | undefined;
|
|
38
|
+
}>;
|
|
39
|
+
type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* Normalized expense report schema
|
|
42
|
+
*/
|
|
43
|
+
declare const NormalizedExpenseReportSchema: z.ZodObject<{
|
|
44
|
+
statementPeriod: z.ZodOptional<z.ZodObject<{
|
|
45
|
+
start: z.ZodString;
|
|
46
|
+
end: z.ZodString;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
start: string;
|
|
49
|
+
end: string;
|
|
50
|
+
}, {
|
|
51
|
+
start: string;
|
|
52
|
+
end: string;
|
|
53
|
+
}>>;
|
|
54
|
+
transactions: z.ZodArray<z.ZodObject<{
|
|
55
|
+
date: z.ZodString;
|
|
56
|
+
description: z.ZodString;
|
|
57
|
+
amountSigned: z.ZodNumber;
|
|
58
|
+
currency: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
59
|
+
balance: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
source: z.ZodOptional<z.ZodEnum<["email", "file"]>>;
|
|
61
|
+
confidence: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>>;
|
|
62
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
date: string;
|
|
65
|
+
description: string;
|
|
66
|
+
amountSigned: number;
|
|
67
|
+
currency: string;
|
|
68
|
+
confidence: "low" | "medium" | "high";
|
|
69
|
+
balance?: number | undefined;
|
|
70
|
+
source?: "email" | "file" | undefined;
|
|
71
|
+
metadata?: Record<string, unknown> | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
date: string;
|
|
74
|
+
description: string;
|
|
75
|
+
amountSigned: number;
|
|
76
|
+
currency?: string | undefined;
|
|
77
|
+
balance?: number | undefined;
|
|
78
|
+
source?: "email" | "file" | undefined;
|
|
79
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
80
|
+
metadata?: Record<string, unknown> | undefined;
|
|
81
|
+
}>, "many">;
|
|
82
|
+
totals: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
income: z.ZodOptional<z.ZodNumber>;
|
|
84
|
+
expenses: z.ZodOptional<z.ZodNumber>;
|
|
85
|
+
net: z.ZodOptional<z.ZodNumber>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
income?: number | undefined;
|
|
88
|
+
expenses?: number | undefined;
|
|
89
|
+
net?: number | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
income?: number | undefined;
|
|
92
|
+
expenses?: number | undefined;
|
|
93
|
+
net?: number | undefined;
|
|
94
|
+
}>>;
|
|
95
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
96
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
97
|
+
}, "strip", z.ZodTypeAny, {
|
|
98
|
+
transactions: {
|
|
99
|
+
date: string;
|
|
100
|
+
description: string;
|
|
101
|
+
amountSigned: number;
|
|
102
|
+
currency: string;
|
|
103
|
+
confidence: "low" | "medium" | "high";
|
|
104
|
+
balance?: number | undefined;
|
|
105
|
+
source?: "email" | "file" | undefined;
|
|
106
|
+
metadata?: Record<string, unknown> | undefined;
|
|
107
|
+
}[];
|
|
108
|
+
metadata?: Record<string, unknown> | undefined;
|
|
109
|
+
statementPeriod?: {
|
|
110
|
+
start: string;
|
|
111
|
+
end: string;
|
|
112
|
+
} | undefined;
|
|
113
|
+
totals?: {
|
|
114
|
+
income?: number | undefined;
|
|
115
|
+
expenses?: number | undefined;
|
|
116
|
+
net?: number | undefined;
|
|
117
|
+
} | undefined;
|
|
118
|
+
warnings?: string[] | undefined;
|
|
119
|
+
}, {
|
|
120
|
+
transactions: {
|
|
121
|
+
date: string;
|
|
122
|
+
description: string;
|
|
123
|
+
amountSigned: number;
|
|
124
|
+
currency?: string | undefined;
|
|
125
|
+
balance?: number | undefined;
|
|
126
|
+
source?: "email" | "file" | undefined;
|
|
127
|
+
confidence?: "low" | "medium" | "high" | undefined;
|
|
128
|
+
metadata?: Record<string, unknown> | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
metadata?: Record<string, unknown> | undefined;
|
|
131
|
+
statementPeriod?: {
|
|
132
|
+
start: string;
|
|
133
|
+
end: string;
|
|
134
|
+
} | undefined;
|
|
135
|
+
totals?: {
|
|
136
|
+
income?: number | undefined;
|
|
137
|
+
expenses?: number | undefined;
|
|
138
|
+
net?: number | undefined;
|
|
139
|
+
} | undefined;
|
|
140
|
+
warnings?: string[] | undefined;
|
|
141
|
+
}>;
|
|
142
|
+
type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>;
|
|
143
|
+
/**
|
|
144
|
+
* Validate a transaction against the schema
|
|
145
|
+
*/
|
|
146
|
+
declare function validateTransaction(data: unknown): NormalizedTransaction;
|
|
147
|
+
/**
|
|
148
|
+
* Validate an expense report against the schema
|
|
149
|
+
*/
|
|
150
|
+
declare function validateExpenseReport(data: unknown): NormalizedExpenseReport;
|
|
151
|
+
|
|
152
|
+
export { type NormalizedExpenseReport, NormalizedExpenseReportSchema, type NormalizedTransaction, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
// src/schema/parsing.ts
|
|
4
|
+
var SCHEMA_VERSION = "1.0.0";
|
|
5
|
+
var NormalizedTransactionSchema = z.object({
|
|
6
|
+
date: z.string().datetime(),
|
|
7
|
+
// ISO 8601
|
|
8
|
+
description: z.string(),
|
|
9
|
+
amountSigned: z.number(),
|
|
10
|
+
// Positive for income, negative for expenses
|
|
11
|
+
currency: z.string().optional().default("USD"),
|
|
12
|
+
balance: z.number().optional(),
|
|
13
|
+
source: z.enum(["email", "file"]).optional(),
|
|
14
|
+
confidence: z.enum(["low", "medium", "high"]).optional().default("medium"),
|
|
15
|
+
metadata: z.record(z.unknown()).optional()
|
|
16
|
+
});
|
|
17
|
+
var NormalizedExpenseReportSchema = z.object({
|
|
18
|
+
statementPeriod: z.object({
|
|
19
|
+
start: z.string().datetime(),
|
|
20
|
+
end: z.string().datetime()
|
|
21
|
+
}).optional(),
|
|
22
|
+
transactions: z.array(NormalizedTransactionSchema),
|
|
23
|
+
totals: z.object({
|
|
24
|
+
income: z.number().optional(),
|
|
25
|
+
expenses: z.number().optional(),
|
|
26
|
+
net: z.number().optional()
|
|
27
|
+
}).optional(),
|
|
28
|
+
warnings: z.array(z.string()).optional(),
|
|
29
|
+
metadata: z.record(z.unknown()).optional()
|
|
30
|
+
});
|
|
31
|
+
function validateTransaction(data) {
|
|
32
|
+
return NormalizedTransactionSchema.parse(data);
|
|
33
|
+
}
|
|
34
|
+
function validateExpenseReport(data) {
|
|
35
|
+
return NormalizedExpenseReportSchema.parse(data);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { NormalizedExpenseReportSchema, NormalizedTransactionSchema, SCHEMA_VERSION, validateExpenseReport, validateTransaction };
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/schema/parsing.ts"],"names":[],"mappings":";;;AAMO,IAAM,cAAA,GAAiB;AAKvB,IAAM,2BAAA,GAA8B,EAAE,MAAA,CAAO;AAAA,EAClD,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC1B,WAAA,EAAa,EAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAc,EAAE,MAAA,EAAO;AAAA;AAAA,EACvB,UAAU,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAQ,KAAK,CAAA;AAAA,EAC7C,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,MAAA,EAAQ,EAAE,IAAA,CAAK,CAAC,SAAS,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3C,UAAA,EAAY,CAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACzE,UAAU,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,eAAA,EAAiB,EACd,MAAA,CAAO;AAAA,IACN,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC3B,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,YAAA,EAAc,CAAA,CAAE,KAAA,CAAM,2BAA2B,CAAA;AAAA,EACjD,MAAA,EAAQ,EACL,MAAA,CAAO;AAAA,IACN,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC9B,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,GAC1B,EACA,QAAA,EAAS;AAAA,EACZ,UAAU,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACvC,UAAU,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,QAAA;AAClC,CAAC;AAOM,SAAS,oBAAoB,IAAA,EAAsC;AACxE,EAAA,OAAO,2BAAA,CAA4B,MAAM,IAAI,CAAA;AAC/C;AAKO,SAAS,sBAAsB,IAAA,EAAwC;AAC5E,EAAA,OAAO,6BAAA,CAA8B,MAAM,IAAI,CAAA;AACjD","file":"index.js","sourcesContent":["import { z } from 'zod'\n\n/**\n * Schema version for parsing results\n * Increment when breaking changes are made\n */\nexport const SCHEMA_VERSION = '1.0.0'\n\n/**\n * Normalized transaction schema\n */\nexport const NormalizedTransactionSchema = z.object({\n date: z.string().datetime(), // ISO 8601\n description: z.string(),\n amountSigned: z.number(), // Positive for income, negative for expenses\n currency: z.string().optional().default('USD'),\n balance: z.number().optional(),\n source: z.enum(['email', 'file']).optional(),\n confidence: z.enum(['low', 'medium', 'high']).optional().default('medium'),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedTransaction = z.infer<typeof NormalizedTransactionSchema>\n\n/**\n * Normalized expense report schema\n */\nexport const NormalizedExpenseReportSchema = z.object({\n statementPeriod: z\n .object({\n start: z.string().datetime(),\n end: z.string().datetime(),\n })\n .optional(),\n transactions: z.array(NormalizedTransactionSchema),\n totals: z\n .object({\n income: z.number().optional(),\n expenses: z.number().optional(),\n net: z.number().optional(),\n })\n .optional(),\n warnings: z.array(z.string()).optional(),\n metadata: z.record(z.unknown()).optional(),\n})\n\nexport type NormalizedExpenseReport = z.infer<typeof NormalizedExpenseReportSchema>\n\n/**\n * Validate a transaction against the schema\n */\nexport function validateTransaction(data: unknown): NormalizedTransaction {\n return NormalizedTransactionSchema.parse(data)\n}\n\n/**\n * Validate an expense report against the schema\n */\nexport function validateExpenseReport(data: unknown): NormalizedExpenseReport {\n return NormalizedExpenseReportSchema.parse(data)\n}\n\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xpns-it/shared",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Shared types, DTOs, and schemas for xpns.it",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/index.cjs"
|
|
15
|
+
},
|
|
16
|
+
"./dto": {
|
|
17
|
+
"types": "./dist/dto/index.d.ts",
|
|
18
|
+
"import": "./dist/dto/index.js",
|
|
19
|
+
"require": "./dist/dto/index.cjs"
|
|
20
|
+
},
|
|
21
|
+
"./schema": {
|
|
22
|
+
"types": "./dist/schema/index.d.ts",
|
|
23
|
+
"import": "./dist/schema/index.js",
|
|
24
|
+
"require": "./dist/schema/index.cjs"
|
|
25
|
+
},
|
|
26
|
+
"./db": {
|
|
27
|
+
"types": "./dist/db/index.d.ts",
|
|
28
|
+
"import": "./dist/db/index.js",
|
|
29
|
+
"require": "./dist/db/index.cjs"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"dev": "tsup --watch",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"prepublishOnly": "npm run build"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [],
|
|
42
|
+
"author": "",
|
|
43
|
+
"license": "ISC",
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"zod": "^3.22.4"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^20.0.0",
|
|
49
|
+
"tsup": "^8.0.0",
|
|
50
|
+
"typescript": "^5.0.0"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|