@luca-financial/luca-schema 1.1.1 → 1.2.3
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 +49 -1
- package/package.json +21 -18
- package/dist/cjs/enums.js +0 -76
- package/dist/cjs/enums.js.map +0 -1
- package/dist/cjs/examples/categories.json +0 -472
- package/dist/cjs/examples/entities.json +0 -92
- package/dist/cjs/examples/lucaSchema.json +0 -74
- package/dist/cjs/examples/recurringTransactionEvents.json +0 -92
- package/dist/cjs/examples/recurringTransactions.json +0 -162
- package/dist/cjs/examples/schemas.json +0 -22
- package/dist/cjs/examples/transactions.json +0 -122
- package/dist/cjs/index.js +0 -28
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/lucaValidator.js +0 -31
- package/dist/cjs/lucaValidator.js.map +0 -1
- package/dist/cjs/schemas/category.json +0 -65
- package/dist/cjs/schemas/entity.json +0 -65
- package/dist/cjs/schemas/index.js +0 -25
- package/dist/cjs/schemas/index.js.map +0 -1
- package/dist/cjs/schemas/lucaSchema.json +0 -54
- package/dist/cjs/schemas/recurringTransaction.json +0 -90
- package/dist/cjs/schemas/recurringTransactionEvent.json +0 -57
- package/dist/cjs/schemas/schema.json +0 -24
- package/dist/cjs/schemas/transaction.json +0 -77
- package/dist/cjs/tests/categories.test.js +0 -14
- package/dist/cjs/tests/categories.test.js.map +0 -1
- package/dist/cjs/tests/entities.test.js +0 -14
- package/dist/cjs/tests/entities.test.js.map +0 -1
- package/dist/cjs/tests/lucaSchema.test.js +0 -12
- package/dist/cjs/tests/lucaSchema.test.js.map +0 -1
- package/dist/cjs/tests/recurringTransactionEvents.test.js +0 -14
- package/dist/cjs/tests/recurringTransactionEvents.test.js.map +0 -1
- package/dist/cjs/tests/recurringTransactions.test.js +0 -14
- package/dist/cjs/tests/recurringTransactions.test.js.map +0 -1
- package/dist/cjs/tests/schemas.test.js +0 -14
- package/dist/cjs/tests/schemas.test.js.map +0 -1
- package/dist/cjs/tests/transactions.test.js +0 -14
- package/dist/cjs/tests/transactions.test.js.map +0 -1
- package/dist/esm/enums.js +0 -78
- package/dist/esm/index.js +0 -5
- package/dist/esm/lucaValidator.js +0 -18
- package/dist/esm/schemas/category.json +0 -65
- package/dist/esm/schemas/entity.json +0 -65
- package/dist/esm/schemas/index.js +0 -19
- package/dist/esm/schemas/lucaSchema.json +0 -54
- package/dist/esm/schemas/recurringTransaction.json +0 -90
- package/dist/esm/schemas/recurringTransactionEvent.json +0 -57
- package/dist/esm/schemas/schema.json +0 -24
- package/dist/esm/schemas/transaction.json +0 -77
package/README.md
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
1
|
# LucaSchema
|
|
2
2
|
|
|
3
|
-
Schema for the Luca Ledger application
|
|
3
|
+
Schema validation library for the Luca Ledger application.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @luca-financial/luca-schema
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import { lucaValidator, enums } from '@luca-financial/luca-schema';
|
|
15
|
+
|
|
16
|
+
// Validate a transaction
|
|
17
|
+
const validateTransaction = lucaValidator.getSchema('transaction');
|
|
18
|
+
const isValid = validateTransaction(transactionData);
|
|
19
|
+
|
|
20
|
+
if (!isValid) {
|
|
21
|
+
console.error('Validation errors:', validateTransaction.errors);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Access schemas directly
|
|
25
|
+
console.log('Available schemas:', Object.keys(schemas));
|
|
26
|
+
|
|
27
|
+
// Use enums for consistency
|
|
28
|
+
const transactionState = enums.TransactionStateEnum.COMPLETED;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Available Schemas
|
|
32
|
+
|
|
33
|
+
- `transaction` - Financial transactions
|
|
34
|
+
- `recurringTransaction` - Recurring transaction templates
|
|
35
|
+
- `recurringTransactionEvent` - Recurring transaction events
|
|
36
|
+
- `category` - Transaction categories
|
|
37
|
+
- `entity` - Financial entities
|
|
38
|
+
- `lucaSchema` - Complete schema structure
|
|
39
|
+
|
|
40
|
+
### More to come
|
|
41
|
+
|
|
42
|
+
- `account` (derives from entity)
|
|
43
|
+
- `savingsAccount` (derives from account)
|
|
44
|
+
|
|
45
|
+
## Development
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
yarn build # Build the library
|
|
49
|
+
yarn test # Run tests
|
|
50
|
+
yarn lint # Check code style
|
|
51
|
+
```
|
package/package.json
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luca-financial/luca-schema",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Schemas for the Luca Ledger application",
|
|
5
5
|
"author": "Johnathan Aspinwall",
|
|
6
|
-
"main": "dist/index.js",
|
|
6
|
+
"main": "dist/cjs/index.js",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"type": "module",
|
|
9
|
+
"types": "./dist/cjs/index.d.ts",
|
|
9
10
|
"homepage": "https://lucaledger.app",
|
|
10
11
|
"repository": {
|
|
11
12
|
"type": "git",
|
|
12
13
|
"url": "https://github.com/LucaFinancial/LucaSchema"
|
|
13
14
|
},
|
|
14
15
|
"jest": {
|
|
16
|
+
"preset": "ts-jest",
|
|
15
17
|
"transform": {
|
|
16
18
|
"^.+\\.[t|j]sx?$": "babel-jest"
|
|
17
19
|
},
|
|
18
20
|
"testMatch": [
|
|
19
|
-
"**/
|
|
21
|
+
"**/src/tests/**/*.test.[jt]s"
|
|
20
22
|
],
|
|
21
23
|
"moduleFileExtensions": [
|
|
22
24
|
"js",
|
|
25
|
+
"ts",
|
|
23
26
|
"json",
|
|
24
27
|
"node"
|
|
25
28
|
]
|
|
26
29
|
},
|
|
27
30
|
"scripts": {
|
|
28
|
-
"build": "yarn && yarn clean && node scripts/build.
|
|
29
|
-
"clean": "
|
|
31
|
+
"build": "yarn && yarn clean && node scripts/build.mjs && babel src --out-dir dist/cjs --source-maps --ignore 'src/examples/**','src/tests/**'",
|
|
32
|
+
"clean": "rimraf dist",
|
|
30
33
|
"lint": "prettier --check . && eslint .",
|
|
31
|
-
"
|
|
32
|
-
"test": "yarn build && jest"
|
|
34
|
+
"test": "jest"
|
|
33
35
|
},
|
|
34
36
|
"exports": {
|
|
35
37
|
".": {
|
|
36
38
|
"import": "./dist/esm/index.js",
|
|
37
39
|
"require": "./dist/cjs/index.js"
|
|
38
|
-
},
|
|
39
|
-
"./schemas": {
|
|
40
|
-
"import": "./dist/esm/schemas/*.json",
|
|
41
|
-
"require": "./dist/cjs/schemas/*.json"
|
|
42
40
|
}
|
|
43
41
|
},
|
|
44
42
|
"files": [
|
|
45
|
-
"dist/"
|
|
46
|
-
"LICENSE",
|
|
47
|
-
"README.md"
|
|
43
|
+
"dist/"
|
|
48
44
|
],
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"ajv": "^8.12.0",
|
|
47
|
+
"ajv-formats": "^2.1.1"
|
|
48
|
+
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@babel/cli": "^7.24.1",
|
|
51
51
|
"@babel/core": "^7.24.4",
|
|
52
52
|
"@babel/preset-env": "^7.24.4",
|
|
53
|
+
"@babel/preset-typescript": "^7.27.1",
|
|
53
54
|
"@eslint/js": "^9.1.1",
|
|
54
|
-
"
|
|
55
|
-
"ajv-formats": "^2.1.1",
|
|
55
|
+
"@types/jest": "^29.5.14",
|
|
56
56
|
"babel-jest": "^29.7.0",
|
|
57
57
|
"eslint": "^9.1.1",
|
|
58
58
|
"eslint-config-prettier": "^9.1.0",
|
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"globals": "^15.1.0",
|
|
63
63
|
"jest": "^29.7.0",
|
|
64
64
|
"prettier": "^3.2.5",
|
|
65
|
-
"rimraf": "^5.0.5"
|
|
66
|
-
|
|
65
|
+
"rimraf": "^5.0.5",
|
|
66
|
+
"ts-jest": "^29.3.4",
|
|
67
|
+
"typescript": "^5.8.3"
|
|
68
|
+
},
|
|
69
|
+
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
|
67
70
|
}
|
package/dist/cjs/enums.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var SchemasEnum = Object.freeze({
|
|
8
|
-
CATEGORY: 'category',
|
|
9
|
-
ENTITY: 'entity',
|
|
10
|
-
LUCASCHEMA: 'lucaSchema',
|
|
11
|
-
RECURRING_TRANSACTION: 'recurringTransaction',
|
|
12
|
-
RECURRING_TRANSACTION_EVENT: 'recurringTransactionEvent',
|
|
13
|
-
SCHEMA: 'schema',
|
|
14
|
-
TRANSACTION: 'transaction'
|
|
15
|
-
});
|
|
16
|
-
var TransactionStateEnum = Object.freeze({
|
|
17
|
-
PLANNED: 'PLANNED',
|
|
18
|
-
SCHEDULED: 'SCHEDULED',
|
|
19
|
-
PENDING: 'PENDING',
|
|
20
|
-
COMPLETED: 'COMPLETED',
|
|
21
|
-
CANCELLED: 'CANCELLED',
|
|
22
|
-
FAILED: 'FAILED',
|
|
23
|
-
DISPUTED: 'DISPUTED',
|
|
24
|
-
REFUNDED: 'REFUNDED',
|
|
25
|
-
TENTATIVE: 'TENTATIVE',
|
|
26
|
-
UPCOMING: 'UPCOMING',
|
|
27
|
-
DELETED: 'DELETED'
|
|
28
|
-
});
|
|
29
|
-
var CategoryTypeEnum = Object.freeze({
|
|
30
|
-
DEFAULT: 'DEFAULT',
|
|
31
|
-
MODIFIED: 'MODIFIED',
|
|
32
|
-
CUSTOM: 'CUSTOM'
|
|
33
|
-
});
|
|
34
|
-
var EntityTypeEnum = Object.freeze({
|
|
35
|
-
ACCOUNT: 'ACCOUNT',
|
|
36
|
-
RETAILER: 'RETAILER',
|
|
37
|
-
BUSINESS: 'BUSINESS',
|
|
38
|
-
INDIVIDUAL: 'INDIVIDUAL',
|
|
39
|
-
UTILITY: 'UTILITY',
|
|
40
|
-
GOVERNMENT: 'GOVERNMENT'
|
|
41
|
-
});
|
|
42
|
-
var EntityStatusEnum = Object.freeze({
|
|
43
|
-
ACTIVE: 'ACTIVE',
|
|
44
|
-
INACTIVE: 'INACTIVE',
|
|
45
|
-
SUSPENDED: 'SUSPENDED',
|
|
46
|
-
DELETED: 'DELETED',
|
|
47
|
-
CLOSED: 'CLOSED'
|
|
48
|
-
});
|
|
49
|
-
var RecurringTransactionFrequencyEnum = Object.freeze({
|
|
50
|
-
DAY: 'DAY',
|
|
51
|
-
WEEK: 'WEEK',
|
|
52
|
-
MONTH: 'MONTH',
|
|
53
|
-
YEAR: 'YEAR'
|
|
54
|
-
});
|
|
55
|
-
var RecurringTransactionStateEnum = Object.freeze({
|
|
56
|
-
ACTIVE: 'ACTIVE',
|
|
57
|
-
PAUSED: 'PAUSED',
|
|
58
|
-
COMPLETED: 'COMPLETED',
|
|
59
|
-
CANCELLED: 'CANCELLED'
|
|
60
|
-
});
|
|
61
|
-
var RecurringTransactionEventStatusEnum = Object.freeze({
|
|
62
|
-
MODIFIED: 'MODIFIED',
|
|
63
|
-
DELETED: 'DELETED'
|
|
64
|
-
});
|
|
65
|
-
var enums = {
|
|
66
|
-
CategoryTypeEnum: CategoryTypeEnum,
|
|
67
|
-
EntityTypeEnum: EntityTypeEnum,
|
|
68
|
-
EntityStatusEnum: EntityStatusEnum,
|
|
69
|
-
RecurringTransactionFrequencyEnum: RecurringTransactionFrequencyEnum,
|
|
70
|
-
RecurringTransactionStateEnum: RecurringTransactionStateEnum,
|
|
71
|
-
RecurringTransactionEventStatusEnum: RecurringTransactionEventStatusEnum,
|
|
72
|
-
SchemasEnum: SchemasEnum,
|
|
73
|
-
TransactionStateEnum: TransactionStateEnum
|
|
74
|
-
};
|
|
75
|
-
var _default = exports["default"] = enums;
|
|
76
|
-
//# sourceMappingURL=enums.js.map
|
package/dist/cjs/enums.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","names":["SchemasEnum","Object","freeze","CATEGORY","ENTITY","LUCASCHEMA","RECURRING_TRANSACTION","RECURRING_TRANSACTION_EVENT","SCHEMA","TRANSACTION","TransactionStateEnum","PLANNED","SCHEDULED","PENDING","COMPLETED","CANCELLED","FAILED","DISPUTED","REFUNDED","TENTATIVE","UPCOMING","DELETED","CategoryTypeEnum","DEFAULT","MODIFIED","CUSTOM","EntityTypeEnum","ACCOUNT","RETAILER","BUSINESS","INDIVIDUAL","UTILITY","GOVERNMENT","EntityStatusEnum","ACTIVE","INACTIVE","SUSPENDED","CLOSED","RecurringTransactionFrequencyEnum","DAY","WEEK","MONTH","YEAR","RecurringTransactionStateEnum","PAUSED","RecurringTransactionEventStatusEnum","enums","_default","exports"],"sources":["../../src/enums.js"],"sourcesContent":["const SchemasEnum = Object.freeze({\n CATEGORY: 'category',\n ENTITY: 'entity',\n LUCASCHEMA: 'lucaSchema',\n RECURRING_TRANSACTION: 'recurringTransaction',\n RECURRING_TRANSACTION_EVENT: 'recurringTransactionEvent',\n SCHEMA: 'schema',\n TRANSACTION: 'transaction'\n});\n\nconst TransactionStateEnum = Object.freeze({\n PLANNED: 'PLANNED',\n SCHEDULED: 'SCHEDULED',\n PENDING: 'PENDING',\n COMPLETED: 'COMPLETED',\n CANCELLED: 'CANCELLED',\n FAILED: 'FAILED',\n DISPUTED: 'DISPUTED',\n REFUNDED: 'REFUNDED',\n TENTATIVE: 'TENTATIVE',\n UPCOMING: 'UPCOMING',\n DELETED: 'DELETED'\n});\n\nconst CategoryTypeEnum = Object.freeze({\n DEFAULT: 'DEFAULT',\n MODIFIED: 'MODIFIED',\n CUSTOM: 'CUSTOM'\n});\n\nconst EntityTypeEnum = Object.freeze({\n ACCOUNT: 'ACCOUNT',\n RETAILER: 'RETAILER',\n BUSINESS: 'BUSINESS',\n INDIVIDUAL: 'INDIVIDUAL',\n UTILITY: 'UTILITY',\n GOVERNMENT: 'GOVERNMENT'\n});\n\nconst EntityStatusEnum = Object.freeze({\n ACTIVE: 'ACTIVE',\n INACTIVE: 'INACTIVE',\n SUSPENDED: 'SUSPENDED',\n DELETED: 'DELETED',\n CLOSED: 'CLOSED'\n});\n\nconst RecurringTransactionFrequencyEnum = Object.freeze({\n DAY: 'DAY',\n WEEK: 'WEEK',\n MONTH: 'MONTH',\n YEAR: 'YEAR'\n});\n\nconst RecurringTransactionStateEnum = Object.freeze({\n ACTIVE: 'ACTIVE',\n PAUSED: 'PAUSED',\n COMPLETED: 'COMPLETED',\n CANCELLED: 'CANCELLED'\n});\n\nconst RecurringTransactionEventStatusEnum = Object.freeze({\n MODIFIED: 'MODIFIED',\n DELETED: 'DELETED'\n});\n\nconst enums = {\n CategoryTypeEnum,\n EntityTypeEnum,\n EntityStatusEnum,\n RecurringTransactionFrequencyEnum,\n RecurringTransactionStateEnum,\n RecurringTransactionEventStatusEnum,\n SchemasEnum,\n TransactionStateEnum\n};\n\nexport default enums;\n"],"mappings":";;;;;;AAAA,IAAMA,WAAW,GAAGC,MAAM,CAACC,MAAM,CAAC;EAChCC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE,QAAQ;EAChBC,UAAU,EAAE,YAAY;EACxBC,qBAAqB,EAAE,sBAAsB;EAC7CC,2BAA2B,EAAE,2BAA2B;EACxDC,MAAM,EAAE,QAAQ;EAChBC,WAAW,EAAE;AACf,CAAC,CAAC;AAEF,IAAMC,oBAAoB,GAAGT,MAAM,CAACC,MAAM,CAAC;EACzCS,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,WAAW;EACtBC,OAAO,EAAE,SAAS;EAClBC,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE,WAAW;EACtBC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE,WAAW;EACtBC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,IAAMC,gBAAgB,GAAGrB,MAAM,CAACC,MAAM,CAAC;EACrCqB,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,MAAM,EAAE;AACV,CAAC,CAAC;AAEF,IAAMC,cAAc,GAAGzB,MAAM,CAACC,MAAM,CAAC;EACnCyB,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,QAAQ,EAAE,UAAU;EACpBC,UAAU,EAAE,YAAY;EACxBC,OAAO,EAAE,SAAS;EAClBC,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,IAAMC,gBAAgB,GAAGhC,MAAM,CAACC,MAAM,CAAC;EACrCgC,MAAM,EAAE,QAAQ;EAChBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE,WAAW;EACtBf,OAAO,EAAE,SAAS;EAClBgB,MAAM,EAAE;AACV,CAAC,CAAC;AAEF,IAAMC,iCAAiC,GAAGrC,MAAM,CAACC,MAAM,CAAC;EACtDqC,GAAG,EAAE,KAAK;EACVC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE;AACR,CAAC,CAAC;AAEF,IAAMC,6BAA6B,GAAG1C,MAAM,CAACC,MAAM,CAAC;EAClDgC,MAAM,EAAE,QAAQ;EAChBU,MAAM,EAAE,QAAQ;EAChB9B,SAAS,EAAE,WAAW;EACtBC,SAAS,EAAE;AACb,CAAC,CAAC;AAEF,IAAM8B,mCAAmC,GAAG5C,MAAM,CAACC,MAAM,CAAC;EACxDsB,QAAQ,EAAE,UAAU;EACpBH,OAAO,EAAE;AACX,CAAC,CAAC;AAEF,IAAMyB,KAAK,GAAG;EACZxB,gBAAgB,EAAhBA,gBAAgB;EAChBI,cAAc,EAAdA,cAAc;EACdO,gBAAgB,EAAhBA,gBAAgB;EAChBK,iCAAiC,EAAjCA,iCAAiC;EACjCK,6BAA6B,EAA7BA,6BAA6B;EAC7BE,mCAAmC,EAAnCA,mCAAmC;EACnC7C,WAAW,EAAXA,WAAW;EACXU,oBAAoB,EAApBA;AACF,CAAC;AAAC,IAAAqC,QAAA,GAAAC,OAAA,cAEaF,KAAK","ignoreList":[]}
|