@iotize/device-com-nfc.cordova 3.1.4 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -72,7 +72,7 @@
72
72
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
73
73
  return Reflect.metadata(metadataKey, metadataValue);
74
74
  }
75
- function __awaiter(thisArg, _arguments, P, generator) {
75
+ function __awaiter$1(thisArg, _arguments, P, generator) {
76
76
  return new (P || (P = Promise))(function (resolve, reject) {
77
77
  function fulfilled(value) { try {
78
78
  step(generator.next(value));
@@ -281,6 +281,9 @@
281
281
  NfcError.unknownError = function (errString) {
282
282
  throw new NfcError(NfcError.ErrorCode.Unknown, errString);
283
283
  };
284
+ NfcError.tagConnectionFailed = function () {
285
+ throw new NfcError(NfcError.ErrorCode.NotConnectedError, "Tag connection failed");
286
+ };
284
287
  NfcError.internalError = function (message) {
285
288
  throw new NfcError(NfcError.ErrorCode.InternalError, message);
286
289
  };
@@ -298,78 +301,165 @@
298
301
 
299
302
  var debug = debug$1.createDebugger("@iotize/device-com-nfc.cordova");
300
303
 
304
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
305
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
306
+ return new (P || (P = Promise))(function (resolve, reject) {
307
+ function fulfilled(value) { try {
308
+ step(generator.next(value));
309
+ }
310
+ catch (e) {
311
+ reject(e);
312
+ } }
313
+ function rejected(value) { try {
314
+ step(generator["throw"](value));
315
+ }
316
+ catch (e) {
317
+ reject(e);
318
+ } }
319
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
320
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
321
+ });
322
+ };
301
323
  var NFCComProtocol = /** @class */ (function (_super) {
302
324
  __extends(NFCComProtocol, _super);
303
325
  function NFCComProtocol(options) {
304
326
  if (options === void 0) { options = {
305
327
  connect: {
306
- timeout: 2000
328
+ timeout: 2000,
307
329
  },
308
330
  disconnect: {
309
- timeout: 1000
331
+ timeout: 1000,
310
332
  },
311
333
  send: {
312
- timeout: 1000
313
- }
334
+ timeout: 1000,
335
+ },
314
336
  }; }
315
337
  var _this = _super.call(this) || this;
316
338
  _this.options = options;
317
339
  if (typeof nfc == undefined) {
318
- console.warn("NFC plugin has not been setup properly. Global variable NFC does not exist");
340
+ console.warn('NFC plugin has not been setup properly. Global variable NFC does not exist');
319
341
  }
320
342
  return _this;
321
343
  }
322
344
  NFCComProtocol.iOSProtocol = function () {
323
345
  return new NFCComProtocol({
324
346
  connect: {
325
- timeout: 10000 // bigger timer on connect as connect launches a reading session
347
+ timeout: 10000, // bigger timer on connect as connect launches a reading session
326
348
  },
327
349
  disconnect: {
328
- timeout: 1000
350
+ timeout: 1000,
329
351
  },
330
352
  send: {
331
- timeout: 1000
332
- }
353
+ timeout: 1000,
354
+ },
333
355
  });
334
356
  };
357
+ /**
358
+ * We force tag connection with nfc as we need to refresh tag
359
+ * @param options
360
+ * @returns
361
+ */
362
+ NFCComProtocol.prototype.connect = function (options) {
363
+ this.connectionState = api.ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected
364
+ return _super.prototype.connect.call(this, options);
365
+ };
366
+ /**
367
+ * Not used as we have rewrote "connect()" function
368
+ * @param options
369
+ * @returns
370
+ */
335
371
  NFCComProtocol.prototype._connect = function (options) {
336
- debug('_connect', options);
337
- var connectPromise = nfc.connect("android.nfc.tech.NfcV", this.options.connect.timeout);
338
- return rxjs.from(connectPromise);
372
+ var _this = this;
373
+ return rxjs.defer(function () { return __awaiter(_this, void 0, void 0, function () {
374
+ var err_1;
375
+ return __generator(this, function (_a) {
376
+ switch (_a.label) {
377
+ case 0:
378
+ debug('_connect', options);
379
+ _a.label = 1;
380
+ case 1:
381
+ _a.trys.push([1, 3, , 4]);
382
+ return [4 /*yield*/, nfc.connect('android.nfc.tech.NfcV', this.options.connect.timeout)];
383
+ case 2:
384
+ _a.sent();
385
+ return [3 /*break*/, 4];
386
+ case 3:
387
+ err_1 = _a.sent();
388
+ if (typeof err_1 === 'string') {
389
+ if (err_1 === 'Tag connection failed') {
390
+ throw exports.NfcError.tagConnectionFailed();
391
+ }
392
+ else {
393
+ throw exports.NfcError.unknownError(err_1);
394
+ }
395
+ }
396
+ throw err_1;
397
+ case 4: return [2 /*return*/];
398
+ }
399
+ });
400
+ }); });
339
401
  };
340
402
  NFCComProtocol.prototype._disconnect = function (options) {
341
- return rxjs.from(nfc.close());
403
+ return rxjs.defer(function () { return nfc.close(); });
342
404
  };
405
+ /**
406
+ * Not used
407
+ * @param options
408
+ * @returns
409
+ */
343
410
  NFCComProtocol.prototype.write = function (data) {
344
- throw new Error("Method not implemented.");
411
+ return __awaiter(this, void 0, void 0, function () {
412
+ return __generator(this, function (_a) {
413
+ throw new Error('Method not implemented.');
414
+ });
415
+ });
345
416
  };
417
+ /**
418
+ * Not used
419
+ * @param options
420
+ * @returns
421
+ */
346
422
  NFCComProtocol.prototype.read = function () {
347
- throw new Error("Method not implemented.");
423
+ return __awaiter(this, void 0, void 0, function () {
424
+ return __generator(this, function (_a) {
425
+ throw new Error('Method not implemented.');
426
+ });
427
+ });
348
428
  };
349
429
  NFCComProtocol.prototype.send = function (data, options) {
350
430
  var _this = this;
351
- var promise = nfc
352
- .transceive(byteConverter.bufferToHexString(data))
353
- .then(function (response) {
354
- if (typeof response != "string") {
355
- throw exports.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");
356
- }
357
- debug('NFC plugin response: ', response);
358
- return byteConverter.hexStringToBuffer(response);
359
- })
360
- .catch(function (errString) {
361
- if (typeof errString === "string") {
362
- var error = stringToError(errString);
363
- if (error.code === exports.NfcError.ErrorCode.NotConnectedError || error.code === exports.NfcError.ErrorCode.TagLostError) {
364
- _this._onConnectionLost(error);
431
+ return rxjs.defer(function () { return __awaiter(_this, void 0, void 0, function () {
432
+ var response, errString_1, error;
433
+ return __generator(this, function (_a) {
434
+ switch (_a.label) {
435
+ case 0:
436
+ _a.trys.push([0, 2, , 3]);
437
+ return [4 /*yield*/, nfc.transceive(byteConverter.bufferToHexString(data))];
438
+ case 1:
439
+ response = _a.sent();
440
+ if (typeof response != 'string') {
441
+ throw exports.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");
442
+ }
443
+ debug('NFC plugin response: ', response);
444
+ return [2 /*return*/, byteConverter.hexStringToBuffer(response)];
445
+ case 2:
446
+ errString_1 = _a.sent();
447
+ if (typeof errString_1 === 'string') {
448
+ error = stringToError(errString_1);
449
+ if (error.code === exports.NfcError.ErrorCode.NotConnectedError ||
450
+ error.code === exports.NfcError.ErrorCode.TagLostError) {
451
+ this._onConnectionLost(error);
452
+ }
453
+ throw error;
454
+ }
455
+ else {
456
+ throw errString_1;
457
+ }
458
+ return [3 /*break*/, 3];
459
+ case 3: return [2 /*return*/];
365
460
  }
366
- throw error;
367
- }
368
- else {
369
- throw errString;
370
- }
371
- });
372
- return rxjs.from(promise);
461
+ });
462
+ }); });
373
463
  };
374
464
  NFCComProtocol.prototype._onConnectionLost = function (error) {
375
465
  if (this.connectionState !== api.ConnectionState.DISCONNECTED) {
@@ -378,7 +468,6 @@
378
468
  };
379
469
  return NFCComProtocol;
380
470
  }(core.QueueComProtocol));
381
- ;
382
471
  /**
383
472
  * Convert error string returned by the plugin into an error object
384
473
  * It only checks a few Android error string for now
@@ -1 +1 @@
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
+ {"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 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(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\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(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\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}\r\n","import { createDebugger } from '@iotize/common/debug';\r\n\r\nexport const debug = createDebugger(`@iotize/device-com-nfc.cordova`);","import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} 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 { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n 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 ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\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 /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\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 * 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 } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\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":["__awaiter","NfcError","createDebugger","ConnectionState","defer","bufferToHexString","hexStringToBuffer","QueueComProtocol","bufferToAsciiString"],"mappings":"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"}
@@ -1,4 +1,4 @@
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";
1
+ !function(o,e){"object"==typeof exports&&"undefined"!=typeof module?e(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"],e):e(((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,e,r,t,n,i){"use strict";
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation. All rights reserved.
4
4
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
@@ -12,5 +12,5 @@
12
12
 
13
13
  See the Apache Version 2.0 License for specific language governing permissions
14
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})}));
15
+ ***************************************************************************** */var c=function(o,e){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,e){o.__proto__=e}||function(o,e){for(var r in e)e.hasOwnProperty(r)&&(o[r]=e[r])})(o,e)};function a(o,e){function r(){this.constructor=o}c(o,e),o.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var u,s;function f(o,e){var r,t,n,i,c={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c;)try{if(r=1,t&&(n=2&i[0]?t.return:i[0]?t.throw||((n=t.return)&&n.call(t),0):t.next)&&!(n=n.call(t,i[1])).done)return n;switch(t=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return c.label++,{value:i[1],done:!1};case 5:c.label++,t=i[1],i=[0];continue;case 7:i=c.ops.pop(),c.trys.pop();continue;default:if(!(n=c.trys,(n=n.length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){c=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]<n[3])){c.label=i[1];break}if(6===i[0]&&c.label<n[1]){c.label=n[1],n=i;break}if(n&&c.label<n[2]){c.label=n[2],c.ops.push(i);break}n[2]&&c.ops.pop(),c.trys.pop();continue}i=e.call(o,c)}catch(o){i=[6,o],t=0}finally{r=n=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}o.NfcError=function(o){function e(e,r){var t=o.call(this,r)||this;return t.code=e,t}return a(e,o),e.tagLostError=function(){return new e(e.ErrorCode.TagLostError,"NFC tag lost")},e.notConnectedError=function(){return new e(e.ErrorCode.NotConnectedError,"NFC tag is not connected")},e.unknownError=function(o){throw new e(e.ErrorCode.Unknown,o)},e.tagConnectionFailed=function(){throw new e(e.ErrorCode.NotConnectedError,"Tag connection failed")},e.internalError=function(o){throw new e(e.ErrorCode.InternalError,o)},e}(Error),s=o.NfcError||(o.NfcError={}),(u=s.ErrorCode||(s.ErrorCode={})).Unknown="NfcUnknownError",u.InternalError="NfcInternalError",u.TagLostError="NfcTagLostError",u.NotConnectedError="NfcNotConnectedError";var l,d=i.createDebugger("@iotize/device-com-nfc.cordova"),p=this&&this.__awaiter||function(o,e,r,t){return new(r||(r=Promise))((function(n,i){function c(o){try{u(t.next(o))}catch(o){i(o)}}function a(o){try{u(t.throw(o))}catch(o){i(o)}}function u(o){var e;o.done?n(o.value):(e=o.value,e instanceof r?e:new r((function(o){o(e)}))).then(c,a)}u((t=t.apply(o,e||[])).next())}))},h=function(t){function i(o){void 0===o&&(o={connect:{timeout:2e3},disconnect:{timeout:1e3},send:{timeout:1e3}});var e=t.call(this)||this;return e.options=o,null==typeof nfc&&console.warn("NFC plugin has not been setup properly. Global variable NFC does not exist"),e}return a(i,t),i.iOSProtocol=function(){return new i({connect:{timeout:1e4},disconnect:{timeout:1e3},send:{timeout:1e3}})},i.prototype.connect=function(o){return this.connectionState=r.ConnectionState.CONNECTING,t.prototype.connect.call(this,o)},i.prototype._connect=function(e){var r=this;return n.defer((function(){return p(r,void 0,void 0,(function(){var r;return f(this,(function(t){switch(t.label){case 0:d("_connect",e),t.label=1;case 1:return t.trys.push([1,3,,4]),[4,nfc.connect("android.nfc.tech.NfcV",this.options.connect.timeout)];case 2:return t.sent(),[3,4];case 3:if("string"==typeof(r=t.sent()))throw"Tag connection failed"===r?o.NfcError.tagConnectionFailed():o.NfcError.unknownError(r);throw r;case 4:return[2]}}))}))}))},i.prototype._disconnect=function(o){return n.defer((function(){return nfc.close()}))},i.prototype.write=function(o){return p(this,void 0,void 0,(function(){return f(this,(function(o){throw new Error("Method not implemented.")}))}))},i.prototype.read=function(){return p(this,void 0,void 0,(function(){return f(this,(function(o){throw new Error("Method not implemented.")}))}))},i.prototype.send=function(r,t){var i=this;return n.defer((function(){return p(i,void 0,void 0,(function(){var t,n,i;return f(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,nfc.transceive(e.bufferToHexString(r))];case 1:if("string"!=typeof(t=c.sent()))throw o.NfcError.internalError("Internal error. Plugin should respond a hexadecimal string");return d("NFC plugin response: ",t),[2,e.hexStringToBuffer(t)];case 2:throw"string"==typeof(n=c.sent())?(u=(a=n).toLowerCase(),(i=u.indexOf("tag was lost")>=0?o.NfcError.tagLostError():u.indexOf("not connected")>=0?o.NfcError.notConnectedError():o.NfcError.unknownError(a)).code!==o.NfcError.ErrorCode.NotConnectedError&&i.code!==o.NfcError.ErrorCode.TagLostError||this._onConnectionLost(i),i):n;case 3:return[2]}var a,u}))}))}))},i.prototype._onConnectionLost=function(o){this.connectionState!==r.ConnectionState.DISCONNECTED&&this.setConnectionState(r.ConnectionState.DISCONNECTED)},i}(t.QueueComProtocol);function E(o){return o.length>0&&0===o[0]&&(o=o.slice(1)),e.bufferToAsciiString(o)}!function(o){o[o.WiFi=32]="WiFi",o[o.BLE=64]="BLE"}(l||(l={})),o.NFCComProtocol=h,o.parseTapNdefMessage=function(o){var e={};if(o.length>=1){var r=o[0].payload;e.uri=E(r)}if(o.length>=2&&(e.aar=E(o[1].payload)),o.length>=3){var t=o[2].payload,n=t[0],i=t.slice(1);switch(e.type=n,n){case l.BLE:e.macAddress=i.map((function(o){o<0&&(o+=256);var e="0"+o.toString(16).toUpperCase();return e=e.slice(-2)})).reverse().join(":");break;case l.WiFi:e.ssid=E(i)}}return o.length>=4&&(e.name=E(o[3].payload)),e},Object.defineProperty(o,"__esModule",{value:!0})}));
16
16
  //# sourceMappingURL=iotize-device-com-nfc.cordova.umd.min.js.map
