@inowu/cashdro 0.1.0 → 0.3.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.
package/README.md CHANGED
@@ -11,6 +11,8 @@ withdrawals and cash-management operations, plus cash-level and reporting querie
11
11
  - [Authentication](#authentication)
12
12
  - [Configuration](#configuration)
13
13
  - [How transactions work](#how-transactions-work)
14
+ - [Non-blocking usage](#non-blocking-usage)
15
+ - [Debug mode](#debug-mode)
14
16
  - [Client reference](#client-reference)
15
17
  - [Connectivity & health](#connectivity--health)
16
18
  - [Transactions — lifecycle](#transactions--lifecycle)
@@ -82,6 +84,7 @@ The optional `posuser`, `posid` and `aliasid` fields accepted by transactions ar
82
84
  | `maxRetries` | Automatic retries with exponential backoff (default 2). |
83
85
  | `headers` | Extra headers to send on every request. |
84
86
  | `fetch` | Custom `fetch` implementation (see [Advanced](#custom-fetch--self-signed-tls)). |
87
+ | `debug` | Trace the multi-operation helpers — `true` to log, or a handler function (see [Debug mode](#debug-mode)). |
85
88
 
86
89
  ```ts
87
90
  const cashdro = new CashDroClient({
@@ -123,6 +126,84 @@ is configured for.
123
126
  while one is active fails with `code -2`. Use `askOperationExecuting()` to detect
124
127
  and recover a stuck operation.
125
128
 
129
+ ## Non-blocking usage
130
+
131
+ A sale can take a while — the unit waits for the customer to insert cash. Don't
132
+ `await` the whole `start → wait → import` chain in a request handler; instead let
133
+ it run in the background and react via callbacks. The `onStart` callback hands you
134
+ the `operationId` the instant it's known (before any waiting), so the UI can show a
135
+ pay screen and offer a Cancel button immediately.
136
+
137
+ ```ts
138
+ import { CashDroClient, CashDroTimeoutError } from "@inowu/cashdro";
139
+
140
+ // Fire-and-forget: runs start → acknowledge → poll → import in the background.
141
+ void cashdro
142
+ .sale(1250, {
143
+ waitForFinish: true, // poll until the customer finishes paying
144
+ autoImport: true, // record it on the unit when done
145
+ onStart: (operationId) => showPayScreen(operationId), // returned immediately
146
+ poll: { onPoll: (status) => updateUi(status), timeoutMs: 120_000 },
147
+ })
148
+ .then((r) => onPaid(r.final?.response?.operation?.operation)) // totalin / totalout
149
+ .catch((err) => {
150
+ if (err instanceof CashDroTimeoutError) return; // nobody paid in time
151
+ onError(err);
152
+ });
153
+ ```
154
+
155
+ To let a **Cancel** button stop a sale in flight, cancel it on the unit — the
156
+ background poll then resolves at state `F` on its next tick:
157
+
158
+ ```ts
159
+ cancelButton.onclick = () => cashdro.finishOperation(operationId, 2);
160
+ ```
161
+
162
+ Equivalently you can drive the steps yourself: `await cashdro.sale(...)` returns
163
+ after start+acknowledge (fast), then call `cashdro.pollUntilFinished(id)` from a
164
+ background task. Pass an `AbortSignal` in `poll`/`pollUntilFinished` options if you
165
+ need to stop polling without cancelling the transaction, or
166
+ `cancelOnTimeout: true` to auto-cancel the sale if nobody pays in time.
167
+
168
+ ## Debug mode
169
+
170
+ The multi-operation helpers (`sale`, `runOperation`, `pollUntilFinished`, …) can
171
+ trace exactly what they do — each underlying call, its result, and every status
172
+ poll. Pass `debug: true` to log to the console:
173
+
174
+ ```ts
175
+ const cashdro = new CashDroClient({ baseUrl, username, password, debug: true });
176
+ await cashdro.sale(100, { waitForFinish: true, autoImport: true });
177
+ ```
178
+
179
+ ```text
180
+ [cashdro] sale: startOperation(type=4, amount=100)
181
+ [cashdro] sale: startOperation → operationId=128 (code=1, 41ms)
182
+ [cashdro] sale: acknowledgeOperationId(128) → code=1
183
+ [cashdro] pollUntilFinished(128): polling every 1000ms, timeout 120000ms
184
+ [cashdro] pollUntilFinished(128): poll #1 → state=Q
185
+ [cashdro] pollUntilFinished(128): poll #2 → state=E
186
+ [cashdro] pollUntilFinished(128): finished after 3 poll(s)
187
+ [cashdro] sale: setOperationImported(128) → code=1
188
+ [cashdro] sale: done (operationId=128)
189
+ ```
190
+
191
+ For structured logging, pass a handler instead and route the `CashDroDebugEvent`s
192
+ to your own logger:
193
+
194
+ ```ts
195
+ const cashdro = new CashDroClient({
196
+ baseUrl,
197
+ username,
198
+ password,
199
+ debug: (e) => logger.debug({ seq: e.seq, helper: e.helper, op: e.op, ...e.detail }, e.message),
200
+ });
201
+ ```
202
+
203
+ Each event is `{ seq, at, helper, op, phase, detail, message }` — `phase` is
204
+ `"call"`, `"result"`, `"poll"`, or `"info"`. This traces the helper orchestration
205
+ and is independent of the transport layer.
206
+
126
207
  ## Client reference
127
208
 
128
209
  Methods that map 1:1 to a device operation return the raw response; the convenience
@@ -187,13 +268,15 @@ await cashdro.setOperationImported(operationId);
187
268
  | Method | What it does |
188
269
  |--------|--------------|
189
270
  | `runOperation(params, opts?)` | The engine behind the convenience methods: `start → (acknowledge) → optional poll → optional import`. Returns `{ operationId, started, final?, imported? }`. |
190
- | `pollUntilFinished(id, opts?)` | Poll `askOperation` until `state === "F"`; returns the full final response. Throws `CashDroTimeoutError` on timeout (the operation stays open). |
271
+ | `pollUntilFinished(id, opts?)` | Poll `askOperation` until `state === "F"`; returns the full final response. Throws `CashDroTimeoutError` on timeout. |
191
272
 
192
273
  `runOperation` options: `acknowledge` (default `true`), `waitForFinish` (default
193
274
  `false` — a sale blocks on the customer's cash), `autoImport`, an `onStart(id,
194
275
  started)` callback, and `poll` (forwarded to `pollUntilFinished`).
195
276
  `pollUntilFinished` options: `intervalMs`, `timeoutMs`, `signal` (`AbortSignal`),
196
- `onPoll(status)`.
277
+ `onPoll(status)`, and **`cancelOnTimeout`** — when `true`, a timeout cancels and
278
+ imports the operation before throwing, so it doesn't stay open and block the next
279
+ transaction with `code -2` (a common footgun when testing sales without cash).
197
280
 
198
281
  ```ts
199
282
  const { operationId } = await cashdro.sale(500, {
package/dist/cashdro.d.ts CHANGED
@@ -14,6 +14,29 @@
14
14
  * purely a nicer surface and is never overwritten by `fern generate`.
15
15
  */
16
16
  import { CashDroApiClient, CashDroApi } from "./index.js";
17
+ /**
18
+ * A single trace event emitted by the multi-operation helpers when debug is
19
+ * enabled (see {@link CashDroOptions.debug}). One is emitted before and after
20
+ * each underlying call, plus one per status poll.
21
+ */
22
+ export interface CashDroDebugEvent {
23
+ /** 1-based sequence number within this client instance. */
24
+ seq: number;
25
+ /** Timestamp (ms since epoch) the event was emitted. */
26
+ at: number;
27
+ /** The high-level helper in play, e.g. "sale", "runOperation", "pollUntilFinished". */
28
+ helper?: string;
29
+ /** The underlying operation, e.g. "startOperation", "askOperation", "done". */
30
+ op: string;
31
+ /** "call" before a request, "result" after it, "poll" per status poll, "info" for milestones. */
32
+ phase: "call" | "result" | "poll" | "info";
33
+ /** Structured details (operationId, type, amount, code, state, attempt, durationMs, ...). */
34
+ detail?: Record<string, unknown>;
35
+ /** Pre-formatted, human-readable one-liner. */
36
+ message: string;
37
+ }
38
+ /** Receives {@link CashDroDebugEvent}s. Pass one as `debug` to integrate with your own logger. */
39
+ export type CashDroDebugHandler = (event: CashDroDebugEvent) => void;
17
40
  /** Thrown when a CashDro call returns a non-success `code`. Carries the raw response. */
18
41
  export declare class CashDroError extends Error {
19
42
  readonly response: unknown;
@@ -34,6 +57,12 @@ export interface PollOptions {
34
57
  signal?: AbortSignal;
35
58
  /** Called with every poll's full response (state, totals, devices, messages...). */
36
59
  onPoll?: (status: CashDroApi.AskOperationResponse) => void;
60
+ /**
61
+ * On timeout, cancel the operation (`finishOperation` type 2) and import it,
62
+ * so it doesn't stay open and block the next transaction with `code -2`.
63
+ * `CashDroTimeoutError` is still thrown afterwards. Default `false`.
64
+ */
65
+ cancelOnTimeout?: boolean;
37
66
  }
38
67
  export interface RunOperationOptions {
39
68
  /** Send acknowledgeOperationId after starting. Default true. */
@@ -46,6 +75,8 @@ export interface RunOperationOptions {
46
75
  onStart?: (operationId: number, started: CashDroApi.StartOperationResponse) => void;
47
76
  /** Forwarded to pollUntilFinished when waitForFinish is true. */
48
77
  poll?: PollOptions;
78
+ /** Label shown in debug output (e.g. "sale"). Defaults to "runOperation". */
79
+ helper?: string;
49
80
  }
50
81
  /**
51
82
  * Result of {@link CashDroClient.runOperation}. Nothing is hidden — every raw
@@ -69,8 +100,18 @@ export interface RunOperationResult {
69
100
  * e.g. `{ baseUrl: "https://cashdro.prod.example/" }`.
70
101
  * - `environment` — alternative to baseUrl (baseUrl takes precedence).
71
102
  * - `headers`, `fetch`, `timeoutInSeconds`, `maxRetries`, `auth`, ...
103
+ *
104
+ * Plus a `debug` option to trace the multi-operation helpers.
72
105
  */
73
- export type CashDroOptions = CashDroApiClient.Options;
106
+ export type CashDroOptions = CashDroApiClient.Options & {
107
+ /**
108
+ * Trace the multi-operation helpers (`runOperation`, `pollUntilFinished`,
109
+ * `sale`, …) so you can see each underlying call, its result, and every
110
+ * status poll. `true` logs to the console; pass a function to receive
111
+ * structured {@link CashDroDebugEvent}s and route them to your own logger.
112
+ */
113
+ debug?: boolean | CashDroDebugHandler;
114
+ };
74
115
  /** type id for startOperation. 4 = sale, 3 = payment, 1 = load, 2 = withdrawal, 8 = transfer, 16 = deposit, 18 = change. */
75
116
  export type OperationType = number;
76
117
  export interface StartOperationParams {
@@ -95,9 +136,13 @@ export interface DenominationPiece {
95
136
  isBill: boolean;
96
137
  }
97
138
  export declare class CashDroClient {
98
- /** The underlying Fern-generated client, exposed for escape-hatch access. */
139
+ /** The underlying generated client, exposed for escape-hatch access. */
99
140
  readonly api: CashDroApiClient;
141
+ private readonly emitDebug?;
142
+ private seq;
100
143
  constructor(options: CashDroOptions);
144
+ /** Emit a debug event if a handler is configured (no-op otherwise). */
145
+ private emit;
101
146
  /** Verify connection and credentials. */
102
147
  doTest(requestOptions?: CashDroApiClient.RequestOptions): import("./core/index.js").HttpResponsePromise<CashDroApi.SimpleResponse>;
103
148
  /** Open a cash-movement transaction; returns an operationId. */
@@ -1 +1 @@
1
- {"version":3,"file":"cashdro.d.ts","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI1D,yFAAyF;AACzF,qBAAa,YAAa,SAAQ,KAAK;IAG/B,QAAQ,CAAC,QAAQ,EAAE,OAAO;gBAD1B,OAAO,EAAE,MAAM,EACN,QAAQ,EAAE,OAAO;CAKjC;AAED,sGAAsG;AACtG,qBAAa,mBAAoB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,oBAAoB;gBADrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,CAAC,oBAAoB;CAKrD;AAED,MAAM,WAAW,WAAW;IACxB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,oFAAoF;IACpF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,oBAAoB,KAAK,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,mBAAmB;IAChC,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8FAA8F;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,sBAAsB,KAAK,IAAI,CAAC;IACpF,iEAAiE;IACjE,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;IAC3C,iFAAiF;IACjF,KAAK,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC;IACxC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAEtD,4HAA4H;AAC5H,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,2GAA2G;IAC3G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;AAE3G,wGAAwG;AACxG,MAAM,WAAW,iBAAiB;IAC9B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;CACnB;AAaD,qBAAa,aAAa;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;gBAEnB,OAAO,EAAE,cAAc;IAInC,yCAAyC;IACzC,MAAM,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAIvD,gEAAgE;IAChE,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAiB7F,4CAA4C;IAC5C,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAO5F,kCAAkC;IAClC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAIlF,0EAA0E;IAC1E,qBAAqB,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAItE;;;;OAIG;IACH,eAAe,CACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EACf,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAQpD,iDAAiD;IACjD,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAO1F,yCAAyC;IACzC,oBAAoB,CAChB,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,EAChE,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAKpD,0CAA0C;IAC1C,iBAAiB,CACb,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EAC9E,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAKpD,wCAAwC;IACxC,SAAS,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAI1D,4CAA4C;IAC5C,YAAY,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAI7D,0CAA0C;IAC1C,YAAY,CACR,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,EACrF,cAAc,CAAC,EAAE,gBAAgB,CAAC,cAAc;IAOpD;;;;;OAKG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC;IAa9G;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAe7G,kEAAkE;IAClE,OAAO,CAAC,GAAG;IAUX,6BAA6B;IAC7B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe;IAG1C,+BAA+B;IAC/B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe;IAG7C,yDAAyD;IACzD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,UAAe;IAMrD,wFAAwF;IACxF,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,IAAI,GAAE,UAAe;IASxE,+FAA+F;IAC/F,OAAO,CAAC,IAAI,GAAE,UAAe;IAG7B,iCAAiC;IACjC,MAAM,CAAC,IAAI,GAAE,UAAe;IAG5B,6BAA6B;IAC7B,IAAI,CAAC,IAAI,GAAE,UAAe;IAG1B,mEAAmE;IACnE,QAAQ,CAAC,IAAI,GAAE,UAAe;IAG9B,sFAAsF;IACtF,kBAAkB,CAAC,IAAI,GAAE,UAAe;IAGxC,uEAAuE;IACvE,iBAAiB,CAAC,IAAI,GAAE,UAAe;IAGvC,sEAAsE;IACtE,iBAAiB,CAAC,IAAI,GAAE,UAAe;IAIvC;;;;;OAKG;IACH,gBAAgB,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;KAAE;CAQjF"}
1
+ {"version":3,"file":"cashdro.d.ts","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
package/dist/cashdro.js CHANGED
@@ -15,6 +15,10 @@
15
15
  */
16
16
  import { CashDroApiClient } from "./index.js";
17
17
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
18
+ const defaultDebugHandler = (e) => {
19
+ // eslint-disable-next-line no-console
20
+ console.debug(`[cashdro] ${e.message}`);
21
+ };
18
22
  /** Thrown when a CashDro call returns a non-success `code`. Carries the raw response. */
19
23
  export class CashDroError extends Error {
20
24
  response;
@@ -46,10 +50,21 @@ const toSpanishPiece = (p) => ({
46
50
  isBillete: String(p.isBill),
47
51
  });
48
52
  export class CashDroClient {
49
- /** The underlying Fern-generated client, exposed for escape-hatch access. */
53
+ /** The underlying generated client, exposed for escape-hatch access. */
50
54
  api;
55
+ emitDebug;
56
+ seq = 0;
51
57
  constructor(options) {
52
- this.api = new CashDroApiClient(options);
58
+ const { debug, ...apiOptions } = options;
59
+ this.api = new CashDroApiClient(apiOptions);
60
+ this.emitDebug =
61
+ debug === true ? defaultDebugHandler : typeof debug === "function" ? debug : undefined;
62
+ }
63
+ /** Emit a debug event if a handler is configured (no-op otherwise). */
64
+ emit(event) {
65
+ const handler = this.emitDebug;
66
+ if (handler)
67
+ handler({ seq: ++this.seq, at: Date.now(), ...event });
53
68
  }
54
69
  /** Verify connection and credentials. */
55
70
  doTest(requestOptions) {
@@ -120,17 +135,69 @@ export class CashDroClient {
120
135
  * so cancel it with `finishOperation(id, 2)` if you want to abort.
121
136
  */
122
137
  async pollUntilFinished(operationId, opts = {}) {
123
- const { intervalMs = 1000, timeoutMs = 120_000, signal, onPoll } = opts;
138
+ const { intervalMs = 1000, timeoutMs = 120_000, signal, onPoll, cancelOnTimeout = false } = opts;
124
139
  const deadline = Date.now() + timeoutMs;
140
+ this.emit({
141
+ op: "pollUntilFinished",
142
+ phase: "info",
143
+ detail: { operationId, intervalMs, timeoutMs },
144
+ message: `pollUntilFinished(${operationId}): polling every ${intervalMs}ms, timeout ${timeoutMs}ms`,
145
+ });
146
+ let attempt = 0;
125
147
  while (true) {
148
+ attempt++;
126
149
  const status = await this.askOperation(operationId);
150
+ const state = status.response?.operation?.operation?.state;
151
+ this.emit({
152
+ op: "askOperation",
153
+ phase: "poll",
154
+ detail: { operationId, attempt, state },
155
+ message: `pollUntilFinished(${operationId}): poll #${attempt} → state=${state ?? "?"}`,
156
+ });
127
157
  onPoll?.(status);
128
- if (status.response?.operation?.operation?.state === "F")
158
+ if (state === "F") {
159
+ this.emit({
160
+ op: "pollUntilFinished",
161
+ phase: "info",
162
+ detail: { operationId, attempt, state },
163
+ message: `pollUntilFinished(${operationId}): finished after ${attempt} poll(s)`,
164
+ });
129
165
  return status;
130
- if (signal?.aborted)
166
+ }
167
+ if (signal?.aborted) {
168
+ this.emit({
169
+ op: "pollUntilFinished",
170
+ phase: "info",
171
+ detail: { operationId, attempt, aborted: true },
172
+ message: `pollUntilFinished(${operationId}): aborted after ${attempt} poll(s)`,
173
+ });
131
174
  throw new CashDroError(`poll aborted for operation ${operationId}`, status);
132
- if (Date.now() >= deadline)
175
+ }
176
+ if (Date.now() >= deadline) {
177
+ this.emit({
178
+ op: "pollUntilFinished",
179
+ phase: "info",
180
+ detail: { operationId, attempt, timedOut: true },
181
+ message: `pollUntilFinished(${operationId}): timed out after ${attempt} poll(s)`,
182
+ });
183
+ if (cancelOnTimeout) {
184
+ this.emit({
185
+ helper: "pollUntilFinished",
186
+ op: "finishOperation",
187
+ phase: "call",
188
+ detail: { operationId, type: 2, reason: "cancelOnTimeout" },
189
+ message: `pollUntilFinished(${operationId}): cancelOnTimeout → cancel + import`,
190
+ });
191
+ try {
192
+ await this.finishOperation(operationId, 2);
193
+ await this.setOperationImported(operationId);
194
+ }
195
+ catch {
196
+ // best-effort cleanup; the timeout is surfaced regardless
197
+ }
198
+ }
133
199
  throw new CashDroTimeoutError(operationId, status);
200
+ }
134
201
  await sleep(intervalMs);
135
202
  }
136
203
  }
@@ -146,75 +213,116 @@ export class CashDroClient {
146
213
  */
147
214
  async runOperation(params, opts = {}) {
148
215
  const { acknowledge = true, waitForFinish = false, autoImport = false, onStart, poll } = opts;
216
+ const helper = opts.helper ?? "runOperation";
217
+ this.emit({
218
+ helper,
219
+ op: "startOperation",
220
+ phase: "call",
221
+ detail: { type: params.type, amount: params.amount, parameters: params.parameters },
222
+ message: `${helper}: startOperation(type=${params.type}${params.amount != null ? `, amount=${params.amount}` : ""})`,
223
+ });
224
+ let t = Date.now();
149
225
  const started = await this.startOperation(params);
150
226
  const operationId = Number(started.response?.operation?.operationId);
227
+ this.emit({
228
+ helper,
229
+ op: "startOperation",
230
+ phase: "result",
231
+ detail: { operationId, code: started.code, durationMs: Date.now() - t },
232
+ message: `${helper}: startOperation → operationId=${operationId} (code=${started.code}, ${Date.now() - t}ms)`,
233
+ });
151
234
  if (started.code !== 1 || Number.isNaN(operationId)) {
152
235
  throw new CashDroError(`startOperation failed (code ${started.code})`, started);
153
236
  }
154
237
  onStart?.(operationId, started);
155
238
  const result = { operationId, started };
156
- if (acknowledge)
157
- await this.acknowledgeOperationId(operationId);
239
+ if (acknowledge) {
240
+ t = Date.now();
241
+ const ack = await this.acknowledgeOperationId(operationId);
242
+ this.emit({
243
+ helper,
244
+ op: "acknowledgeOperationId",
245
+ phase: "result",
246
+ detail: { operationId, code: ack.code, durationMs: Date.now() - t },
247
+ message: `${helper}: acknowledgeOperationId(${operationId}) → code=${ack.code}`,
248
+ });
249
+ }
158
250
  if (waitForFinish)
159
251
  result.final = await this.pollUntilFinished(operationId, poll);
160
- if (autoImport)
252
+ if (autoImport) {
253
+ t = Date.now();
161
254
  result.imported = await this.setOperationImported(operationId);
255
+ this.emit({
256
+ helper,
257
+ op: "setOperationImported",
258
+ phase: "result",
259
+ detail: { operationId, code: result.imported.code, durationMs: Date.now() - t },
260
+ message: `${helper}: setOperationImported(${operationId}) → code=${result.imported.code}`,
261
+ });
262
+ }
263
+ this.emit({
264
+ helper,
265
+ op: "done",
266
+ phase: "info",
267
+ detail: { operationId, finalState: result.final?.response?.operation?.operation?.state },
268
+ message: `${helper}: done (operationId=${operationId})`,
269
+ });
162
270
  return result;
163
271
  }
164
272
  /** Shared plumbing for the per-transaction conveniences below. */
165
- txn(type, opts, extra) {
273
+ txn(type, opts, extra, helper) {
166
274
  const { posid, posuser, aliasid, ...run } = opts;
167
- return this.runOperation({ type, posid, posuser, aliasid, amount: extra?.amount, parameters: extra?.parameters }, run);
275
+ return this.runOperation({ type, posid, posuser, aliasid, amount: extra?.amount, parameters: extra?.parameters }, { ...run, helper: helper ?? run.helper });
168
276
  }
169
277
  // --- amount-based transactions (parameters = {"amount":"<minor units>"}) ---
170
278
  /** Sale / venta (type 4). */
171
279
  sale(amount, opts = {}) {
172
- return this.txn(4, opts, { amount });
280
+ return this.txn(4, opts, { amount }, "sale");
173
281
  }
174
282
  /** Payment / pago (type 3). */
175
283
  payment(amount, opts = {}) {
176
- return this.txn(3, opts, { amount });
284
+ return this.txn(3, opts, { amount }, "payment");
177
285
  }
178
286
  /** Deposit by amount / ingreso por importe (type 17). */
179
287
  depositByAmount(amount, opts = {}) {
180
- return this.txn(17, opts, { amount });
288
+ return this.txn(17, opts, { amount }, "depositByAmount");
181
289
  }
182
290
  // --- denomination-based payment (parameters = {"pieces":{"piece":[...]}}) ---
183
291
  /** Pay by denomination / pago por denominación (type 3) — dispense the given pieces. */
184
292
  paymentByDenomination(pieces, opts = {}) {
185
293
  const parameters = JSON.stringify({ pieces: { piece: pieces.map(toEnglishPiece) } });
186
- return this.txn(3, opts, { parameters });
294
+ return this.txn(3, opts, { parameters }, "paymentByDenomination");
187
295
  }
188
296
  // --- transactions with no startOperation parameters ---
189
297
  // (driven to completion on the unit's web UI, by finishOperation, or by the
190
298
  // operator; use waitForFinish / finishOperation / finishWithPieces as needed)
191
299
  /** Deposit / ingreso (type 16). Finalize with finishOperation(id, 1) once the user is done. */
192
300
  deposit(opts = {}) {
193
- return this.txn(16, opts);
301
+ return this.txn(16, opts, undefined, "deposit");
194
302
  }
195
303
  /** Change / cambio (type 18). */
196
304
  change(opts = {}) {
197
- return this.txn(18, opts);
305
+ return this.txn(18, opts, undefined, "change");
198
306
  }
199
307
  /** Load / carga (type 1). */
200
308
  load(opts = {}) {
201
- return this.txn(1, opts);
309
+ return this.txn(1, opts, undefined, "load");
202
310
  }
203
311
  /** Withdrawal / retirada (type 2), driven by the unit's web UI. */
204
312
  withdraw(opts = {}) {
205
- return this.txn(2, opts);
313
+ return this.txn(2, opts, undefined, "withdraw");
206
314
  }
207
315
  /** Transfer to cassette / traspaso a casete (type 8), driven by the unit's web UI. */
208
316
  transferToCassette(opts = {}) {
209
- return this.txn(8, opts);
317
+ return this.txn(8, opts, undefined, "transferToCassette");
210
318
  }
211
319
  /** Empty the note cassette / retirada casete de billetes (type 10). */
212
320
  emptyNoteCassette(opts = {}) {
213
- return this.txn(10, opts);
321
+ return this.txn(10, opts, undefined, "emptyNoteCassette");
214
322
  }
215
323
  /** Empty the coin cassette / retirada casete de monedas (type 11). */
216
324
  emptyCoinCassette(opts = {}) {
217
- return this.txn(11, opts);
325
+ return this.txn(11, opts, undefined, "emptyCoinCassette");
218
326
  }
219
327
  /**
220
328
  * Finalize a "sin interfaz web" withdrawal (type 2) or transfer to cassette
@@ -1 +1 @@
1
- {"version":3,"file":"cashdro.js","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cashdro.js","sourceRoot":"","sources":["../cashdro.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,47 +1,49 @@
1
1
  {
2
- "name": "@inowu/cashdro",
3
- "version": "0.1.0",
4
- "description": "TypeScript client for CashDro automated cash recyclers over the Web Service integration API.",
5
- "license": "UNLICENSED",
6
- "author": "Inowu",
7
- "keywords": [
8
- "cashdro",
9
- "cash-recycler",
10
- "payments",
11
- "point-of-sale",
12
- "sdk"
13
- ],
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/Inowu/cashdro-sdk-typescript.git"
17
- },
18
- "type": "module",
19
- "main": "./dist/main.js",
20
- "module": "./dist/main.js",
21
- "types": "./dist/main.d.ts",
22
- "exports": {
23
- ".": {
24
- "types": "./dist/main.d.ts",
25
- "import": "./dist/main.js",
26
- "default": "./dist/main.js"
2
+ "name": "@inowu/cashdro",
3
+ "version": "0.3.0",
4
+ "description": "TypeScript client for CashDro automated cash recyclers over the Web Service integration API.",
5
+ "license": "UNLICENSED",
6
+ "author": "Inowu",
7
+ "keywords": [
8
+ "cashdro",
9
+ "cash-recycler",
10
+ "payments",
11
+ "point-of-sale",
12
+ "sdk"
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/Inowu/cashdro-sdk-typescript.git"
17
+ },
18
+ "type": "module",
19
+ "main": "./dist/main.js",
20
+ "module": "./dist/main.js",
21
+ "types": "./dist/main.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/main.d.ts",
25
+ "import": "./dist/main.js",
26
+ "default": "./dist/main.js"
27
+ },
28
+ "./package.json": "./package.json"
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "README.md"
33
+ ],
34
+ "sideEffects": false,
35
+ "engines": {
36
+ "node": ">=18"
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "prepack": "npm run build"
44
+ },
45
+ "devDependencies": {
46
+ "@types/node": "^22",
47
+ "typescript": "^5.6.3"
27
48
  }
28
- },
29
- "files": [
30
- "dist",
31
- "README.md"
32
- ],
33
- "sideEffects": false,
34
- "engines": {
35
- "node": ">=18"
36
- },
37
- "publishConfig": {
38
- "access": "public"
39
- },
40
- "devDependencies": {
41
- "@types/node": "^22",
42
- "typescript": "^5.6.3"
43
- },
44
- "scripts": {
45
- "build": "tsc -p tsconfig.json"
46
- }
47
- }
49
+ }