react-native-telpo 1.0.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 (37) hide show
  1. package/README.md +300 -0
  2. package/lib/commonjs/index.js +40 -0
  3. package/lib/commonjs/index.js.map +1 -0
  4. package/lib/commonjs/nfc/index.js +322 -0
  5. package/lib/commonjs/nfc/index.js.map +1 -0
  6. package/lib/commonjs/printer/index.js +379 -0
  7. package/lib/commonjs/printer/index.js.map +1 -0
  8. package/lib/commonjs/scanner/index.js +301 -0
  9. package/lib/commonjs/scanner/index.js.map +1 -0
  10. package/lib/commonjs/types/index.js +37 -0
  11. package/lib/commonjs/types/index.js.map +1 -0
  12. package/lib/module/index.js +27 -0
  13. package/lib/module/index.js.map +1 -0
  14. package/lib/module/nfc/index.js +317 -0
  15. package/lib/module/nfc/index.js.map +1 -0
  16. package/lib/module/printer/index.js +374 -0
  17. package/lib/module/printer/index.js.map +1 -0
  18. package/lib/module/scanner/index.js +294 -0
  19. package/lib/module/scanner/index.js.map +1 -0
  20. package/lib/module/types/index.js +38 -0
  21. package/lib/module/types/index.js.map +1 -0
  22. package/lib/typescript/index.d.ts +21 -0
  23. package/lib/typescript/index.d.ts.map +1 -0
  24. package/lib/typescript/nfc/index.d.ts +83 -0
  25. package/lib/typescript/nfc/index.d.ts.map +1 -0
  26. package/lib/typescript/printer/index.d.ts +91 -0
  27. package/lib/typescript/printer/index.d.ts.map +1 -0
  28. package/lib/typescript/scanner/index.d.ts +81 -0
  29. package/lib/typescript/scanner/index.d.ts.map +1 -0
  30. package/lib/typescript/types/index.d.ts +114 -0
  31. package/lib/typescript/types/index.d.ts.map +1 -0
  32. package/package.json +104 -0
  33. package/src/index.ts +55 -0
  34. package/src/nfc/index.ts +362 -0
  35. package/src/printer/index.ts +432 -0
  36. package/src/scanner/index.tsx +397 -0
  37. package/src/types/index.ts +161 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","useState","forwardRef","StyleSheet","View","Text","TelpoErrorCode","Camera","useCameraDevice","useCodeScanner","loadScannerLib","vc","require","buildError","code","message","success","error","wrapSuccess","data","FORMAT_MAP","qr","aztec","itf","mapFormat","vcFormat","toLowerCase","DEFAULT_FORMATS","useTelpoScanner","params","onResult","options","libLoaded","isReady","setIsReady","hasPermission","setHasPermission","setError","lastValue","lastTime","deduplicateMs","current","SCANNER_NOT_ACTIVE","requestPermission","status","requestCameraPermission","granted","SCANNER_CAMERA_PERMISSION_DENIED","onScan","codes","length","value","displayValue","now","Date","format","type","timestamp","TelpoScannerView","scanner","style","facing","formats","active","showOverlay","overlayColor","permissionFallback","ref","permRequested","setPermRequested","createElement","styles","container","errorText","Fragment","subText","InnerScannerView","displayName","device","codeScanner","codeTypes","onCodeScanned","absoluteFill","isActive","overlayContainer","pointerEvents","scanFrame","borderColor","create","flex","backgroundColor","alignItems","justifyContent","color","fontSize","textAlign","marginHorizontal","marginTop","absoluteFillObject","width","height","borderWidth","borderRadius"],"sourceRoot":"..\\..\\..\\src","sources":["scanner/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ // ─────────────────────────────────────────────
