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,108 @@
1
+ /**
2
+ * Modul penyimpanan sesi pengguna dengan deteksi idle dan re-authentication.
3
+ */
4
+ import { Handler } from 'mitt';
5
+ import { PosCore } from '../PosCore';
6
+ import { User } from '../models/User';
7
+ /**
8
+ * Tipe event untuk SessionStore.
9
+ */
10
+ export type SessionEvents = {
11
+ /** Event update status sesi */
12
+ update: SessionState;
13
+ /** Event requirement re-authentication */
14
+ reauthenticate: undefined;
15
+ };
16
+ /**
17
+ * Status sesi pengguna.
18
+ */
19
+ export interface SessionState {
20
+ /** Apakah pengguna sudah login */
21
+ isLoggedIn: boolean;
22
+ /** ID pengguna saat login, null jika tidak ada */
23
+ userId: string | null;
24
+ /** Objek user lengkap saat login, null jika tidak ada */
25
+ user: User | null;
26
+ /** Timestamp login terakhir, null jika tidak ada */
27
+ lastLoginAt: number | null;
28
+ /** Tenant context dari sesi autentikasi (SaaS), null jika tidak ada */
29
+ tenantId: string | null;
30
+ }
31
+ /**
32
+ * Nilai awal state sesi.
33
+ */
34
+ export declare const initialSessionState: SessionState;
35
+ /**
36
+ * Kelas penyimpanan sesi dengan idle timeout dan re-authentication.
37
+ */
38
+ export declare class SessionStore {
39
+ private context;
40
+ private state;
41
+ private emitter;
42
+ private idleTimerId?;
43
+ private lastBlurAt;
44
+ private get idleTimeoutMs();
45
+ private get reauthTimeoutMs();
46
+ private readonly activityEvents;
47
+ private readonly onActivity;
48
+ private readonly onBlur;
49
+ private readonly onFocus;
50
+ /**
51
+ * Inisialisasi SessionStore.
52
+ * @param context Konteks PosCore aplikasi
53
+ */
54
+ constructor(context: PosCore);
55
+ /**
56
+ * Berlangganan perubahan state sesi.
57
+ * @param handler Handler yang dipanggil saat update
58
+ * @returns Fungsi untuk unsubscribe
59
+ */
60
+ subscribe(handler: Handler<SessionState>): () => void;
61
+ /**
62
+ * Berlangganan event re-authentication.
63
+ * @param handler Handler yang dipanggil saat reauthenticate
64
+ * @returns Fungsi untuk unsubscribe
65
+ */
66
+ onReauthenticate(handler: Handler<void>): () => void;
67
+ /**
68
+ * Mengambil salinan state saat ini.
69
+ */
70
+ getState(): SessionState;
71
+ /**
72
+ * Menyiapkan listener aktivitas pengguna untuk idle dan reauth.
73
+ */
74
+ private setupActivityListeners;
75
+ shutdown(): void;
76
+ /**
77
+ * Memulai timer idle untuk auto-logout.
78
+ */
79
+ private startIdleTimer;
80
+ /**
81
+ * Mereset ulang timer idle.
82
+ */
83
+ private resetIdleTimer;
84
+ /**
85
+ * Menghentikan timer idle.
86
+ */
87
+ private clearIdleTimer;
88
+ /**
89
+ * Menangani auto-logout saat idle.
90
+ */
91
+ private handleIdleLogout;
92
+ /**
93
+ * Melakukan login, mengubah state, dan memulai timer idle.
94
+ * @param user Objek user lengkap yang login
95
+ */
96
+ login(user: User & {
97
+ tenantId?: string | null;
98
+ }): void;
99
+ /**
100
+ * Melakukan logout, membersihkan token dan timer.
101
+ */
102
+ logout(): void;
103
+ /**
104
+ * Menggabungkan state baru dan menyimpan.
105
+ * @param patch Partial state yang akan diterapkan
106
+ */
107
+ private setState;
108
+ }
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Modul adapter penyimpanan abstrak.
3
+ */
4
+ import { PosCore } from "../PosCore";
5
+ /**
6
+ * Interface adapter penyimpanan kunci-nilai.
7
+ */
8
+ export interface StorageAdapter {
9
+ /**
10
+ * Mengambil nilai berdasarkan key.
11
+ * @param key Kunci item
12
+ * @returns Promise atau nilai string|null
13
+ */
14
+ getItem(key: string): Promise<string | null> | string | null;
15
+ /**
16
+ * Menyimpan nilai dengan key tertentu.
17
+ * @param key Kunci item
18
+ * @param value Nilai string yang akan disimpan
19
+ */
20
+ setItem(key: string, value: string): Promise<void> | void;
21
+ /**
22
+ * Menghapus item berdasarkan key.
23
+ * @param key Kunci item yang akan dihapus
24
+ */
25
+ removeItem(key: string): Promise<void> | void;
26
+ }
27
+ /**
28
+ * Adapter penyimpanan memori untuk testing atau demo.
29
+ */
30
+ export declare class MemoryStorage implements StorageAdapter {
31
+ private context;
32
+ private map;
33
+ /**
34
+ * Membuat instance MemoryStorage.
35
+ * @param context PosCore sebagai konteks (opsional)
36
+ */
37
+ constructor(context: PosCore);
38
+ /** {@inheritDoc StorageAdapter.getItem} */
39
+ getItem(key: string): string | null;
40
+ /** {@inheritDoc StorageAdapter.setItem} */
41
+ setItem(key: string, value: string): void;
42
+ /** {@inheritDoc StorageAdapter.removeItem} */
43
+ removeItem(key: string): void;
44
+ }
@@ -0,0 +1,90 @@
1
+ import { PosCore } from '../PosCore';
2
+ export type ConflictResolutionStrategy = 'server_wins' | 'local_wins_manual';
3
+ /**
4
+ * Matriks conflict policy canonical per entitas.
5
+ * `server_wins`: perubahan server tetap diterapkan walau timestamp lokal lebih baru.
6
+ * `local_wins_manual`: perubahan lokal dipertahankan dan konflik dicatat untuk resolusi manual.
7
+ */
8
+ export declare const CONFLICT_POLICY_MATRIX: Record<string, ConflictResolutionStrategy>;
9
+ type SyncTraceContext = {
10
+ correlationId: string;
11
+ syncBatchId: string;
12
+ };
13
+ /**
14
+ * Interface dasar untuk layanan sinkronisasi.
15
+ */
16
+ export interface ISyncService {
17
+ /**
18
+ * Wrapper retry dengan exponential backoff.
19
+ * @param fn Fungsi async yang dijalankan
20
+ * @param retries Jumlah maksimal percobaan ulang
21
+ * @param delay Delay dasar (ms) untuk backoff
22
+ */
23
+ backoff<T>(fn: () => Promise<T>, retries?: number, delay?: number): Promise<T>;
24
+ /**
25
+ * Menerapkan serangkaian perubahan (CRUD) ke adapter lokal.
26
+ * @param changes Daftar objek perubahan
27
+ */
28
+ applyChanges(changes: Array<{
29
+ table: string;
30
+ id: string;
31
+ updated_at: number;
32
+ [key: string]: any;
33
+ }>): Promise<void>;
34
+ /**
35
+ * Sinkronisasi data dasar dari ERP.
36
+ */
37
+ syncWithErp(): Promise<void>;
38
+ /**
39
+ * Loop sinkronisasi penuh: dorong, tarik, ERP, dan pembersihan.
40
+ */
41
+ syncLoop(): Promise<void>;
42
+ }
43
+ /**
44
+ * Implementasi layanan sinkronisasi.
45
+ */
46
+ export declare class SyncService {
47
+ private context;
48
+ private readonly dbAdapter;
49
+ private readonly apiService?;
50
+ private readonly syncStore;
51
+ private debounceTimer?;
52
+ private periodicTimer?;
53
+ private unsubscribeStore?;
54
+ private readonly onDataChanged;
55
+ private lastAlertAtByCode;
56
+ /**
57
+ * Membuat instance SyncService.
58
+ * @param context Konteks PosCore aplikasi
59
+ */
60
+ constructor(context: PosCore);
61
+ private normalizeOutgoingChange;
62
+ private getRemoteTimestamp;
63
+ private getConflictResolutionStrategy;
64
+ private requireBranchContext;
65
+ /**
66
+ * Menjalankan fungsi dengan retry dan exponential backoff.
67
+ */
68
+ backoff<T>(fn: () => Promise<T>, retries?: number, delay?: number): Promise<T>;
69
+ /**
70
+ * Menerapkan array perubahan ke database lokal.
71
+ */
72
+ applyChanges(changes: any[], traceContext?: SyncTraceContext): Promise<void>;
73
+ /**
74
+ * Sinkronisasi data master dari ERP.
75
+ */
76
+ syncWithErp(traceContext?: SyncTraceContext): Promise<void>;
77
+ /**
78
+ * Cleanup data yang dihapus (belum diimplementasi generik).
79
+ */
80
+ private cleanupDeleted;
81
+ private shouldTriggerAlert;
82
+ private emitOperationalAlert;
83
+ private evaluateOperationalAlerts;
84
+ /**
85
+ * Loop sinkronisasi lengkap: push, pull, ERP, pembersihan.
86
+ */
87
+ syncLoop(): Promise<void>;
88
+ shutdown(): void;
89
+ }
90
+ export {};
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Modul penyimpanan state sinkronisasi dengan persistensi.
3
+ */
4
+ import { Handler } from 'mitt';
5
+ import { PosCore } from '../PosCore';
6
+ /**
7
+ * Event untuk SyncStore.
8
+ */
9
+ export type SyncEvents = {
10
+ /** Event update state */
11
+ update: State;
12
+ };
13
+ /**
14
+ * Struktur state sinkronisasi.
15
+ */
16
+ export interface State {
17
+ /** Status: idle, syncing, atau error */
18
+ status: 'idle' | 'syncing' | 'error';
19
+ /** Daftar perubahan antrean */
20
+ queue: SyncChange[];
21
+ /** Panjang antrean */
22
+ queueLength: number;
23
+ /** Daftar konflik terdeteksi */
24
+ conflicts: Array<Record<string, unknown>>;
25
+ /** Perubahan yang dipindahkan ke dead-letter queue setelah gagal permanen */
26
+ deadLetters: SyncDeadLetter[];
27
+ /** Metrik agregat sinkronisasi untuk observability baseline */
28
+ metrics: SyncMetrics;
29
+ /** Error terakhir jika ada */
30
+ lastError: Error | null;
31
+ /** Timestamp terakhir sinkron */
32
+ lastSyncAt: number | null;
33
+ }
34
+ /**
35
+ * Nilai awal state sinkronisasi.
36
+ */
37
+ export declare const initialState: State;
38
+ export type SyncChangeType = 'CREATE' | 'UPDATE' | 'DELETE';
39
+ export interface SyncChange {
40
+ id: string;
41
+ table: string;
42
+ type: SyncChangeType;
43
+ record: Record<string, unknown>;
44
+ updated_at: number;
45
+ firstQueuedAt: number;
46
+ retryCount: number;
47
+ lastAttemptAt: number | null;
48
+ lastErrorMessage: string | null;
49
+ }
50
+ export interface SyncDeadLetter {
51
+ movedAt: number;
52
+ reason: string;
53
+ attempts: number;
54
+ errorMessage: string | null;
55
+ change: SyncChange;
56
+ }
57
+ export interface SyncMetrics {
58
+ totalPushAttempted: number;
59
+ totalPushSucceeded: number;
60
+ totalPushFailed: number;
61
+ totalPullApplied: number;
62
+ totalConflictsRecorded: number;
63
+ lastQueueLatencyMs: number;
64
+ lastRunDurationMs: number;
65
+ lastRunAt: number | null;
66
+ }
67
+ type SyncTraceContext = {
68
+ correlationId?: string;
69
+ syncBatchId?: string;
70
+ };
71
+ /**
72
+ * Kelas penyimpanan sinkronisasi berbasis mitt dan storage adapter.
73
+ */
74
+ export declare class SyncStore {
75
+ private context;
76
+ private state;
77
+ private emitter;
78
+ private storage;
79
+ /**
80
+ * Membuat instance SyncStore.
81
+ * @param context Konteks PosCore aplikasi
82
+ */
83
+ constructor(context: PosCore);
84
+ /**
85
+ * Berlangganan update state.
86
+ * @param handler Handler dipanggil saat update
87
+ * @returns Fungsi unsubscribe
88
+ */
89
+ subscribe(handler: Handler<State>): () => void;
90
+ /**
91
+ * Mengambil salinan state.
92
+ */
93
+ getState(): State;
94
+ /**
95
+ * Menggabungkan patch ke state, menyimpan, dan emit update.
96
+ * @param patch Partial state yang akan diterapkan
97
+ */
98
+ private setState;
99
+ private normalizeChange;
100
+ /**
101
+ * Memulai proses sinkronisasi.
102
+ */
103
+ startSync(traceContext?: SyncTraceContext): void;
104
+ /**
105
+ * Mengatur error pada state.
106
+ * @param error Error yang terjadi
107
+ */
108
+ setError(error: Error, traceContext?: SyncTraceContext): void;
109
+ /**
110
+ * Membersihkan error jika sebelumnya ada.
111
+ */
112
+ clearError(): void;
113
+ /**
114
+ * Menambahkan perubahan ke antrean.
115
+ * @param change Objek perubahan
116
+ */
117
+ enqueueChange(change: any): void;
118
+ /**
119
+ * Mengeluarkan perubahan terdepan dari antrean.
120
+ */
121
+ dequeueChange(): void;
122
+ removeQueuedChange(changeId: string): void;
123
+ /**
124
+ * Menambahkan detail konflik.
125
+ * @param conflict Objek detail konflik
126
+ */
127
+ addConflict(conflict: any): void;
128
+ markRetryAttempt(changeId: string, error?: unknown): void;
129
+ moveToDeadLetter(changeId: string, reason: string, error?: unknown): void;
130
+ requeueDeadLetter(changeId: string): boolean;
131
+ recordSyncMetrics(patch: Partial<SyncMetrics>): void;
132
+ /**
133
+ * Menghapus semua konflik.
134
+ */
135
+ clearConflicts(): void;
136
+ /**
137
+ * Mengatur timestamp terakhir sinkron.
138
+ * @param timestamp Waktu dalam milidetik
139
+ */
140
+ setLastSyncAt(timestamp: number): void;
141
+ /**
142
+ * Menandai selesai sinkron dan kembali ke idle.
143
+ */
144
+ finishSync(traceContext?: SyncTraceContext): void;
145
+ /**
146
+ * Menghapus semua data antrean dan state saat logout.
147
+ */
148
+ logoutLocal(): void;
149
+ /**
150
+ * Menyimpan state ke storage.
151
+ */
152
+ private save;
153
+ /**
154
+ * Memuat state dari storage.
155
+ * @returns Promise State atau null
156
+ */
157
+ private load;
158
+ /**
159
+ * Shutdown emitter dan listeners.
160
+ */
161
+ shutdown(): Promise<void>;
162
+ }
163
+ export {};
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "ofpos-shared-core",
3
+ "version": "1.1.0",
4
+ "description": "Offline-first POS client-side core library, platform and database agnostic.",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.esm.js",
7
+ "browser": "dist/index.browser.mjs",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.cjs.js"
13
+ },
14
+ "./browser": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.browser.mjs"
17
+ }
18
+ },
19
+ "types": "dist/index.d.ts",
20
+ "scripts": {
21
+ "clean": "rimraf dist",
22
+ "build": "npm run clean && tsc -b && node esbuild.config.js",
23
+ "bundle": "node esbuild.config.js",
24
+ "lint": "eslint \"src/**/*.{ts,js}\"",
25
+ "test": "jest --coverage",
26
+ "test:package-matrix": "bash ./scripts/verify-package-matrix.sh",
27
+ "verify:mode-matrix": "bash ./scripts/verify-mode-matrix.sh",
28
+ "build:distribution": "bash ./scripts/build-distribution-artifacts.sh",
29
+ "verify:distribution": "bash ./scripts/verify-distribution-artifacts.sh",
30
+ "verify:release-discipline": "node ./scripts/verify-release-discipline.js",
31
+ "verify:ofcore-spike": "node ./scripts/verify-ofcore-spike.js",
32
+ "verify:ofcore-bridges": "node ./scripts/verify-ofcore-bridges.js",
33
+ "verify:no-internal-bridge-imports": "node ./scripts/verify-no-internal-bridge-imports.js",
34
+ "verify:governance": "node ./scripts/verify-governance-transport.js",
35
+ "verify:governance:negative": "node ./scripts/verify-governance-transport-negative.js",
36
+ "verify:poscore-runtime-bridge": "node ./scripts/verify-poscore-runtime-bridge.js",
37
+ "verify:poscore-overrides": "node ./scripts/verify-poscore-overrides.js",
38
+ "audit:schema": "node ./scripts/schema-audit.js",
39
+ "docs:check-links": "bash ./scripts/check-docs-links.sh",
40
+ "ci:check": "npm run lint && npm test -- --runInBand && npm run build && npm run verify:release-discipline && npm run verify:ofcore-bridges && npm run verify:no-internal-bridge-imports && npm run verify:governance && npm run verify:governance:negative && npm run verify:poscore-runtime-bridge && npm run verify:poscore-overrides && npm run docs:check-links",
41
+ "test:watch": "jest --watch",
42
+ "docs": "typedoc src/index.ts --out tsdocs",
43
+ "prepack": "npm run build"
44
+ },
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "git+https://github.com/yourorg/shared-core.git"
48
+ },
49
+ "author": "Agus Made <krisnaparta@gmail.com>",
50
+ "license": "MIT",
51
+ "files": [
52
+ "dist"
53
+ ],
54
+ "dependencies": {
55
+ "ofcore": "0.1.0-alpha.0",
56
+ "ofauth-shared-core": "0.1.0-alpha.1"
57
+ },
58
+ "devDependencies": {
59
+ "@types/crypto-js": "^4.2.2",
60
+ "@types/jest": "^30.0.0",
61
+ "@types/reflect-metadata": "^0.1.0",
62
+ "@typescript-eslint/eslint-plugin": "^8.46.1",
63
+ "@typescript-eslint/parser": "^8.46.1",
64
+ "bcryptjs": "^3.0.2",
65
+ "crypto-js": "^4.2.0",
66
+ "date-fns": "^4.1.0",
67
+ "dotenv": "^16.0.3",
68
+ "esbuild": "^0.25.11",
69
+ "eslint": "^9.37.0",
70
+ "jest": "^30.2.0",
71
+ "jest-html-reporters": "^3.1.7",
72
+ "mitt": "^3.0.1",
73
+ "react": "^19.2.0",
74
+ "reflect-metadata": "^0.2.2",
75
+ "rimraf": "^6.0.1",
76
+ "ts-jest": "^29.4.5",
77
+ "ts-node": "^10.9.2",
78
+ "typedoc": "^0.28.14",
79
+ "typescript": "^5.9.3",
80
+ "uuidv7": "^1.0.2"
81
+ }
82
+ }