ofpos-shared-core 1.1.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.
Files changed (143) hide show
  1. package/README.md +37 -0
  2. package/dist/AdapterRegistry.d.ts +83 -0
  3. package/dist/DomainServices.d.ts +151 -0
  4. package/dist/IntegrationServices.d.ts +75 -0
  5. package/dist/PosCore.d.ts +216 -0
  6. package/dist/contracts/contractVersioning.d.ts +6 -0
  7. package/dist/contracts/crossDomainPrimitives.d.ts +5 -0
  8. package/dist/contracts/responseEnvelope.d.ts +6 -0
  9. package/dist/contracts/syncProtocol.d.ts +8 -0
  10. package/dist/data/DbAdapter.d.ts +7 -0
  11. package/dist/data/applyPendingMigrations.d.ts +18 -0
  12. package/dist/data/inMemoryDbAdapter.d.ts +65 -0
  13. package/dist/data/migrations.d.ts +12 -0
  14. package/dist/data/relations.d.ts +3 -0
  15. package/dist/data/schema.d.ts +9 -0
  16. package/dist/data/seed.d.ts +370 -0
  17. package/dist/index.browser.mjs +18 -0
  18. package/dist/index.browser.mjs.LEGAL.txt +46 -0
  19. package/dist/index.cjs.js +18 -0
  20. package/dist/index.cjs.js.LEGAL.txt +46 -0
  21. package/dist/index.d.ts +116 -0
  22. package/dist/index.esm.js +18 -0
  23. package/dist/index.esm.js.LEGAL.txt +46 -0
  24. package/dist/index.umd.js +18 -0
  25. package/dist/index.umd.js.LEGAL.txt +46 -0
  26. package/dist/integration/NotificationAdapter.d.ts +69 -0
  27. package/dist/integration/activityLogger.d.ts +44 -0
  28. package/dist/integration/activitySink.d.ts +8 -0
  29. package/dist/integration/apiService.d.ts +255 -0
  30. package/dist/integration/authorizationService.d.ts +225 -0
  31. package/dist/integration/backupScheduler.d.ts +75 -0
  32. package/dist/integration/checksum.d.ts +9 -0
  33. package/dist/integration/checksumAdapter.d.ts +8 -0
  34. package/dist/integration/configService.d.ts +431 -0
  35. package/dist/integration/defaultChecksumAdapter.d.ts +6 -0
  36. package/dist/integration/defaultEncryptionAdapter.d.ts +9 -0
  37. package/dist/integration/encryption.d.ts +95 -0
  38. package/dist/integration/encryptionAdapter.d.ts +8 -0
  39. package/dist/integration/httpAdapter.d.ts +9 -0
  40. package/dist/integration/loggerAdapter.d.ts +45 -0
  41. package/dist/integration/notificationService.d.ts +45 -0
  42. package/dist/integration/ofauthBridge.d.ts +29 -0
  43. package/dist/integration/ofauthCoreBridge.d.ts +19 -0
  44. package/dist/integration/platformAdapter.d.ts +8 -0
  45. package/dist/integration/roleAdapter.d.ts +61 -0
  46. package/dist/integration/socket.d.ts +60 -0
  47. package/dist/integration/socketAdapter.d.ts +8 -0
  48. package/dist/integration/userService.d.ts +126 -0
  49. package/dist/models/Bom.d.ts +17 -0
  50. package/dist/models/Category.d.ts +13 -0
  51. package/dist/models/Customer.d.ts +17 -0
  52. package/dist/models/CustomerGroup.d.ts +11 -0
  53. package/dist/models/Expense.d.ts +19 -0
  54. package/dist/models/FinancialSetting.d.ts +14 -0
  55. package/dist/models/History.d.ts +18 -0
  56. package/dist/models/InventoryLog.d.ts +23 -0
  57. package/dist/models/InventoryLot.d.ts +34 -0
  58. package/dist/models/KitchenTicket.d.ts +13 -0
  59. package/dist/models/KitchenTicketItem.d.ts +12 -0
  60. package/dist/models/LoyaltyAccount.d.ts +12 -0
  61. package/dist/models/LoyaltyLedger.d.ts +17 -0
  62. package/dist/models/Order.d.ts +45 -0
  63. package/dist/models/OrderItem.d.ts +19 -0
  64. package/dist/models/Payable.d.ts +23 -0
  65. package/dist/models/PriceHistory.d.ts +17 -0
  66. package/dist/models/PriceTier.d.ts +19 -0
  67. package/dist/models/Product.d.ts +25 -0
  68. package/dist/models/Promotion.d.ts +25 -0
  69. package/dist/models/Purchase.d.ts +29 -0
  70. package/dist/models/PurchaseItem.d.ts +21 -0
  71. package/dist/models/PurchaseOrder.d.ts +23 -0
  72. package/dist/models/PurchaseOrderItem.d.ts +19 -0
  73. package/dist/models/Receivable.d.ts +23 -0
  74. package/dist/models/ReportSchedule.d.ts +21 -0
  75. package/dist/models/Return.d.ts +57 -0
  76. package/dist/models/ReturnItem.d.ts +31 -0
  77. package/dist/models/Role.d.ts +13 -0
  78. package/dist/models/Sale.d.ts +43 -0
  79. package/dist/models/SaleItem.d.ts +19 -0
  80. package/dist/models/Settlement.d.ts +23 -0
  81. package/dist/models/Shift.d.ts +41 -0
  82. package/dist/models/StockAdjustment.d.ts +21 -0
  83. package/dist/models/StockOpname.d.ts +22 -0
  84. package/dist/models/StockOpnameItem.d.ts +27 -0
  85. package/dist/models/Supplier.d.ts +19 -0
  86. package/dist/models/TaxRate.d.ts +13 -0
  87. package/dist/models/Transaction.d.ts +32 -0
  88. package/dist/models/Uom.d.ts +15 -0
  89. package/dist/models/User.d.ts +21 -0
  90. package/dist/services/bomService.d.ts +71 -0
  91. package/dist/services/cartService.d.ts +65 -0
  92. package/dist/services/categoryService.d.ts +54 -0
  93. package/dist/services/customerGroupService.d.ts +47 -0
  94. package/dist/services/customerService.d.ts +133 -0
  95. package/dist/services/documentNumberPolicy.d.ts +15 -0
  96. package/dist/services/expenseService.d.ts +47 -0
  97. package/dist/services/exportAdapter.d.ts +48 -0
  98. package/dist/services/exportService.d.ts +263 -0
  99. package/dist/services/financialSettingService.d.ts +47 -0
  100. package/dist/services/historyService.d.ts +60 -0
  101. package/dist/services/inventoryLogService.d.ts +47 -0
  102. package/dist/services/inventoryService.d.ts +43 -0
  103. package/dist/services/orderItemService.d.ts +47 -0
  104. package/dist/services/orderService.d.ts +161 -0
  105. package/dist/services/payableService.d.ts +51 -0
  106. package/dist/services/priceHistoryService.d.ts +61 -0
  107. package/dist/services/priceTierService.d.ts +47 -0
  108. package/dist/services/pricingService.d.ts +192 -0
  109. package/dist/services/productService.d.ts +59 -0
  110. package/dist/services/promotionService.d.ts +47 -0
  111. package/dist/services/purchaseItemService.d.ts +47 -0
  112. package/dist/services/purchaseOrderItemService.d.ts +47 -0
  113. package/dist/services/purchaseOrderService.d.ts +47 -0
  114. package/dist/services/purchaseService.d.ts +130 -0
  115. package/dist/services/receivableService.d.ts +47 -0
  116. package/dist/services/reportScheduleService.d.ts +47 -0
  117. package/dist/services/reportingService.d.ts +251 -0
  118. package/dist/services/returnItemService.d.ts +47 -0
  119. package/dist/services/returnService.d.ts +123 -0
  120. package/dist/services/roleService.d.ts +47 -0
  121. package/dist/services/saleItemService.d.ts +47 -0
  122. package/dist/services/saleService.d.ts +154 -0
  123. package/dist/services/settlementService.d.ts +68 -0
  124. package/dist/services/shiftService.d.ts +92 -0
  125. package/dist/services/stockAdjustmentService.d.ts +47 -0
  126. package/dist/services/stockOpnameItemService.d.ts +47 -0
  127. package/dist/services/stockOpnameService.d.ts +51 -0
  128. package/dist/services/stockTransferService.d.ts +67 -0
  129. package/dist/services/supplierService.d.ts +51 -0
  130. package/dist/services/taxRateService.d.ts +47 -0
  131. package/dist/services/taxService.d.ts +63 -0
  132. package/dist/services/transactionService.d.ts +109 -0
  133. package/dist/services/uiProductService.d.ts +102 -0
  134. package/dist/services/uiTransactionService.d.ts +68 -0
  135. package/dist/services/uomService.d.ts +53 -0
  136. package/dist/services/userService.d.ts +47 -0
  137. package/dist/stores/cartStore.d.ts +109 -0
  138. package/dist/stores/eventBus.d.ts +55 -0
  139. package/dist/stores/sessionStore.d.ts +108 -0
  140. package/dist/stores/storageAdapter.d.ts +44 -0
  141. package/dist/stores/syncService.d.ts +90 -0
  142. package/dist/stores/syncStore.d.ts +163 -0
  143. package/package.json +82 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * In-memory implementation of DbAdapter for testing and development.
