@soostori/desktop-adapter 0.1.0-alpha.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 (81) hide show
  1. package/dist/auth-pin.d.ts +16 -0
  2. package/dist/auth-pin.d.ts.map +1 -0
  3. package/dist/auth-pin.js +14 -0
  4. package/dist/auth-pin.js.map +1 -0
  5. package/dist/business-repository.d.ts +31 -0
  6. package/dist/business-repository.d.ts.map +1 -0
  7. package/dist/business-repository.js +61 -0
  8. package/dist/business-repository.js.map +1 -0
  9. package/dist/categories-repository.d.ts +15 -0
  10. package/dist/categories-repository.d.ts.map +1 -0
  11. package/dist/categories-repository.js +35 -0
  12. package/dist/categories-repository.js.map +1 -0
  13. package/dist/customers-repository.d.ts +20 -0
  14. package/dist/customers-repository.d.ts.map +1 -0
  15. package/dist/customers-repository.js +95 -0
  16. package/dist/customers-repository.js.map +1 -0
  17. package/dist/debts-repository.d.ts +48 -0
  18. package/dist/debts-repository.d.ts.map +1 -0
  19. package/dist/debts-repository.js +57 -0
  20. package/dist/debts-repository.js.map +1 -0
  21. package/dist/devices-repository.d.ts +29 -0
  22. package/dist/devices-repository.d.ts.map +1 -0
  23. package/dist/devices-repository.js +120 -0
  24. package/dist/devices-repository.js.map +1 -0
  25. package/dist/domain-repositories.d.ts +12 -0
  26. package/dist/domain-repositories.d.ts.map +1 -0
  27. package/dist/domain-repositories.js +12 -0
  28. package/dist/domain-repositories.js.map +1 -0
  29. package/dist/index.d.ts +25 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +25 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/inventory-repository.d.ts +31 -0
  34. package/dist/inventory-repository.d.ts.map +1 -0
  35. package/dist/inventory-repository.js +127 -0
  36. package/dist/inventory-repository.js.map +1 -0
  37. package/dist/products-repository-mappers.d.ts +77 -0
  38. package/dist/products-repository-mappers.d.ts.map +1 -0
  39. package/dist/products-repository-mappers.js +75 -0
  40. package/dist/products-repository-mappers.js.map +1 -0
  41. package/dist/products-repository-read.d.ts +17 -0
  42. package/dist/products-repository-read.d.ts.map +1 -0
  43. package/dist/products-repository-read.js +51 -0
  44. package/dist/products-repository-read.js.map +1 -0
  45. package/dist/products-repository-stock.d.ts +28 -0
  46. package/dist/products-repository-stock.d.ts.map +1 -0
  47. package/dist/products-repository-stock.js +57 -0
  48. package/dist/products-repository-stock.js.map +1 -0
  49. package/dist/products-repository-types.d.ts +51 -0
  50. package/dist/products-repository-types.d.ts.map +1 -0
  51. package/dist/products-repository-types.js +5 -0
  52. package/dist/products-repository-types.js.map +1 -0
  53. package/dist/products-repository-variants.d.ts +19 -0
  54. package/dist/products-repository-variants.d.ts.map +1 -0
  55. package/dist/products-repository-variants.js +26 -0
  56. package/dist/products-repository-variants.js.map +1 -0
  57. package/dist/products-repository-write.d.ts +14 -0
  58. package/dist/products-repository-write.d.ts.map +1 -0
  59. package/dist/products-repository-write.js +99 -0
  60. package/dist/products-repository-write.js.map +1 -0
  61. package/dist/products-repository.d.ts +69 -0
  62. package/dist/products-repository.d.ts.map +1 -0
  63. package/dist/products-repository.js +48 -0
  64. package/dist/products-repository.js.map +1 -0
  65. package/dist/sales-repository.d.ts +95 -0
  66. package/dist/sales-repository.d.ts.map +1 -0
  67. package/dist/sales-repository.js +160 -0
  68. package/dist/sales-repository.js.map +1 -0
  69. package/dist/sqlite-database.d.ts +16 -0
  70. package/dist/sqlite-database.d.ts.map +1 -0
  71. package/dist/sqlite-database.js +24 -0
  72. package/dist/sqlite-database.js.map +1 -0
  73. package/dist/sqlite-repository.d.ts +18 -0
  74. package/dist/sqlite-repository.d.ts.map +1 -0
  75. package/dist/sqlite-repository.js +61 -0
  76. package/dist/sqlite-repository.js.map +1 -0
  77. package/dist/sqlite-transaction.d.ts +13 -0
  78. package/dist/sqlite-transaction.d.ts.map +1 -0
  79. package/dist/sqlite-transaction.js +35 -0
  80. package/dist/sqlite-transaction.js.map +1 -0
  81. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sales-repository.js","sourceRoot":"","sources":["../src/sales-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAwEnD,4EAA4E;AAE5E,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAmB;QAC/C,MAAM,EAAE,GAAG,CAAC,OAAiB;QAC7B,QAAQ,EAAE,GAAG,CAAC,SAAqB;QACnC,IAAI,EAAE,GAAG,CAAC,IAAoB;QAC9B,MAAM,EAAE,GAAG,CAAC,MAAwB;QACpC,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAiB;QAC/B,cAAc,EAAE,GAAG,CAAC,eAAwB;QAC5C,SAAS,EAAE,GAAG,CAAC,UAAmB;QAClC,WAAW,EAAE,GAAG,CAAC,YAAqB;QACtC,UAAU,EAAE,GAAG,CAAC,WAAoB;QACpC,aAAa,EAAE,GAAG,CAAC,cAAuC;QAC1D,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;QACtB,UAAU,EAAE,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,CAAuB;QAC3D,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,IAAI;QACvC,gBAAgB,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC5C,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,GAAG,CAAC,UAAqB;QACpC,SAAS,EAAE,GAAG,CAAC,UAAqB;QACpC,WAAW,EAAE,IAAI;KAClB,CAAA;AACH,CAAC;AAED,+EAA+E;AAE/E,MAAM,OAAO,sBAAsB;IACzB,SAAS,GAAG,OAAO,CAAA;IAE3B,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,WAAW,EAAE;aACtB,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,eAAe,CAAC;aACvD,GAAG,CAAC,EAAY,CAAwB,CAAA;QAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAQd;QACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,UAAU,GAAa,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAc,EAAE,CAAA;QAC5B,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAAC,CAAC;QACjF,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAAC,CAAC;QAClF,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAAC,CAAC;QACxF,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAAC,CAAC;QACvG,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAAC,CAAC;QAC5F,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAAC,CAAC;QACxF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,IAAI,KAAK,2BAA2B,CAAC;aACzF,GAAG,CAAC,GAAG,MAAM,CAAc,CAAA;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAU,EAAE,KAAiB;QACxC,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAA;QAE7B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,EAAE,CAAC,OAAO,CAAC;;;;;KAKV,CAAC,CAAC,GAAG,CACJ,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,MAAgB,EACrB,IAAI,CAAC,MAAgB,EACrB,IAAI,CAAC,QAAkB,EACvB,IAAI,CAAC,UAA2B,EAChC,IAAI,CAAC,YAAY,EACjB,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,IAAI,GAAG,EACrB,IAAI,CAAC,SAAS,IAAI,GAAG,CACtB,CAAA;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAG7B,CAAC,CAAA;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CACZ,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,SAA0B,EAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAgB,EACrB,GAAG,CACJ,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAAsB;QAC7C,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,OAAmC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,QAAQ,SAAS,+BAA+B,CAAC;aACjF,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAY,CAAC,CAAA;QACvD,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,MAAM,IAAI,GAAG,WAAW,EAAE;aACvB,OAAO,CAAC,4CAA4C,CAAC;aACrD,GAAG,CAAC,MAAgB,CAAkB,CAAA;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAA0B;YAC1D,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,aAAa,EAAE,CAAC,CAAC,cAAc,IAAI,IAAI;YACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,UAAmB;YAChC,QAAQ,EAAE,CAAC,CAAC,QAAiB;YAC7B,UAAU,EAAE,CAAC,CAAC,WAAoB;SACnC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,IAAI,GAAG,WAAW,EAAE;aACvB,OAAO,CAAC,mDAAmD,CAAC;aAC5D,GAAG,EAGF,CAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,EAAU;YAChB,MAAM,EAAE,CAAC,CAAC,OAAiB;YAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,aAAa,EAAE,CAAC,CAAC,cAA+B;YAChD,SAAS,EAAE,CAAC,CAAC,UAAqB;YAClC,MAAM,EAAE,CAAC,CAAC,OAAiB;SAC5B,CAAC,CAAC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAOpB;QACC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACrG,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAQ;QAC3B,WAAW,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAIZ;QACC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAU,EAAE,eAAe,EAAE,EAAE,EAAE,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * SQLite database singleton for the desktop-adapter.
