@iotize/device-com-nfc.cordova 3.0.0 → 3.1.3

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 (74) hide show
  1. package/LICENSE +0 -1
  2. package/bundles/iotize-device-com-nfc.cordova.umd.js +267 -28
  3. package/bundles/iotize-device-com-nfc.cordova.umd.js.map +1 -1
  4. package/bundles/iotize-device-com-nfc.cordova.umd.min.js +15 -1
  5. package/bundles/iotize-device-com-nfc.cordova.umd.min.js.map +1 -1
  6. package/esm2015/iotize-device-com-nfc.cordova.js +1 -1
  7. package/esm2015/iotize-device-com-nfc.cordova.js.map +1 -0
  8. package/esm2015/iotize-device-com-nfc.cordova.metadata.json +1 -0
  9. package/esm2015/public_api.js +1 -1
  10. package/esm2015/public_api.js.map +1 -0
  11. package/esm2015/public_api.metadata.json +1 -0
  12. package/esm2015/www/cordova-interface.js +2 -1
  13. package/esm2015/www/cordova-interface.js.map +1 -0
  14. package/esm2015/www/cordova-interface.metadata.json +1 -0
  15. package/esm2015/www/errors.js +1 -1
  16. package/esm2015/www/errors.js.map +1 -0
  17. package/esm2015/www/errors.metadata.json +1 -0
  18. package/esm2015/www/index.js +2 -1
  19. package/esm2015/www/index.js.map +1 -0
  20. package/esm2015/www/index.metadata.json +1 -0
  21. package/esm2015/www/logger.js +1 -1
  22. package/esm2015/www/logger.js.map +1 -0
  23. package/esm2015/www/logger.metadata.json +1 -0
  24. package/esm2015/www/logger.ngsummary.json +1 -1
  25. package/esm2015/www/nfc-com-protocol.js +1 -1
  26. package/esm2015/www/nfc-com-protocol.js.map +1 -0
  27. package/esm2015/www/nfc-com-protocol.metadata.json +1 -0
  28. package/esm2015/www/nfc-com-protocol.ngsummary.json +1 -1
  29. package/esm2015/www/tap-ndef/definitions.js +2 -1
  30. package/esm2015/www/tap-ndef/definitions.js.map +1 -0
  31. package/esm2015/www/tap-ndef/definitions.metadata.json +1 -0
  32. package/esm2015/www/tap-ndef/index.js +2 -1
  33. package/esm2015/www/tap-ndef/index.js.map +1 -0
  34. package/esm2015/www/tap-ndef/index.metadata.json +1 -0
  35. package/esm2015/www/tap-ndef/parse-ndef-message.js +1 -1
  36. package/esm2015/www/tap-ndef/parse-ndef-message.js.map +1 -0
  37. package/esm2015/www/tap-ndef/parse-ndef-message.metadata.json +1 -0
  38. package/fesm2015/iotize-device-com-nfc.cordova.js.map +1 -1
  39. package/package.json +52 -53
  40. package/plugin.xml +2 -2
  41. package/src/android/.gradle/4.10.1/fileHashes/fileHashes.bin +0 -0
  42. package/src/android/.gradle/4.10.1/fileHashes/fileHashes.lock +0 -0
  43. package/src/android/build.gradle +5 -5
  44. package/src/android/src/com/chariotsolutions/nfc/plugin/NfcPlugin.java +7 -14
  45. package/src/ios/ISO15Reader.swift +1 -0
  46. package/www/logger.d.ts +2 -2
  47. package/CHANGELOG.md +0 -29
  48. package/esm5/iotize-device-com-nfc.cordova.js +0 -5
  49. package/esm5/public_api.js +0 -2
  50. package/esm5/www/cordova-interface.js +0 -1
  51. package/esm5/www/errors.js +0 -45
  52. package/esm5/www/index.js +0 -4
  53. package/esm5/www/logger.js +0 -3
  54. package/esm5/www/nfc-com-protocol.js +0 -128
  55. package/esm5/www/tap-ndef/definitions.js +0 -1
  56. package/esm5/www/tap-ndef/index.js +0 -2
  57. package/esm5/www/tap-ndef/parse-ndef-message.js +0 -57
  58. package/fesm5/iotize-device-com-nfc.cordova.js +0 -229
  59. package/fesm5/iotize-device-com-nfc.cordova.js.map +0 -1
  60. package/src/android/.gradle/4.10.2/fileChanges/last-build.bin +0 -0
  61. package/src/android/.gradle/4.10.2/fileHashes/fileHashes.bin +0 -0
  62. package/src/android/.gradle/4.10.2/fileHashes/fileHashes.lock +0 -0
  63. package/src/android/.gradle/4.10.2/gc.properties +0 -0
  64. package/src/android/.project +0 -17
  65. package/src/public_api.ts +0 -1
  66. package/src/www/cordova-interface.ts +0 -27
  67. package/src/www/errors.ts +0 -43
  68. package/src/www/index.ts +0 -4
  69. package/src/www/logger.ts +0 -3
  70. package/src/www/nfc-com-protocol.ts +0 -129
  71. package/src/www/tap-ndef/definitions.ts +0 -26
  72. package/src/www/tap-ndef/index.ts +0 -2
  73. package/src/www/tap-ndef/parse-ndef-message.spec.ts +0 -23
  74. package/src/www/tap-ndef/parse-ndef-message.ts +0 -62
