@actdim/utico 0.9.6 → 0.9.9

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 (51) hide show
  1. package/dist/array.es.js.map +1 -1
  2. package/dist/arrayExtensions.es.js.map +1 -1
  3. package/dist/{mutex.d.ts → asyncMutex.d.ts} +1 -1
  4. package/dist/asyncMutex.d.ts.map +1 -0
  5. package/dist/{mutex.es.js → asyncMutex.es.js} +1 -1
  6. package/dist/asyncMutex.es.js.map +1 -0
  7. package/dist/cache/cacheContracts.d.ts +21 -0
  8. package/dist/cache/cacheContracts.d.ts.map +1 -0
  9. package/dist/cache/cacheContracts.es.js +13 -0
  10. package/dist/cache/cacheContracts.es.js.map +1 -0
  11. package/dist/cache/memoryCache.es.js.map +1 -1
  12. package/dist/cache/persistentCache.d.ts +26 -15
  13. package/dist/cache/persistentCache.d.ts.map +1 -1
  14. package/dist/cache/persistentCache.es.js +124 -72
  15. package/dist/cache/persistentCache.es.js.map +1 -1
  16. package/dist/dataFormats.es.js.map +1 -1
  17. package/dist/dateTimeDataFormat.es.js.map +1 -1
  18. package/dist/gfx/canvasUtils.es.js.map +1 -1
  19. package/dist/gfx/color.es.js.map +1 -1
  20. package/dist/i18n/cultures.es.js.map +1 -1
  21. package/dist/i18n/enUsCulture.es.js.map +1 -1
  22. package/dist/math.es.js.map +1 -1
  23. package/dist/metadata.es.js.map +1 -1
  24. package/dist/patterns.es.js.map +1 -1
  25. package/dist/store/dataStore.d.ts +68 -25
  26. package/dist/store/dataStore.d.ts.map +1 -1
  27. package/dist/store/dataStore.es.js +213 -114
  28. package/dist/store/dataStore.es.js.map +1 -1
  29. package/dist/store/persistentStore.d.ts +3 -5
  30. package/dist/store/persistentStore.d.ts.map +1 -1
  31. package/dist/store/persistentStore.es.js +10 -18
  32. package/dist/store/persistentStore.es.js.map +1 -1
  33. package/dist/store/storeContracts.d.ts +55 -5
  34. package/dist/store/storeContracts.d.ts.map +1 -1
  35. package/dist/store/storeContracts.es.js +15 -1
  36. package/dist/store/storeContracts.es.js.map +1 -1
  37. package/dist/store/storeDb.es.js +84 -53
  38. package/dist/store/storeDb.es.js.map +1 -1
  39. package/dist/stringCore.es.js.map +1 -1
  40. package/dist/structEvent.es.js.map +1 -1
  41. package/dist/typeCore.d.ts +20 -0
  42. package/dist/typeCore.d.ts.map +1 -1
  43. package/dist/typeCore.es.js.map +1 -1
  44. package/dist/typeUtils.es.js.map +1 -1
  45. package/dist/utils.es.js.map +1 -1
  46. package/dist/watchable.es.js.map +1 -1
  47. package/package.json +28 -23
  48. package/dist/mutex.d.ts.map +0 -1
  49. package/dist/mutex.es.js.map +0 -1
  50. package/dist/store/storeDb.d.ts +0 -42
  51. package/dist/store/storeDb.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actdim/utico",
3
- "version": "0.9.6",
3
+ "version": "0.9.9",
4
4
  "description": "A modern foundation toolkit for complex TypeScript apps",
5
5
  "author": "Pavel Borodaev",
6
6
  "license": "Proprietary",
@@ -47,46 +47,51 @@
47
47
  },
48
48
  "sideEffects": false,
49
49
  "sideEffects?": [],
50
+ "packageManager": "pnpm@10.20.0",
50
51
  "scripts": {
51
- "test": "npx vitest",
52
- "wtest": "npx vitest --watch",
53
- "dtest": "node --inspect-brk node_modules/vitest/vitest.mjs run --poolOptions.threads.singleThread",
52
+ "test": "npx vitest --config=vitest.node.config.ts --no-cache",
53
+ "test:w": "npx vitest --config=vitest.node.config.ts --watch",
54
+ "test:v8": "npx vite",
54
55
  "lint": "eslint . -f visualstudio --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0",
55
56
  "build": "tsc -b && vite build",
56
- "npm:u": "npm update",
57
- "npm:ou": "npm outdated",
58
- "ncu": "ncu",
57
+ "pnpm:u": "pnpm update",
58
+ "pnpm:ou": "pnpm outdated",
59
+ "ncu:l": "ncu",
59
60
  "ncu:u": "ncu -u",
60
61
  "ncu:ud": "ncu -u --dev",
61
62
  "nvm:la": "nvm list available",
62
- "nvm:il": "nvm install lts"
63
+ "nvm:il": "nvm install lts",
64
+ "format": "prettier --write .",
65
+ "format:check": "prettier --check ."
63
66
  },