3
+ * Fully compliant with the latest DbAdapter interface.
4
+ */
5
+ import { DbAdapter, TableSchema, ColumnDefinition, DbSchema, QueryOptions, LiteralValue } from './DbAdapter';
6
+ export declare class InMemoryDbAdapter implements DbAdapter {
7
+ schema: DbSchema;
8
+ private data;
9
+ /**
10
+ * Initialize with a full schema (e.g., from `schemas`).
11
+ */
12
+ setUpWithSchema(schema: DbSchema): Promise<void>;
13
+ /**
14
+ * Normalize value for comparison (handles Date, boolean, etc.)
15
+ */
16
+ private normalizeForComparison;
17
+ /**
18
+ * Evaluate a ValueExpression against a record (and joined records).
19
+ * @param record Record from main table
20
+ * @param joinedRecords Map of alias → record (for joins)
21
+ * @param expr ValueExpression to evaluate
22
+ * @param mainAlias Main table alias (default: 't0')
23
+ */
24
+ private evalValueExpr;
25
+ private buildFieldCondition;
26
+ /**
27
+ * Recursively evaluate FilterExpression.
28
+ */
29
+ private matchFilterExpression;
30
+ /**
31
+ * Simulate JOINs by pre-matching records (for testing only).
32
+ * Limited to one-to-many/many-to-one; no many-to-many or complex conditions.
33
+ */
34
+ private simulateJoins;
35
+ /**
36
+ * Extract field from record (handles alias.field and string field).
37
+ */
38
+ private extractField;
39
+ private extractAggregateField;
40
+ getSchemaVersion(): Promise<number>;
41
+ setSchemaVersion(version: number): Promise<void>;
42
+ addTable(table: TableSchema): Promise<void>;
43
+ addColumn(_table: string, _column: ColumnDefinition): Promise<void>;
44
+ get<T>(table: string, idOrOptions: string | QueryOptions): Promise<T | null>;
45
+ query<T>(table: string, options?: QueryOptions): Promise<T[]>;
46
+ create<T>(table: string, data: Partial<Record<string, LiteralValue>> & {
47
+ id: string;
48
+ }): Promise<T>;
49
+ update<T>(table: string, id: string, updates: Partial<Record<string, LiteralValue>>): Promise<T>;
50
+ delete(table: string, id: string): Promise<void>;
51
+ bulkCreate<T>(table: string, rows: Array<Partial<Record<string, LiteralValue>> & {
52
+ id: string;
53
+ }>): Promise<T[]>;
54
+ bulkUpdate<T>(table: string, rows: Array<{
55
+ id: string;
56
+ updates: Partial<Record<string, LiteralValue>>;
57
+ }>): Promise<T[]>;
58
+ private transactionDepth;
59
+ private snapshots;
60
+ /**
61
+ * Simpan snapshot seluruh database (shallow copy cukup karena data immutable dalam transaksi)
62
+ */
63
+ private takeSnapshot;
64
+ transaction<T>(callback: (tx: this) => Promise<T>): Promise<T>;
65
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Migration steps to evolve database schema to the latest version.
3
+ */
4
+ import { DbAdapter } from './DbAdapter';
5
+ /**
6
+ * Definition of a migration step with target version and up function.
7
+ */
8
+ export interface MigrationStep {
9
+ toVersion: number;
10
+ up(adapter: DbAdapter): Promise<void>;
11
+ }
12
+ export declare const migrations: MigrationStep[];
@@ -0,0 +1,3 @@
1
+ import { ColumnRelation, PolymorphicRelation } from "./DbAdapter";
2
+ export declare const staticRelations: Record<string, Record<string, ColumnRelation>>;
3
+ export declare const polymorphicRelations: Record<string, PolymorphicRelation[]>;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Schema definitions for database tables and columns.
3
+ */
4
+ import { TableSchema } from "./DbAdapter";
5
+ /**
6
+ * Array of table schemas to initialize or migrate the database.
7
+ */
8
+ declare const schemas: TableSchema[];
9
+ export { schemas };
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Dummy seed data for UI testing.
3
+ */
4
+ export declare const seedData: {
5
+ boms: never[];
6
+ users: {
7
+ id: string;
8
+ username: string;
9
+ pinHash: string;
10
+ role: string;
11
+ email: string;
12
+ failedAttempts: number;
13
+ isLocked: boolean;
14
+ version: number;
15
+ lastModified: string;
16
+ deleted: boolean;
17
+ }[];
18
+ roles: {
19
+ id: string;
20
+ name: string;
21
+ permissions: string[];
22
+ version: number;
23
+ lastModified: string;
24
+ deleted: boolean;
25
+ }[];
26
+ customer_groups: {
27
+ id: string;
28
+ name: string;
29
+ version: number;
30
+ lastModified: string;
31
+ deleted: boolean;
32
+ }[];
33
+ customers: {
34
+ id: string;
35
+ name: string;
36
+ phone: string;
37
+ email: string;
38
+ groupId: string;
39
+ version: number;
40
+ lastModified: string;
41
+ deleted: boolean;
42
+ }[];
43
+ categories: {
44
+ id: string;
45
+ name: string;
46
+ parentId: null;
47
+ version: number;
48
+ lastModified: string;
49
+ deleted: boolean;
50
+ }[];
51
+ uoms: {
52
+ id: string;
53
+ code: string;
54
+ name: string;
55
+ conversionFactor: number;
56
+ version: number;
57
+ lastModified: string;
58
+ deleted: boolean;
59
+ }[];
60
+ products: {
61
+ id: string;
62
+ name: string;
63
+ description: string;
64
+ barcode: string;
65
+ qrCode: string;
66
+ price: number;
67
+ cost: number;
68
+ categoryId: string;
69
+ baseUomId: string;
70
+ version: number;
71
+ lastModified: string;
72
+ deleted: boolean;
73
+ }[];
74
+ price_tiers: {
75
+ id: string;
76
+ tierLevel: number;
77
+ price: number;
78
+ productId: string;
79
+ uom: string;
80
+ customerGroupId: string;
81
+ version: number;
82
+ lastModified: string;
83
+ deleted: boolean;
84
+ }[];
85
+ promotions: {
86
+ id: string;
87
+ code: string;
88
+ type: string;
89
+ value: number;
90
+ name: string;
91
+ description: string;
92
+ targetType: string;
93
+ targetIds: string[];
94
+ expiresAt: string;
95
+ version: number;
96
+ lastModified: string;
97
+ deleted: boolean;
98
+ }[];
99
+ suppliers: {
100
+ id: string;
101
+ name: string;
102
+ contactPerson: string;
103
+ phone: string;
104
+ email: string;
105
+ address: string;
106
+ version: number;
107
+ lastModified: string;
108
+ deleted: boolean;
109
+ }[];
110
+ purchase_orders: {
111
+ id: string;
112
+ supplierId: string;
113
+ userId: string;
114
+ status: string;
115
+ date: string;
116
+ expectedDeliveryDate: string;
117
+ total: number;
118
+ note: string;
119
+ version: number;
120
+ lastModified: string;
121
+ deleted: boolean;
122
+ }[];
123
+ purchase_order_items: {
124
+ id: string;
125
+ purchaseOrderId: string;
126
+ productId: string;
127
+ quantity: number;
128
+ uomId: string;
129
+ unitCost: number;
130
+ version: number;
131
+ lastModified: string;
132
+ deleted: boolean;
133
+ }[];
134
+ purchases: {
135
+ id: string;
136
+ supplierId: string;
137
+ userId: string;
138
+ purchaseOrderId: string;
139
+ date: string;
140
+ total: number;
141
+ note: string;
142
+ version: number;
143
+ lastModified: string;
144
+ deleted: boolean;
145
+ }[];
146
+ purchase_items: {
147
+ id: string;
148
+ purchaseId: string;
149
+ productId: string;
150
+ quantity: number;
151
+ uomId: string;
152
+ unitCost: number;
153
+ version: number;
154
+ lastModified: string;
155
+ deleted: boolean;
156
+ }[];
157
+ orders: {
158
+ id: string;
159
+ userId: string;
160
+ customerId: string;
161
+ status: string;
162
+ saleId: null;
163
+ date: string;
164
+ total: number;
165
+ ppn: number;
166
+ pph: number;
167
+ finalTotal: number;
168
+ note: string;
169
+ version: number;
170
+ lastModified: string;
171
+ deleted: boolean;
172
+ }[];
173
+ order_items: {
174
+ id: string;
175
+ orderId: string;
176
+ productId: string;
177
+ quantity: number;
178
+ uomId: string;
179
+ unitPrice: number;
180
+ version: number;
181
+ lastModified: string;
182
+ deleted: boolean;
183
+ }[];
184
+ sales: {
185
+ id: string;
186
+ userId: string;
187
+ customerId: string;
188
+ sourceOrderId: string;
189
+ status: string;
190
+ date: string;
191
+ total: number;
192
+ discount: number;
193
+ ppn: number;
194
+ pph: number;
195
+ finalTotal: number;
196
+ note: string;
197
+ version: number;
198
+ lastModified: string;
199
+ deleted: boolean;
200
+ }[];
201
+ sale_items: {
202
+ id: string;
203
+ saleId: string;
204
+ productId: string;
205
+ quantity: number;
206
+ uomId: string;
207
+ unitPrice: number;
208
+ version: number;
209
+ lastModified: string;
210
+ deleted: boolean;
211
+ }[];
212
+ tax_rates: {
213
+ id: string;
214
+ key: string;
215
+ rate: number;
216
+ version: number;
217
+ lastModified: string;
218
+ deleted: boolean;
219
+ }[];
220
+ financial_settings: {
221
+ id: string;
222
+ costingMethod: string;
223
+ defaultExpenseAccount: string;
224
+ fiscalYearStart: string;
225
+ version: number;
226
+ lastModified: string;
227
+ }[];
228
+ stock_opnames: {
229
+ id: string;
230
+ userId: string;
231
+ date: string;
232
+ status: string;
233
+ note: string;
234
+ version: number;
235
+ lastModified: string;
236
+ deleted: boolean;
237
+ }[];
238
+ stock_opname_items: {
239
+ id: string;
240
+ stockOpnameId: string;
241
+ productId: string;
242
+ systemStock: number;
243
+ physicalStock: number;
244
+ difference: number;
245
+ note: string;
246
+ version: number;
247
+ lastModified: string;
248
+ deleted: boolean;
249
+ }[];
250
+ inventory_logs: {
251
+ id: string;
252
+ productId: string;
253
+ change: number;
254
+ reason: string;
255
+ referenceType: string;
256
+ referenceId: string;
257
+ userId: string;
258
+ timestamp: string;
259
+ note: string;
260
+ }[];
261
+ price_histories: {
262
+ id: string;
263
+ productId: string;
264
+ unitCost: number;
265
+ supplierId: string;
266
+ effectiveDate: string;
267
+ version: number;
268
+ lastModified: string;
269
+ deleted: boolean;
270
+ }[];
271
+ expenses: {
272
+ id: string;
273
+ userId: string;
274
+ amount: number;
275
+ category: string;
276
+ description: string;
277
+ date: string;
278
+ version: number;
279
+ lastModified: string;
280
+ deleted: boolean;
281
+ }[];
282
+ stock_adjustments: {
283
+ id: string;
284
+ productId: string;
285
+ change: number;
286
+ reasonType: string;
287
+ note: string;
288
+ userId: string;
289
+ date: string;
290
+ version: number;
291
+ lastModified: string;
292
+ deleted: boolean;
293
+ }[];
294
+ settlements: {
295
+ id: string;
296
+ receivableId: string;
297
+ payableId: null;
298
+ amount: number;
299
+ method: string;
300
+ date: string;
301
+ reference: string;
302
+ userId: string;
303
+ version: number;
304
+ lastModified: string;
305
+ deleted: boolean;
306
+ }[];
307
+ receivables: {
308
+ id: string;
309
+ customerId: string;
310
+ saleId: string;
311
+ amount: number;
312
+ dueDate: string;
313
+ status: string;
314
+ paidAmount: number;
315
+ date: string;
316
+ version: number;
317
+ lastModified: string;
318
+ deleted: boolean;
319
+ }[];
320
+ payables: {
321
+ id: string;
322
+ supplierId: string;
323
+ purchaseId: string;
324
+ amount: number;
325
+ dueDate: string;
326
+ status: string;
327
+ paidAmount: number;
328
+ date: string;
329
+ version: number;
330
+ lastModified: string;
331
+ deleted: boolean;
332
+ }[];
333
+ transactions: {
334
+ id: string;
335
+ userId: string;
336
+ amount: number;
337
+ method: string;
338
+ referenceType: string;
339
+ referenceId: string;
340
+ direction: string;
341
+ metadata: {};
342
+ date: string;
343
+ description: string;
344
+ version: number;
345
+ lastModified: string;
346
+ deleted: boolean;
347
+ }[];
348
+ histories: {
349
+ id: string;
350
+ tableName: string;
351
+ recordId: string;
352
+ action: string;
353
+ changes: {};
354
+ userId: string;
355
+ timestamp: string;
356
+ }[];
357
+ report_schedules: {
358
+ id: string;
359
+ reportType: string;
360
+ frequency: string;
361
+ recipients: string[];
362
+ lastRunAt: null;
363
+ nextRunAt: string;
364
+ isActive: boolean;
365
+ version: number;
366
+ lastModified: string;
367
+ deleted: boolean;
368
+ }[];
369
+ };
370
+ export declare const seed: (dbAdapter: any, logger?: any) => Promise<void>;