3
+ * Reuses the existing soostori.db connection from the Electron main process.
4
+ * This module must only be imported from the main process (Electron).
5
+ */
6
+ import type Database from 'better-sqlite3';
7
+ /**
8
+ * Set the database instance from the Electron main process.
9
+ * Must be called once during app startup, before any adapter is used.
10
+ */
11
+ export declare function setDatabase(db: Database.Database): void;
12
+ /** Get the current database instance. */
13
+ export declare function getDatabase(): Database.Database;
14
+ /** Check if database has been initialized. */
15
+ export declare function isDatabaseSet(): boolean;
16
+ //# sourceMappingURL=sqlite-database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-database.d.ts","sourceRoot":"","sources":["../src/sqlite-database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAI1C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEvD;AAED,yCAAyC;AACzC,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAG/C;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * SQLite database singleton for the desktop-adapter.
3
+ * Reuses the existing soostori.db connection from the Electron main process.
4
+ * This module must only be imported from the main process (Electron).
5
+ */
6
+ let _db = null;
7
+ /**
8
+ * Set the database instance from the Electron main process.
9
+ * Must be called once during app startup, before any adapter is used.
10
+ */
11
+ export function setDatabase(db) {
12
+ _db = db;
13
+ }
14
+ /** Get the current database instance. */
15
+ export function getDatabase() {
16
+ if (!_db)
17
+ throw new Error('Database not set — call setDatabase() first');
18
+ return _db;
19
+ }
20
+ /** Check if database has been initialized. */
21
+ export function isDatabaseSet() {
22
+ return _db !== null;
23
+ }
24
+ //# sourceMappingURL=sqlite-database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-database.js","sourceRoot":"","sources":["../src/sqlite-database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,IAAI,GAAG,GAA6B,IAAI,CAAA;AAExC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAqB;IAC/C,GAAG,GAAG,EAAE,CAAA;AACV,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IACxE,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,aAAa;IAC3B,OAAO,GAAG,KAAK,IAAI,CAAA;AACrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SQLite repository base — implements @soostori/storage Repository<T> over better-sqlite3.
3
+ * All domain repositories extend this. No business logic lives here.
4
+ */
5
+ import type { Repository, TransactionHandle } from '@soostori/storage';
6
+ import type { UUID } from '@soostori/core';
7
+ export declare abstract class SqliteRepository<T extends {
8
+ id: UUID;
9
+ }> implements Repository<T> {
10
+ protected abstract tableName(): string;
11
+ findById(id: UUID): Promise<T | null>;
12
+ findMany(filter?: Record<string, unknown>): Promise<T[]>;
13
+ create(data: T): Promise<T>;
14
+ update(id: UUID, changes: Partial<T>): Promise<T>;
15
+ delete(id: UUID): Promise<void>;
16
+ transaction<R>(fn: (tx: TransactionHandle) => Promise<R>): Promise<R>;
17
+ }
18
+ //# sourceMappingURL=sqlite-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-repository.d.ts","sourceRoot":"","sources":["../src/sqlite-repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,8BAAsB,gBAAgB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM;IAEhC,QAAQ,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKrC,QAAQ,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAU5D,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS3B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASjD,MAAM,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAkB5E"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * SQLite repository base — implements @soostori/storage Repository<T> over better-sqlite3.
3
+ * All domain repositories extend this. No business logic lives here.
4
+ */
5
+ import { getDatabase } from './sqlite-database.js';
6
+ import { SqliteTransactionHandle } from './sqlite-transaction.js';
7
+ export class SqliteRepository {
8
+ async findById(id) {
9
+ const row = getDatabase().prepare(`SELECT * FROM ${this.tableName()} WHERE id = ?`).get(id);
10
+ return row ?? null;
11
+ }
12
+ async findMany(filter = {}) {
13
+ if (Object.keys(filter).length === 0) {
14
+ return getDatabase().prepare(`SELECT * FROM ${this.tableName()}`).all();
15
+ }
16
+ const cols = Object.keys(filter);
17
+ const where = cols.map(c => `${c} = ?`).join(' AND ');
18
+ const vals = cols.map(c => filter[c]);
19
+ return getDatabase().prepare(`SELECT * FROM ${this.tableName()} WHERE ${where}`).all(...vals);
20
+ }
21
+ async create(data) {
22
+ const db = getDatabase();
23
+ const cols = Object.keys(data).filter(k => k !== 'id');
24
+ const vals = cols.map(k => data[k]);
25
+ const placeholders = cols.map(() => '?').join(', ');
26
+ db.prepare(`INSERT INTO ${this.tableName()} (id, ${cols.join(', ')}) VALUES (?, ${placeholders})`).run(data.id, ...vals);
27
+ return data;
28
+ }
29
+ async update(id, changes) {
30
+ const db = getDatabase();
31
+ const fields = Object.keys(changes);
32
+ const vals = fields.map(k => changes[k]);
33
+ const setClause = fields.map(f => `${f} = ?`).join(', ');
34
+ db.prepare(`UPDATE ${this.tableName()} SET ${setClause} WHERE id = ?`).run(...vals, id);
35
+ return db.prepare(`SELECT * FROM ${this.tableName()} WHERE id = ?`).get(id);
36
+ }
37
+ async delete(id) {
38
+ getDatabase().prepare(`DELETE FROM ${this.tableName()} WHERE id = ?`).run(id);
39
+ }
40
+ async transaction(fn) {
41
+ const db = getDatabase();
42
+ return new Promise((resolve, reject) => {
43
+ try {
44
+ db.transaction(() => {
45
+ const handle = new SqliteTransactionHandle();
46
+ const result = fn(handle);
47
+ if (result && typeof result.then === 'function') {
48
+ result.then(resolve).catch(reject);
49
+ }
50
+ else {
51
+ resolve(result);
52
+ }
53
+ })();
54
+ }
55
+ catch (e) {
56
+ reject(e);
57
+ }
58
+ });
59
+ }
60
+ }
61
+ //# sourceMappingURL=sqlite-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-repository.js","sourceRoot":"","sources":["../src/sqlite-repository.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAIjE,MAAM,OAAgB,gBAAgB;IAGpC,KAAK,CAAC,QAAQ,CAAC,EAAQ;QACrB,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAkB,CAAA;QAC5G,OAAO,GAAG,IAAI,IAAI,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAkC,EAAE;QACjD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,EAAS,CAAA;QAChF,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,OAAO,WAAW,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ,CAAA;IACtG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAO;QAClB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,IAAgC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,EAAE,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;QACxH,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAQ,EAAE,OAAmB;QACxC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,OAAmC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,QAAQ,SAAS,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAA;QACvF,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAM,CAAA;IAClF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAQ;QACnB,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,WAAW,CAAI,EAAyC;QAC5D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;oBAClB,MAAM,MAAM,GAAsB,IAAI,uBAAuB,EAAE,CAAA;oBAC/D,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;oBACzB,IAAI,MAAM,IAAI,OAAQ,MAAqB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC/D,MAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACpD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAW,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC,CAAC,EAAE,CAAA;YACN,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,CAAC,CAAC,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TransactionHandle implementation over better-sqlite3.
3
+ * Implements @soostori/storage's TransactionHandle interface.
4
+ */
5
+ import type { TransactionHandle } from '@soostori/storage';
6
+ import type { UUID } from '@soostori/core';
7
+ export declare class SqliteTransactionHandle implements TransactionHandle {
8
+ insert<T>(table: string, data: T): Promise<T>;
9
+ update<T>(table: string, id: UUID, changes: Partial<T>): Promise<T>;
10
+ delete(table: string, id: UUID): Promise<void>;
11
+ raw(sql: string, params?: unknown[]): Promise<unknown[]>;
12
+ }
13
+ //# sourceMappingURL=sqlite-transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-transaction.d.ts","sourceRoot":"","sources":["../src/sqlite-transaction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,qBAAa,uBAAwB,YAAW,iBAAiB;IAIzD,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAW7C,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAUnE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAG/D"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * TransactionHandle implementation over better-sqlite3.
3
+ * Implements @soostori/storage's TransactionHandle interface.
4
+ */
5
+ import { getDatabase } from './sqlite-database.js';
6
+ export class SqliteTransactionHandle {
7
+ // better-sqlite3 is synchronous; all operations are sync underneath.
8
+ // SqliteTransactionHandle wraps sync calls as Promises to satisfy async SDK interface.
9
+ async insert(table, data) {
10
+ const db = getDatabase();
11
+ const cols = Object.keys(data).filter(k => k !== 'id');
12
+ const vals = cols.map(k => data[k]);
13
+ const placeholders = cols.map(() => '?').join(', ');
14
+ const id = data.id;
15
+ db.prepare(`INSERT INTO ${table} (id, ${cols.join(', ')}) VALUES (?, ${placeholders})`).run(id, ...vals);
16
+ const row = db.prepare(`SELECT * FROM ${table} WHERE id = ?`).get(id);
17
+ return row;
18
+ }
19
+ async update(table, id, changes) {
20
+ const db = getDatabase();
21
+ const fields = Object.keys(changes);
22
+ const vals = fields.map(k => changes[k]);
23
+ const setClause = fields.map(f => `${f} = ?`).join(', ');
24
+ db.prepare(`UPDATE ${table} SET ${setClause} WHERE id = ?`).run(...vals, id);
25
+ const row = db.prepare(`SELECT * FROM ${table} WHERE id = ?`).get(id);
26
+ return row;
27
+ }
28
+ async delete(table, id) {
29
+ getDatabase().prepare(`DELETE FROM ${table} WHERE id = ?`).run(id);
30
+ }
31
+ async raw(sql, params) {
32
+ return getDatabase().prepare(sql).all(...(params ?? []));
33
+ }
34
+ }
35
+ //# sourceMappingURL=sqlite-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-transaction.js","sourceRoot":"","sources":["../src/sqlite-transaction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIlD,MAAM,OAAO,uBAAuB;IAClC,qEAAqE;IACrE,uFAAuF;IAEvF,KAAK,CAAC,MAAM,CAAI,KAAa,EAAE,IAAO;QACpC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAA;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,IAAgC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,MAAM,EAAE,GAAI,IAAgC,CAAC,EAAY,CAAA;QACzD,EAAE,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;QACxG,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrE,OAAO,GAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,KAAa,EAAE,EAAQ,EAAE,OAAmB;QAC1D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,OAAmC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,SAAS,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5E,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrE,OAAO,GAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,EAAQ;QAClC,WAAW,EAAE,CAAC,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,MAAkB;QACvC,OAAO,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@soostori/desktop-adapter",
3
+ "version": "0.1.0-alpha.3",
4
+ "description": "Desktop (Electron) platform adapter — implements SDK repository contracts over better-sqlite3",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc -p tsconfig.json",
20
+ "typecheck": "tsc --noEmit -p tsconfig.json",
21
+ "test": "vitest run"
22
+ },
23
+ "dependencies": {
24
+ "@soostori/core": "^0.1.0-alpha.10",
25
+ "@soostori/auth": "^0.1.0-alpha.8",
26
+ "@soostori/devices": "^0.1.0-alpha.4",
27
+ "@soostori/storage": "^0.1.0-alpha.1",
28
+ "@soostori/inventory": "^0.1.0-alpha.1",
29
+ "@soostori/business": "^0.1.0-alpha.1",
30
+ "better-sqlite3": "^11.6.0",
31
+ "zod": "^3.24.0"
32
+ },
33
+ "devDependencies": {
34
+ "@types/better-sqlite3": "^7.6.12",
35
+ "@types/node": "^22.0.0",
36
+ "typescript": "^5.7.0",
37
+ "vitest": "^2.1.0"
38
+ },
39
+ "license": "UNLICENSED"
40
+ }