diff --git a/amnet-shared/dist/index.d.mts b/amnet-shared/dist/index.d.mts new file mode 100644 index 0000000..a31ccbc --- /dev/null +++ b/amnet-shared/dist/index.d.mts @@ -0,0 +1,35 @@ +/** + * The latest version of the AMNet API this library supports + */ +declare const AMNET_API_VERSION = 1; +interface AMCardInRequest { + cardId: string; +} +interface AMServerInfoResponse { + serverAddress: string; + serverName: string; + apiVersion: number; +} +/** + * Performs the card-in request to the specified server + * @param serverAddress The origin address of the server to perform the request against + * @param request The card-in request to send + * @param signal The abort signal to use for the request + */ +declare function performCardIn(serverAddress: string, request: AMCardInRequest, signal: AbortSignal): Promise; +/** + * Attempts to connect to the specified server and fetch its info + * @param serverAddress The origin address of the server to connect to + * @param abort The abort signal to use for the request (for cancellation) + */ +declare function fetchServerInfo(serverAddress: string, abort: AbortSignal): Promise; + +declare const CARD_ID_REGEX: RegExp; +declare function generateCardNumber(): string; +/** + * Validates the provided card id by known parameters + * @param id The card id to validate + */ +declare function validateCardId(id: string): boolean; + +export { type AMCardInRequest, AMNET_API_VERSION, type AMServerInfoResponse, CARD_ID_REGEX, fetchServerInfo, generateCardNumber, performCardIn, validateCardId }; diff --git a/amnet-shared/dist/index.d.ts b/amnet-shared/dist/index.d.ts new file mode 100644 index 0000000..a31ccbc --- /dev/null +++ b/amnet-shared/dist/index.d.ts @@ -0,0 +1,35 @@ +/** + * The latest version of the AMNet API this library supports + */ +declare const AMNET_API_VERSION = 1; +interface AMCardInRequest { + cardId: string; +} +interface AMServerInfoResponse { + serverAddress: string; + serverName: string; + apiVersion: number; +} +/** + * Performs the card-in request to the specified server + * @param serverAddress The origin address of the server to perform the request against + * @param request The card-in request to send + * @param signal The abort signal to use for the request + */ +declare function performCardIn(serverAddress: string, request: AMCardInRequest, signal: AbortSignal): Promise; +/** + * Attempts to connect to the specified server and fetch its info + * @param serverAddress The origin address of the server to connect to + * @param abort The abort signal to use for the request (for cancellation) + */ +declare function fetchServerInfo(serverAddress: string, abort: AbortSignal): Promise; + +declare const CARD_ID_REGEX: RegExp; +declare function generateCardNumber(): string; +/** + * Validates the provided card id by known parameters + * @param id The card id to validate + */ +declare function validateCardId(id: string): boolean; + +export { type AMCardInRequest, AMNET_API_VERSION, type AMServerInfoResponse, CARD_ID_REGEX, fetchServerInfo, generateCardNumber, performCardIn, validateCardId }; diff --git a/amnet-shared/dist/index.js b/amnet-shared/dist/index.js new file mode 100644 index 0000000..ee9c26e --- /dev/null +++ b/amnet-shared/dist/index.js @@ -0,0 +1,131 @@ +"use strict"; +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + AMNET_API_VERSION: () => AMNET_API_VERSION, + CARD_ID_REGEX: () => CARD_ID_REGEX, + fetchServerInfo: () => fetchServerInfo, + generateCardNumber: () => generateCardNumber, + performCardIn: () => performCardIn, + validateCardId: () => validateCardId +}); +module.exports = __toCommonJS(src_exports); + +// src/api.ts +var AMNET_API_VERSION = 1; +function performCardIn(serverAddress, request, signal) { + return __async(this, null, function* () { + try { + const response = yield fetch(`${serverAddress}/card`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(request), + signal + }); + return response.ok; + } catch (e) { + return false; + } + }); +} +function fetchServerInfo(serverAddress, abort) { + return __async(this, null, function* () { + try { + const response = yield fetch(serverAddress, { + signal: abort + }); + return __spreadProps(__spreadValues({}, yield response.json()), { + serverAddress + }); + } catch (e) { + return null; + } + }); +} + +// src/card.ts +var CARD_ID_REGEX = /^(?:[0-9]{4} ?){5}$/i; +function generateCardNumber() { + let cardId = ""; + while (true) { + const firstDigit = Math.floor(Math.random() * 10); + if (firstDigit !== 3) { + cardId = firstDigit.toString(); + break; + } + } + for (let i = 0; i < 19; i++) { + cardId += Math.floor(Math.random() * 10).toString(); + } + return cardId; +} +function validateCardId(id) { + return id[0] !== "3" && CARD_ID_REGEX.test(id); +} +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + AMNET_API_VERSION, + CARD_ID_REGEX, + fetchServerInfo, + generateCardNumber, + performCardIn, + validateCardId +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/amnet-shared/dist/index.js.map b/amnet-shared/dist/index.js.map new file mode 100644 index 0000000..c4c57ee --- /dev/null +++ b/amnet-shared/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/index.ts","../src/api.ts","../src/card.ts"],"sourcesContent":["export * from './api';\nexport * from './card';","/**\n * The latest version of the AMNet API this library supports\n */\nexport const AMNET_API_VERSION = 1;\n\nexport interface AMCardInRequest {\n cardId: string;\n}\n\nexport interface AMServerInfoResponse {\n serverAddress: string;\n serverName: string;\n apiVersion: number;\n}\n\n/**\n * Performs the card-in request to the specified server\n * @param serverAddress The origin address of the server to perform the request against\n * @param request The card-in request to send\n * @param signal The abort signal to use for the request\n */\nexport async function performCardIn(serverAddress: string, request: AMCardInRequest, signal: AbortSignal) {\n try {\n const response = await fetch(`${serverAddress}/card`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(request),\n signal: signal\n });\n\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Attempts to connect to the specified server and fetch its info\n * @param serverAddress The origin address of the server to connect to\n * @param abort The abort signal to use for the request (for cancellation)\n */\nexport async function fetchServerInfo(serverAddress: string, abort: AbortSignal): Promise {\n try {\n const response = await fetch(serverAddress, {\n signal: abort\n });\n\n return {\n ...await response.json(),\n serverAddress: serverAddress\n } satisfies AMServerInfoResponse;\n } catch {\n return null;\n }\n}\n","export const CARD_ID_REGEX = /^(?:[0-9]{4} ?){5}$/i;\n\nexport function generateCardNumber(): string {\n let cardId = '';\n\n while (true) {\n // don't start with a 3\n const firstDigit = Math.floor(Math.random() * 10);\n\n if (firstDigit !== 3) {\n cardId = firstDigit.toString();\n break;\n }\n }\n\n for (let i = 0; i < 19; i++) {\n cardId += Math.floor(Math.random() * 10).toString();\n }\n\n return cardId;\n}\n\n/**\n * Validates the provided card id by known parameters\n * @param id The card id to validate\n */\nexport function validateCardId(id: string): boolean {\n return id[0] !== '3' && CARD_ID_REGEX.test(id);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGO,IAAM,oBAAoB;AAkBjC,SAAsB,cAAc,eAAuB,SAA0B,QAAqB;AAAA;AACtG,QAAI;AACA,YAAM,WAAW,MAAM,MAAM,GAAG,aAAa,SAAS;AAAA,QAClD,QAAQ;AAAA,QACR,SAAS;AAAA,UACL,gBAAgB;AAAA,QACpB;AAAA,QACA,MAAM,KAAK,UAAU,OAAO;AAAA,QAC5B;AAAA,MACJ,CAAC;AAED,aAAO,SAAS;AAAA,IACpB,SAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAOA,SAAsB,gBAAgB,eAAuB,OAA0D;AAAA;AACnH,QAAI;AACA,YAAM,WAAW,MAAM,MAAM,eAAe;AAAA,QACxC,QAAQ;AAAA,MACZ,CAAC;AAED,aAAO,iCACA,MAAM,SAAS,KAAK,IADpB;AAAA,QAEH;AAAA,MACJ;AAAA,IACJ,SAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;;;ACxDO,IAAM,gBAAgB;AAEtB,SAAS,qBAA6B;AACzC,MAAI,SAAS;AAEb,SAAO,MAAM;AAET,UAAM,aAAa,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE;AAEhD,QAAI,eAAe,GAAG;AAClB,eAAS,WAAW,SAAS;AAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,cAAU,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS;AAAA,EACtD;AAEA,SAAO;AACX;AAMO,SAAS,eAAe,IAAqB;AAChD,SAAO,GAAG,CAAC,MAAM,OAAO,cAAc,KAAK,EAAE;AACjD;","names":[]} \ No newline at end of file diff --git a/amnet-shared/dist/index.mjs b/amnet-shared/dist/index.mjs new file mode 100644 index 0000000..53c111b --- /dev/null +++ b/amnet-shared/dist/index.mjs @@ -0,0 +1,102 @@ +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/api.ts +var AMNET_API_VERSION = 1; +function performCardIn(serverAddress, request, signal) { + return __async(this, null, function* () { + try { + const response = yield fetch(`${serverAddress}/card`, { + method: "POST", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(request), + signal + }); + return response.ok; + } catch (e) { + return false; + } + }); +} +function fetchServerInfo(serverAddress, abort) { + return __async(this, null, function* () { + try { + const response = yield fetch(serverAddress, { + signal: abort + }); + return __spreadProps(__spreadValues({}, yield response.json()), { + serverAddress + }); + } catch (e) { + return null; + } + }); +} + +// src/card.ts +var CARD_ID_REGEX = /^(?:[0-9]{4} ?){5}$/i; +function generateCardNumber() { + let cardId = ""; + while (true) { + const firstDigit = Math.floor(Math.random() * 10); + if (firstDigit !== 3) { + cardId = firstDigit.toString(); + break; + } + } + for (let i = 0; i < 19; i++) { + cardId += Math.floor(Math.random() * 10).toString(); + } + return cardId; +} +function validateCardId(id) { + return id[0] !== "3" && CARD_ID_REGEX.test(id); +} +export { + AMNET_API_VERSION, + CARD_ID_REGEX, + fetchServerInfo, + generateCardNumber, + performCardIn, + validateCardId +}; +//# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/amnet-shared/dist/index.mjs.map b/amnet-shared/dist/index.mjs.map new file mode 100644 index 0000000..0a1ddd2 --- /dev/null +++ b/amnet-shared/dist/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/api.ts","../src/card.ts"],"sourcesContent":["/**\n * The latest version of the AMNet API this library supports\n */\nexport const AMNET_API_VERSION = 1;\n\nexport interface AMCardInRequest {\n cardId: string;\n}\n\nexport interface AMServerInfoResponse {\n serverAddress: string;\n serverName: string;\n apiVersion: number;\n}\n\n/**\n * Performs the card-in request to the specified server\n * @param serverAddress The origin address of the server to perform the request against\n * @param request The card-in request to send\n * @param signal The abort signal to use for the request\n */\nexport async function performCardIn(serverAddress: string, request: AMCardInRequest, signal: AbortSignal) {\n try {\n const response = await fetch(`${serverAddress}/card`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(request),\n signal: signal\n });\n\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Attempts to connect to the specified server and fetch its info\n * @param serverAddress The origin address of the server to connect to\n * @param abort The abort signal to use for the request (for cancellation)\n */\nexport async function fetchServerInfo(serverAddress: string, abort: AbortSignal): Promise {\n try {\n const response = await fetch(serverAddress, {\n signal: abort\n });\n\n return {\n ...await response.json(),\n serverAddress: serverAddress\n } satisfies AMServerInfoResponse;\n } catch {\n return null;\n }\n}\n","export const CARD_ID_REGEX = /^(?:[0-9]{4} ?){5}$/i;\n\nexport function generateCardNumber(): string {\n let cardId = '';\n\n while (true) {\n // don't start with a 3\n const firstDigit = Math.floor(Math.random() * 10);\n\n if (firstDigit !== 3) {\n cardId = firstDigit.toString();\n break;\n }\n }\n\n for (let i = 0; i < 19; i++) {\n cardId += Math.floor(Math.random() * 10).toString();\n }\n\n return cardId;\n}\n\n/**\n * Validates the provided card id by known parameters\n * @param id The card id to validate\n */\nexport function validateCardId(id: string): boolean {\n return id[0] !== '3' && CARD_ID_REGEX.test(id);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAM,oBAAoB;AAkBjC,SAAsB,cAAc,eAAuB,SAA0B,QAAqB;AAAA;AACtG,QAAI;AACA,YAAM,WAAW,MAAM,MAAM,GAAG,aAAa,SAAS;AAAA,QAClD,QAAQ;AAAA,QACR,SAAS;AAAA,UACL,gBAAgB;AAAA,QACpB;AAAA,QACA,MAAM,KAAK,UAAU,OAAO;AAAA,QAC5B;AAAA,MACJ,CAAC;AAED,aAAO,SAAS;AAAA,IACpB,SAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAOA,SAAsB,gBAAgB,eAAuB,OAA0D;AAAA;AACnH,QAAI;AACA,YAAM,WAAW,MAAM,MAAM,eAAe;AAAA,QACxC,QAAQ;AAAA,MACZ,CAAC;AAED,aAAO,iCACA,MAAM,SAAS,KAAK,IADpB;AAAA,QAEH;AAAA,MACJ;AAAA,IACJ,SAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;;;ACxDO,IAAM,gBAAgB;AAEtB,SAAS,qBAA6B;AACzC,MAAI,SAAS;AAEb,SAAO,MAAM;AAET,UAAM,aAAa,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE;AAEhD,QAAI,eAAe,GAAG;AAClB,eAAS,WAAW,SAAS;AAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,cAAU,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,EAAE,SAAS;AAAA,EACtD;AAEA,SAAO;AACX;AAMO,SAAS,eAAe,IAAqB;AAChD,SAAO,GAAG,CAAC,MAAM,OAAO,cAAc,KAAK,EAAE;AACjD;","names":[]} \ No newline at end of file