@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.
Files changed (49) hide show
  1. package/README.md +49 -1
  2. package/package.json +21 -18
  3. package/dist/cjs/enums.js +0 -76
  4. package/dist/cjs/enums.js.map +0 -1
  5. package/dist/cjs/examples/categories.json +0 -472
  6. package/dist/cjs/examples/entities.json +0 -92
  7. package/dist/cjs/examples/lucaSchema.json +0 -74
  8. package/dist/cjs/examples/recurringTransactionEvents.json +0 -92
  9. package/dist/cjs/examples/recurringTransactions.json +0 -162
  10. package/dist/cjs/examples/schemas.json +0 -22
  11. package/dist/cjs/examples/transactions.json +0 -122
  12. package/dist/cjs/index.js +0 -28
  13. package/dist/cjs/index.js.map +0 -1
  14. package/dist/cjs/lucaValidator.js +0 -31
  15. package/dist/cjs/lucaValidator.js.map +0 -1
  16. package/dist/cjs/schemas/category.json +0 -65
  17. package/dist/cjs/schemas/entity.json +0 -65
  18. package/dist/cjs/schemas/index.js +0 -25
  19. package/dist/cjs/schemas/index.js.map +0 -1
  20. package/dist/cjs/schemas/lucaSchema.json +0 -54
  21. package/dist/cjs/schemas/recurringTransaction.json +0 -90
  22. package/dist/cjs/schemas/recurringTransactionEvent.json +0 -57
  23. package/dist/cjs/schemas/schema.json +0 -24
  24. package/dist/cjs/schemas/transaction.json +0 -77
  25. package/dist/cjs/tests/categories.test.js +0 -14
  26. package/dist/cjs/tests/categories.test.js.map +0 -1
  27. package/dist/cjs/tests/entities.test.js +0 -14
  28. package/dist/cjs/tests/entities.test.js.map +0 -1
  29. package/dist/cjs/tests/lucaSchema.test.js +0 -12
  30. package/dist/cjs/tests/lucaSchema.test.js.map +0 -1
  31. package/dist/cjs/tests/recurringTransactionEvents.test.js +0 -14
  32. package/dist/cjs/tests/recurringTransactionEvents.test.js.map +0 -1
  33. package/dist/cjs/tests/recurringTransactions.test.js +0 -14
  34. package/dist/cjs/tests/recurringTransactions.test.js.map +0 -1
  35. package/dist/cjs/tests/schemas.test.js +0 -14
  36. package/dist/cjs/tests/schemas.test.js.map +0 -1
  37. package/dist/cjs/tests/transactions.test.js +0 -14
  38. package/dist/cjs/tests/transactions.test.js.map +0 -1
  39. package/dist/esm/enums.js +0 -78
  40. package/dist/esm/index.js +0 -5
  41. package/dist/esm/lucaValidator.js +0 -18
  42. package/dist/esm/schemas/category.json +0 -65
  43. package/dist/esm/schemas/entity.json +0 -65
  44. package/dist/esm/schemas/index.js +0 -19
  45. package/dist/esm/schemas/lucaSchema.json +0 -54
  46. package/dist/esm/schemas/recurringTransaction.json +0 -90
  47. package/dist/esm/schemas/recurringTransactionEvent.json +0 -57
  48. package/dist/esm/schemas/schema.json +0 -24
  49. 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.1.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
- "**/dist/cjs/tests/**/*.test.js"
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.cjs && babel src --out-dir dist/cjs --source-maps",
29
- "clean": "node scripts/clean.cjs",
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
- "publish-beta": "yarn && yarn build && yarn publish --tag beta --access public",
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
- "ajv": "^8.12.0",
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
@@ -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":[]}