react-native-mesmart 0.4.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 (53) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +111 -0
  3. package/android/build.gradle +96 -0
  4. package/android/gradle.properties +19 -0
  5. package/android/src/main/AndroidManifest.xml +5 -0
  6. package/android/src/main/AndroidManifestNew.xml +4 -0
  7. package/android/src/main/java/com/mesmart/Packages.kt +21 -0
  8. package/android/src/main/java/com/plugpag/PlugpagImpl.kt +112 -0
  9. package/android/src/main/java/com/plugpag/PlugpagModule.kt +77 -0
  10. package/android/src/main/java/com/plugpag/utils/PlugpagUtils.kt +40 -0
  11. package/android/src/main/java/com/sunmi/SunmiImpl.kt +75 -0
  12. package/android/src/main/java/com/sunmi/SunmiModule.kt +75 -0
  13. package/android/src/main/java/com/sunmi/utils/ESCUtil.kt +155 -0
  14. package/android/src/main/java/com/sunmi/utils/SunmiPrintHelper.kt +148 -0
  15. package/android/src/main/java/com/sunmi/utils/SunmiRfidHelper.kt +68 -0
  16. package/android/src/main/java/com/sunmi/utils/SunmiUtils.kt +61 -0
  17. package/android/src/main/res/drawable/logo_black.png +0 -0
  18. package/lib/commonjs/@types/index.js +28 -0
  19. package/lib/commonjs/@types/index.js.map +1 -0
  20. package/lib/commonjs/@types/plugpag.js +36 -0
  21. package/lib/commonjs/@types/plugpag.js.map +1 -0
  22. package/lib/commonjs/@types/sunmi.js +2 -0
  23. package/lib/commonjs/@types/sunmi.js.map +1 -0
  24. package/lib/commonjs/errorMessages.js +9 -0
  25. package/lib/commonjs/errorMessages.js.map +1 -0
  26. package/lib/commonjs/index.js +67 -0
  27. package/lib/commonjs/index.js.map +1 -0
  28. package/lib/module/@types/index.js +3 -0
  29. package/lib/module/@types/index.js.map +1 -0
  30. package/lib/module/@types/plugpag.js +30 -0
  31. package/lib/module/@types/plugpag.js.map +1 -0
  32. package/lib/module/@types/sunmi.js +2 -0
  33. package/lib/module/@types/sunmi.js.map +1 -0
  34. package/lib/module/errorMessages.js +3 -0
  35. package/lib/module/errorMessages.js.map +1 -0
  36. package/lib/module/index.js +50 -0
  37. package/lib/module/index.js.map +1 -0
  38. package/lib/typescript/src/@types/index.d.ts +3 -0
  39. package/lib/typescript/src/@types/index.d.ts.map +1 -0
  40. package/lib/typescript/src/@types/plugpag.d.ts +47 -0
  41. package/lib/typescript/src/@types/plugpag.d.ts.map +1 -0
  42. package/lib/typescript/src/@types/sunmi.d.ts +9 -0
  43. package/lib/typescript/src/@types/sunmi.d.ts.map +1 -0
  44. package/lib/typescript/src/errorMessages.d.ts +3 -0
  45. package/lib/typescript/src/errorMessages.d.ts.map +1 -0
  46. package/lib/typescript/src/index.d.ts +23 -0
  47. package/lib/typescript/src/index.d.ts.map +1 -0
  48. package/package.json +146 -0
  49. package/src/@types/index.ts +2 -0
  50. package/src/@types/plugpag.ts +60 -0
  51. package/src/@types/sunmi.ts +13 -0
  52. package/src/errorMessages.ts +7 -0
  53. package/src/index.tsx +85 -0