package/LICENSE CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  Copyright 2019 IoTize SAS
3
2
 
4
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
@@ -1,22 +1,270 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@iotize/common/byte-converter'), require('@iotize/tap/protocol/api'), require('@iotize/tap/protocol/core'), require('rxjs'), require('@iotize/common/debug')) :
3
3
  typeof define === 'function' && define.amd ? define('@iotize/device-com-nfc.cordova', ['exports', '@iotize/common/byte-converter', '@iotize/tap/protocol/api', '@iotize/tap/protocol/core', 'rxjs', '@iotize/common/debug'], factory) :
4
- (global = global || self, factory((global.iotize = global.iotize || {}, global.iotize['device-com-nfc'] = global.iotize['device-com-nfc'] || {}, global.iotize['device-com-nfc'].cordova = {}), global.byteConverter, global.api, global.core, global.rxjs, global.debug$1));
5
- }(this, (function (exports, byteConverter, api, core, rxjs, debug$1) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.iotize = global.iotize || {}, global.iotize["device-com-nfc"] = global.iotize["device-com-nfc"] || {}, global.iotize["device-com-nfc"].cordova = {}), global.byteConverter, global.api, global.core, global.rxjs, global.debug$1));
5
+ })(this, (function (exports, byteConverter, api, core, rxjs, debug$1) { 'use strict';
6
6
 
7
- var __extends = (this && this.__extends) || (function () {
8
- var extendStatics = function (d, b) {
9
- extendStatics = Object.setPrototypeOf ||
10
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
11
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12
- return extendStatics(d, b);
7
+ /*! *****************************************************************************
8
+ Copyright (c) Microsoft Corporation. All rights reserved.
9
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
10
+ this file except in compliance with the License. You may obtain a copy of the
11
+ License at http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
15
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
16
+ MERCHANTABLITY OR NON-INFRINGEMENT.
17
+
18
+ See the Apache Version 2.0 License for specific language governing permissions
19
+ and limitations under the License.
20
+ ***************************************************************************** */
21
+ /* global Reflect, Promise */
22
+ var extendStatics = function (d, b) {
23
+ extendStatics = Object.setPrototypeOf ||
24
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25
+ function (d, b) { for (var p in b)
26
+ if (b.hasOwnProperty(p))
27
+ d[p] = b[p]; };
28
+ return extendStatics(d, b);
29
+ };
30
+ function __extends(d, b) {
31
+ extendStatics(d, b);
32
+ function __() { this.constructor = d; }
33
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34
+ }
35
+ var __assign = function () {
36
+ __assign = Object.assign || function __assign(t) {
37
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
38
+ s = arguments[i];
39
+ for (var p in s)
40
+ if (Object.prototype.hasOwnProperty.call(s, p))
41
+ t[p] = s[p];
42
+ }
43
+ return t;
13
44
  };
14
- return function (d, b) {
15
- extendStatics(d, b);
16
- function __() { this.constructor = d; }
17
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45
+ return __assign.apply(this, arguments);
46
+ };
47
+ function __rest(s, e) {
48
+ var t = {};
49
+ for (var p in s)
50
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
51
+ t[p] = s[p];
52
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
53
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
54
+ if (e.indexOf(p[i]) < 0)
55
+ t[p[i]] = s[p[i]];
56
+ return t;
57
+ }
58
+ function __decorate(decorators, target, key, desc) {
59
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
60
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
61
+ r = Reflect.decorate(decorators, target, key, desc);
62
+ else
63
+ for (var i = decorators.length - 1; i >= 0; i--)
64
+ if (d = decorators[i])
65
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
66
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
67
+ }
68
+ function __param(paramIndex, decorator) {
69
+ return function (target, key) { decorator(target, key, paramIndex); };
70
+ }
71
+ function __metadata(metadataKey, metadataValue) {
72
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
73
+ return Reflect.metadata(metadataKey, metadataValue);
74
+ }
75
+ function __awaiter(thisArg, _arguments, P, generator) {
76
+ return new (P || (P = Promise))(function (resolve, reject) {
77
+ function fulfilled(value) { try {
78
+ step(generator.next(value));
79
+ }
80
+ catch (e) {
81
+ reject(e);
82
+ } }
83
+ function rejected(value) { try {
84
+ step(generator["throw"](value));
85
+ }
86
+ catch (e) {
87
+ reject(e);
88
+ } }
89
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
90
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
91
+ });
92
+ }
93
+ function __generator(thisArg, body) {
94
+ var _ = { label: 0, sent: function () { if (t[0] & 1)
95
+ throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
96
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
97
+ function verb(n) { return function (v) { return step([n, v]); }; }
98
+ function step(op) {
99
+ if (f)
100
+ throw new TypeError("Generator is already executing.");
101
+ while (_)
102
+ try {
103
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
104
+ return t;
105
+ if (y = 0, t)
106
+ op = [op[0] & 2, t.value];
107
+ switch (op[0]) {
108
+ case 0:
109
+ case 1:
110
+ t = op;
111
+ break;
112
+ case 4:
113
+ _.label++;
114
+ return { value: op[1], done: false };
115
+ case 5:
116
+ _.label++;
117
+ y = op[1];
118
+ op = [0];
119
+ continue;
120
+ case 7:
121
+ op = _.ops.pop();
122
+ _.trys.pop();
123
+ continue;
124
+ default:
125
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
126
+ _ = 0;
127
+ continue;
128
+ }
129
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
130
+ _.label = op[1];
131
+ break;
132
+ }
133
+ if (op[0] === 6 && _.label < t[1]) {
134
+ _.label = t[1];
135
+ t = op;
136
+ break;
137
+ }
138
+ if (t && _.label < t[2]) {
139
+ _.label = t[2];
140
+ _.ops.push(op);
141
+ break;
142
+ }
143
+ if (t[2])
144
+ _.ops.pop();
145
+ _.trys.pop();
146
+ continue;
147
+ }
148
+ op = body.call(thisArg, _);
149
+ }
150
+ catch (e) {
151
+ op = [6, e];
152
+ y = 0;
153
+ }
154
+ finally {
155
+ f = t = 0;
156
+ }
157
+ if (op[0] & 5)
158
+ throw op[1];
159
+ return { value: op[0] ? op[1] : void 0, done: true };
160
+ }
161
+ }
162
+ function __exportStar(m, exports) {
163
+ for (var p in m)
164
+ if (!exports.hasOwnProperty(p))
165
+ exports[p] = m[p];
166
+ }
167
+ function __values(o) {
168
+ var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
169
+ if (m)
170
+ return m.call(o);
171
+ return {
172
+ next: function () {
173
+ if (o && i >= o.length)
174
+ o = void 0;
175
+ return { value: o && o[i++], done: !o };
176
+ }
18
177
  };
19
- })();
178
+ }
179
+ function __read(o, n) {
180
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
181
+ if (!m)
182
+ return o;
183
+ var i = m.call(o), r, ar = [], e;
184
+ try {
185
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
186
+ ar.push(r.value);
187
+ }
188
+ catch (error) {
189
+ e = { error: error };
190
+ }
191
+ finally {
192
+ try {
193
+ if (r && !r.done && (m = i["return"]))
194
+ m.call(i);
195
+ }
196
+ finally {
197
+ if (e)
198
+ throw e.error;
199
+ }
200
+ }
201
+ return ar;
202
+ }
203
+ function __spread() {
204
+ for (var ar = [], i = 0; i < arguments.length; i++)
205
+ ar = ar.concat(__read(arguments[i]));
206
+ return ar;
207
+ }
208
+ function __await(v) {
209
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
210
+ }
211
+ function __asyncGenerator(thisArg, _arguments, generator) {
212
+ if (!Symbol.asyncIterator)
213
+ throw new TypeError("Symbol.asyncIterator is not defined.");
214
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
215
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
216
+ function verb(n) { if (g[n])
217
+ i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
218
+ function resume(n, v) { try {
219
+ step(g[n](v));
220
+ }
221
+ catch (e) {
222
+ settle(q[0][3], e);
223
+ } }
224
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
225
+ function fulfill(value) { resume("next", value); }
226
+ function reject(value) { resume("throw", value); }
227
+ function settle(f, v) { if (f(v), q.shift(), q.length)
228
+ resume(q[0][0], q[0][1]); }
229
+ }
230
+ function __asyncDelegator(o) {
231
+ var i, p;
232
+ return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
233
+ function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
234
+ }
235
+ function __asyncValues(o) {
236
+ if (!Symbol.asyncIterator)
237
+ throw new TypeError("Symbol.asyncIterator is not defined.");
238
+ var m = o[Symbol.asyncIterator], i;
239
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
240
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
241
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
242
+ }
243
+ function __makeTemplateObject(cooked, raw) {
244
+ if (Object.defineProperty) {
245
+ Object.defineProperty(cooked, "raw", { value: raw });
246
+ }
247
+ else {
248
+ cooked.raw = raw;
249
+ }
250
+ return cooked;
251
+ }
252
+ ;
253
+ function __importStar(mod) {
254
+ if (mod && mod.__esModule)
255
+ return mod;
256
+ var result = {};
257
+ if (mod != null)
258
+ for (var k in mod)
259
+ if (Object.hasOwnProperty.call(mod, k))
260
+ result[k] = mod[k];
261
+ result.default = mod;
262
+ return result;
263
+ }
264
+ function __importDefault(mod) {
265
+ return (mod && mod.__esModule) ? mod : { default: mod };
266
+ }
267
+
20
268
  exports.NfcError = /** @class */ (function (_super) {
21
269
  __extends(NfcError, _super);
22
270
  function NfcError(code, message) {
@@ -50,21 +298,8 @@
50
298
 
51
299
  var debug = debug$1.createDebugger("@iotize/device-com-nfc.cordova");
52
300
 
53
- var __extends$1 = (this && this.__extends) || (function () {
54
- var extendStatics = function (d, b) {
55
- extendStatics = Object.setPrototypeOf ||
56
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
57
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
58
- return extendStatics(d, b);
59
- };
60
- return function (d, b) {
61
- extendStatics(d, b);
62
- function __() { this.constructor = d; }
63
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
64
- };
65
- })();
66
301
  var NFCComProtocol = /** @class */ (function (_super) {
67
- __extends$1(NFCComProtocol, _super);
302
+ __extends(NFCComProtocol, _super);
68
303
  function NFCComProtocol(options) {
69
304
  if (options === void 0) { options = {
70
305
  connect: {
@@ -221,10 +456,14 @@
221
456
  .join(':');
222
457
  }
223
458
 
459
+ /**
460
+ * Generated bundle index. Do not edit.
461
+ */
462
+
224
463
  exports.NFCComProtocol = NFCComProtocol;
225
464
  exports.parseTapNdefMessage = parseTapNdefMessage;
226
465
 
227
466
  Object.defineProperty(exports, '__esModule', { value: true });
228
467
 
229
- })));
468
+ }));
230
469
  //# sourceMappingURL=iotize-device-com-nfc.cordova.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"iotize-device-com-nfc.cordova.umd.js","sources":["ng://@iotize/device-com-nfc.cordova/www/errors.ts","ng://@iotize/device-com-nfc.cordova/www/logger.ts","ng://@iotize/device-com-nfc.cordova/www/nfc-com-protocol.ts","ng://@iotize/device-com-nfc.cordova/www/tap-ndef/parse-ndef-message.ts"],"sourcesContent":["export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}"],"names":["NfcError","createDebugger","__extends","from","bufferToHexString","hexStringToBuffer","ConnectionState","QueueComProtocol","bufferToAsciiString"],"mappings":"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"}
1
+ {"version":3,"file":"iotize-device-com-nfc.cordova.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/nfc-com-protocol.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/iotize-device-com-nfc.cordova.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NfcError","createDebugger","from","bufferToHexString","hexStringToBuffer","ConnectionState","QueueComProtocol","bufferToAsciiString"],"mappings":"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"}
@@ -1,2 +1,16 @@
1
- !function(o,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@iotize/common/byte-converter"),require("@iotize/tap/protocol/api"),require("@iotize/tap/protocol/core"),require("rxjs"),require("@iotize/common/debug")):"function"==typeof define&&define.amd?define("@iotize/device-com-nfc.cordova",["exports","@iotize/common/byte-converter","@iotize/tap/protocol/api","@iotize/tap/protocol/core","rxjs","@iotize/common/debug"],r):r(((o=o||self).iotize=o.iotize||{},o.iotize["device-com-nfc"]=o.iotize["device-com-nfc"]||{},o.iotize["device-com-nfc"].cordova={}),o.byteConverter,o.api,o.core,o.rxjs,o.debug$1)}(this,(function(o,r,t,e,n,i){"use strict";var c,f,u,a=this&&this.__extends||(c=function(o,r){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,r){o.__proto__=r}||function(o,r){for(var t in r)r.hasOwnProperty(t)&&(o[t]=r[t])})(o,r)},function(o,r){function t(){this.constructor=o}c(o,r),o.prototype=null===r?Object.create(r):(t.prototype=r.prototype,new t)});o.NfcError=function(o){function r(r,t){var e=o.call(this,t)||this;return e.code=r,e}return a(r,o),r.tagLostError=function(){return new r(r.ErrorCode.TagLostError,"NFC tag lost")},r.notConnectedError=function(){return new r(r.ErrorCode.NotConnectedError,"NFC tag is not connected")},r.unknownError=function(o){throw new r(r.ErrorCode.Unknown,o)},r.internalError=function(o){throw new r(r.ErrorCode.InternalError,o)},r}(Error),u=o.NfcError||(o.NfcError={}),(f=u.ErrorCode||(u.ErrorCode={})).Unknown="NfcUnknownError",f.InternalError="NfcInternalError",f.TagLostError="NfcTagLostError",f.NotConnectedError="NfcNotConnectedError";var s,p=i.createDebugger("@iotize/device-com-nfc.cordova"),d=this&&this.__extends||function(){var o=function(r,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,r){o.__proto__=r}||function(o,r){for(var t in r)r.hasOwnProperty(t)&&(o[t]=r[t])})(r,t)};return function(r,t){function e(){this.constructor=r}o(r,t),r.prototype=null===t?Object.create(t):(e.prototype=t.prototype,new e)}}(),l=function(e){function i(o){void 0===o&&(o={connect:{timeout:2e3},disconnect:{timeout:1e3},send:{timeout:1e3}});var r=e.call(this)||this;return r.options=o,null==typeof nfc&&console.warn("NFC plugin has not been setup properly. Global variable NFC does not exist"),r}return d(i,e),i.iOSProtocol=function(){return new i({connect:{timeout:1e4},disconnect:{timeout:1e3},send:{timeout:1e3}})},i.prototype._connect=function(o){p("_connect",o);var r=nfc.connect("android.nfc.tech.NfcV",this.options.connect.timeout);return n.from(r)},i.prototype._disconnect=function(o){return n.from(nfc.close())},i.prototype.write=function(o){throw new Error("Method not implemented.")},i.prototype.read=function(){throw new Error("Method not implemented.")},i.prototype.send=function(t,e){var i=this,c=nfc.transceive(r.bufferToHexString(t)).then((function(t){if("string"!=typeof t)throw o.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");return p("NFC plugin response: ",t),r.hexStringToBuffer(t)})).catch((function(r){if("string"==typeof r){var t=function(r){var t=r.toLowerCase();return t.indexOf("tag was lost")>=0?o.NfcError.tagLostError():t.indexOf("not connected")>=0?o.NfcError.notConnectedError():o.NfcError.unknownError(r)}(r);throw t.code!==o.NfcError.ErrorCode.NotConnectedError&&t.code!==o.NfcError.ErrorCode.TagLostError||i._onConnectionLost(t),t}throw r}));return n.from(c)},i.prototype._onConnectionLost=function(o){this.connectionState!==t.ConnectionState.DISCONNECTED&&this.setConnectionState(t.ConnectionState.DISCONNECTED)},i}(e.QueueComProtocol);function E(o){return o.length>0&&0===o[0]&&(o=o.slice(1)),r.bufferToAsciiString(o)}!function(o){o[o.WiFi=32]="WiFi",o[o.BLE=64]="BLE"}(s||(s={})),o.NFCComProtocol=l,o.parseTapNdefMessage=function(o){var r={};if(o.length>=1){var t=o[0].payload;r.uri=E(t)}if(o.length>=2&&(r.aar=E(o[1].payload)),o.length>=3){var e=o[2].payload,n=e[0],i=e.slice(1);switch(r.type=n,n){case s.BLE:r.macAddress=i.map((function(o){o<0&&(o+=256);var r="0"+o.toString(16).toUpperCase();return r=r.slice(-2)})).reverse().join(":");break;case s.WiFi:r.ssid=E(i)}}return o.length>=4&&(r.name=E(o[3].payload)),r},Object.defineProperty(o,"__esModule",{value:!0})}));
1
+ !function(o,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@iotize/common/byte-converter"),require("@iotize/tap/protocol/api"),require("@iotize/tap/protocol/core"),require("rxjs"),require("@iotize/common/debug")):"function"==typeof define&&define.amd?define("@iotize/device-com-nfc.cordova",["exports","@iotize/common/byte-converter","@iotize/tap/protocol/api","@iotize/tap/protocol/core","rxjs","@iotize/common/debug"],r):r(((o="undefined"!=typeof globalThis?globalThis:o||self).iotize=o.iotize||{},o.iotize["device-com-nfc"]=o.iotize["device-com-nfc"]||{},o.iotize["device-com-nfc"].cordova={}),o.byteConverter,o.api,o.core,o.rxjs,o.debug$1)}(this,(function(o,r,e,t,n,i){"use strict";
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation. All rights reserved.
4
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5
+ this file except in compliance with the License. You may obtain a copy of the
6
+ License at http://www.apache.org/licenses/LICENSE-2.0
7
+
8
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11
+ MERCHANTABLITY OR NON-INFRINGEMENT.
12
+
13
+ See the Apache Version 2.0 License for specific language governing permissions
14
+ and limitations under the License.
15
+ ***************************************************************************** */var c=function(o,r){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,r){o.__proto__=r}||function(o,r){for(var e in r)r.hasOwnProperty(e)&&(o[e]=r[e])})(o,r)};function a(o,r){function e(){this.constructor=o}c(o,r),o.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}var f,u;o.NfcError=function(o){function r(r,e){var t=o.call(this,e)||this;return t.code=r,t}return a(r,o),r.tagLostError=function(){return new r(r.ErrorCode.TagLostError,"NFC tag lost")},r.notConnectedError=function(){return new r(r.ErrorCode.NotConnectedError,"NFC tag is not connected")},r.unknownError=function(o){throw new r(r.ErrorCode.Unknown,o)},r.internalError=function(o){throw new r(r.ErrorCode.InternalError,o)},r}(Error),u=o.NfcError||(o.NfcError={}),(f=u.ErrorCode||(u.ErrorCode={})).Unknown="NfcUnknownError",f.InternalError="NfcInternalError",f.TagLostError="NfcTagLostError",f.NotConnectedError="NfcNotConnectedError";var s,d=i.createDebugger("@iotize/device-com-nfc.cordova"),p=function(t){function i(o){void 0===o&&(o={connect:{timeout:2e3},disconnect:{timeout:1e3},send:{timeout:1e3}});var r=t.call(this)||this;return r.options=o,null==typeof nfc&&console.warn("NFC plugin has not been setup properly. Global variable NFC does not exist"),r}return a(i,t),i.iOSProtocol=function(){return new i({connect:{timeout:1e4},disconnect:{timeout:1e3},send:{timeout:1e3}})},i.prototype._connect=function(o){d("_connect",o);var r=nfc.connect("android.nfc.tech.NfcV",this.options.connect.timeout);return n.from(r)},i.prototype._disconnect=function(o){return n.from(nfc.close())},i.prototype.write=function(o){throw new Error("Method not implemented.")},i.prototype.read=function(){throw new Error("Method not implemented.")},i.prototype.send=function(e,t){var i=this,c=nfc.transceive(r.bufferToHexString(e)).then((function(e){if("string"!=typeof e)throw o.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");return d("NFC plugin response: ",e),r.hexStringToBuffer(e)})).catch((function(r){if("string"==typeof r){var e=function(r){var e=r.toLowerCase();return e.indexOf("tag was lost")>=0?o.NfcError.tagLostError():e.indexOf("not connected")>=0?o.NfcError.notConnectedError():o.NfcError.unknownError(r)}(r);throw e.code!==o.NfcError.ErrorCode.NotConnectedError&&e.code!==o.NfcError.ErrorCode.TagLostError||i._onConnectionLost(e),e}throw r}));return n.from(c)},i.prototype._onConnectionLost=function(o){this.connectionState!==e.ConnectionState.DISCONNECTED&&this.setConnectionState(e.ConnectionState.DISCONNECTED)},i}(t.QueueComProtocol);function l(o){return o.length>0&&0===o[0]&&(o=o.slice(1)),r.bufferToAsciiString(o)}!function(o){o[o.WiFi=32]="WiFi",o[o.BLE=64]="BLE"}(s||(s={})),o.NFCComProtocol=p,o.parseTapNdefMessage=function(o){var r={};if(o.length>=1){var e=o[0].payload;r.uri=l(e)}if(o.length>=2&&(r.aar=l(o[1].payload)),o.length>=3){var t=o[2].payload,n=t[0],i=t.slice(1);switch(r.type=n,n){case s.BLE:r.macAddress=i.map((function(o){o<0&&(o+=256);var r="0"+o.toString(16).toUpperCase();return r=r.slice(-2)})).reverse().join(":");break;case s.WiFi:r.ssid=l(i)}}return o.length>=4&&(r.name=l(o[3].payload)),r},Object.defineProperty(o,"__esModule",{value:!0})}));
2
16
  //# sourceMappingURL=iotize-device-com-nfc.cordova.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://@iotize/device-com-nfc.cordova/www/errors.ts","ng://@iotize/device-com-nfc.cordova/www/logger.ts","ng://@iotize/device-com-nfc.cordova/www/tap-ndef/parse-ndef-message.ts","ng://@iotize/device-com-nfc.cordova/www/nfc-com-protocol.ts"],"names":["ErrorCode","NfcError","code","message","_this","_super","call","this","__extends","tagLostError","TagLostError","notConnectedError","NotConnectedError","unknownError","errString","Unknown","internalError","InternalError","Error","TapNdefProtocolType","debug","createDebugger","NFCComProtocol","options","connect","timeout","disconnect","send","undefined","nfc","console","warn","iOSProtocol","prototype","_connect","connectPromise","from","_disconnect","close","write","data","read","promise","transceive","bufferToHexString","then","response","hexStringToBuffer","catch","error","errStringLc","toLowerCase","indexOf","stringToError","_onConnectionLost","connectionState","ConnectionState","DISCONNECTED","setConnectionState","QueueComProtocol","toAsciiString","payload","length","slice","bufferToAsciiString","messages","result","asciiUri","uri","aar","payload3","type","content","BLE","macAddress","map","byte","byteString","toString","toUpperCase","reverse","join","WiFi","ssid","name"],"mappings":"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","sourcesContent":["export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../src/www/errors.ts","../../../../src/www/logger.ts","../../../../src/www/tap-ndef/parse-ndef-message.ts","../../../../src/www/nfc-com-protocol.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","ErrorCode","NfcError","code","message","_this","_super","call","tagLostError","TagLostError","notConnectedError","NotConnectedError","unknownError","errString","Unknown","internalError","InternalError","Error","TapNdefProtocolType","debug","createDebugger","NFCComProtocol","options","connect","timeout","disconnect","send","undefined","nfc","console","warn","iOSProtocol","_connect","connectPromise","from","_disconnect","close","write","data","read","promise","transceive","bufferToHexString","then","response","hexStringToBuffer","catch","error","errStringLc","toLowerCase","indexOf","stringToError","_onConnectionLost","connectionState","ConnectionState","DISCONNECTED","setConnectionState","QueueComProtocol","toAsciiString","payload","length","slice","bufferToAsciiString","messages","result","asciiUri","uri","aar","payload3","type","content","BLE","macAddress","map","byte","byteString","toString","toUpperCase","reverse","join","WiFi","ssid","name"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export class NfcError extends Error {\r\n\r\n constructor(public code: NfcError.ErrorCode, message: string){\r\n super(message);\r\n }\r\n\r\n public static tagLostError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.TagLostError,\r\n 'NFC tag lost'\r\n );\r\n }\r\n\r\n public static notConnectedError(){\r\n return new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n 'NFC tag is not connected'\r\n );\r\n } \r\n\r\n public static unknownError(errString: string): NfcError {\r\n throw new NfcError(\r\n NfcError.ErrorCode.Unknown,\r\n errString\r\n )\r\n }\r\n \r\n public static internalError(message: string) {\r\n throw new NfcError(\r\n NfcError.ErrorCode.InternalError,\r\n message\r\n )\r\n }\r\n}\r\n\r\nexport namespace NfcError {\r\n export enum ErrorCode {\r\n Unknown = \"NfcUnknownError\",\r\n InternalError = \"NfcInternalError\",\r\n TagLostError = \"NfcTagLostError\",\r\n NotConnectedError = \"NfcNotConnectedError\"\r\n }\r\n}","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import { bufferToAsciiString } from '@iotize/common/byte-converter';\r\n\r\nimport { NdefRecord, TapNfcTagPayload } from './definitions';\r\n\r\n/**\r\n * We manage only on NDEF message with 3 records:\r\n * record 0 = URI; record 1 = AAR; record 2 = BLE MAC ADDRESS / BSSID; record 3: universal link\r\n */\r\nexport function parseTapNdefMessage(messages: NdefRecord[]): TapNfcTagPayload {\r\n let result: TapNfcTagPayload = {};\r\n if (messages.length >= 1) {\r\n let asciiUri = messages[0].payload;\r\n result.uri = toAsciiString(asciiUri);\r\n }\r\n if (messages.length >= 2) {\r\n result.aar = toAsciiString(messages[1].payload);\r\n }\r\n if (messages.length >= 3) {\r\n let payload3 = messages[2].payload;\r\n let type = payload3[0];\r\n let content = payload3.slice(1);\r\n result.type = type;\r\n\r\n switch (type) {\r\n case TapNdefProtocolType.BLE:\r\n result.macAddress = convertBytesToBLEAddress(content);\r\n break;\r\n case TapNdefProtocolType.WiFi:\r\n result.ssid = toAsciiString(content);\r\n break;\r\n }\r\n }\r\n if (messages.length >= 4) {\r\n result.name = toAsciiString(messages[3].payload);\r\n }\r\n return result;\r\n}\r\n\r\nenum TapNdefProtocolType {\r\n WiFi = 0x20,\r\n BLE = 0x40\r\n}\r\n\r\nfunction toAsciiString(payload: number[]): string {\r\n if (payload.length > 0 && payload[0] === 0) {\r\n payload = payload.slice(1);\r\n }\r\n return bufferToAsciiString(payload as any as Uint8Array);\r\n}\r\n\r\nfunction convertBytesToBLEAddress(bytes: number[]): string {\r\n return bytes.map(byte => {\r\n if (byte < 0) {\r\n byte += 256;\r\n }\r\n let byteString = '0' + byte.toString(16).toUpperCase();\r\n byteString = byteString.slice(-2);\r\n return byteString;\r\n })\r\n .reverse()\r\n .join(':')\r\n}","//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// ble-com-protocol.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\nimport { bufferToHexString, hexStringToBuffer } from '@iotize/common/byte-converter';\r\nimport {\r\n ComProtocolConnectOptions,\r\n ComProtocolDisconnectOptions,\r\n ComProtocolOptions,\r\n ComProtocolSendOptions,\r\n ConnectionState,\r\n} from '@iotize/tap/protocol/api';\r\nimport { QueueComProtocol } from '@iotize/tap/protocol/core';\r\nimport { from, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n\r\n constructor(options: ComProtocolOptions = {\r\n connect: {\r\n timeout: 2000\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n }) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\"NFC plugin has not been setup properly. Global variable NFC does not exist\");\r\n }\r\n }\r\n\r\n public static iOSProtocol(): NFCComProtocol {\r\n return new NFCComProtocol({\r\n connect: {\r\n timeout: 10000 // bigger timer on connect as connect launches a reading session\r\n },\r\n disconnect: {\r\n timeout: 1000\r\n },\r\n send: {\r\n timeout: 1000\r\n }\r\n })\r\n }\r\n\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n debug('_connect', options);\r\n const connectPromise = nfc.connect(\"android.nfc.tech.NfcV\", this.options.connect.timeout)\r\n return from(connectPromise);\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return from(nfc.close());\r\n }\r\n\r\n write(data: Uint8Array): Promise<any> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n read(): Promise<Uint8Array> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array> {\r\n const promise = nfc\r\n .transceive(bufferToHexString(data))\r\n .then((response: string) => {\r\n if (typeof response != \"string\") {\r\n throw NfcError.internalError(`Internal error. Plugin should respond a hexadecimal string`);\r\n }\r\n debug('NFC plugin response: ', response)\r\n return hexStringToBuffer(response)\r\n })\r\n .catch((errString) => {\r\n if (typeof errString === \"string\") {\r\n const error = stringToError(errString);\r\n if (error.code === NfcError.ErrorCode.NotConnectedError || error.code === NfcError.ErrorCode.TagLostError) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n }\r\n else {\r\n throw errString;\r\n }\r\n });\r\n return from(promise);\r\n }\r\n\r\n _onConnectionLost(error: NfcError) {\r\n if (this.connectionState !== ConnectionState.DISCONNECTED) {\r\n this.setConnectionState(ConnectionState.DISCONNECTED);\r\n }\r\n }\r\n\r\n};\r\n\r\n/**\r\n * Convert error string returned by the plugin into an error object\r\n * It only checks a few Android error string for now\r\n * \r\n * TODO complete implementation with other error types\r\n * \r\n * @param errString \r\n */\r\nfunction stringToError(errString: string): NfcError {\r\n const errStringLc = errString.toLowerCase();\r\n if (errStringLc.indexOf('tag was lost') >= 0) {\r\n return NfcError.tagLostError();\r\n }\r\n else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n }\r\n else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
@@ -2,4 +2,4 @@
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
4
  export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW90aXplLWRldmljZS1jb20tbmZjLmNvcmRvdmEuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaW90aXplL2RldmljZS1jb20tbmZjLmNvcmRvdmEvIiwic291cmNlcyI6WyJpb3RpemUtZGV2aWNlLWNvbS1uZmMuY29yZG92YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
5
+ //# sourceMappingURL=iotize-device-com-nfc.cordova.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iotize-device-com-nfc.cordova.js","sourceRoot":"","sources":["../../../../src/iotize-device-com-nfc.cordova.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"]}
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./public_api"}]}]
@@ -1,2 +1,2 @@
1
1
  export * from './www/index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bpb3RpemUvZGV2aWNlLWNvbS1uZmMuY29yZG92YS8iLCJzb3VyY2VzIjpbInB1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3d3dy9pbmRleCc7Il19
2
+ //# sourceMappingURL=public_api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_api.js","sourceRoot":"","sources":["../../../../src/public_api.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC","sourcesContent":["export * from './www/index';"]}
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{},"exports":[{"from":"./www/index"}]}]
@@ -1 +1,2 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZG92YS1pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaW90aXplL2RldmljZS1jb20tbmZjLmNvcmRvdmEvIiwic291cmNlcyI6WyJ3d3cvY29yZG92YS1pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vXHJcbi8vICBDb3B5cmlnaHQgMjAxOCBJb1RpemUgU0FTIEluYy4gIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gXHJcbi8vXHJcbi8vICBjb3Jkb3ZhLWludGVyZmFjZS50c1xyXG4vLyAgZGV2aWNlLWNvbS1ibGUuY29yZG92YSBCTEUgQ29yZG92YSBQbHVnaW5cclxuLy9cclxuLyoqXHJcbiAqIFBhcnRpYWwgdHlwaW5ncyBmb3IgcGhvbmVnYXAgbmZjIGNvcmRvdmEgaW50ZXJmYWNlIGNsYXNzXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvcmRvdmFJbnRlcmZhY2Uge1xyXG4gICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBDbG9zZSBjdXJyZW50IG5mYyB0YWdcclxuICAgICAqL1xyXG4gICAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbm5lY3QgdG8gY3VycmVudCBuZmMgdGFnXHJcbiAgICAgKi9cclxuICAgIGNvbm5lY3QodGVjaDogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVHJhbnNlaXZlIGRhdGEgdXNpbmcgXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBBcnJheUJ1ZmZlciBvciBzdHJpbmcgb2YgaGV4IGRhdGEgZm9yIHRyYW5zY2lldmVcclxuICAgICAqL1xyXG4gICAgdHJhbnNjZWl2ZShkYXRhOiBBcnJheUJ1ZmZlciB8IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPjtcclxufSJdfQ==
1
+ export {};
2
+ //# sourceMappingURL=cordova-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cordova-interface.js","sourceRoot":"","sources":["../../../../../src/www/cordova-interface.ts"],"names":[],"mappings":"","sourcesContent":["//\r\n// Copyright 2018 IoTize SAS Inc. Licensed under the MIT license. \r\n//\r\n// cordova-interface.ts\r\n// device-com-ble.cordova BLE Cordova Plugin\r\n//\r\n/**\r\n * Partial typings for phonegap nfc cordova interface class\r\n */\r\nexport interface CordovaInterface {\r\n \r\n /**\r\n * Close current nfc tag\r\n */\r\n close(): Promise<void>;\r\n\r\n /**\r\n * Connect to current nfc tag\r\n */\r\n connect(tech: string, timeout: number): Promise<void>;\r\n\r\n /**\r\n * Transeive data using \r\n * @param data ArrayBuffer or string of hex data for transcieve\r\n */\r\n transceive(data: ArrayBuffer | string): Promise<string>;\r\n}"]}
@@ -0,0 +1 @@
1
+ [{"__symbolic":"module","version":4,"metadata":{"CordovaInterface":{"__symbolic":"interface"}}}]