64
67
  "peerDependencies": {
65
68
  "dexie": "^4.2.0",
66
69
  "moment": "^2.30.1",
67
70
  "uuid": "^13.0.0"
68
71
  },
69
- "devDependencies": {
70
- "@types/node": "^24.7.0",
71
- "@types/uuid": "^11.0.0",
72
- "@typescript-eslint/eslint-plugin": "^8.45.0",
73
- "@typescript-eslint/parser": "^8.45.0",
74
- "eslint": "^9.37.0",
72
+ "devDependencies": {
73
+ "@types/chai": "^5.2.3",
74
+ "@types/mocha": "^10.0.10",
75
+ "@types/node": "^24.9.2",
76
+ "@typescript-eslint/eslint-plugin": "^8.46.2",
77
+ "@typescript-eslint/parser": "^8.46.2",
78
+ "chai": "^6.2.0",
79
+ "eslint": "^9.39.0",
75
80
  "eslint-config-prettier": "^10.1.8",
76
- "eslint-formatter-visualstudio": "^8.40.0",
81
+ "eslint-formatter-visualstudio": "^9.0.1",
77
82
  "eslint-plugin-prettier": "^5.5.4",
78
- "fake-indexeddb": "^6.2.2",
79
- "globals": "^16.4.0",
80
- "npm-check-updates": "^19.0.0",
83
+ "fake-indexeddb": "^6.2.4",
84
+ "globals": "^16.5.0",
85
+ "mocha": "^11.7.4",
86
+ "npm-check-updates": "^19.1.2",
81
87
  "prettier": "^3.6.2",
82
- "prettier-plugin-classnames": "^0.8.4",
88
+ "prettier-plugin-classnames": "^0.8.5",
83
89
  "shx": "^0.4.0",
84
- "ts-node": "^10.9.2",
85
90
  "typescript": "^5.9.3",
86
- "typescript-eslint": "^8.45.0",
87
- "vite": "^7.1.9",
91
+ "typescript-eslint": "^8.46.2",
92
+ "vite": "^7.1.12",
88
93
  "vite-plugin-dts": "^4.5.4",
89
94
  "vite-tsconfig-paths": "^5.1.4",
90
- "vitest": "^3.2.4"
95
+ "vitest": "^4.0.6"
91
96
  }
92
97
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,cAAM,UAAU;IACZ,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,MAAM,CAAS;IAEjB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAgCnD,OAAO,IAAI,MAAM,IAAI,GAAG,IAAI;IAiBtB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAQrE;AAGD,OAAO,EACH,UAAU,EACb,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mutex.es.js","sources":["../src/mutex.ts"],"sourcesContent":["import { Executor } from './typeCore';\r\n/**\r\n * Example:\r\n * const mutex = new Mutex();\r\n * await mutex.dispatch(async () => {...});\r\n */\r\n// type Executor<T> = () => Promise<T> | T;\r\n\r\nclass AsyncMutex { // or Mutex\r\n private mutex = Promise.resolve();\r\n\r\n private locked = false;\r\n \r\n async lock(timeoutMs?: number): Promise<() => void> {\r\n let begin: (unlock: () => void) => void = () => { };\r\n let timer: NodeJS.Timeout | undefined;\r\n\r\n const previous = this.mutex;\r\n this.mutex = this.mutex.then(() => new Promise(begin));\r\n this.locked = true;\r\n \r\n const lockPromise = new Promise<() => void>((resolve, reject) => {\r\n begin = resolve;\r\n\r\n if (timeoutMs) {\r\n timer = setTimeout(() => {\r\n reject(new Error(\"Mutex lock timeout\"));\r\n }, timeoutMs);\r\n }\r\n });\r\n\r\n try {\r\n const unlock = await lockPromise;\r\n clearTimeout(timer);\r\n return () => {\r\n this.locked = false;\r\n unlock();\r\n };\r\n } catch (err) {\r\n this.mutex = previous;\r\n this.locked = false;\r\n throw err;\r\n }\r\n }\r\n\r\n tryLock(): () => void | null {\r\n if (this.locked) return null;\r\n\r\n let unlock!: () => void;\r\n this.locked = true;\r\n this.mutex = this.mutex.then(\r\n () =>\r\n new Promise<void>(res => {\r\n unlock = () => {\r\n this.locked = false;\r\n res();\r\n };\r\n })\r\n );\r\n return unlock;\r\n }\r\n\r\n async dispatch<T>(fn: Executor<T>, timeoutMs?: number): Promise<T> {\r\n const unlock = await this.lock(timeoutMs);\r\n try {\r\n return await fn();\r\n } finally {\r\n unlock();\r\n }\r\n }\r\n}\r\n\r\n\r\nexport {\r\n AsyncMutex\r\n};"],"names":["AsyncMutex","timeoutMs","begin","timer","previous","lockPromise","resolve","reject","unlock","err","res","fn"],"mappings":"AAQA,MAAMA,EAAW;AAAA;AAAA,EACL,QAAQ,QAAQ,QAAA;AAAA,EAEhB,SAAS;AAAA,EAEjB,MAAM,KAAKC,GAAyC;AAChD,QAAIC,IAAsC,MAAM;AAAA,IAAE,GAC9CC;AAEJ,UAAMC,IAAW,KAAK;AACtB,SAAK,QAAQ,KAAK,MAAM,KAAK,MAAM,IAAI,QAAQF,CAAK,CAAC,GACrD,KAAK,SAAS;AAEd,UAAMG,IAAc,IAAI,QAAoB,CAACC,GAASC,MAAW;AAC7D,MAAAL,IAAQI,GAEJL,MACAE,IAAQ,WAAW,MAAM;AACrB,QAAAI,EAAO,IAAI,MAAM,oBAAoB,CAAC;AAAA,MAC1C,GAAGN,CAAS;AAAA,IAEpB,CAAC;AAED,QAAI;AACA,YAAMO,IAAS,MAAMH;AACrB,0BAAaF,CAAK,GACX,MAAM;AACT,aAAK,SAAS,IACdK,EAAA;AAAA,MACJ;AAAA,IACJ,SAASC,GAAK;AACV,iBAAK,QAAQL,GACb,KAAK,SAAS,IACRK;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,UAA6B;AACzB,QAAI,KAAK,OAAQ,QAAO;AAExB,QAAID;AACJ,gBAAK,SAAS,IACd,KAAK,QAAQ,KAAK,MAAM;AAAA,MACpB,MACI,IAAI,QAAc,CAAAE,MAAO;AACrB,QAAAF,IAAS,MAAM;AACX,eAAK,SAAS,IACdE,EAAA;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IAAA,GAEFF;AAAA,EACX;AAAA,EAEA,MAAM,SAAYG,GAAiBV,GAAgC;AAC/D,UAAMO,IAAS,MAAM,KAAK,KAAKP,CAAS;AACxC,QAAI;AACA,aAAO,MAAMU,EAAA;AAAA,IACjB,UAAA;AACI,MAAAH,EAAA;AAAA,IACJ;AAAA,EACJ;AACJ;"}
@@ -1,42 +0,0 @@
1
- import { default as Dexie } from 'dexie';
2
- export interface IDataEntry {
3
- id: string;
4
- createdAt: number;
5
- updatedAt: number;
6
- }
7
- export interface ICacheDataEntry extends IDataEntry {
8
- accessedAt?: number;
9
- slidingExpiration?: number;
10
- expiresAt?: number;
11
- }
12
- export type EntryTypes = {
13
- default: IDataEntry;
14
- cache: ICacheDataEntry;
15
- };
16
- export interface IDataItem {
17
- readonly id: string;
18
- readonly value: any;
19
- }
20
- export declare class DataEntry implements IDataEntry {
21
- id: string;
22
- createdAt: number;
23
- updatedAt: number;
24
- constructor(src: Partial<DataEntry>);
25
- }
26
- export declare class CacheDataEntry extends DataEntry {
27
- accessedAt?: number;
28
- slidingExpiration?: number;
29
- expiresAt?: number;
30
- constructor(src: Partial<CacheDataEntry>);
31
- }
32
- export declare class DataItem<T = any> implements IDataItem {
33
- id: string;
34
- value: T;
35
- constructor(src: Partial<DataItem>);
36
- }
37
- export declare class StoreDb<TEntryTemplate extends keyof EntryTypes> extends Dexie {
38
- registry: Dexie.Table<EntryTypes[TEntryTemplate], string>;
39
- data: Dexie.Table<IDataItem, string>;
40
- constructor(name: string, entryTemplate: TEntryTemplate);
41
- }
42
- //# sourceMappingURL=storeDb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storeDb.d.ts","sourceRoot":"","sources":["../../src/store/storeDb.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,WAAW,eAAgB,SAAQ,UAAU;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,eAAe,CAAA;CACzB,CAAA;AAGD,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CACvB;AAcD,qBAAa,SAAU,YAAW,UAAU;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;gBAEN,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC;CAStC;AAED,qBAAa,cAAe,SAAQ,SAAS;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEP,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC;CAI3C;AAGD,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,SAAS;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,CAAC,CAAC;gBAEG,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;CAQrC;AAMD,qBAAa,OAAO,CAAC,cAAc,SAAS,MAAM,UAAU,CAAE,SAAQ,KAAK;IAEvE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAEzB,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc;CA0C1D"}