@@ -1 +1 @@
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","_super","code","message","_this","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"]}
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","__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","n","v","op","TypeError","call","done","value","pop","length","push","e","step","_super","code","message","_this","tagLostError","TagLostError","notConnectedError","NotConnectedError","unknownError","errString","Unknown","tagConnectionFailed","internalError","InternalError","Error","TapNdefProtocolType","debug","createDebugger","NFCComProtocol","options","connect","timeout","disconnect","send","undefined","nfc","console","warn","iOSProtocol","connectionState","ConnectionState","CONNECTING","_connect","defer","__awaiter","_a","err_1","_disconnect","close","write","data","read","transceive","bufferToHexString","response","hexStringToBuffer","errStringLc","errString_1","toLowerCase","error","indexOf","_onConnectionLost","DISCONNECTED","setConnectionState","QueueComProtocol","toAsciiString","payload","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 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(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\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(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\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}\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}","import {\r\n bufferToHexString,\r\n hexStringToBuffer,\r\n} 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 { defer, Observable } from 'rxjs';\r\n\r\nimport { CordovaInterface } from './cordova-interface';\r\nimport { NfcError } from './errors';\r\nimport { debug } from './logger';\r\n\r\ndeclare var nfc: CordovaInterface;\r\n\r\nexport class NFCComProtocol extends QueueComProtocol {\r\n constructor(\r\n 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 ) {\r\n super();\r\n this.options = options;\r\n if (typeof nfc == undefined) {\r\n console.warn(\r\n 'NFC plugin has not been setup properly. Global variable NFC does not exist'\r\n );\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 /**\r\n * We force tag connection with nfc as we need to refresh tag\r\n * @param options\r\n * @returns\r\n */\r\n connect(options?: ComProtocolConnectOptions): Observable<void> {\r\n this.connectionState = ConnectionState.CONNECTING; // Hack to force NFC tag connect call even if we are already connected\r\n return super.connect(options);\r\n }\r\n\r\n /**\r\n * Not used as we have rewrote \"connect()\" function\r\n * @param options\r\n * @returns\r\n */\r\n _connect(options?: ComProtocolConnectOptions): Observable<any> {\r\n return defer(async () => {\r\n debug('_connect', options);\r\n try {\r\n await nfc.connect(\r\n 'android.nfc.tech.NfcV',\r\n this.options.connect.timeout\r\n );\r\n } catch (err) {\r\n if (typeof err === 'string') {\r\n if (err === 'Tag connection failed') {\r\n throw NfcError.tagConnectionFailed();\r\n } else {\r\n throw NfcError.unknownError(err);\r\n }\r\n }\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n _disconnect(options?: ComProtocolDisconnectOptions): Observable<any> {\r\n return defer(() => nfc.close());\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async write(data: Uint8Array): Promise<any> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n /**\r\n * Not used\r\n * @param options\r\n * @returns\r\n */\r\n async read(): Promise<Uint8Array> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n send(\r\n data: Uint8Array,\r\n options?: ComProtocolSendOptions\r\n ): Observable<Uint8Array> {\r\n return defer(async () => {\r\n try {\r\n const response = await nfc.transceive(bufferToHexString(data));\r\n if (typeof response != 'string') {\r\n throw NfcError.internalError(\r\n `Internal error. Plugin should respond a hexadecimal string`\r\n );\r\n }\r\n debug('NFC plugin response: ', response);\r\n return hexStringToBuffer(response);\r\n } catch (errString) {\r\n if (typeof errString === 'string') {\r\n const error = stringToError(errString);\r\n if (\r\n error.code === NfcError.ErrorCode.NotConnectedError ||\r\n error.code === NfcError.ErrorCode.TagLostError\r\n ) {\r\n this._onConnectionLost(error);\r\n }\r\n throw error;\r\n } else {\r\n throw errString;\r\n }\r\n }\r\n });\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 * 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 } else if (errStringLc.indexOf('not connected') >= 0) {\r\n return NfcError.notConnectedError();\r\n } else {\r\n return NfcError.unknownError(errString);\r\n }\r\n}\r\n"]}
@@ -12,6 +12,9 @@ export class NfcError extends Error {
12
12
  static unknownError(errString) {
13
13
  throw new NfcError(NfcError.ErrorCode.Unknown, errString);
14
14
  }
15
+ static tagConnectionFailed() {
16
+ throw new NfcError(NfcError.ErrorCode.NotConnectedError, `Tag connection failed`);
17
+ }
15
18
  static internalError(message) {
16
19
  throw new NfcError(NfcError.ErrorCode.InternalError, message);
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/www/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAE/B,YAAmB,IAAwB,EAAE,OAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADA,SAAI,GAAJ,IAAI,CAAoB;IAE3C,CAAC;IAEM,MAAM,CAAC,YAAY;QACtB,OAAO,IAAI,QAAQ,CACf,QAAQ,CAAC,SAAS,CAAC,YAAY,EAC/B,cAAc,CACjB,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC3B,OAAO,IAAI,QAAQ,CACf,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EACpC,0BAA0B,CAC7B,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,SAAiB;QACxC,MAAM,IAAI,QAAQ,CACd,QAAQ,CAAC,SAAS,CAAC,OAAO,EAC1B,SAAS,CACZ,CAAA;IACL,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAe;QACvC,MAAM,IAAI,QAAQ,CACd,QAAQ,CAAC,SAAS,CAAC,aAAa,EAChC,OAAO,CACV,CAAA;IACL,CAAC;CACJ;AAED,WAAiB,QAAQ;IACrB,IAAY,SAKX;IALD,WAAY,SAAS;QACjB,wCAA2B,CAAA;QAC3B,+CAAkC,CAAA;QAClC,6CAAgC,CAAA;QAChC,uDAA0C,CAAA;IAC9C,CAAC,EALW,SAAS,GAAT,kBAAS,KAAT,kBAAS,QAKpB;AACL,CAAC,EAPgB,QAAQ,KAAR,QAAQ,QAOxB","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}"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../src/www/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAmB,IAAwB,EAAE,OAAe;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,SAAI,GAAJ,IAAI,CAAoB;IAE3C,CAAC;IAEM,MAAM,CAAC,YAAY;QACxB,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,iBAAiB;QAC7B,OAAO,IAAI,QAAQ,CACjB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EACpC,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,SAAiB;QAC1C,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,mBAAmB;QAC/B,MAAM,IAAI,QAAQ,CAChB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,EACpC,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,OAAe;QACzC,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAED,WAAiB,QAAQ;IACvB,IAAY,SAKX;IALD,WAAY,SAAS;QACnB,wCAA2B,CAAA;QAC3B,+CAAkC,CAAA;QAClC,6CAAgC,CAAA;QAChC,uDAA0C,CAAA;IAC5C,CAAC,EALW,SAAS,GAAT,kBAAS,KAAT,kBAAS,QAKpB;AACH,CAAC,EAPgB,QAAQ,KAAR,QAAQ,QAOxB","sourcesContent":["export class NfcError extends Error {\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(NfcError.ErrorCode.TagLostError, 'NFC tag lost');\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(NfcError.ErrorCode.Unknown, errString);\r\n }\r\n\r\n public static tagConnectionFailed() {\r\n throw new NfcError(\r\n NfcError.ErrorCode.NotConnectedError,\r\n `Tag connection failed`\r\n );\r\n }\r\n\r\n public static internalError(message: string) {\r\n throw new NfcError(NfcError.ErrorCode.InternalError, message);\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}\r\n"]}