@@ -0,0 +1,50 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+ import { PlugPagEvent, PlugPagResult } from './@types';
3
+ import { IOS_ERROR, LINKING_ERROR } from './errorMessages';
4
+ if (Platform.OS === 'ios') throw new Error(IOS_ERROR);
5
+ export const plugpagApi = NativeModules.Plugpag ? NativeModules.Plugpag : new Proxy({}, {
6
+ get() {
7
+ throw new Error(LINKING_ERROR);
8
+ }
9
+ });
10
+ export const sunmiApi = NativeModules.Sunmi ? NativeModules.Sunmi : new Proxy({}, {
11
+ get() {
12
+ throw new Error(LINKING_ERROR);
13
+ }
14
+ });
15
+ const searchRfid = () => sunmiApi.searchRfid();
16
+ const cancelCardSearch = () => sunmiApi.cancelCardSearch();
17
+ const printText = (str, fontSize = 24, isBold = false, isUnderline = false) => sunmiApi.printText(str, fontSize, isBold, isUnderline);
18
+ const printEmptyLine = () => sunmiApi.printEmptyLine();
19
+ const printBpLogo = () => sunmiApi.printBpLogo();
20
+ const setPrinterAlign = align => {
21
+ if (align === 'left') sunmiApi.setPrinterAlign(0);
22
+ if (align === 'center') sunmiApi.setPrinterAlign(1);
23
+ if (align === 'right') sunmiApi.setPrinterAlign(2);
24
+ };
25
+ const init = activationCode => plugpagApi.init(activationCode);
26
+ const pay = (rechargeValue, transactionType) => plugpagApi.pay(rechargeValue, transactionType);
27
+ const abortPayment = () => plugpagApi.abortPayment();
28
+ const printEstablishmentReceipt = () => plugpagApi.printEstablishmentReceipt();
29
+ const printClientReceipt = () => plugpagApi.printClientReceipt();
30
+ const customDialogClientViaPrinter = color => plugpagApi.customDialogClientViaPrinter(color);
31
+ const resolveTransactionEvent = data => plugpagApi.resolveTransactionEvent(data);
32
+ const Sunmi = {
33
+ searchRfid,
34
+ cancelCardSearch,
35
+ printText,
36
+ printEmptyLine,
37
+ printBpLogo,
38
+ setPrinterAlign
39
+ };
40
+ const Plugpag = {
41
+ init,
42
+ abortPayment,
43
+ printEstablishmentReceipt,
44
+ printClientReceipt,
45
+ customDialogClientViaPrinter,
46
+ pay,
47
+ resolveTransactionEvent
48
+ };
49
+ export { Sunmi, Plugpag, PlugPagEvent, PlugPagResult };
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","Platform","PlugPagEvent","PlugPagResult","IOS_ERROR","LINKING_ERROR","OS","Error","plugpagApi","Plugpag","Proxy","get","sunmiApi","Sunmi","searchRfid","cancelCardSearch","printText","str","fontSize","isBold","isUnderline","printEmptyLine","printBpLogo","setPrinterAlign","align","init","activationCode","pay","rechargeValue","transactionType","abortPayment","printEstablishmentReceipt","printClientReceipt","customDialogClientViaPrinter","color","resolveTransactionEvent","data"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAMEC,YAAY,EACZC,aAAa,QACR,UAAU;AACjB,SAASC,SAAS,EAAEC,aAAa,QAAQ,iBAAiB;AAE1D,IAAIJ,QAAQ,CAACK,EAAE,KAAK,KAAK,EAAE,MAAM,IAAIC,KAAK,CAACH,SAAS,CAAC;AAErD,OAAO,MAAMI,UAAsB,GAAGR,aAAa,CAACS,OAAO,GACvDT,aAAa,CAACS,OAAO,GACrB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIJ,KAAK,CAACF,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,MAAMO,QAAkB,GAAGZ,aAAa,CAACa,KAAK,GACjDb,aAAa,CAACa,KAAK,GACnB,IAAIH,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIJ,KAAK,CAACF,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,MAAMS,UAAU,GAAGA,CAAA,KAAMF,QAAQ,CAACE,UAAU,CAAC,CAAC;AAC9C,MAAMC,gBAAgB,GAAGA,CAAA,KAAMH,QAAQ,CAACG,gBAAgB,CAAC,CAAC;AAC1D,MAAMC,SAAS,GAAGA,CAChBC,GAAW,EACXC,QAAgB,GAAG,EAAE,EACrBC,MAAe,GAAG,KAAK,EACvBC,WAAoB,GAAG,KAAK,KACzBR,QAAQ,CAACI,SAAS,CAACC,GAAG,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,WAAW,CAAC;AAC3D,MAAMC,cAAc,GAAGA,CAAA,KAAMT,QAAQ,CAACS,cAAc,CAAC,CAAC;AACtD,MAAMC,WAAW,GAAGA,CAAA,KAAMV,QAAQ,CAACU,WAAW,CAAC,CAAC;AAChD,MAAMC,eAAe,GAAIC,KAAkC,IAAK;EAC9D,IAAIA,KAAK,KAAK,MAAM,EAAEZ,QAAQ,CAACW,eAAe,CAAC,CAAC,CAAC;EACjD,IAAIC,KAAK,KAAK,QAAQ,EAAEZ,QAAQ,CAACW,eAAe,CAAC,CAAC,CAAC;EACnD,IAAIC,KAAK,KAAK,OAAO,EAAEZ,QAAQ,CAACW,eAAe,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAME,IAAI,GAAIC,cAAsB,IAAKlB,UAAU,CAACiB,IAAI,CAACC,cAAc,CAAC;AACxE,MAAMC,GAAG,GAAGA,CAACC,aAAqB,EAAEC,eAAiC,KACnErB,UAAU,CAACmB,GAAG,CAACC,aAAa,EAAEC,eAAe,CAAC;AAChD,MAAMC,YAAY,GAAGA,CAAA,KAAMtB,UAAU,CAACsB,YAAY,CAAC,CAAC;AACpD,MAAMC,yBAAyB,GAAGA,CAAA,KAAMvB,UAAU,CAACuB,yBAAyB,CAAC,CAAC;AAC9E,MAAMC,kBAAkB,GAAGA,CAAA,KAAMxB,UAAU,CAACwB,kBAAkB,CAAC,CAAC;AAChE,MAAMC,4BAA4B,GAAIC,KAAa,IACjD1B,UAAU,CAACyB,4BAA4B,CAACC,KAAK,CAAC;AAChD,MAAMC,uBAAuB,GAAIC,IAAsB,IACrD5B,UAAU,CAAC2B,uBAAuB,CAACC,IAAI,CAAC;AAE1C,MAAMvB,KAAK,GAAG;EACZC,UAAU;EACVC,gBAAgB;EAChBC,SAAS;EACTK,cAAc;EACdC,WAAW;EACXC;AACF,CAAC;AAED,MAAMd,OAAO,GAAG;EACdgB,IAAI;EACJK,YAAY;EACZC,yBAAyB;EACzBC,kBAAkB;EAClBC,4BAA4B;EAC5BN,GAAG;EACHQ;AACF,CAAC;AAED,SAAStB,KAAK,EAAEJ,OAAO,EAAEP,YAAY,EAAEC,aAAa","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export * from './plugpag';
2
+ export * from './sunmi';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/@types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,47 @@
1
+ export interface PlugpagAPI {
2
+ init: (activationCode: string) => void;
3
+ pay: (rechargeValue: string, transactionType: TransactionTypes) => Promise<PlugPagTransactionResult>;
4
+ abortPayment: () => void;
5
+ printEstablishmentReceipt: () => void;
6
+ printClientReceipt: () => void;
7
+ customDialogClientViaPrinter: (color: string) => void;
8
+ resolveTransactionEvent: (data: PlugPagEventData) => string;
9
+ }
10
+ export type TransactionTypes = 'debitCard' | 'creditCard' | 'pix' | 'voucher' | 'money' | 'bonus';
11
+ export interface PlugPagEventData {
12
+ customMessage?: string;
13
+ eventCode: PlugPagEvent;
14
+ }
15
+ export declare enum PlugPagEvent {
16
+ EVENT_CODE_CUSTOM_MESSAGE = -2,
17
+ EVENT_CODE_DEFAULT = -1,
18
+ EVENT_CODE_WAITING_CARD = 0,
19
+ EVENT_CODE_INSERTED_CARD = 1,
20
+ EVENT_CODE_PIN_REQUESTED = 2,
21
+ EVENT_CODE_PIN_OK = 3,
22
+ EVENT_CODE_SALE_END = 4,
23
+ EVENT_CODE_AUTHORIZING = 5,
24
+ EVENT_CODE_INSERTED_KEY = 6,
25
+ EVENT_CODE_WAITING_REMOVE_CARD = 7,
26
+ EVENT_CODE_REMOVED_CARD = 8,
27
+ EVENT_CODE_CVV_REQUESTED = 9,
28
+ EVENT_CODE_CVV_OK = 10,
29
+ EVENT_CODE_CAR_BIN_REQUESTED = 11,
30
+ EVENT_CODE_CAR_BIN_OK = 12,
31
+ EVENT_CODE_CAR_HOLDER_REQUESTED = 13,
32
+ EVENT_CODE_CAR_HOLDER_OK = 14,
33
+ EVENT_CODE_ACTIVATION_SUCCESS = 15,
34
+ EVENT_CODE_DIGIT_PASSWORD = 16,
35
+ EVENT_CODE_NO_PASSWORD = 17,
36
+ EVENT_CODE_SALE_APPROVED = 18,
37
+ EVENT_CODE_SALE_NOT_APPROVED = 19
38
+ }
39
+ export interface PlugPagTransactionResult {
40
+ message?: string;
41
+ errorCode?: string;
42
+ result?: PlugPagResult;
43
+ }
44
+ export declare enum PlugPagResult {
45
+ RET_OK = 0
46
+ }
47
+ //# sourceMappingURL=plugpag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugpag.d.ts","sourceRoot":"","sources":["../../../../src/@types/plugpag.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,GAAG,EAAE,CACH,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,gBAAgB,KAC9B,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,4BAA4B,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,uBAAuB,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,MAAM,CAAC;CAC7D;AAED,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,YAAY,GACZ,KAAK,GACL,SAAS,GACT,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,YAAY,CAAC;CACzB;AAED,oBAAY,YAAY;IACtB,yBAAyB,KAAK;IAC9B,kBAAkB,KAAK;IACvB,uBAAuB,IAAI;IAC3B,wBAAwB,IAAI;IAC5B,wBAAwB,IAAI;IAC5B,iBAAiB,IAAI;IACrB,mBAAmB,IAAI;IACvB,sBAAsB,IAAI;IAC1B,uBAAuB,IAAI;IAC3B,8BAA8B,IAAI;IAClC,uBAAuB,IAAI;IAC3B,wBAAwB,IAAI;IAC5B,iBAAiB,KAAK;IACtB,4BAA4B,KAAK;IACjC,qBAAqB,KAAK;IAC1B,+BAA+B,KAAK;IACpC,wBAAwB,KAAK;IAC7B,6BAA6B,KAAK;IAClC,yBAAyB,KAAK;IAC9B,sBAAsB,KAAK;IAC3B,wBAAwB,KAAK;IAC7B,4BAA4B,KAAK;CAClC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,oBAAY,aAAa;IACvB,MAAM,IAAI;CACX"}
@@ -0,0 +1,9 @@
1
+ export interface SunmiAPI {
2
+ searchRfid: () => Promise<string>;
3
+ cancelCardSearch: () => void;
4
+ printText: (str: string, fontSize?: number, isBold?: boolean, isUnderline?: boolean) => void;
5
+ printEmptyLine: () => void;
6
+ printBpLogo: () => void;
7
+ setPrinterAlign: (align: number) => void;
8
+ }
9
+ //# sourceMappingURL=sunmi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sunmi.d.ts","sourceRoot":"","sources":["../../../../src/@types/sunmi.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,SAAS,EAAE,CACT,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,OAAO,KAClB,IAAI,CAAC;IACV,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C"}
@@ -0,0 +1,3 @@
1
+ export declare const IOS_ERROR = "\u26A0\uFE0F The package 'react-native-mesmart' doesn't work in iOS environment!";
2
+ export declare const LINKING_ERROR: string;
3
+ //# sourceMappingURL=errorMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessages.d.ts","sourceRoot":"","sources":["../../../src/errorMessages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,qFACoD,CAAC;AAE3E,eAAO,MAAM,aAAa,QAGQ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type SunmiAPI, type PlugpagAPI, type TransactionTypes, type PlugPagEventData, type PlugPagTransactionResult, PlugPagEvent, PlugPagResult } from './@types';
2
+ export declare const plugpagApi: PlugpagAPI;
3
+ export declare const sunmiApi: SunmiAPI;
4
+ declare const Sunmi: {
5
+ searchRfid: () => Promise<string>;
6
+ cancelCardSearch: () => void;
7
+ printText: (str: string, fontSize?: number, isBold?: boolean, isUnderline?: boolean) => void;
8
+ printEmptyLine: () => void;
9
+ printBpLogo: () => void;
10
+ setPrinterAlign: (align: 'left' | 'center' | 'right') => void;
11
+ };
12
+ declare const Plugpag: {
13
+ init: (activationCode: string) => void;
14
+ abortPayment: () => void;
15
+ printEstablishmentReceipt: () => void;
16
+ printClientReceipt: () => void;
17
+ customDialogClientViaPrinter: (color: string) => void;
18
+ pay: (rechargeValue: string, transactionType: TransactionTypes) => Promise<PlugPagTransactionResult>;
19
+ resolveTransactionEvent: (data: PlugPagEventData) => string;
20
+ };
21
+ export { Sunmi, Plugpag, PlugPagEvent, PlugPagResult };
22
+ export type { PlugPagEventData, PlugPagTransactionResult, TransactionTypes };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,eAAO,MAAM,UAAU,EAAE,UASpB,CAAC;AAEN,eAAO,MAAM,QAAQ,EAAE,QASlB,CAAC;AA6BN,QAAA,MAAM,KAAK;;;qBAxBJ,MAAM,aACD,MAAM,WACR,OAAO,gBACF,OAAO;;;6BAIU,MAAM,GAAG,QAAQ,GAAG,OAAO;CAwB1D,CAAC;AAEF,QAAA,MAAM,OAAO;2BApBiB,MAAM;;;;0CAMS,MAAM;yBALvB,MAAM,mBAAmB,gBAAgB;oCAO9B,gBAAgB,KAAG,MAAM;CAoB/D,CAAC;AAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAEvD,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,146 @@
1
+ {
2
+ "name": "react-native-mesmart",
3
+ "version": "0.4.0",
4
+ "description": "Sunmi P2 utilities and Plugpag wrapper for React Native",
5
+ "main": "lib/commonjs/index",
6
+ "module": "lib/module/index",
7
+ "types": "lib/typescript/src/index.d.ts",
8
+ "react-native": "src/index",
9
+ "source": "src/index",
10
+ "files": [
11
+ "src",
12
+ "lib",
13
+ "android",
14
+ "!android/build",
15
+ "!android/gradle",
16
+ "!android/gradlew",
17
+ "!android/gradlew.bat",
18
+ "!android/local.properties",
19
+ "!**/__tests__",
20
+ "!**/__fixtures__",
21
+ "!**/__mocks__",
22
+ "!**/.*"
23
+ ],
24
+ "scripts": {
25
+ "example": "cd example && yarn android && cd ..",
26
+ "typecheck": "tsc --noEmit",
27
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
28
+ "clean": "del-cli android/build example/android/build example/android/app/build lib",
29
+ "prepare": "bob build",
30
+ "release": "release-it"
31
+ },
32
+ "keywords": [
33
+ "react-native",
34
+ "android"
35
+ ],
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/ianlgnk/react-native-mesmart.git"
39
+ },
40
+ "author": "Ian Langkammer Batista <ianlgnk@gmail.com> (https://github.com/ianlgnk)",
41
+ "license": "MIT",
42
+ "bugs": {
43
+ "url": "https://github.com/ianlgnk/react-native-mesmart/issues"
44
+ },
45
+ "homepage": "https://github.com/ianlgnk/react-native-mesmart#readme",
46
+ "publishConfig": {
47
+ "registry": "https://registry.npmjs.org/"
48
+ },
49
+ "devDependencies": {
50
+ "@commitlint/config-conventional": "^17.0.2",
51
+ "@evilmartians/lefthook": "^1.5.0",
52
+ "@react-native/babel-preset": "^0.75.0-main",
53
+ "@react-native/eslint-config": "^0.73.1",
54
+ "@release-it/conventional-changelog": "^5.0.0",
55
+ "@types/react": "^18.2.44",
56
+ "commitlint": "^17.0.2",
57
+ "del-cli": "^5.1.0",
58
+ "eslint": "^8.51.0",
59
+ "eslint-config-prettier": "^9.0.0",
60
+ "eslint-plugin-prettier": "^5.0.1",
61
+ "prettier": "^3.0.3",
62
+ "react": "18.2.0",
63
+ "react-native": "0.72.3",
64
+ "react-native-builder-bob": "^0.20.0",
65
+ "release-it": "^15.0.0",
66
+ "turbo": "^1.10.7",
67
+ "typescript": "^5.2.2"
68
+ },
69
+ "resolutions": {
70
+ "@types/react": "^18.2.44"
71
+ },
72
+ "peerDependencies": {
73
+ "react": "*",
74
+ "react-native": "*"
75
+ },
76
+ "workspaces": [
77
+ "example"
78
+ ],
79
+ "packageManager": "yarn@3.6.1",
80
+ "commitlint": {
81
+ "extends": [
82
+ "@commitlint/config-conventional"
83
+ ]
84
+ },
85
+ "release-it": {
86
+ "git": {
87
+ "commitMessage": "chore: release ${version}",
88
+ "tagName": "v${version}"
89
+ },
90
+ "npm": {
91
+ "publish": true
92
+ },
93
+ "github": {
94
+ "release": true
95
+ },
96
+ "plugins": {
97
+ "@release-it/conventional-changelog": {
98
+ "preset": "angular"
99
+ }
100
+ }
101
+ },
102
+ "eslintConfig": {
103
+ "root": true,
104
+ "extends": [
105
+ "@react-native",
106
+ "prettier"
107
+ ],
108
+ "rules": {
109
+ "prettier/prettier": [
110
+ "error",
111
+ {
112
+ "quoteProps": "consistent",
113
+ "singleQuote": true,
114
+ "tabWidth": 2,
115
+ "trailingComma": "es5",
116
+ "useTabs": false
117
+ }
118
+ ]
119
+ }
120
+ },
121
+ "eslintIgnore": [
122
+ "node_modules/",
123
+ "lib/"
124
+ ],
125
+ "prettier": {
126
+ "quoteProps": "consistent",
127
+ "singleQuote": true,
128
+ "tabWidth": 2,
129
+ "trailingComma": "es5",
130
+ "useTabs": false
131
+ },
132
+ "react-native-builder-bob": {
133
+ "source": "src",
134
+ "output": "lib",
135
+ "targets": [
136
+ "commonjs",
137
+ "module",
138
+ [
139
+ "typescript",
140
+ {
141
+ "project": "tsconfig.build.json"
142
+ }
143
+ ]
144
+ ]
145
+ }
146
+ }
@@ -0,0 +1,2 @@
1
+ export * from './plugpag';
2
+ export * from './sunmi';
@@ -0,0 +1,60 @@
1
+ export interface PlugpagAPI {
2
+ init: (activationCode: string) => void;
3
+ pay: (
4
+ rechargeValue: string,
5
+ transactionType: TransactionTypes
6
+ ) => Promise<PlugPagTransactionResult>;
7
+ abortPayment: () => void;
8
+ printEstablishmentReceipt: () => void;
9
+ printClientReceipt: () => void;
10
+ customDialogClientViaPrinter: (color: string) => void;
11
+ resolveTransactionEvent: (data: PlugPagEventData) => string;
12
+ }
13
+
14
+ export type TransactionTypes =
15
+ | 'debitCard'
16
+ | 'creditCard'
17
+ | 'pix'
18
+ | 'voucher'
19
+ | 'money'
20
+ | 'bonus';
21
+
22
+ export interface PlugPagEventData {
23
+ customMessage?: string;
24
+ eventCode: PlugPagEvent;
25
+ }
26
+
27
+ export enum PlugPagEvent {
28
+ EVENT_CODE_CUSTOM_MESSAGE = -2,
29
+ EVENT_CODE_DEFAULT = -1,
30
+ EVENT_CODE_WAITING_CARD = 0,
31
+ EVENT_CODE_INSERTED_CARD = 1,
32
+ EVENT_CODE_PIN_REQUESTED = 2,
33
+ EVENT_CODE_PIN_OK = 3,
34
+ EVENT_CODE_SALE_END = 4,
35
+ EVENT_CODE_AUTHORIZING = 5,
36
+ EVENT_CODE_INSERTED_KEY = 6,
37
+ EVENT_CODE_WAITING_REMOVE_CARD = 7,
38
+ EVENT_CODE_REMOVED_CARD = 8,
39
+ EVENT_CODE_CVV_REQUESTED = 9,
40
+ EVENT_CODE_CVV_OK = 10,
41
+ EVENT_CODE_CAR_BIN_REQUESTED = 11,
42
+ EVENT_CODE_CAR_BIN_OK = 12,
43
+ EVENT_CODE_CAR_HOLDER_REQUESTED = 13,
44
+ EVENT_CODE_CAR_HOLDER_OK = 14,
45
+ EVENT_CODE_ACTIVATION_SUCCESS = 15,
46
+ EVENT_CODE_DIGIT_PASSWORD = 16,
47
+ EVENT_CODE_NO_PASSWORD = 17,
48
+ EVENT_CODE_SALE_APPROVED = 18,
49
+ EVENT_CODE_SALE_NOT_APPROVED = 19,
50
+ }
51
+
52
+ export interface PlugPagTransactionResult {
53
+ message?: string;
54
+ errorCode?: string;
55
+ result?: PlugPagResult;
56
+ }
57
+
58
+ export enum PlugPagResult {
59
+ RET_OK = 0,
60
+ }
@@ -0,0 +1,13 @@
1
+ export interface SunmiAPI {
2
+ searchRfid: () => Promise<string>;
3
+ cancelCardSearch: () => void;
4
+ printText: (
5
+ str: string,
6
+ fontSize?: number,
7
+ isBold?: boolean,
8
+ isUnderline?: boolean
9
+ ) => void;
10
+ printEmptyLine: () => void;
11
+ printBpLogo: () => void;
12
+ setPrinterAlign: (align: number) => void;
13
+ }
@@ -0,0 +1,7 @@
1
+ export const IOS_ERROR =
2
+ "⚠️ The package 'react-native-mesmart' doesn't work in iOS environment!";
3
+
4
+ export const LINKING_ERROR =
5
+ `⚠️ The package 'react-native-mesmart' doesn't seem to be linked. Make sure: \n\n` +
6
+ ' - You rebuilt the app after installing the package\n' +
7
+ ' - You are not using Expo Go\n';
package/src/index.tsx ADDED
@@ -0,0 +1,85 @@
1
+ import { NativeModules, Platform } from 'react-native';
2
+ import {
3
+ type SunmiAPI,
4
+ type PlugpagAPI,
5
+ type TransactionTypes,
6
+ type PlugPagEventData,
7
+ type PlugPagTransactionResult,
8
+ PlugPagEvent,
9
+ PlugPagResult,
10
+ } from './@types';
11
+ import { IOS_ERROR, LINKING_ERROR } from './errorMessages';
12
+
13
+ if (Platform.OS === 'ios') throw new Error(IOS_ERROR);
14
+
15
+ export const plugpagApi: PlugpagAPI = NativeModules.Plugpag
16
+ ? NativeModules.Plugpag
17
+ : new Proxy(
18
+ {},
19
+ {
20
+ get() {
21
+ throw new Error(LINKING_ERROR);
22
+ },
23
+ }
24
+ );
25
+
26
+ export const sunmiApi: SunmiAPI = NativeModules.Sunmi
27
+ ? NativeModules.Sunmi
28
+ : new Proxy(
29
+ {},
30
+ {
31
+ get() {
32
+ throw new Error(LINKING_ERROR);
33
+ },
34
+ }
35
+ );
36
+
37
+ const searchRfid = () => sunmiApi.searchRfid();
38
+ const cancelCardSearch = () => sunmiApi.cancelCardSearch();
39
+ const printText = (
40
+ str: string,
41
+ fontSize: number = 24,
42
+ isBold: boolean = false,
43
+ isUnderline: boolean = false
44
+ ) => sunmiApi.printText(str, fontSize, isBold, isUnderline);
45
+ const printEmptyLine = () => sunmiApi.printEmptyLine();
46
+ const printBpLogo = () => sunmiApi.printBpLogo();
47
+ const setPrinterAlign = (align: 'left' | 'center' | 'right') => {
48
+ if (align === 'left') sunmiApi.setPrinterAlign(0);
49
+ if (align === 'center') sunmiApi.setPrinterAlign(1);
50
+ if (align === 'right') sunmiApi.setPrinterAlign(2);
51
+ };
52
+
53
+ const init = (activationCode: string) => plugpagApi.init(activationCode);
54
+ const pay = (rechargeValue: string, transactionType: TransactionTypes) =>
55
+ plugpagApi.pay(rechargeValue, transactionType);
56
+ const abortPayment = () => plugpagApi.abortPayment();
57
+ const printEstablishmentReceipt = () => plugpagApi.printEstablishmentReceipt();
58
+ const printClientReceipt = () => plugpagApi.printClientReceipt();
59
+ const customDialogClientViaPrinter = (color: string) =>
60
+ plugpagApi.customDialogClientViaPrinter(color);
61
+ const resolveTransactionEvent = (data: PlugPagEventData): string =>
62
+ plugpagApi.resolveTransactionEvent(data);
63
+
64
+ const Sunmi = {
65
+ searchRfid,
66
+ cancelCardSearch,
67
+ printText,
68
+ printEmptyLine,
69
+ printBpLogo,
70
+ setPrinterAlign,
71
+ };
72
+
73
+ const Plugpag = {
74
+ init,
75
+ abortPayment,
76
+ printEstablishmentReceipt,
77
+ printClientReceipt,
78
+ customDialogClientViaPrinter,
79
+ pay,
80
+ resolveTransactionEvent,
81
+ };
82
+
83
+ export { Sunmi, Plugpag, PlugPagEvent, PlugPagResult };
84
+
85
+ export type { PlugPagEventData, PlugPagTransactionResult, TransactionTypes };