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.
- package/README.md +300 -0
- package/lib/commonjs/index.js +40 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/nfc/index.js +322 -0
- package/lib/commonjs/nfc/index.js.map +1 -0
- package/lib/commonjs/printer/index.js +379 -0
- package/lib/commonjs/printer/index.js.map +1 -0
- package/lib/commonjs/scanner/index.js +301 -0
- package/lib/commonjs/scanner/index.js.map +1 -0
- package/lib/commonjs/types/index.js +37 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/module/index.js +27 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/nfc/index.js +317 -0
- package/lib/module/nfc/index.js.map +1 -0
- package/lib/module/printer/index.js +374 -0
- package/lib/module/printer/index.js.map +1 -0
- package/lib/module/scanner/index.js +294 -0
- package/lib/module/scanner/index.js.map +1 -0
- package/lib/module/types/index.js +38 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/typescript/index.d.ts +21 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/nfc/index.d.ts +83 -0
- package/lib/typescript/nfc/index.d.ts.map +1 -0
- package/lib/typescript/printer/index.d.ts +91 -0
- package/lib/typescript/printer/index.d.ts.map +1 -0
- package/lib/typescript/scanner/index.d.ts +81 -0
- package/lib/typescript/scanner/index.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +114 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/package.json +104 -0
- package/src/index.ts +55 -0
- package/src/nfc/index.ts +362 -0
- package/src/printer/index.ts +432 -0
- package/src/scanner/index.tsx +397 -0
- 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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,QAAQ,EACRC,UAAU,QACL,OAAO;AACd,SACEC,UAAU,EACVC,IAAI,EACJC,IAAI,QAGC,cAAc;AACrB,SACEC,cAAc,QAIT,UAAU;;AAGjB;;AAKA,IAAIC,MAAoB;AACxB,IAAIC,eAAoB;AACxB,IAAIC,cAA2B;AAE/B,SAASC,cAAcA,CAAA,EAAY;EACjC,IAAI;IACF,MAAMC,EAAE,GAAGC,OAAO,CAAC,4BAA4B,CAAC;IAChDL,MAAM,GAAGI,EAAE,CAACJ,MAAM;IAClBC,eAAe,GAAGG,EAAE,CAACH,eAAe;IACpCC,cAAc,GAAGE,EAAE,CAACF,cAAc;IAClC,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;;AAEA,SAASI,UAAUA,CAACC,IAAoB,EAAEC,OAAe,EAAsB;EAC7E,OAAO;IAAEC,OAAO,EAAE,KAAK;IAAEC,KAAK,EAAE;MAAEH,IAAI;MAAEC;IAAQ;EAAE,CAAC;AACrD;AAEA,SAASG,WAAWA,CAAIC,IAAO,EAAkB;EAC/C,OAAO;IAAEH,OAAO,EAAE,IAAI;IAAEG;EAAK,CAAC;AAChC;AAEA,MAAMC,UAAyC,GAAG;EAChDC,EAAE,EAAE,SAAS;EACb,UAAU,EAAE,UAAU;EACtB,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE,SAAS;EACpB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,OAAO;EAChBC,KAAK,EAAE,OAAO;EACd,aAAa,EAAE,aAAa;EAC5B,SAAS,EAAE,SAAS;EACpBC,GAAG,EAAE;AACP,CAAC;AAED,SAASC,SAASA,CAACC,QAAgB,EAAiB;EAClD,OAAOL,UAAU,CAACK,QAAQ,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS;AACxD;AAEA,MAAMC,eAAe,GAAG,CACtB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,SAAS,CACV;;AAED;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,MAG/B,EAAyB;EACxB,MAAM;IAAEC,QAAQ;IAAEC,OAAO,GAAG,CAAC;EAAE,CAAC,GAAGF,MAAM;EAEzC,MAAMG,SAAS,GAAGhC,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAM,CAACiC,OAAO,EAAEC,UAAU,CAAC,GAAGjC,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAACkC,aAAa,EAAEC,gBAAgB,CAAC,GAAGnC,QAAQ,CAAC,KAAK,CAAC;EACzD,MAAM,CAACgB,KAAK,EAAEoB,QAAQ,CAAC,GAAGpC,QAAQ,CAA4B,IAAI,CAAC;;EAEnE;EACA,MAAMqC,SAAS,GAAGtC,MAAM,CAAgB,IAAI,CAAC;EAC7C,MAAMuC,QAAQ,GAAGvC,MAAM,CAAS,CAAC,CAAC;EAClC,MAAMwC,aAAa,GAAGT,OAAO,CAACS,aAAa,IAAI,IAAI;EAEnDzC,SAAS,CAAC,MAAM;IACdiC,SAAS,CAACS,OAAO,GAAG/B,cAAc,CAAC,CAAC;IACpC,IAAI,CAACsB,SAAS,CAACS,OAAO,EAAE;MACtBJ,QAAQ,CACNxB,UAAU,CACRP,cAAc,CAACoC,kBAAkB,EACjC,0FACF,CACF,CAAC;MACD;IACF;IACAR,UAAU,CAAC,IAAI,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMS,iBAAiB,GAAG7C,WAAW,CAAC,YAA8B;IAClE,IAAI,CAACkC,SAAS,CAACS,OAAO,EAAE,OAAO,KAAK;IACpC,IAAI;MACF,MAAMG,MAAM,GAAG,MAAMrC,MAAM,CAACsC,uBAAuB,CAAC,CAAC;MACrD,MAAMC,OAAO,GAAGF,MAAM,KAAK,SAAS;MACpCR,gBAAgB,CAACU,OAAO,CAAC;MACzB,IAAI,CAACA,OAAO,EAAE;QACZT,QAAQ,CACNxB,UAAU,CAACP,cAAc,CAACyC,gCAAgC,EAAE,2BAA2B,CACzF,CAAC;MACH;MACA,OAAOD,OAAO;IAChB,CAAC,CAAC,MAAM;MACNV,gBAAgB,CAAC,KAAK,CAAC;MACvB,OAAO,KAAK;IACd;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMY,MAAM,GAAGlD,WAAW,CACvBmD,KAAY,IAAK;IAChB,IAAI,CAACA,KAAK,IAAIA,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;IAElC,MAAMpC,IAAI,GAAGmC,KAAK,CAAC,CAAC,CAAC;IACrB,MAAME,KAAa,GAAGrC,IAAI,CAACqC,KAAK,IAAIrC,IAAI,CAACsC,YAAY,IAAI,EAAE;IAC3D,IAAI,CAACD,KAAK,EAAE;IAEZ,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;;IAEtB;IACA,IAAIF,KAAK,KAAKb,SAAS,CAACG,OAAO,IAAIY,GAAG,GAAGd,QAAQ,CAACE,OAAO,GAAGD,aAAa,EAAE;MACzE;IACF;IAEAF,SAAS,CAACG,OAAO,GAAGU,KAAK;IACzBZ,QAAQ,CAACE,OAAO,GAAGY,GAAG;IAEtB,MAAME,MAAM,GAAG/B,SAAS,CAACV,IAAI,CAAC0C,IAAI,IAAI,IAAI,CAAC;IAE3C1B,QAAQ,CACNZ,WAAW,CAAa;MACtBiC,KAAK;MACLI,MAAM;MACNE,SAAS,EAAEJ;IACb,CAAC,CACH,CAAC;EACH,CAAC,EACD,CAACvB,QAAQ,EAAEU,aAAa,CAC1B,CAAC;EAED,OAAO;IACLL,aAAa;IACbF,OAAO;IACPU,iBAAiB;IACjBK,MAAM;IACN/B;EACF,CAAC;AACH;;AAEA;;AAqBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMyC,gBAAgB,gBAAGxD,UAAU,CACxC,CACE;EACEyD,OAAO;EACPC,KAAK;EACLC,MAAM,GAAG,MAAM;EACfC,OAAO,GAAGnC,eAAe;EACzBoC,MAAM,GAAG,IAAI;EACbC,WAAW,GAAG,IAAI;EAClBC,YAAY,GAAG,SAAS;EACxBC;AACF,CAAC,EACDC,GAAG,KACA;EACH,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGpE,QAAQ,CAAC,KAAK,CAAC;;EAEzD;EACAF,SAAS,CAAC,MAAM;IACd,IAAI,CAACqE,aAAa,IAAIT,OAAO,CAAC1B,OAAO,EAAE;MACrCoC,gBAAgB,CAAC,IAAI,CAAC;MACtBV,OAAO,CAAChB,iBAAiB,CAAC,CAAC;IAC7B;EACF,CAAC,EAAE,CAACgB,OAAO,EAAES,aAAa,CAAC,CAAC;EAE5B,IAAI,CAACT,OAAO,CAAC1B,OAAO,EAAE;IACpB,oBACEpC,KAAA,CAAAyE,aAAA,CAAClE,IAAI;MAACwD,KAAK,EAAE,CAACW,MAAM,CAACC,SAAS,EAAEZ,KAAK;IAAE,gBACrC/D,KAAA,CAAAyE,aAAA,CAACjE,IAAI;MAACuD,KAAK,EAAEW,MAAM,CAACE;IAAU,GAC3Bd,OAAO,CAAC1C,KAAK,EAAED,OAAO,KAAK,KAAK,GAC7B2C,OAAO,CAAC1C,KAAK,CAACA,KAAK,CAACF,OAAO,GAC3B,mBACA,CACF,CAAC;EAEX;EAEA,IAAI,CAAC4C,OAAO,CAACxB,aAAa,EAAE;IAC1B,IAAI+B,kBAAkB,EAAE;MACtB,oBAAOrE,KAAA,CAAAyE,aAAA,CAAAzE,KAAA,CAAA6E,QAAA,QAAGR,kBAAqB,CAAC;IAClC;IACA,oBACErE,KAAA,CAAAyE,aAAA,CAAClE,IAAI;MAACwD,KAAK,EAAE,CAACW,MAAM,CAACC,SAAS,EAAEZ,KAAK;IAAE,gBACrC/D,KAAA,CAAAyE,aAAA,CAACjE,IAAI;MAACuD,KAAK,EAAEW,MAAM,CAACE;IAAU,GAAC,6BAAiC,CAAC,eACjE5E,KAAA,CAAAyE,aAAA,CAACjE,IAAI;MAACuD,KAAK,EAAEW,MAAM,CAACI;IAAQ,GAAC,gDAEvB,CACF,CAAC;EAEX;EAEA,oBACE9E,KAAA,CAAAyE,aAAA,CAACM,gBAAgB;IACfT,GAAG,EAAEA,GAAI;IACTP,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfC,OAAO,EAAEA,OAAQ;IACjBC,MAAM,EAAEA,MAAO;IACfC,WAAW,EAAEA,WAAY;IACzBC,YAAY,EAAEA,YAAa;IAC3BjB,MAAM,EAAEW,OAAO,CAACX;EAAO,CACxB,CAAC;AAEN,CACF,CAAC;AAEDU,gBAAgB,CAACmB,WAAW,GAAG,kBAAkB;;AAEjD;;AAYA,MAAMD,gBAAgB,gBAAG1E,UAAU,CACjC,CAAC;EAAE0D,KAAK;EAAEC,MAAM;EAAEC,OAAO;EAAEC,MAAM;EAAEC,WAAW;EAAEC,YAAY;EAAEjB;AAAO,CAAC,EAAEmB,GAAG,KAAK;EAC9E;EACA,MAAMW,MAAM,GAAGtE,eAAe,CAACqD,MAAM,CAAC;EAEtC,MAAMkB,WAAW,GAAGtE,cAAc,CAAC;IACjCuE,SAAS,EAAElB,OAAO;IAClBmB,aAAa,EAAEjC;EACjB,CAAC,CAAC;EAEF,IAAI,CAAC8B,MAAM,EAAE;IACX,oBACEjF,KAAA,CAAAyE,aAAA,CAAClE,IAAI;MAACwD,KAAK,EAAE,CAACW,MAAM,CAACC,SAAS,EAAEZ,KAAK;IAAE,gBACrC/D,KAAA,CAAAyE,aAAA,CAACjE,IAAI;MAACuD,KAAK,EAAEW,MAAM,CAACE;IAAU,GAAC,yBAA6B,CACxD,CAAC;EAEX;EAEA,oBACE5E,KAAA,CAAAyE,aAAA,CAAClE,IAAI;IAACwD,KAAK,EAAE,CAACW,MAAM,CAACC,SAAS,EAAEZ,KAAK,CAAE;IAACO,GAAG,EAAEA;EAAI,gBAC/CtE,KAAA,CAAAyE,aAAA,CAAC/D,MAAM;IACLqD,KAAK,EAAEzD,UAAU,CAAC+E,YAAa;IAC/BJ,MAAM,EAAEA,MAAO;IACfK,QAAQ,EAAEpB,MAAO;IACjBgB,WAAW,EAAEA;EAAY,CAC1B,CAAC,EACDf,WAAW,iBACVnE,KAAA,CAAAyE,aAAA,CAAClE,IAAI;IAACwD,KAAK,EAAEW,MAAM,CAACa,gBAAiB;IAACC,aAAa,EAAC;EAAM,gBACxDxF,KAAA,CAAAyE,aAAA,CAAClE,IAAI;IAACwD,KAAK,EAAE,CAACW,MAAM,CAACe,SAAS,EAAE;MAAEC,WAAW,EAAEtB;IAAa,CAAC;EAAE,CAAE,CAC7D,CAEJ,CAAC;AAEX,CACF,CAAC;AAEDW,gBAAgB,CAACC,WAAW,GAAG,kBAAkB;AAEjD,MAAMN,MAAM,GAAGpE,UAAU,CAACqF,MAAM,CAAC;EAC/BhB,SAAS,EAAE;IACTiB,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,MAAM;IACvBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDnB,SAAS,EAAE;IACToB,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,gBAAgB,EAAE;EACpB,CAAC;EACDrB,OAAO,EAAE;IACPkB,KAAK,EAAE,MAAM;IACbC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBE,SAAS,EAAE,CAAC;IACZD,gBAAgB,EAAE;EACpB,CAAC;EACDZ,gBAAgB,EAAE;IAChB,GAAGjF,UAAU,CAAC+F,kBAAkB;IAChCP,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDN,SAAS,EAAE;IACTa,KAAK,EAAE,GAAG;IACVC,MAAM,EAAE,GAAG;IACXC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","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":"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"}
|
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';
|