2
+ // Shared Types — react-native-telpo
3
+ // ─────────────────────────────────────────────
4
+
5
+ // ── Generic ──────────────────────────────────
6
+
7
+ /** Standard SDK result wrapper */
8
+
9
+ export let TelpoErrorCode = /*#__PURE__*/function (TelpoErrorCode) {
10
+ // Printer
11
+ TelpoErrorCode["PRINTER_NOT_CONNECTED"] = "PRINTER_NOT_CONNECTED";
12
+ TelpoErrorCode["PRINTER_NO_PAPER"] = "PRINTER_NO_PAPER";
13
+ TelpoErrorCode["PRINTER_BUSY"] = "PRINTER_BUSY";
14
+ TelpoErrorCode["PRINTER_PERMISSION_DENIED"] = "PRINTER_PERMISSION_DENIED";
15
+ TelpoErrorCode["PRINTER_INIT_FAILED"] = "PRINTER_INIT_FAILED";
16
+ TelpoErrorCode["PRINTER_PRINT_FAILED"] = "PRINTER_PRINT_FAILED";
17
+ // Scanner
18
+ TelpoErrorCode["SCANNER_CAMERA_PERMISSION_DENIED"] = "SCANNER_CAMERA_PERMISSION_DENIED";
19
+ TelpoErrorCode["SCANNER_NOT_ACTIVE"] = "SCANNER_NOT_ACTIVE";
20
+ TelpoErrorCode["SCANNER_ALREADY_ACTIVE"] = "SCANNER_ALREADY_ACTIVE";
21
+ // NFC
22
+ TelpoErrorCode["NFC_NOT_SUPPORTED"] = "NFC_NOT_SUPPORTED";
23
+ TelpoErrorCode["NFC_DISABLED"] = "NFC_DISABLED";
24
+ TelpoErrorCode["NFC_PERMISSION_DENIED"] = "NFC_PERMISSION_DENIED";
25
+ TelpoErrorCode["NFC_SCAN_CANCELLED"] = "NFC_SCAN_CANCELLED";
26
+ TelpoErrorCode["NFC_READ_FAILED"] = "NFC_READ_FAILED";
27
+ TelpoErrorCode["NFC_ALREADY_LISTENING"] = "NFC_ALREADY_LISTENING";
28
+ // Generic
29
+ TelpoErrorCode["UNKNOWN"] = "UNKNOWN";
30
+ return TelpoErrorCode;
31
+ }({});
32
+
33
+ // ── Printer Types ─────────────────────────────
34
+
35
+ // ── Scanner Types ─────────────────────────────
36
+
37
+ // ── NFC Types ─────────────────────────────────
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TelpoErrorCode"],"sourceRoot":"..\\..\\..\\src","sources":["types/index.ts"],"mappings":"AAAA;AACA;AACA;;AAEA;;AAEA;;AAWA,WAAYA,cAAc,0BAAdA,cAAc;EACxB;EADUA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EASxB;EATUA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAcxB;EAdUA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAsBxB;EAtBUA,cAAc;EAAA,OAAdA,cAAc;AAAA;;AA0B1B;;AA4DA;;AAmCA","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * react-native-telpo
3
+ *
4
+ * Production SDK for Telpo devices:
5
+ * - TelpoPrinter → Thermal receipt/ticket printing (M1, TPS320)
6
+ * - TelpoNfc → NFC/contactless card UID reading (T20, TPS320)
7
+ * - TelpoScanner → QR code and barcode scanning (T20, M1, TPS320)
8
+ *
9
+ * @example
10
+ * import { TelpoPrinter, TelpoNfc, TelpoScanner } from 'react-native-telpo';
11
+ *
12
+ * // or named imports:
13
+ * import { useTelpoScanner, TelpoScannerView } from 'react-native-telpo';
14
+ */
15
+ export { TelpoPrinter } from './printer';
16
+ export { TelpoNfc } from './nfc';
17
+ export { useTelpoScanner, TelpoScannerView } from './scanner';
18
+ export type { TelpoResult, TelpoError, TelpoErrorCode, PrinterDevice, PrinterOptions, PrinterConnectionType, PrintLine, PrintTicket, PrintReceiptOptions, PrintAlignment, PrintFontSize, ScanResult, ScannerOptions, BarcodeFormat, NfcTag, NfcOptions, NfcTechnology, } from './types';
19
+ export type { UseTelpoScannerReturn, TelpoScannerViewProps } from './scanner';
20
+ export { TelpoErrorCode as ErrorCode } from './types';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAI9D,YAAY,EAEV,WAAW,EACX,UAAU,EACV,cAAc,EAGd,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EAGb,UAAU,EACV,cAAc,EACd,aAAa,EAGb,MAAM,EACN,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAI9E,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * TelpoNfc
3
+ *
4
+ * Wraps react-native-nfc-manager to provide a clean, typed API
5
+ * for reading NFC/contactless card UIDs on Telpo T20 and TPS320.
6
+ *
7
+ * Supports: ISO 14443-A/B (NfcA, NfcB), IsoDep, Mifare Classic,
8
+ * Mifare Ultralight, and NDEF tags.
9
+ *
10
+ * Returns the raw card UID as a hex string — you handle validation.
11
+ */
12
+ import { TelpoResult, NfcTag, NfcOptions, NfcTechnology } from '../types';
13
+ /**
14
+ * TelpoNfc
15
+ *
16
+ * @example
17
+ * // One-time setup (call in your app root or screen init)
18
+ * await TelpoNfc.init();
19
+ *
20
+ * // Start listening for a card tap — resolves immediately on tap
21
+ * const result = await TelpoNfc.readTag();
22
+ * if (result.success) {
23
+ * console.log(result.data.uid); // "04:AB:12:CD:EF:01:23"
24
+ * }
25
+ *
26
+ * // For continuous listening (e.g. validator gate)
27
+ * TelpoNfc.startListening((result) => {
28
+ * if (result.success) {
29
+ * handleCard(result.data.uid);
30
+ * }
31
+ * });
32
+ * // Later:
33
+ * TelpoNfc.stopListening();
34
+ */
35
+ export declare const TelpoNfc: {
36
+ _started: boolean;
37
+ _listening: boolean;
38
+ /**
39
+ * Initialise NFC and verify it is supported and enabled on the device.
40
+ * Call once on app start or screen mount.
41
+ */
42
+ init(): Promise<TelpoResult<void>>;
43
+ /**
44
+ * Wait for a single NFC tag tap and resolve with its UID.
45
+ * Rejects if cancelled or an error occurs.
46
+ *
47
+ * This is the recommended approach for a "tap once" validation flow.
48
+ *
49
+ * @param options.technologies NFC technologies to accept (default: all)
50
+ * @param timeoutMs Auto-cancel after N ms (default: no timeout)
51
+ */
52
+ readTag(options?: NfcOptions, timeoutMs?: number): Promise<TelpoResult<NfcTag>>;
53
+ /**
54
+ * Start continuous NFC listening — ideal for a validation gate that
55
+ * must handle many card taps without user interaction.
56
+ *
57
+ * The callback fires every time a card is tapped.
58
+ * Call `stopListening()` to end the session.
59
+ *
60
+ * @example
61
+ * TelpoNfc.startListening((result) => {
62
+ * if (result.success) {
63
+ * console.log('Card UID:', result.data.uid);
64
+ * }
65
+ * }, { technologies: ['NfcA', 'IsoDep'] });
66
+ */
67
+ startListening(onTag: (result: TelpoResult<NfcTag>) => void, options?: NfcOptions): void;
68
+ /**
69
+ * Stop continuous NFC listening started by `startListening()`.
70
+ */
71
+ stopListening(): Promise<void>;
72
+ /**
73
+ * Whether NFC is supported and enabled on this device.
74
+ * Returns false if not initialised yet.
75
+ */
76
+ isAvailable(): Promise<boolean>;
77
+ /** Whether the continuous listener is currently active. */
78
+ isListening(): boolean;
79
+ /** Whether NfcManager has been started. */
80
+ isStarted(): boolean;
81
+ };
82
+ export type { NfcTag, NfcOptions, NfcTechnology };
83
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nfc/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAGL,WAAW,EACX,MAAM,EACN,UAAU,EACV,aAAa,EACd,MAAM,UAAU,CAAC;AAwElB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ;cACH,OAAO;gBAOL,OAAO;IAOzB;;;OAGG;YACW,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IA6BxC;;;;;;;;OAQG;sBACoB,UAAU,cAAmB,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAuEzF;;;;;;;;;;;;;OAaG;0BAEM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,YACnC,UAAU,GAClB,IAAI;IAgBP;;OAEG;qBACoB,OAAO,CAAC,IAAI,CAAC;IAepC;;;OAGG;mBACkB,OAAO,CAAC,OAAO,CAAC;IAWrC,2DAA2D;mBAC5C,OAAO;IAItB,2CAA2C;iBAC9B,OAAO;CAGrB,CAAC;AA6CF,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * TelpoPrinter
3
+ *
4
+ * Wraps @haroldtran/react-native-thermal-printer to provide a clean, typed API
5
+ * for Telpo M1 and TPS320 internal (USB) thermal printers.
6
+ *
7
+ * Connection priority: USB (internal) → Bluetooth → Network
8
+ */
9
+ import { TelpoResult, PrinterDevice, PrinterOptions, PrintLine, PrintTicket, PrintReceiptOptions } from '../types';
10
+ type ActivePrinterType = 'USB' | 'BLUETOOTH' | 'NETWORK' | null;
11
+ /**
12
+ * TelpoPrinter
13
+ *
14
+ * @example
15
+ * // Connect to internal USB printer (M1 / TPS320)
16
+ * await TelpoPrinter.init();
17
+ * const devices = await TelpoPrinter.getDeviceList();
18
+ * await TelpoPrinter.connect({ connectionType: 'USB' });
19
+ *
20
+ * // Print a bus ticket
21
+ * await TelpoPrinter.printTicket({
22
+ * ticketId: 'TKT-001234',
23
+ * route: 'Route 42 — City Centre → Airport',
24
+ * passenger: 'John Doe',
25
+ * fare: 'SLE 5.00',
26
+ * });
27
+ */
28
+ export declare const TelpoPrinter: {
29
+ _initialized: boolean;
30
+ _activePrinterType: ActivePrinterType;
31
+ /**
32
+ * Initialise the printer module.
33
+ * Must be called once before any other method.
34
+ * On Android only — iOS has no USB printer support.
35
+ */
36
+ init(): Promise<TelpoResult<void>>;
37
+ /**
38
+ * List all available USB printer devices.
39
+ * Returns empty array on non-Android platforms.
40
+ */
41
+ getDeviceList(): Promise<TelpoResult<PrinterDevice[]>>;
42
+ /**
43
+ * Connect to the printer.
44
+ *
45
+ * - `USB` (default): connects to the first available USB device automatically.
46
+ * For Telpo M1 / TPS320 this is the internal printer — no vendorId/productId needed.
47
+ * - `BLUETOOTH`: requires `bluetoothAddress`.
48
+ * - `NETWORK`: requires `networkHost` (and optionally `networkPort`, default 9100).
49
+ */
50
+ connect(options?: PrinterOptions): Promise<TelpoResult<void>>;
51
+ /** Disconnect from the printer and release resources. */
52
+ disconnect(): Promise<TelpoResult<void>>;
53
+ /**
54
+ * Print an array of custom lines. Full control over alignment, bold, and font size.
55
+ *
56
+ * @example
57
+ * await TelpoPrinter.printLines([
58
+ * { text: 'CITY BUS', alignment: 'CENTER', bold: true, fontSize: 'LARGE' },
59
+ * { text: 'Ticket ID: TKT-0012', alignment: 'LEFT' },
60
+ * ]);
61
+ */
62
+ printLines(lines: PrintLine[], options?: PrintReceiptOptions): Promise<TelpoResult<void>>;
63
+ /**
64
+ * Print a formatted bus ticket receipt.
65
+ * Automatically formats header, route, passenger info,
66
+ * ticket ID, fare, and optional QR code.
67
+ *
68
+ * @example
69
+ * await TelpoPrinter.printTicket({
70
+ * operatorName: 'City Bus Services',
71
+ * route: 'Route 42 — City Centre → Airport',
72
+ * passenger: 'John Doe',
73
+ * ticketId: 'TKT-001234',
74
+ * fare: 'SLE 5.00',
75
+ * footer: 'Thank you for travelling with us!',
76
+ * });
77
+ */
78
+ printTicket(ticket: PrintTicket, options?: PrintReceiptOptions): Promise<TelpoResult<void>>;
79
+ /**
80
+ * Print raw ESC/POS text. Use when you need full manual control.
81
+ */
82
+ printRaw(rawText: string): Promise<TelpoResult<void>>;
83
+ /** Feed paper by N lines without printing. */
84
+ feedPaper(lines?: number): Promise<TelpoResult<void>>;
85
+ /** Whether the printer is currently connected. */
86
+ isConnected(): boolean;
87
+ /** Returns the current connection type, or null if not connected. */
88
+ getConnectionType(): ActivePrinterType;
89
+ };
90
+ export type { PrinterDevice, PrinterOptions, PrintLine, PrintTicket, PrintReceiptOptions };
91
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/printer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,WAAW,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,mBAAmB,EAGpB,MAAM,UAAU,CAAC;AAgFlB,KAAK,iBAAiB,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;AAOhE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY;kBACH,OAAO;wBAOD,iBAAiB;IAO3C;;;;OAIG;YACW,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAmBxC;;;OAGG;qBACoB,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;IAY5D;;;;;;;OAOG;sBACoB,cAAc,GAAQ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAkDvE,yDAAyD;kBACrC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAY9C;;;;;;;;OAQG;sBAEM,SAAS,EAAE,YACT,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAiC7B;;;;;;;;;;;;;;OAcG;wBAEO,WAAW,YACV,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IA+E7B;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAY3D,8CAA8C;+BAClB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAItD,kDAAkD;mBACnC,OAAO;IAItB,qEAAqE;yBAChD,iBAAiB;CAGvC,CAAC;AASF,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * TelpoScanner
3
+ *
4
+ * Provides:
5
+ * 1. `useTelpoScanner` hook — for use inside React components
6
+ * 2. `TelpoScannerView` — drop-in camera view component with built-in scanning
7
+ *
8
+ * Wraps react-native-vision-camera + vision-camera-code-scanner.
9
+ *
10
+ * Returns raw decoded value and format — you handle the business logic.
11
+ */
12
+ import React from 'react';
13
+ import { View, StyleProp, ViewStyle } from 'react-native';
14
+ import { ScanResult, ScannerOptions, BarcodeFormat } from '../types';
15
+ import type { TelpoResult } from '../types';
16
+ export interface UseTelpoScannerReturn {
17
+ /** Whether camera permission has been granted */
18
+ hasPermission: boolean;
19
+ /** Whether the library is loaded and camera is ready */
20
+ isReady: boolean;
21
+ /** Request camera permission */
22
+ requestPermission: () => Promise<boolean>;
23
+ /** The internal scan handler to pass to TelpoScannerView */
24
+ onScan: (codes: any[]) => void;
25
+ /** Last error, if any */
26
+ error: TelpoResult<never> | null;
27
+ }
28
+ /**
29
+ * React hook for managing scanner state and permissions.
30
+ *
31
+ * @example
32
+ * function MyScreen() {
33
+ * const scanner = useTelpoScanner({
34
+ * onResult: (result) => {
35
+ * if (result.success) console.log(result.data.value);
36
+ * },
37
+ * });
38
+ *
39
+ * return (
40
+ * <TelpoScannerView
41
+ * scanner={scanner}
42
+ * style={{ flex: 1 }}
43
+ * />
44
+ * );
45
+ * }
46
+ */
47
+ export declare function useTelpoScanner(params: {
48
+ onResult: (result: TelpoResult<ScanResult>) => void;
49
+ options?: ScannerOptions;
50
+ }): UseTelpoScannerReturn;
51
+ export interface TelpoScannerViewProps {
52
+ /** Scanner state from useTelpoScanner */
53
+ scanner: UseTelpoScannerReturn;
54
+ /** Style for the outer container */
55
+ style?: StyleProp<ViewStyle>;
56
+ /** Camera facing. Default: 'back' */
57
+ facing?: 'front' | 'back';
58
+ /** Barcode formats to scan. Default: QR + common 1D codes */
59
+ formats?: string[];
60
+ /** Whether scanning is active. Default: true */
61
+ active?: boolean;
62
+ /** Show a scan frame overlay. Default: true */
63
+ showOverlay?: boolean;
64
+ /** Overlay frame color. Default: '#00FF88' */
65
+ overlayColor?: string;
66
+ /** Placeholder shown when permission not yet granted */
67
+ permissionFallback?: React.ReactNode;
68
+ }
69
+ /**
70
+ * Drop-in camera view with built-in barcode/QR scanning.
71
+ *
72
+ * @example
73
+ * <TelpoScannerView
74
+ * scanner={scanner}
75
+ * style={{ flex: 1 }}
76
+ * formats={['qr', 'code-128']}
77
+ * />
78
+ */
79
+ export declare const TelpoScannerView: React.ForwardRefExoticComponent<TelpoScannerViewProps & React.RefAttributes<View>>;
80
+ export type { ScanResult, ScannerOptions, BarcodeFormat };
81
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanner/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,IAAI,EAEJ,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,UAAU,EACV,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA+D5C,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,gCAAgC;IAChC,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,4DAA4D;IAC5D,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC/B,yBAAyB;IACzB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACpD,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,GAAG,qBAAqB,CAmFxB;AAID,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACtC;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,oFA+D5B,CAAC;AAuFF,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,114 @@
1
+ /** Standard SDK result wrapper */
2
+ export type TelpoResult<T> = {
3
+ success: true;
4
+ data: T;
5
+ } | {
6
+ success: false;
7
+ error: TelpoError;
8
+ };
9
+ export interface TelpoError {
10
+ code: TelpoErrorCode;
11
+ message: string;
12
+ raw?: unknown;
13
+ }
14
+ export declare enum TelpoErrorCode {
15
+ PRINTER_NOT_CONNECTED = "PRINTER_NOT_CONNECTED",
16
+ PRINTER_NO_PAPER = "PRINTER_NO_PAPER",
17
+ PRINTER_BUSY = "PRINTER_BUSY",
18
+ PRINTER_PERMISSION_DENIED = "PRINTER_PERMISSION_DENIED",
19
+ PRINTER_INIT_FAILED = "PRINTER_INIT_FAILED",
20
+ PRINTER_PRINT_FAILED = "PRINTER_PRINT_FAILED",
21
+ SCANNER_CAMERA_PERMISSION_DENIED = "SCANNER_CAMERA_PERMISSION_DENIED",
22
+ SCANNER_NOT_ACTIVE = "SCANNER_NOT_ACTIVE",
23
+ SCANNER_ALREADY_ACTIVE = "SCANNER_ALREADY_ACTIVE",
24
+ NFC_NOT_SUPPORTED = "NFC_NOT_SUPPORTED",
25
+ NFC_DISABLED = "NFC_DISABLED",
26
+ NFC_PERMISSION_DENIED = "NFC_PERMISSION_DENIED",
27
+ NFC_SCAN_CANCELLED = "NFC_SCAN_CANCELLED",
28
+ NFC_READ_FAILED = "NFC_READ_FAILED",
29
+ NFC_ALREADY_LISTENING = "NFC_ALREADY_LISTENING",
30
+ UNKNOWN = "UNKNOWN"
31
+ }
32
+ export interface PrinterDevice {
33
+ deviceName: string;
34
+ vendorId: string;
35
+ productId: string;
36
+ }
37
+ export type PrinterConnectionType = 'USB' | 'BLUETOOTH' | 'NETWORK';
38
+ export interface PrinterOptions {
39
+ /** Connection type. Default: 'USB' (internal printer on M1/TPS320) */
40
+ connectionType?: PrinterConnectionType;
41
+ /** Required for BLUETOOTH connection */
42
+ bluetoothAddress?: string;
43
+ /** Required for NETWORK connection */
44
+ networkHost?: string;
45
+ /** Required for NETWORK connection. Default: 9100 */
46
+ networkPort?: number;
47
+ }
48
+ export type PrintAlignment = 'LEFT' | 'CENTER' | 'RIGHT';
49
+ export type PrintFontSize = 'SMALL' | 'NORMAL' | 'LARGE' | 'DOUBLE';
50
+ export interface PrintLine {
51
+ text: string;
52
+ alignment?: PrintAlignment;
53
+ bold?: boolean;
54
+ fontSize?: PrintFontSize;
55
+ underline?: boolean;
56
+ }
57
+ export interface PrintTicket {
58
+ /** Company / operator name shown at top */
59
+ operatorName?: string;
60
+ /** Route info, e.g. "Route 42 — City Centre → Airport" */
61
+ route?: string;
62
+ /** Passenger name or ID */
63
+ passenger?: string;
64
+ /** Ticket/transaction ID — also printed as barcode if provided */
65
+ ticketId: string;
66
+ /** Date/time string to print. Defaults to current datetime */
67
+ dateTime?: string;
68
+ /** Fare amount, e.g. "SLE 5.00" */
69
+ fare?: string;
70
+ /** Any extra key-value pairs to print */
71
+ extras?: Record<string, string>;
72
+ /** QR code value. If omitted, ticketId is used */
73
+ qrValue?: string;
74
+ /** Footer message */
75
+ footer?: string;
76
+ }
77
+ export interface PrintReceiptOptions {
78
+ /** Feed extra lines at end before cutter. Default: 4 */
79
+ feedLines?: number;
80
+ /** Cut the paper after printing. Default: true */
81
+ cutPaper?: boolean;
82
+ }
83
+ export type BarcodeFormat = 'QR_CODE' | 'CODE_128' | 'CODE_39' | 'CODE_93' | 'EAN_13' | 'EAN_8' | 'UPC_A' | 'UPC_E' | 'AZTEC' | 'DATA_MATRIX' | 'PDF_417' | 'ITF';
84
+ export interface ScanResult {
85
+ /** The raw decoded value from the barcode/QR */
86
+ value: string;
87
+ /** The format of the detected code */
88
+ format: BarcodeFormat;
89
+ /** Unix timestamp (ms) when the scan occurred */
90
+ timestamp: number;
91
+ }
92
+ export interface ScannerOptions {
93
+ /** Formats to detect. Default: all supported formats */
94
+ formats?: BarcodeFormat[];
95
+ /** Milliseconds to wait before allowing another scan on same value.
96
+ * Prevents duplicate callbacks. Default: 2000ms */
97
+ deduplicateMs?: number;
98
+ /** Which camera to use. Default: 'back' */
99
+ camera?: 'back' | 'front';
100
+ }
101
+ export type NfcTechnology = 'NfcA' | 'NfcB' | 'IsoDep' | 'MifareClassic' | 'MifareUltralight' | 'Ndef';
102
+ export interface NfcTag {
103
+ /** Hex string of the tag UID, e.g. "04:AB:12:CD" */
104
+ uid: string;
105
+ /** Detected NFC technology */
106
+ technology: NfcTechnology;
107
+ /** Raw tag object from react-native-nfc-manager */
108
+ raw: Record<string, unknown>;
109
+ }
110
+ export interface NfcOptions {
111
+ /** Technologies to accept. Default: all */
112
+ technologies?: NfcTechnology[];
113
+ }
114
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAMA,kCAAkC;AAClC,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,oBAAY,cAAc;IAExB,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,yBAAyB,8BAA8B;IACvD,mBAAmB,wBAAwB;IAC3C,oBAAoB,yBAAyB;IAG7C,gCAAgC,qCAAqC;IACrE,kBAAkB,uBAAuB;IACzC,sBAAsB,2BAA2B;IAGjD,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,qBAAqB,0BAA0B;IAC/C,kBAAkB,uBAAuB;IACzC,eAAe,oBAAoB;IACnC,qBAAqB,0BAA0B;IAG/C,OAAO,YAAY;CACpB;AAID,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,UAAU,GACV,SAAS,GACT,SAAS,GACT,QAAQ,GACR,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,aAAa,GACb,SAAS,GACT,KAAK,CAAC;AAEV,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,MAAM,EAAE,aAAa,CAAC;IACtB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B;wDACoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAID,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,MAAM,GACN,QAAQ,GACR,eAAe,GACf,kBAAkB,GAClB,MAAM,CAAC;AAEX,MAAM,WAAW,MAAM;IACrB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,8BAA8B;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;CAChC"}
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "react-native-telpo",
3
+ "version": "1.0.0",
4
+ "description": "Production-ready React Native SDK for Telpo devices — thermal printer (M1/TPS320), QR/barcode scanner, and NFC card reader",
5
+ "main": "lib/commonjs/index.js",
6
+ "module": "lib/module/index.js",
7
+ "types": "lib/typescript/index.d.ts",
8
+ "react-native": "src/index.ts",
9
+ "source": "src/index.ts",
10
+ "files": [
11
+ "src",
12
+ "lib",
13
+ "android",
14
+ "!android/build",
15
+ "!**/__tests__",
16
+ "!**/__fixtures__",
17
+ "!**/__mocks__",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "bob build",
22
+ "typescript": "tsc --noEmit",
23
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
24
+ "test": "jest",
25
+ "prepare": "bob build"
26
+ },
27
+ "keywords": [
28
+ "react-native",
29
+ "telpo",
30
+ "thermal-printer",
31
+ "nfc",
32
+ "barcode",
33
+ "qr-scanner",
34
+ "bus-ticketing",
35
+ "pos"
36
+ ],
37
+ "author": "",
38
+ "license": "MIT",
39
+ "peerDependencies": {
40
+ "@haroldtran/react-native-thermal-printer": ">=1.2.0",
41
+ "react": "*",
42
+ "react-native": "*",
43
+ "react-native-nfc-manager": ">=3.14.0",
44
+ "react-native-vision-camera": ">=4.0.0",
45
+ "vision-camera-code-scanner": ">=0.2.0"
46
+ },
47
+ "peerDependenciesMeta": {
48
+ "react-native-nfc-manager": {
49
+ "optional": false
50
+ },
51
+ "react-native-vision-camera": {
52
+ "optional": false
53
+ },
54
+ "vision-camera-code-scanner": {
55
+ "optional": false
56
+ },
57
+ "@haroldtran/react-native-thermal-printer": {
58
+ "optional": false
59
+ }
60
+ },
61
+ "devDependencies": {
62
+ "@types/jest": "^29.5.0",
63
+ "@types/react": "^18.3.31",
64
+ "@types/react-native": "^0.73.0",
65
+ "@typescript-eslint/eslint-plugin": "^7.0.0",
66
+ "@typescript-eslint/parser": "^7.0.0",
67
+ "eslint": "^8.57.0",
68
+ "jest": "^29.7.0",
69
+ "react": "18.2.0",
70
+ "react-native": "0.73.0",
71
+ "react-native-builder-bob": "^0.23.2",
72
+ "typescript": "^6.0.3"
73
+ },
74
+ "react-native-builder-bob": {
75
+ "source": "src",
76
+ "output": "lib",
77
+ "targets": [
78
+ "commonjs",
79
+ "module",
80
+ [
81
+ "typescript",
82
+ {
83
+ "project": "tsconfig.build.json"
84
+ }
85
+ ]
86
+ ]
87
+ },
88
+ "jest": {
89
+ "preset": "react-native",
90
+ "moduleFileExtensions": [
91
+ "ts",
92
+ "tsx",
93
+ "js",
94
+ "jsx",
95
+ "json"
96
+ ],
97
+ "testMatch": [
98
+ "**/__tests__/**/*.test.{ts,tsx}"
99
+ ],
100
+ "transformIgnorePatterns": [
101
+ "node_modules/(?!(react-native|@react-native|react-native-nfc-manager|react-native-vision-camera|@haroldtran)/)"
102
+ ]
103
+ }
104
+ }
package/src/index.ts ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * react-native-telpo
3
+ *
4
+ * Production SDK for Telpo devices:
5
+ * - TelpoPrinter → Thermal receipt/ticket printing (M1, TPS320)
6
+ * - TelpoNfc → NFC/contactless card UID reading (T20, TPS320)
7
+ * - TelpoScanner → QR code and barcode scanning (T20, M1, TPS320)
8
+ *
9
+ * @example
10
+ * import { TelpoPrinter, TelpoNfc, TelpoScanner } from 'react-native-telpo';
11
+ *
12
+ * // or named imports:
13
+ * import { useTelpoScanner, TelpoScannerView } from 'react-native-telpo';
14
+ */
15
+
16
+ // ── Modules ───────────────────────────────────────────────────────────────────
17
+
18
+ export { TelpoPrinter } from './printer';
19
+ export { TelpoNfc } from './nfc';
20
+ export { useTelpoScanner, TelpoScannerView } from './scanner';
21
+
22
+ // ── Types ─────────────────────────────────────────────────────────────────────
23
+
24
+ export type {
25
+ // Generic
26
+ TelpoResult,
27
+ TelpoError,
28
+ TelpoErrorCode,
29
+
30
+ // Printer
31
+ PrinterDevice,
32
+ PrinterOptions,
33
+ PrinterConnectionType,
34
+ PrintLine,
35
+ PrintTicket,
36
+ PrintReceiptOptions,
37
+ PrintAlignment,
38
+ PrintFontSize,
39
+
40
+ // Scanner
41
+ ScanResult,
42
+ ScannerOptions,
43
+ BarcodeFormat,
44
+
45
+ // NFC
46
+ NfcTag,
47
+ NfcOptions,
48
+ NfcTechnology,
49
+ } from './types';
50
+
51
+ export type { UseTelpoScannerReturn, TelpoScannerViewProps } from './scanner';
52
+
53
+ // ── Re-export enums (values, not just types) ──────────────────────────────────
54
+
55
+ export { TelpoErrorCode as ErrorCode } from './types';