react-native-nfc-manager 4.0.0-beta.6 → 4.0.0-beta.8

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 (107) hide show
  1. package/README.md +38 -4
  2. package/android/src/main/java/community/revteltech/nfc/MifareClassicHandler.java +419 -0
  3. package/android/src/main/java/community/revteltech/nfc/MifareUltralightHandler.java +84 -0
  4. package/android/src/main/java/community/revteltech/nfc/NdefHandler.java +373 -0
  5. package/android/src/main/java/community/revteltech/nfc/NfcAdapterStateChangedReceiver.java +48 -0
  6. package/android/src/main/java/community/revteltech/nfc/NfcErrorCodes.java +16 -0
  7. package/android/src/main/java/community/revteltech/nfc/NfcManager.java +339 -1125
  8. package/android/src/main/java/community/revteltech/nfc/NfcManagerIOSStubBase.java +130 -0
  9. package/android/src/main/java/community/revteltech/nfc/NfcTechIoRouter.java +258 -0
  10. package/android/src/main/java/community/revteltech/nfc/TagTechnologyRequest.java +19 -7
  11. package/android/src/main/java/community/revteltech/nfc/Util.java +201 -0
  12. package/dist/ndef-lib/constants.js +67 -0
  13. package/dist/ndef-lib/constants.js.map +1 -0
  14. package/dist/ndef-lib/index.js +79 -0
  15. package/dist/ndef-lib/index.js.map +1 -0
  16. package/dist/ndef-lib/ndef-text.js +29 -0
  17. package/dist/ndef-lib/ndef-text.js.map +1 -0
  18. package/dist/ndef-lib/ndef-uri.js +40 -0
  19. package/dist/ndef-lib/ndef-uri.js.map +1 -0
  20. package/dist/ndef-lib/ndef-wifi-simple.js +100 -0
  21. package/dist/ndef-lib/ndef-wifi-simple.js.map +1 -0
  22. package/dist/ndef-lib/ndef.js +153 -0
  23. package/dist/ndef-lib/ndef.js.map +1 -0
  24. package/dist/ndef-lib/stringifier.js +155 -0
  25. package/dist/ndef-lib/stringifier.js.map +1 -0
  26. package/dist/ndef-lib/util.js +126 -0
  27. package/dist/ndef-lib/util.js.map +1 -0
  28. package/dist/specs/NativeNfcManager.js +5 -0
  29. package/dist/specs/NativeNfcManager.js.map +1 -0
  30. package/dist/src/NativeNfcManager.js +55 -0
  31. package/dist/src/NativeNfcManager.js.map +1 -0
  32. package/dist/src/NfcError.js +220 -0
  33. package/dist/src/NfcError.js.map +1 -0
  34. package/dist/src/NfcManager.js +175 -0
  35. package/dist/src/NfcManager.js.map +1 -0
  36. package/dist/src/NfcManagerAndroid.js +112 -0
  37. package/dist/src/NfcManagerAndroid.js.map +1 -0
  38. package/dist/src/NfcManagerIOS.js +119 -0
  39. package/dist/src/NfcManagerIOS.js.map +1 -0
  40. package/dist/src/NfcTech/Iso15693HandlerIOS.js +99 -0
  41. package/dist/src/NfcTech/Iso15693HandlerIOS.js.map +1 -0
  42. package/dist/src/NfcTech/IsoDepHandler.js +29 -0
  43. package/dist/src/NfcTech/IsoDepHandler.js.map +1 -0
  44. package/dist/src/NfcTech/MifareClassicHandlerAndroid.js +68 -0
  45. package/dist/src/NfcTech/MifareClassicHandlerAndroid.js.map +1 -0
  46. package/dist/src/NfcTech/MifareUltralightHandlerAndroid.js +23 -0
  47. package/dist/src/NfcTech/MifareUltralightHandlerAndroid.js.map +1 -0
  48. package/dist/src/NfcTech/NdefFormatableHandlerAndroid.js +16 -0
  49. package/dist/src/NfcTech/NdefFormatableHandlerAndroid.js.map +1 -0
  50. package/dist/src/NfcTech/NdefHandler.js +54 -0
  51. package/dist/src/NfcTech/NdefHandler.js.map +1 -0
  52. package/dist/src/NfcTech/NfcAHandler.js +16 -0
  53. package/dist/src/NfcTech/NfcAHandler.js.map +1 -0
  54. package/dist/src/NfcTech/NfcVHandler.js +33 -0
  55. package/dist/src/NfcTech/NfcVHandler.js.map +1 -0
  56. package/dist/src/index.js +53 -0
  57. package/dist/src/index.js.map +1 -0
  58. package/index.d.ts +76 -43
  59. package/ios/NfcManager.h +2 -10
  60. package/ios/NfcManager.mm +176 -434
  61. package/ios/RNNfcBridgeUtil.h +28 -0
  62. package/ios/RNNfcBridgeUtil.mm +52 -0
  63. package/ios/RNNfcManager+Felica.swift +61 -0
  64. package/ios/RNNfcManager+Iso15693.swift +895 -0
  65. package/ios/RNNfcManager+IsoDep.swift +145 -0
  66. package/ios/RNNfcManager+Mifare.swift +61 -0
  67. package/ios/RNNfcManager+Ndef.swift +120 -0
  68. package/ios/RNNfcManager.h +251 -0
  69. package/ios/RNNfcManager.swift +648 -0
  70. package/ios/RNNfcSessionDelegateProxy.swift +104 -0
  71. package/ios/RNNfcSwiftUtil.swift +34 -0
  72. package/ndef-lib/{constants.js → constants.ts} +2 -0
  73. package/ndef-lib/{index.js → index.ts} +23 -12
  74. package/ndef-lib/{ndef-text.js → ndef-text.ts} +7 -2
  75. package/ndef-lib/{ndef-uri.js → ndef-uri.ts} +8 -3
  76. package/ndef-lib/{ndef-wifi-simple.js → ndef-wifi-simple.ts} +34 -11
  77. package/ndef-lib/{ndef.js → ndef.ts} +49 -20
  78. package/ndef-lib/{stringifier.js → stringifier.ts} +27 -10
  79. package/ndef-lib/{util.js → util.ts} +13 -8
  80. package/package.json +21 -7
  81. package/react-native-nfc-manager.podspec +3 -2
  82. package/specs/NativeNfcManager.ts +17 -4
  83. package/src/NativeNfcManager.ts +84 -0
  84. package/src/{NfcError.js → NfcError.ts} +6 -17
  85. package/src/{NfcManager.js → NfcManager.ts} +49 -34
  86. package/src/{NfcManagerAndroid.js → NfcManagerAndroid.ts} +25 -8
  87. package/src/{NfcManagerIOS.js → NfcManagerIOS.ts} +31 -10
  88. package/src/NfcTech/{Iso15693HandlerIOS.js → Iso15693HandlerIOS.ts} +64 -36
  89. package/src/NfcTech/{IsoDepHandler.js → IsoDepHandler.ts} +8 -5
  90. package/src/NfcTech/{MifareClassicHandlerAndroid.js → MifareClassicHandlerAndroid.ts} +33 -24
  91. package/src/NfcTech/{MifareUltralightHandlerAndroid.js → MifareUltralightHandlerAndroid.ts} +14 -5
  92. package/src/NfcTech/{NdefFormatableHandlerAndroid.js → NdefFormatableHandlerAndroid.ts} +9 -2
  93. package/src/NfcTech/{NdefHandler.js → NdefHandler.ts} +19 -6
  94. package/src/NfcTech/{NfcAHandler.js → NfcAHandler.ts} +6 -3
  95. package/src/NfcTech/{NfcVHandler.js → NfcVHandler.ts} +8 -5
  96. package/src/__mocks__/{NativeNfcManager.js → NativeNfcManager.ts} +4 -1
  97. package/src/{index.js → index.ts} +1 -1
  98. package/android/src/main/java/community/revteltech/nfc/JsonConvert.java +0 -141
  99. package/android/src/main/java/community/revteltech/nfc/MifareUtil.java +0 -84
  100. package/ios/NfcManager+Felica.mm +0 -43
  101. package/ios/NfcManager+Iso15693.mm +0 -600
  102. package/ios/NfcManager+IsoDep.mm +0 -83
  103. package/ios/NfcManager+Mifare.mm +0 -43
  104. package/ios/Util.mm +0 -55
  105. package/specs/NativeNfcManager.js +0 -3
  106. package/specs/NativeNfcManager.js.map +0 -1
  107. package/src/NativeNfcManager.js +0 -37
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const constants = {
4
+ TNF_EMPTY: 0x0,
5
+ TNF_WELL_KNOWN: 0x01,
6
+ TNF_MIME_MEDIA: 0x02,
7
+ TNF_ABSOLUTE_URI: 0x03,
8
+ TNF_EXTERNAL_TYPE: 0x04,
9
+ TNF_UNKNOWN: 0x05,
10
+ TNF_UNCHANGED: 0x06,
11
+ TNF_RESERVED: 0x07,
12
+ RTD_TEXT: 'T',
13
+ RTD_URI: 'U',
14
+ RTD_SMART_POSTER: 'Sp',
15
+ RTD_ALTERNATIVE_CARRIER: 'ac',
16
+ RTD_HANDOVER_CARRIER: 'Hc',
17
+ RTD_HANDOVER_REQUEST: 'Hr',
18
+ RTD_HANDOVER_SELECT: 'Hs',
19
+ RTD_BYTES_TEXT: [0x54],
20
+ RTD_BYTES_URI: [0x55],
21
+ RTD_BYTES_SMART_POSTER: [0x53, 0x70],
22
+ RTD_BYTES_ALTERNATIVE_CARRIER: [0x61, 0x63],
23
+ RTD_BYTES_HANDOVER_CARRIER: [0x48, 0x63],
24
+ RTD_BYTES_HANDOVER_REQUEST: [0x48, 0x72],
25
+ RTD_BYTES_HANDOVER_SELECT: [0x48, 0x73],
26
+ MIME_WFA_WSC: 'application/vnd.wfa.wsc',
27
+ RTD_URI_PROTOCOLS: [
28
+ '',
29
+ 'http://www.',
30
+ 'https://www.',
31
+ 'http://',
32
+ 'https://',
33
+ 'tel:',
34
+ 'mailto:',
35
+ 'ftp://anonymous:anonymous@',
36
+ 'ftp://ftp.',
37
+ 'ftps://',
38
+ 'sftp://',
39
+ 'smb://',
40
+ 'nfs://',
41
+ 'ftp://',
42
+ 'dav://',
43
+ 'news:',
44
+ 'telnet://',
45
+ 'imap:',
46
+ 'rtsp://',
47
+ 'urn:',
48
+ 'pop:',
49
+ 'sip:',
50
+ 'sips:',
51
+ 'tftp:',
52
+ 'btspp://',
53
+ 'btl2cap://',
54
+ 'btgoep://',
55
+ 'tcpobex://',
56
+ 'irdaobex://',
57
+ 'file://',
58
+ 'urn:epc:id:',
59
+ 'urn:epc:tag:',
60
+ 'urn:epc:pat:',
61
+ 'urn:epc:raw:',
62
+ 'urn:epc:',
63
+ 'urn:nfc:',
64
+ ],
65
+ };
66
+ module.exports = constants;
67
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../ndef-lib/constants.ts"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG;IAChB,SAAS,EAAE,GAAG;IACd,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,IAAI;IAElB,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,GAAG;IACZ,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;IAC7B,oBAAoB,EAAE,IAAI;IAC1B,oBAAoB,EAAE,IAAI;IAC1B,mBAAmB,EAAE,IAAI;IAEzB,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,aAAa,EAAE,CAAC,IAAI,CAAC;IACrB,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACpC,6BAA6B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3C,0BAA0B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACxC,0BAA0B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IACxC,yBAAyB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;IAEvC,YAAY,EAAE,yBAAyB;IAEvC,iBAAiB,EAAE;QACjB,EAAE;QACF,aAAa;QACb,cAAc;QACd,SAAS;QACT,UAAU;QACV,MAAM;QACN,SAAS;QACT,4BAA4B;QAC5B,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,WAAW;QACX,OAAO;QACP,SAAS;QACT,MAAM;QACN,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;QACP,UAAU;QACV,YAAY;QACZ,WAAW;QACX,YAAY;QACZ,aAAa;QACb,SAAS;QACT,aAAa;QACb,cAAc;QACd,cAAc;QACd,cAAc;QACd,UAAU;QACV,UAAU;KACX;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ // originally from phonegap-nfc.js by Don Coleman
3
+ // adapted for react-native-nfc-manager by Richie Hsieh
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const { createNdefRecord, encodeNdefMessage, decodeNdefMessage, equalToRecordType, } = require('./ndef');
6
+ const constants = require('./constants');
7
+ const util = require('./util');
8
+ const textHelper = require('./ndef-text');
9
+ const uriHelper = require('./ndef-uri');
10
+ const wifiSimpleHelper = require('./ndef-wifi-simple');
11
+ const stringifier = require('./stringifier');
12
+ const PrimitiveRecord = {
13
+ emptyRecord() {
14
+ return createNdefRecord(constants.TNF_EMPTY, [], [], []);
15
+ },
16
+ absoluteUriRecord(uri, payload = [], id = []) {
17
+ return createNdefRecord(constants.TNF_ABSOLUTE_URI, uri, id, payload);
18
+ },
19
+ mimeMediaRecord(mimeType, payload, id = []) {
20
+ return createNdefRecord(constants.TNF_MIME_MEDIA, mimeType, id, payload);
21
+ },
22
+ externalTypeRecord(externalType, payload, id = []) {
23
+ return createNdefRecord(constants.TNF_EXTERNAL_TYPE, externalType, id, payload);
24
+ },
25
+ };
26
+ const WellKnownRecord = {
27
+ textRecord(text, languageCode, id = []) {
28
+ return createNdefRecord(constants.TNF_WELL_KNOWN, constants.RTD_TEXT, id, textHelper.encodePayload(text, languageCode));
29
+ },
30
+ uriRecord(uri, id = []) {
31
+ return createNdefRecord(constants.TNF_WELL_KNOWN, constants.RTD_URI, id, uriHelper.encodePayload(uri));
32
+ },
33
+ smartPoster(ndefRecords, id = []) {
34
+ let payload = [];
35
+ if (ndefRecords) {
36
+ // make sure we have an array of something like NDEF records before encoding
37
+ if (ndefRecords[0] instanceof Object &&
38
+ ndefRecords[0].hasOwnProperty('tnf')) {
39
+ payload = encodeNdefMessage(ndefRecords);
40
+ }
41
+ else {
42
+ // assume the caller has already encoded the NDEF records into a byte array
43
+ payload = ndefRecords;
44
+ }
45
+ }
46
+ else {
47
+ console.log('WARNING: Expecting an array of NDEF records');
48
+ }
49
+ return createNdefRecord(constants.TNF_WELL_KNOWN, constants.RTD_SMART_POSTER, id, payload);
50
+ },
51
+ };
52
+ const ExtraTypeRecord = {
53
+ androidApplicationRecord(packageName, id = []) {
54
+ return PrimitiveRecord.externalTypeRecord('android.com:pkg', packageName, id);
55
+ },
56
+ wifiSimpleRecord: function (credentials, id = []) {
57
+ let payload = wifiSimpleHelper.encodePayload(credentials);
58
+ return PrimitiveRecord.mimeMediaRecord(constants.MIME_WFA_WSC, payload, id);
59
+ },
60
+ };
61
+ const NDEF = {
62
+ ...constants,
63
+ ...PrimitiveRecord,
64
+ ...WellKnownRecord,
65
+ ...ExtraTypeRecord,
66
+ record: createNdefRecord,
67
+ encodeMessage: encodeNdefMessage,
68
+ decodeMessage: decodeNdefMessage,
69
+ isType: equalToRecordType,
70
+ // individual record type helpers
71
+ text: textHelper,
72
+ uri: uriHelper,
73
+ wifiSimple: wifiSimpleHelper,
74
+ // other helpers
75
+ util,
76
+ stringify: stringifier.stringify,
77
+ };
78
+ module.exports = NDEF;
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ndef-lib/index.ts"],"names":[],"mappings":";AAAA,iDAAiD;AACjD,uDAAuD;;AAEvD,MAAM,EACJ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACzC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAW7C,MAAM,eAAe,GAAG;IACtB,WAAW;QACT,OAAO,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB,CAAC,GAAW,EAAE,UAA8B,EAAE,EAAE,KAAyB,EAAE;QAC1F,OAAO,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,eAAe,CAAC,QAAgB,EAAE,OAA2B,EAAE,KAAyB,EAAE;QACxF,OAAO,gBAAgB,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,kBAAkB,CAAC,YAAoB,EAAE,OAA2B,EAAE,KAAyB,EAAE;QAC/F,OAAO,gBAAgB,CACrB,SAAS,CAAC,iBAAiB,EAC3B,YAAY,EACZ,EAAE,EACF,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,UAAU,CAAC,IAAY,EAAE,YAAqB,EAAE,KAAyB,EAAE;QACzE,OAAO,gBAAgB,CACrB,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,QAAQ,EAClB,EAAE,EACF,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAyB,EAAE;QAChD,OAAO,gBAAgB,CACrB,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,OAAO,EACjB,EAAE,EACF,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAC7B,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,WAAqC,EAAE,KAAyB,EAAE;QAC5E,IAAI,OAAO,GAAc,EAAE,CAAC;QAE5B,IAAI,WAAW,EAAE;YACf,4EAA4E;YAC5E,IACE,WAAW,CAAC,CAAC,CAAC,YAAY,MAAM;gBAChC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC;gBACA,OAAO,GAAG,iBAAiB,CAAC,WAA2B,CAAC,CAAC;aAC1D;iBAAM;gBACL,2EAA2E;gBAC3E,OAAO,GAAG,WAAwB,CAAC;aACpC;SACF;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;SAC5D;QAED,OAAO,gBAAgB,CACrB,SAAS,CAAC,cAAc,EACxB,SAAS,CAAC,gBAAgB,EAC1B,EAAE,EACF,OAAO,CACR,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,wBAAwB,CAAC,WAAmB,EAAE,KAAyB,EAAE;QACvE,OAAO,eAAe,CAAC,kBAAkB,CACvC,iBAAiB,EACjB,WAAW,EACX,EAAE,CACH,CAAC;IACJ,CAAC;IAED,gBAAgB,EAAE,UAAU,WAAqE,EAAE,KAAyB,EAAE;QAC5H,IAAI,OAAO,GAAG,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,eAAe,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,GAAG,SAAS;IACZ,GAAG,eAAe;IAClB,GAAG,eAAe;IAClB,GAAG,eAAe;IAElB,MAAM,EAAE,gBAAgB;IACxB,aAAa,EAAE,iBAAiB;IAChC,aAAa,EAAE,iBAAiB;IAChC,MAAM,EAAE,iBAAiB;IAEzB,iCAAiC;IACjC,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,SAAS;IACd,UAAU,EAAE,gBAAgB;IAE5B,gBAAgB;IAChB,IAAI;IACJ,SAAS,EAAE,WAAW,CAAC,SAAS;CACjC,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var util = require('./util');
4
+ // decode text bytes from ndef record payload
5
+ // @returns a string
6
+ function decode(data) {
7
+ var languageCodeLength = data[0] & 0x3f; // 6 LSBs
8
+ // languageCode = data.slice(1, 1 + languageCodeLength),
9
+ // utf16 = (data[0] & 0x80) !== 0; // assuming UTF-16BE
10
+ // TODO need to deal with UTF in the future
11
+ // console.log("lang " + languageCode + (utf16 ? " utf16" : " utf8"));
12
+ return util.bytesToString(data.slice(languageCodeLength + 1));
13
+ }
14
+ // encode text payload
15
+ // @returns an array of bytes
16
+ function encode(text, lang, encoding) {
17
+ // ISO/IANA language code, but we're not enforcing
18
+ if (!lang) {
19
+ lang = 'en';
20
+ }
21
+ var encoded = util.stringToBytes(lang + text);
22
+ encoded.unshift(lang.length);
23
+ return encoded;
24
+ }
25
+ module.exports = {
26
+ encodePayload: encode,
27
+ decodePayload: decode,
28
+ };
29
+ //# sourceMappingURL=ndef-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndef-text.js","sourceRoot":"","sources":["../../ndef-lib/ndef-text.ts"],"names":[],"mappings":";;AAAA,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAK7B,6CAA6C;AAC7C,oBAAoB;AACpB,SAAS,MAAM,CAAC,IAAe;IAC7B,IAAI,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS;IAClD,wDAAwD;IACxD,uDAAuD;IAEvD,2CAA2C;IAC3C,sEAAsE;IAEtE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,sBAAsB;AACtB,6BAA6B;AAC7B,SAAS,MAAM,CAAC,IAAY,EAAE,IAAa,EAAE,QAAkB;IAC7D,kDAAkD;IAClD,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,GAAG,IAAI,CAAC;KACb;IAED,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,aAAa,EAAE,MAAM;IACrB,aAAa,EAAE,MAAM;CACtB,CAAC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const util = require('./util');
4
+ const protocols = require('./constants').RTD_URI_PROTOCOLS;
5
+ // decode a URI payload bytes
6
+ // @returns a string
7
+ function decode(data) {
8
+ var prefix = protocols[data[0]];
9
+ if (!prefix) {
10
+ // 36 to 255 should be ""
11
+ prefix = '';
12
+ }
13
+ return prefix + util.bytesToString(data.slice(1));
14
+ }
15
+ // shorten a URI with standard prefix
16
+ // @returns an array of bytes
17
+ function encode(uri) {
18
+ var prefix, protocolCode, encoded;
19
+ // check each protocol, unless we've found a match
20
+ // "urn:" is the one exception where we need to keep checking
21
+ // slice so we don't check ""
22
+ protocols.slice(1).forEach(function (protocol) {
23
+ if ((!prefix || prefix === 'urn:') && uri.indexOf(protocol) === 0) {
24
+ prefix = protocol;
25
+ }
26
+ });
27
+ if (!prefix) {
28
+ prefix = '';
29
+ }
30
+ encoded = util.stringToBytes(uri.slice(prefix.length));
31
+ protocolCode = protocols.indexOf(prefix);
32
+ // prepend protocol code
33
+ encoded.unshift(protocolCode);
34
+ return encoded;
35
+ }
36
+ module.exports = {
37
+ encodePayload: encode,
38
+ decodePayload: decode,
39
+ };
40
+ //# sourceMappingURL=ndef-uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndef-uri.js","sourceRoot":"","sources":["../../ndef-lib/ndef-uri.ts"],"names":[],"mappings":";;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC;AAK3D,6BAA6B;AAC7B,oBAAoB;AACpB,SAAS,MAAM,CAAC,IAAe;IAC7B,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE;QACX,yBAAyB;QACzB,MAAM,GAAG,EAAE,CAAC;KACb;IACD,OAAO,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,qCAAqC;AACrC,6BAA6B;AAC7B,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,MAA0B,EAAE,YAAY,EAAE,OAAO,CAAC;IAEtD,kDAAkD;IAClD,6DAA6D;IAC7D,6BAA6B;IAC7B,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,QAAQ;QAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACjE,MAAM,GAAG,QAAQ,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,GAAG,EAAE,CAAC;KACb;IAED,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB;IACxB,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACf,aAAa,EAAE,MAAM;IACrB,aAAa,EAAE,MAAM;CACtB,CAAC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var util = require('./util');
4
+ const CREDENTIAL_FIELD_ID = [0x10, 0x0e];
5
+ const SSID_FIELD_ID = [0x10, 0x45];
6
+ const AUTH_TYPE_FIELD_ID = [0x10, 0x03];
7
+ const NETWORK_KEY_FIELD_ID = [0x10, 0x27];
8
+ const AUTH_TYPES = {
9
+ OPEN: [0x00, 0x00],
10
+ WPA2_PSK: [0x00, 0x20],
11
+ };
12
+ function _getLengthBytes(valueBytes) {
13
+ if (valueBytes.length > 255) {
14
+ return [Math.floor(valueBytes.length / 256), valueBytes.length % 256];
15
+ }
16
+ return [0x0, valueBytes.length];
17
+ }
18
+ function _arrayEqual(arr1, arr2) {
19
+ if (arr1.length !== arr2.length) {
20
+ return false;
21
+ }
22
+ for (let i = 0; i < arr1.length; i++) {
23
+ if (arr1[i] !== arr2[i]) {
24
+ return false;
25
+ }
26
+ }
27
+ return true;
28
+ }
29
+ function _getNextTLV(bytes) {
30
+ const type = bytes.slice(0, 2);
31
+ const length = bytes.slice(2, 4);
32
+ const value = bytes.slice(4, 4 + (length[0] * 256 + length[1]));
33
+ return {
34
+ type,
35
+ length,
36
+ value,
37
+ };
38
+ }
39
+ // @returns an string of wifi credentials
40
+ function decode(bytes) {
41
+ let result = {};
42
+ while (bytes.length > 0) {
43
+ let { type, value } = _getNextTLV(bytes);
44
+ bytes = bytes.slice(4 + value.length, bytes.length);
45
+ if (_arrayEqual(CREDENTIAL_FIELD_ID, type)) {
46
+ let credential = value;
47
+ while (credential.length > 0) {
48
+ let tlv = _getNextTLV(credential);
49
+ credential = credential.slice(4 + tlv.value.length, credential.length);
50
+ if (_arrayEqual(AUTH_TYPE_FIELD_ID, tlv.type)) {
51
+ result.authType = tlv.value;
52
+ }
53
+ else if (_arrayEqual(SSID_FIELD_ID, tlv.type)) {
54
+ result.ssid = util.bytesToString(tlv.value);
55
+ }
56
+ else if (_arrayEqual(NETWORK_KEY_FIELD_ID, tlv.type)) {
57
+ result.networkKey = util.bytesToString(tlv.value);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ return result;
63
+ }
64
+ // encode wifi object payload
65
+ // @returns an array of bytes
66
+ function encode({ ssid, networkKey, authType = AUTH_TYPES.WPA2_PSK }) {
67
+ if (typeof ssid !== 'string' || typeof networkKey !== 'string') {
68
+ throw new Error('');
69
+ }
70
+ const ssidBytes = util.stringToBytes(ssid);
71
+ const networkKeyBytes = util.stringToBytes(networkKey);
72
+ // build seperated TLV
73
+ const authTypeTLV = [
74
+ ...AUTH_TYPE_FIELD_ID,
75
+ 0x0,
76
+ authType.length,
77
+ ...authType,
78
+ ];
79
+ const ssidTLV = [...SSID_FIELD_ID, 0x0, ssidBytes.length, ...ssidBytes];
80
+ const networkKeyTLV = [
81
+ ...NETWORK_KEY_FIELD_ID,
82
+ 0x0,
83
+ networkKeyBytes.length,
84
+ ...networkKeyBytes,
85
+ ];
86
+ // build credential TLV
87
+ const credentialValue = [...authTypeTLV, ...ssidTLV, ...networkKeyTLV];
88
+ const credentialTLV = [
89
+ ...CREDENTIAL_FIELD_ID,
90
+ ..._getLengthBytes(credentialValue),
91
+ ...credentialValue,
92
+ ];
93
+ return credentialTLV;
94
+ }
95
+ module.exports = {
96
+ encodePayload: encode,
97
+ decodePayload: decode,
98
+ authTypes: AUTH_TYPES,
99
+ };
100
+ //# sourceMappingURL=ndef-wifi-simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndef-wifi-simple.js","sourceRoot":"","sources":["../../ndef-lib/ndef-wifi-simple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const util = require('./util');
4
+ function createNdefRecord(tnf, type, id, payload) {
5
+ if (tnf === undefined ||
6
+ type === undefined ||
7
+ id === undefined ||
8
+ payload === undefined) {
9
+ throw new Error('missing required param');
10
+ }
11
+ // store type as String so it's easier to compare
12
+ if (type instanceof Array) {
13
+ type = util.bytesToString(type);
14
+ }
15
+ // in the future, id could be a String
16
+ if (!(id instanceof Array)) {
17
+ id = util.stringToBytes(id);
18
+ }
19
+ // Payload must be binary
20
+ if (!(payload instanceof Array)) {
21
+ payload = util.stringToBytes(payload);
22
+ }
23
+ const idBytes = id;
24
+ const payloadBytes = payload;
25
+ return {
26
+ tnf,
27
+ type,
28
+ id: idBytes,
29
+ payload: payloadBytes,
30
+ };
31
+ }
32
+ function encodeNdefMessage(ndefRecords) {
33
+ const encodeTnf = ({ mb, me, cf, sr, il, tnf }) => {
34
+ let value = tnf;
35
+ if (mb) {
36
+ value = value | 0x80;
37
+ }
38
+ if (me) {
39
+ value = value | 0x40;
40
+ }
41
+ // note if cf: me, mb, li must be false and tnf must be 0x6
42
+ if (cf) {
43
+ value = value | 0x20;
44
+ }
45
+ if (sr) {
46
+ value = value | 0x10;
47
+ }
48
+ if (il) {
49
+ value = value | 0x8;
50
+ }
51
+ return value;
52
+ };
53
+ let encoded = [], tnf_byte, record_type, payload_length, id_length, i, mb, me, // messageBegin, messageEnd
54
+ cf = false, // chunkFlag TODO implement
55
+ sr, // boolean shortRecord
56
+ il; // boolean idLengthFieldIsPresent
57
+ for (i = 0; i < ndefRecords.length; i++) {
58
+ mb = i === 0;
59
+ me = i === ndefRecords.length - 1;
60
+ sr = ndefRecords[i].payload.length < 0xff;
61
+ il = ndefRecords[i].id.length > 0;
62
+ tnf_byte = encodeTnf({ mb, me, cf, sr, il, tnf: ndefRecords[i].tnf });
63
+ encoded.push(tnf_byte);
64
+ // type is stored as String, converting to bytes for storage
65
+ record_type = util.stringToBytes(ndefRecords[i].type);
66
+ encoded.push(record_type.length);
67
+ if (sr) {
68
+ payload_length = ndefRecords[i].payload.length;
69
+ encoded.push(payload_length);
70
+ }
71
+ else {
72
+ payload_length = ndefRecords[i].payload.length;
73
+ // 4 bytes
74
+ encoded.push(payload_length >> 24);
75
+ encoded.push(payload_length >> 16);
76
+ encoded.push(payload_length >> 8);
77
+ encoded.push(payload_length & 0xff);
78
+ }
79
+ if (il) {
80
+ id_length = ndefRecords[i].id.length;
81
+ encoded.push(id_length);
82
+ }
83
+ encoded = encoded.concat(record_type);
84
+ if (il) {
85
+ encoded = encoded.concat(ndefRecords[i].id);
86
+ }
87
+ encoded = encoded.concat(ndefRecords[i].payload);
88
+ }
89
+ return encoded;
90
+ }
91
+ function decodeNdefMessage(ndefBytes) {
92
+ const decodeTnf = (tnf_byte) => ({
93
+ mb: (tnf_byte & 0x80) !== 0,
94
+ me: (tnf_byte & 0x40) !== 0,
95
+ cf: (tnf_byte & 0x20) !== 0,
96
+ sr: (tnf_byte & 0x10) !== 0,
97
+ il: (tnf_byte & 0x8) !== 0,
98
+ tnf: tnf_byte & 0x7,
99
+ });
100
+ // ndefBytes can be an array of bytes e.g. [0x03, 0x31, 0xd1] or a Buffer
101
+ let bytes;
102
+ if (ndefBytes instanceof Array) {
103
+ bytes = ndefBytes.slice(0);
104
+ }
105
+ else {
106
+ throw new Error('ndef.decodeMessage requires a Buffer or an Array of bytes');
107
+ }
108
+ bytes = bytes.slice(0); // clone since parsing is destructive
109
+ let ndef_message = [], tnf_byte, header, type_length = 0, payload_length = 0, id_length = 0, record_type = [], id = [], payload = [];
110
+ while (bytes.length) {
111
+ tnf_byte = bytes.shift();
112
+ header = decodeTnf(tnf_byte);
113
+ type_length = bytes.shift();
114
+ if (header.sr) {
115
+ payload_length = bytes.shift();
116
+ }
117
+ else {
118
+ // next 4 bytes are length
119
+ payload_length =
120
+ ((0xff & bytes.shift()) << 24) |
121
+ ((0xff & bytes.shift()) << 16) |
122
+ ((0xff & bytes.shift()) << 8) |
123
+ (0xff & bytes.shift());
124
+ }
125
+ id_length = header.il ? bytes.shift() : 0;
126
+ record_type = bytes.splice(0, type_length);
127
+ id = bytes.splice(0, id_length);
128
+ payload = bytes.splice(0, payload_length);
129
+ ndef_message.push(createNdefRecord(header.tnf, record_type, id, payload));
130
+ if (header.me) {
131
+ break;
132
+ } // last message
133
+ }
134
+ return ndef_message;
135
+ }
136
+ function equalToRecordType(record, tnf, type) {
137
+ if (record.tnf === tnf) {
138
+ if (Array.isArray(record.type)) {
139
+ return util.bytesToString(record.type) === type;
140
+ }
141
+ else {
142
+ return record.type === type;
143
+ }
144
+ }
145
+ return record.tnf === tnf && record.type === type;
146
+ }
147
+ module.exports = {
148
+ createNdefRecord,
149
+ encodeNdefMessage,
150
+ decodeNdefMessage,
151
+ equalToRecordType,
152
+ };
153
+ //# sourceMappingURL=ndef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndef.js","sourceRoot":"","sources":["../../ndef-lib/ndef.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ndef = require('./ndef');
4
+ const constants = require('./constants');
5
+ // Convert NDEF records and messages to strings
6
+ // This works OK for demos, but real code proably needs
7
+ // a custom implementation. It would be nice to make
8
+ // smarter record objects that can print themselves
9
+ let stringifier = {
10
+ stringify: function (data, separator) {
11
+ if (Array.isArray(data)) {
12
+ const records = typeof data[0] === 'number'
13
+ ? ndef.decodeMessage(data)
14
+ : data;
15
+ if (typeof data[0] === 'number') {
16
+ // guessing this message bytes
17
+ data = records;
18
+ }
19
+ return stringifier.printRecords(records, separator);
20
+ }
21
+ else {
22
+ return stringifier.printRecord(data, separator);
23
+ }
24
+ },
25
+ // @message - NDEF Message (array of NDEF Records)
26
+ // @separator - line separator, optional, defaults to \n
27
+ // @returns string with NDEF Message
28
+ printRecords: function (message, separator) {
29
+ if (!separator) {
30
+ separator = '\n';
31
+ }
32
+ let result = '';
33
+ // Print out the payload for each record
34
+ message.forEach(function (record) {
35
+ result += stringifier.printRecord(record, separator);
36
+ result += separator;
37
+ });
38
+ return result.slice(0, -1 * separator.length);
39
+ },
40
+ // @record - NDEF Record
41
+ // @separator - line separator, optional, defaults to \n
42
+ // @returns string with NDEF Record
43
+ printRecord: function (record, separator) {
44
+ let result = '';
45
+ if (!separator) {
46
+ separator = '\n';
47
+ }
48
+ switch (record.tnf) {
49
+ case constants.TNF_EMPTY:
50
+ result += 'Empty Record';
51
+ result += separator;
52
+ break;
53
+ case constants.TNF_WELL_KNOWN:
54
+ result += stringifier.printWellKnown(record, separator);
55
+ break;
56
+ case constants.TNF_MIME_MEDIA:
57
+ result += 'MIME Media';
58
+ result += separator;
59
+ result += s(record.type);
60
+ result += separator;
61
+ result += s(record.payload); // might be binary
62
+ break;
63
+ case constants.TNF_ABSOLUTE_URI:
64
+ result += 'Absolute URI';
65
+ result += separator;
66
+ result += s(record.type);
67
+ result += separator;
68
+ result += s(record.payload); // might be binary
69
+ break;
70
+ case constants.TNF_EXTERNAL_TYPE:
71
+ // AAR contains strings, other types could
72
+ // contain binary data
73
+ result += 'External';
74
+ result += separator;
75
+ result += s(record.type);
76
+ result += separator;
77
+ result += s(record.payload);
78
+ break;
79
+ default:
80
+ result += s("Can't process TNF " + record.tnf);
81
+ }
82
+ result += separator;
83
+ return result;
84
+ },
85
+ printWellKnown: function (record, separator) {
86
+ let result = '';
87
+ if (record.tnf !== constants.TNF_WELL_KNOWN) {
88
+ return 'ERROR expecting TNF Well Known';
89
+ }
90
+ switch (record.type) {
91
+ case constants.RTD_TEXT:
92
+ result += 'Text Record';
93
+ result += separator;
94
+ result += ndef.text.decodePayload(record.payload);
95
+ break;
96
+ case constants.RTD_URI:
97
+ result += 'URI Record';
98
+ result += separator;
99
+ result += ndef.uri.decodePayload(record.payload);
100
+ break;
101
+ case constants.RTD_SMART_POSTER:
102
+ result += 'Smart Poster';
103
+ result += separator;
104
+ // the payload of a smartposter is a NDEF message
105
+ result += stringifier.printRecords(ndef.decodeMessage(record.payload));
106
+ break;
107
+ default:
108
+ // attempt to display other types
109
+ result += record.type + ' Record';
110
+ result += separator;
111
+ result += s(record.payload);
112
+ }
113
+ return result;
114
+ },
115
+ tnfToString: function (tnf) {
116
+ let value = tnf;
117
+ switch (tnf) {
118
+ case constants.TNF_EMPTY:
119
+ value = 'Empty';
120
+ break;
121
+ case constants.TNF_WELL_KNOWN:
122
+ value = 'Well Known';
123
+ break;
124
+ case constants.TNF_MIME_MEDIA:
125
+ value = 'Mime Media';
126
+ break;
127
+ case constants.TNF_ABSOLUTE_URI:
128
+ value = 'Absolute URI';
129
+ break;
130
+ case constants.TNF_EXTERNAL_TYPE:
131
+ value = 'External';
132
+ break;
133
+ case constants.TNF_UNKNOWN:
134
+ value = 'Unknown';
135
+ break;
136
+ case constants.TNF_UNCHANGED:
137
+ value = 'Unchanged';
138
+ break;
139
+ case constants.TNF_RESERVED:
140
+ value = 'Reserved';
141
+ break;
142
+ }
143
+ return value;
144
+ },
145
+ };
146
+ function s(bytes) {
147
+ if (typeof bytes === 'string') {
148
+ return bytes;
149
+ }
150
+ return bytes.reduce(function (acc, byte) {
151
+ return acc + String.fromCharCode(byte);
152
+ }, '');
153
+ }
154
+ module.exports = stringifier;
155
+ //# sourceMappingURL=stringifier.js.map