@icure/api 4.2.31 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/icc-api/api/IccDeviceApi.d.ts +3 -3
- package/icc-api/api/IccDeviceApi.js.map +1 -1
- package/icc-api/api/IccHcpartyApi.d.ts +3 -3
- package/icc-api/api/IccHcpartyApi.js.map +1 -1
- package/icc-api/api/IccPatientApi.d.ts +3 -3
- package/icc-api/api/IccPatientApi.js.map +1 -1
- package/icc-api/api/IccUserApi.js +1 -1
- package/icc-api/api/IccUserApi.js.map +1 -1
- package/icc-api/api/XHR.js +2 -1
- package/icc-api/api/XHR.js.map +1 -1
- package/icc-api/iccApi.js +5 -1
- package/icc-api/iccApi.js.map +1 -1
- package/icc-api/index.js +5 -1
- package/icc-api/index.js.map +1 -1
- package/icc-api/model/Body.js +1 -1
- package/icc-api/model/Body.js.map +1 -1
- package/icc-api/model/Body1.js +1 -1
- package/icc-api/model/Body1.js.map +1 -1
- package/icc-api/model/Body2.js +1 -1
- package/icc-api/model/Body2.js.map +1 -1
- package/icc-api/model/Body3.js +1 -1
- package/icc-api/model/Body3.js.map +1 -1
- package/icc-api/model/ByteArray.js +1 -1
- package/icc-api/model/ByteArray.js.map +1 -1
- package/icc-api/model/Content.js +1 -1
- package/icc-api/model/Content.js.map +1 -1
- package/icc-api/model/Device.js +1 -1
- package/icc-api/model/Device.js.map +1 -1
- package/icc-api/model/Document.js +1 -1
- package/icc-api/model/Document.js.map +1 -1
- package/icc-api/model/DocumentTemplate.js +1 -1
- package/icc-api/model/DocumentTemplate.js.map +1 -1
- package/icc-api/model/HealthcareParty.js +1 -1
- package/icc-api/model/HealthcareParty.js.map +1 -1
- package/icc-api/model/MimeAttachment.js +1 -1
- package/icc-api/model/MimeAttachment.js.map +1 -1
- package/icc-api/model/Patient.js +1 -1
- package/icc-api/model/Patient.js.map +1 -1
- package/icc-api/model/models.d.ts +15 -0
- package/icc-api/model/models.js +5 -1
- package/icc-api/model/models.js.map +1 -1
- package/icc-x-api/crypto/AES.d.ts +2 -1
- package/icc-x-api/crypto/AES.js +37 -10
- package/icc-x-api/crypto/AES.js.map +1 -1
- package/icc-x-api/crypto/RSA.d.ts +0 -31
- package/icc-x-api/crypto/RSA.js +0 -64
- package/icc-x-api/crypto/RSA.js.map +1 -1
- package/icc-x-api/crypto/shamir.js.map +1 -1
- package/icc-x-api/filters/filters.js +7 -3
- package/icc-x-api/filters/filters.js.map +1 -1
- package/icc-x-api/icc-accesslog-x-api.js +25 -22
- package/icc-x-api/icc-accesslog-x-api.js.map +1 -1
- package/icc-x-api/icc-bekmehr-x-api.js +2 -2
- package/icc-x-api/icc-bekmehr-x-api.js.map +1 -1
- package/icc-x-api/icc-calendar-item-x-api.d.ts +2 -2
- package/icc-x-api/icc-calendar-item-x-api.js +43 -30
- package/icc-x-api/icc-calendar-item-x-api.js.map +1 -1
- package/icc-x-api/icc-contact-x-api.js +59 -45
- package/icc-x-api/icc-contact-x-api.js.map +1 -1
- package/icc-x-api/icc-crypto-x-api.d.ts +127 -54
- package/icc-x-api/icc-crypto-x-api.js +830 -393
- package/icc-x-api/icc-crypto-x-api.js.map +1 -1
- package/icc-x-api/icc-doctemplate-x-api.js +2 -2
- package/icc-x-api/icc-doctemplate-x-api.js.map +1 -1
- package/icc-x-api/icc-document-x-api.js +3 -3
- package/icc-x-api/icc-document-x-api.js.map +1 -1
- package/icc-x-api/icc-form-x-api.js +3 -3
- package/icc-x-api/icc-form-x-api.js.map +1 -1
- package/icc-x-api/icc-hcparty-x-api.js +4 -4
- package/icc-x-api/icc-hcparty-x-api.js.map +1 -1
- package/icc-x-api/icc-helement-x-api.d.ts +1 -1
- package/icc-x-api/icc-helement-x-api.js +34 -29
- package/icc-x-api/icc-helement-x-api.js.map +1 -1
- package/icc-x-api/icc-maintenance-task-x-api.js +5 -6
- package/icc-x-api/icc-maintenance-task-x-api.js.map +1 -1
- package/icc-x-api/icc-patient-x-api.d.ts +1 -1
- package/icc-x-api/icc-patient-x-api.js +65 -53
- package/icc-x-api/icc-patient-x-api.js.map +1 -1
- package/icc-x-api/index.d.ts +1 -2
- package/icc-x-api/index.js +9 -8
- package/icc-x-api/index.js.map +1 -1
- package/icc-x-api/utils/binary-utils.js +5 -5
- package/icc-x-api/utils/binary-utils.js.map +1 -1
- package/icc-x-api/utils/crypto-utils.d.ts +61 -0
- package/icc-x-api/utils/crypto-utils.js +245 -0
- package/icc-x-api/utils/crypto-utils.js.map +1 -0
- package/icc-x-api/utils/formatting-util.js +3 -3
- package/icc-x-api/utils/formatting-util.js.map +1 -1
- package/icc-x-api/utils/functional-util.d.ts +1 -0
- package/icc-x-api/utils/functional-util.js +8 -1
- package/icc-x-api/utils/functional-util.js.map +1 -1
- package/icc-x-api/utils/index.d.ts +1 -0
- package/icc-x-api/utils/index.js +6 -1
- package/icc-x-api/utils/index.js.map +1 -1
- package/index.js +5 -1
- package/index.js.map +1 -1
- package/node-compat.d.ts +1 -1
- package/node-compat.js +3 -3
- package/node-compat.js.map +1 -1
- package/package.json +2 -2
- package/icc-x-api/crypto/utils.d.ts +0 -68
- package/icc-x-api/crypto/utils.js +0 -239
- package/icc-x-api/crypto/utils.js.map +0 -1
|
@@ -134,7 +134,7 @@ function ua2hex(_ua) {
|
|
|
134
134
|
exports.ua2hex = ua2hex;
|
|
135
135
|
function b64_2uas(s) {
|
|
136
136
|
const sliceSize = 1024;
|
|
137
|
-
const byteCharacters = ModelHelper_1.a2b(s);
|
|
137
|
+
const byteCharacters = (0, ModelHelper_1.a2b)(s);
|
|
138
138
|
const bytesLength = byteCharacters.length;
|
|
139
139
|
const slicesCount = Math.ceil(bytesLength / sliceSize);
|
|
140
140
|
const byteArrays = new Array(slicesCount);
|
|
@@ -151,19 +151,19 @@ function b64_2uas(s) {
|
|
|
151
151
|
}
|
|
152
152
|
exports.b64_2uas = b64_2uas;
|
|
153
153
|
function ua2b64Url(ua) {
|
|
154
|
-
return ModelHelper_1.ua2b64(ua).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
154
|
+
return (0, ModelHelper_1.ua2b64)(ua).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
155
155
|
}
|
|
156
156
|
exports.ua2b64Url = ua2b64Url;
|
|
157
157
|
function b64Url2ua(ua) {
|
|
158
|
-
return ModelHelper_1.b64_2ua(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''));
|
|
158
|
+
return (0, ModelHelper_1.b64_2ua)(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''));
|
|
159
159
|
}
|
|
160
160
|
exports.b64Url2ua = b64Url2ua;
|
|
161
161
|
function hex2string(hexStr) {
|
|
162
|
-
return ModelHelper_1.ua2string(hex2ua(hexStr));
|
|
162
|
+
return (0, ModelHelper_1.ua2string)(hex2ua(hexStr));
|
|
163
163
|
}
|
|
164
164
|
exports.hex2string = hex2string;
|
|
165
165
|
function string2hex(text) {
|
|
166
|
-
return ua2hex(ModelHelper_1.string2ua(text));
|
|
166
|
+
return ua2hex((0, ModelHelper_1.string2ua)(text));
|
|
167
167
|
}
|
|
168
168
|
exports.string2hex = string2hex;
|
|
169
169
|
//# sourceMappingURL=binary-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-utils.js","sourceRoot":"","sources":["../../../icc-x-api/utils/binary-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b } from '../../icc-api/model/ModelHelper'\nexport { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b }\n\nconst textDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null\nconst textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null\n\nexport function utf8_2ua(str: string): Uint8Array {\n if (textEncoder) {\n return textEncoder.encode(str)\n }\n\n const utf8 = new Uint8Array(4 * str.length)\n let j = 0\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i)\n if (charcode < 0x80) {\n utf8.set([charcode], j++)\n } else if (charcode < 0x800) {\n utf8.set([0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f)], j)\n j += 2\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.set([0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 3\n } else {\n i++\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff))\n utf8.set([0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 4\n }\n }\n return utf8.subarray(0, j)\n}\n\n/**\n * Uint8Array/ArrayBuffer to utf-8 strring\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} a UTF-8 encoded string\n */\nexport function ua2utf8(_ua: Uint8Array | ArrayBuffer): string {\n if (textDecoder) {\n // if _ua is undefined, imitate the JS implementation below which returns an empty string\n return _ua ? textDecoder.decode(_ua) : ''\n }\n\n let out, i, len, c, u\n let char2, char3, char4\n\n // avoid applying the Uint8Array constructor: on ArrayBuffer it creates a\n // view but on Uint8Array it creates a copy\n const array = ArrayBuffer.isView(_ua) ? _ua : new Uint8Array(_ua)\n\n out = ''\n len = array.length || array.byteLength\n i = 0\n while (i < len) {\n c = array[i++]\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c)\n break\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++]\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n case 15:\n // 1111 xxxx 10xx xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n char4 = array[i++]\n u = ((c & 0x07) << 18) | ((char2 & 0x3f) << 12) | ((char3 & 0x3f) << 6) | (((char4 & 0x3f) << 0) - 0x10000)\n out += String.fromCharCode(0xd800 + (u >> 10))\n out += String.fromCharCode(0xdc00 + (u & 1023))\n break\n }\n }\n\n return out\n}\n\nexport function hex2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length / 2)\n s = s.toLowerCase()\n for (let i = 0; i < s.length; i += 2) {\n ua[i / 2] =\n (s.charCodeAt(i) < 58 ? s.charCodeAt(i) - 48 : s.charCodeAt(i) - 87) * 16 +\n (s.charCodeAt(i + 1) < 58 ? s.charCodeAt(i + 1) - 48 : s.charCodeAt(i + 1) - 87)\n }\n return ua\n}\n\n/**\n * Uint8Array/ArrayBuffer to hex String\n *\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} Hex String\n */\nexport function ua2hex(_ua: Uint8Array | ArrayBuffer): string {\n let s = ''\n const ua = new Uint8Array(_ua)\n for (let i = 0; i < ua.length; i++) {\n const hhb = (ua[i] & 0xf0) >> 4\n const lhb = ua[i] & 0x0f\n s += String.fromCharCode(hhb > 9 ? hhb + 87 : hhb + 48)\n s += String.fromCharCode(lhb > 9 ? lhb + 87 : lhb + 48)\n }\n\n return s\n}\n\nexport function b64_2uas(s: string): Array<Uint8Array> {\n const sliceSize = 1024\n const byteCharacters = a2b(s)\n const bytesLength = byteCharacters.length\n const slicesCount = Math.ceil(bytesLength / sliceSize)\n const byteArrays = new Array(slicesCount)\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize\n const end = Math.min(begin + sliceSize, bytesLength)\n\n const bytes = new Array(end - begin)\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0)\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes)\n }\n return byteArrays\n}\n\nexport function ua2b64Url(ua: Uint8Array | ArrayBuffer): string {\n return ua2b64(ua).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n}\n\nexport function b64Url2ua(ua: string): ArrayBuffer {\n return b64_2ua(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''))\n}\n\nexport function hex2string(hexStr: string): string {\n return ua2string(hex2ua(hexStr))\n}\n\nexport function string2hex(text: string): string {\n return ua2hex(string2ua(text))\n}\n"]}
|
|
1
|
+
{"version":3,"file":"binary-utils.js","sourceRoot":"","sources":["../../../icc-x-api/utils/binary-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b } from '../../icc-api/model/ModelHelper'\nexport { ua2string, string2ua, string2ab, ua2ab, b64_2ab, b64_2ua, ua2b64, b2a, a2b }\n\nconst textDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder() : null\nconst textEncoder = typeof TextEncoder !== 'undefined' ? new TextEncoder() : null\n\nexport function utf8_2ua(str: string): Uint8Array {\n if (textEncoder) {\n return textEncoder.encode(str)\n }\n\n const utf8 = new Uint8Array(4 * str.length)\n let j = 0\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i)\n if (charcode < 0x80) {\n utf8.set([charcode], j++)\n } else if (charcode < 0x800) {\n utf8.set([0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f)], j)\n j += 2\n } else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.set([0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 3\n } else {\n i++\n // UTF-16 encodes 0x10000-0x10FFFF by\n // subtracting 0x10000 and splitting the\n // 20 bits of 0x0-0xFFFFF into two halves\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff))\n utf8.set([0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f)], j)\n j += 4\n }\n }\n return utf8.subarray(0, j)\n}\n\n/**\n * Uint8Array/ArrayBuffer to utf-8 strring\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} a UTF-8 encoded string\n */\nexport function ua2utf8(_ua: Uint8Array | ArrayBuffer): string {\n if (textDecoder) {\n // if _ua is undefined, imitate the JS implementation below which returns an empty string\n return _ua ? textDecoder.decode(_ua) : ''\n }\n\n let out, i, len, c, u\n let char2, char3, char4\n\n // avoid applying the Uint8Array constructor: on ArrayBuffer it creates a\n // view but on Uint8Array it creates a copy\n const array = ArrayBuffer.isView(_ua) ? _ua : new Uint8Array(_ua)\n\n out = ''\n len = array.length || array.byteLength\n i = 0\n while (i < len) {\n c = array[i++]\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += String.fromCharCode(c)\n break\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = array[i++]\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f))\n break\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n out += String.fromCharCode(((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0))\n break\n case 15:\n // 1111 xxxx 10xx xxxx 10xx xxxx 10xx xxxx\n char2 = array[i++]\n char3 = array[i++]\n char4 = array[i++]\n u = ((c & 0x07) << 18) | ((char2 & 0x3f) << 12) | ((char3 & 0x3f) << 6) | (((char4 & 0x3f) << 0) - 0x10000)\n out += String.fromCharCode(0xd800 + (u >> 10))\n out += String.fromCharCode(0xdc00 + (u & 1023))\n break\n }\n }\n\n return out\n}\n\nexport function hex2ua(s: string): Uint8Array {\n const ua = new Uint8Array(s.length / 2)\n s = s.toLowerCase()\n for (let i = 0; i < s.length; i += 2) {\n ua[i / 2] =\n (s.charCodeAt(i) < 58 ? s.charCodeAt(i) - 48 : s.charCodeAt(i) - 87) * 16 +\n (s.charCodeAt(i + 1) < 58 ? s.charCodeAt(i + 1) - 48 : s.charCodeAt(i + 1) - 87)\n }\n return ua\n}\n\n/**\n * Uint8Array/ArrayBuffer to hex String\n *\n * @param _ua {Uint8Array} or ArrayBuffer\n * @returns {String} Hex String\n */\nexport function ua2hex(_ua: Uint8Array | ArrayBuffer): string {\n let s = ''\n const ua = new Uint8Array(_ua)\n for (let i = 0; i < ua.length; i++) {\n const hhb = (ua[i] & 0xf0) >> 4\n const lhb = ua[i] & 0x0f\n s += String.fromCharCode(hhb > 9 ? hhb + 87 : hhb + 48)\n s += String.fromCharCode(lhb > 9 ? lhb + 87 : lhb + 48)\n }\n\n return s\n}\n\nexport function b64_2uas(s: string): Array<Uint8Array> {\n const sliceSize = 1024\n const byteCharacters = a2b(s)\n const bytesLength = byteCharacters.length\n const slicesCount = Math.ceil(bytesLength / sliceSize)\n const byteArrays = new Array(slicesCount)\n\n for (let sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {\n const begin = sliceIndex * sliceSize\n const end = Math.min(begin + sliceSize, bytesLength)\n\n const bytes = new Array(end - begin)\n for (let offset = begin, i = 0; offset < end; ++i, ++offset) {\n bytes[i] = byteCharacters[offset].charCodeAt(0)\n }\n byteArrays[sliceIndex] = new Uint8Array(bytes)\n }\n return byteArrays\n}\n\nexport function ua2b64Url(ua: Uint8Array | ArrayBuffer): string {\n return ua2b64(ua).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '')\n}\n\nexport function b64Url2ua(ua: string): ArrayBuffer {\n return b64_2ua(ua.replace(/-/g, '+').replace(/_/g, '/').replace(/=/g, '') + (ua.length % 4 === 3 ? '=' : ua.length % 4 === 2 ? '==' : ''))\n}\n\nexport function hex2string(hexStr: string): string {\n return ua2string(hex2ua(hexStr))\n}\n\nexport function string2hex(text: string): string {\n return ua2hex(string2ua(text))\n}\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export declare function notConcurrent<T>(concurrencyMap: {
|
|
2
|
+
[key: string]: PromiseLike<T>;
|
|
3
|
+
}, key: string, proc: () => PromiseLike<T>): PromiseLike<T>;
|
|
4
|
+
export declare function jwk2pkcs8(jwk: any): string;
|
|
5
|
+
export declare function jwk2spki(jwk: any): string;
|
|
6
|
+
export declare function spkiToJwk(buf: Uint8Array): {
|
|
7
|
+
kty: string;
|
|
8
|
+
alg: string;
|
|
9
|
+
n: string;
|
|
10
|
+
e: string;
|
|
11
|
+
ext: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function pkcs8ToJwk(buf: Uint8Array | ArrayBuffer): {
|
|
14
|
+
kty: string;
|
|
15
|
+
n: string;
|
|
16
|
+
e: string;
|
|
17
|
+
d: string;
|
|
18
|
+
p: string;
|
|
19
|
+
q: string;
|
|
20
|
+
dp: string;
|
|
21
|
+
dq: string;
|
|
22
|
+
qi: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Provide a view over the given Uint8Array where any trailing null bytes at
|
|
26
|
+
* the end are truncated.
|
|
27
|
+
*
|
|
28
|
+
* This can be used to ignore null bytes at the end of a padded UTF-8 string
|
|
29
|
+
* without needing to copy that string, assuming code point U+0000 is encoded
|
|
30
|
+
* in one null byte according to standards rather than in a multi-byte
|
|
31
|
+
* overlong form.
|
|
32
|
+
*/
|
|
33
|
+
export declare function truncateTrailingNulls(a: Uint8Array): Uint8Array;
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
* @param buffer1 {Uint8Array}
|
|
37
|
+
* @param buffer2{ Uint8Array}
|
|
38
|
+
* @returns {ArrayBuffer}
|
|
39
|
+
*/
|
|
40
|
+
export declare function appendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer;
|
|
41
|
+
export declare function after(d1: number | null | undefined, d2: number | null | undefined): boolean;
|
|
42
|
+
export declare function before(d1: number | null | undefined, d2: number | null | undefined): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Encrypt object graph recursively
|
|
45
|
+
*
|
|
46
|
+
* @param obj the object to encrypt
|
|
47
|
+
* @param cryptor the cryptor function (returns a promise)
|
|
48
|
+
* @param keys the keys to be crypted: ex for a Patient ['note', 'addresses.*.["street", "houseNumber", "telecoms.*.telecomNumber"]']
|
|
49
|
+
*/
|
|
50
|
+
export declare function crypt(obj: any, cryptor: (obj: {
|
|
51
|
+
[key: string]: string;
|
|
52
|
+
}) => Promise<ArrayBuffer>, keys: Array<string>): Promise<any>;
|
|
53
|
+
/**
|
|
54
|
+
* Decrypt object graph recursively
|
|
55
|
+
*
|
|
56
|
+
* @param obj the object to encrypt
|
|
57
|
+
* @param decryptor the decryptor function (returns a promise)
|
|
58
|
+
*/
|
|
59
|
+
export declare function decrypt(obj: any, decryptor: (obj: Uint8Array) => Promise<{
|
|
60
|
+
[key: string]: string;
|
|
61
|
+
}>): Promise<any>;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.decrypt = exports.crypt = exports.before = exports.after = exports.appendBuffer = exports.truncateTrailingNulls = exports.pkcs8ToJwk = exports.spkiToJwk = exports.jwk2spki = exports.jwk2pkcs8 = exports.notConcurrent = void 0;
|
|
13
|
+
const mm = require("moment");
|
|
14
|
+
const _ = require("lodash");
|
|
15
|
+
const binary_utils_1 = require("../utils/binary-utils");
|
|
16
|
+
const asn1_packer_1 = require("./asn1-packer");
|
|
17
|
+
const asn1_parser_1 = require("./asn1-parser");
|
|
18
|
+
function notConcurrent(concurrencyMap, key, proc) {
|
|
19
|
+
const inFlight = concurrencyMap[key];
|
|
20
|
+
if (!inFlight) {
|
|
21
|
+
return (concurrencyMap[key] = (() => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
try {
|
|
23
|
+
return yield proc();
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
delete concurrencyMap[key];
|
|
27
|
+
}
|
|
28
|
+
}))());
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
return concurrencyMap[key].then(() => notConcurrent(concurrencyMap, key, proc));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.notConcurrent = notConcurrent;
|
|
35
|
+
function jwk2pkcs8(jwk) {
|
|
36
|
+
return (0, asn1_packer_1.pack)([
|
|
37
|
+
0x30,
|
|
38
|
+
[
|
|
39
|
+
[0x02, '00'],
|
|
40
|
+
[0x30, [[0x06, '2a864886f70d010101'], [0x05]]],
|
|
41
|
+
[
|
|
42
|
+
0x04,
|
|
43
|
+
[
|
|
44
|
+
[
|
|
45
|
+
0x30,
|
|
46
|
+
[
|
|
47
|
+
[0x02, '00'],
|
|
48
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.n))],
|
|
49
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.e))],
|
|
50
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.d))],
|
|
51
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.p))],
|
|
52
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.q))],
|
|
53
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.dp))],
|
|
54
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.dq))],
|
|
55
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.qi))],
|
|
56
|
+
],
|
|
57
|
+
],
|
|
58
|
+
],
|
|
59
|
+
],
|
|
60
|
+
],
|
|
61
|
+
]);
|
|
62
|
+
}
|
|
63
|
+
exports.jwk2pkcs8 = jwk2pkcs8;
|
|
64
|
+
function jwk2spki(jwk) {
|
|
65
|
+
return (0, asn1_packer_1.pack)([
|
|
66
|
+
0x30,
|
|
67
|
+
[
|
|
68
|
+
[0x30, [[0x06, '2a864886f70d010101'], [0x05]]],
|
|
69
|
+
[
|
|
70
|
+
0x03,
|
|
71
|
+
[
|
|
72
|
+
[
|
|
73
|
+
0x30,
|
|
74
|
+
[
|
|
75
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.n))],
|
|
76
|
+
[0x02, (0, binary_utils_1.ua2hex)((0, binary_utils_1.b64Url2ua)(jwk.e))],
|
|
77
|
+
],
|
|
78
|
+
],
|
|
79
|
+
],
|
|
80
|
+
],
|
|
81
|
+
],
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
exports.jwk2spki = jwk2spki;
|
|
85
|
+
function spkiToJwk(buf) {
|
|
86
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
|
|
87
|
+
const asn1 = (0, asn1_parser_1.parseAsn1)(new Uint8Array(buf));
|
|
88
|
+
var modulus = undefined;
|
|
89
|
+
var exponent = undefined;
|
|
90
|
+
if (asn1.type === 0x30 &&
|
|
91
|
+
((_b = (_a = asn1.children) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) === 0x30 &&
|
|
92
|
+
((_f = (_e = (_d = (_c = asn1.children) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.children) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.type) === 0x06 &&
|
|
93
|
+
(0, binary_utils_1.ua2hex)((_l = (_k = (_j = (_h = (_g = asn1.children) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.children) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : new Uint8Array(0)) === '2a864886f70d010101') {
|
|
94
|
+
modulus = (_s = (_r = (_q = (_p = (_o = (_m = asn1.children) === null || _m === void 0 ? void 0 : _m[1]) === null || _o === void 0 ? void 0 : _o.children) === null || _p === void 0 ? void 0 : _p[0]) === null || _q === void 0 ? void 0 : _q.children) === null || _r === void 0 ? void 0 : _r[0]) === null || _s === void 0 ? void 0 : _s.value;
|
|
95
|
+
exponent = (_y = (_x = (_w = (_v = (_u = (_t = asn1.children) === null || _t === void 0 ? void 0 : _t[1]) === null || _u === void 0 ? void 0 : _u.children) === null || _v === void 0 ? void 0 : _v[0]) === null || _w === void 0 ? void 0 : _w.children) === null || _x === void 0 ? void 0 : _x[1]) === null || _y === void 0 ? void 0 : _y.value;
|
|
96
|
+
}
|
|
97
|
+
else if (asn1.type === 0x30 && ((_0 = (_z = asn1.children) === null || _z === void 0 ? void 0 : _z[0]) === null || _0 === void 0 ? void 0 : _0.type) === 0x02 && ((_2 = (_1 = asn1.children) === null || _1 === void 0 ? void 0 : _1[1]) === null || _2 === void 0 ? void 0 : _2.type) === 0x02) {
|
|
98
|
+
modulus = (_4 = (_3 = asn1.children) === null || _3 === void 0 ? void 0 : _3[0]) === null || _4 === void 0 ? void 0 : _4.value;
|
|
99
|
+
exponent = (_6 = (_5 = asn1.children) === null || _5 === void 0 ? void 0 : _5[1]) === null || _6 === void 0 ? void 0 : _6.value;
|
|
100
|
+
}
|
|
101
|
+
if (!modulus || !exponent) {
|
|
102
|
+
throw new Error('Invalid spki format');
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
kty: 'RSA',
|
|
106
|
+
alg: 'RSA-OAEP',
|
|
107
|
+
ext: true,
|
|
108
|
+
n: (0, binary_utils_1.ua2b64Url)(minimalRep(modulus)),
|
|
109
|
+
e: (0, binary_utils_1.ua2b64Url)(minimalRep(exponent)),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
exports.spkiToJwk = spkiToJwk;
|
|
113
|
+
function pkcs8ToJwk(buf) {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
const parsed = (0, asn1_parser_1.parseAsn1)(new Uint8Array(buf));
|
|
116
|
+
const seq = ((_a = parsed.children) === null || _a === void 0 ? void 0 : _a.length) === 3 && parsed.children[2].type === 0x04 && ((_b = parsed.children[2].children) === null || _b === void 0 ? void 0 : _b.length) === 1
|
|
117
|
+
? parsed.children[2].children[0]
|
|
118
|
+
: parsed;
|
|
119
|
+
return {
|
|
120
|
+
kty: 'RSA',
|
|
121
|
+
n: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[1].value)),
|
|
122
|
+
e: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[2].value)),
|
|
123
|
+
d: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[3].value)),
|
|
124
|
+
p: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[4].value)),
|
|
125
|
+
q: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[5].value)),
|
|
126
|
+
dp: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[6].value)),
|
|
127
|
+
dq: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[7].value)),
|
|
128
|
+
qi: (0, binary_utils_1.ua2b64Url)(minimalRep(seq.children[8].value)),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
exports.pkcs8ToJwk = pkcs8ToJwk;
|
|
132
|
+
function minimalRep(b) {
|
|
133
|
+
let i = 0;
|
|
134
|
+
while (b[i] === 0) {
|
|
135
|
+
i++;
|
|
136
|
+
}
|
|
137
|
+
return b.slice(i);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Provide a view over the given Uint8Array where any trailing null bytes at
|
|
141
|
+
* the end are truncated.
|
|
142
|
+
*
|
|
143
|
+
* This can be used to ignore null bytes at the end of a padded UTF-8 string
|
|
144
|
+
* without needing to copy that string, assuming code point U+0000 is encoded
|
|
145
|
+
* in one null byte according to standards rather than in a multi-byte
|
|
146
|
+
* overlong form.
|
|
147
|
+
*/
|
|
148
|
+
function truncateTrailingNulls(a) {
|
|
149
|
+
let end = a.byteLength - 1;
|
|
150
|
+
while (a[end] === 0 && end >= 0) {
|
|
151
|
+
end--;
|
|
152
|
+
}
|
|
153
|
+
// end is now either the last non-null position in a or -1; in the latter
|
|
154
|
+
// case the returned array will have length 0.
|
|
155
|
+
return a.subarray(0, end + 1);
|
|
156
|
+
}
|
|
157
|
+
exports.truncateTrailingNulls = truncateTrailingNulls;
|
|
158
|
+
/**
|
|
159
|
+
*
|
|
160
|
+
* @param buffer1 {Uint8Array}
|
|
161
|
+
* @param buffer2{ Uint8Array}
|
|
162
|
+
* @returns {ArrayBuffer}
|
|
163
|
+
*/
|
|
164
|
+
function appendBuffer(buffer1, buffer2) {
|
|
165
|
+
const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
|
|
166
|
+
tmp.set(new Uint8Array(buffer1), 0);
|
|
167
|
+
tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
|
|
168
|
+
return tmp.buffer;
|
|
169
|
+
}
|
|
170
|
+
exports.appendBuffer = appendBuffer;
|
|
171
|
+
//Convenience methods for dates management
|
|
172
|
+
function after(d1, d2) {
|
|
173
|
+
return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1).isAfter(moment(d2));
|
|
174
|
+
}
|
|
175
|
+
exports.after = after;
|
|
176
|
+
function before(d1, d2) {
|
|
177
|
+
return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1).isBefore(moment(d2));
|
|
178
|
+
}
|
|
179
|
+
exports.before = before;
|
|
180
|
+
function moment(epochOrLongCalendar) {
|
|
181
|
+
if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {
|
|
185
|
+
return mm('' + epochOrLongCalendar, 'YYYYMMDD');
|
|
186
|
+
}
|
|
187
|
+
else if (epochOrLongCalendar >= 18000101000000) {
|
|
188
|
+
return mm('' + epochOrLongCalendar, 'YYYYMMDDHHmmss');
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
return mm(epochOrLongCalendar);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Encrypt object graph recursively
|
|
196
|
+
*
|
|
197
|
+
* @param obj the object to encrypt
|
|
198
|
+
* @param cryptor the cryptor function (returns a promise)
|
|
199
|
+
* @param keys the keys to be crypted: ex for a Patient ['note', 'addresses.*.["street", "houseNumber", "telecoms.*.telecomNumber"]']
|
|
200
|
+
*/
|
|
201
|
+
function crypt(obj, cryptor, keys) {
|
|
202
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
203
|
+
const subObj = _.pick(obj, keys.filter((k) => !k.includes('*')));
|
|
204
|
+
obj.encryptedSelf = (0, binary_utils_1.b2a)((0, binary_utils_1.ua2string)(yield cryptor(subObj)));
|
|
205
|
+
Object.keys(subObj).forEach((k) => delete obj[k]);
|
|
206
|
+
yield keys
|
|
207
|
+
.filter((k) => k.includes('*'))
|
|
208
|
+
.reduce((prev, k) => __awaiter(this, void 0, void 0, function* () {
|
|
209
|
+
yield prev;
|
|
210
|
+
const k1 = k.split('.*.')[0];
|
|
211
|
+
const k2 = k.substr(k1.length + 3);
|
|
212
|
+
const mapped = yield Promise.all((_.get(obj, k1) || []).map((so) => crypt(so, cryptor, k2.startsWith('[') ? JSON.parse(k2) : [k2])));
|
|
213
|
+
_.set(obj, k1, mapped);
|
|
214
|
+
}), Promise.resolve());
|
|
215
|
+
return obj;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
exports.crypt = crypt;
|
|
219
|
+
/**
|
|
220
|
+
* Decrypt object graph recursively
|
|
221
|
+
*
|
|
222
|
+
* @param obj the object to encrypt
|
|
223
|
+
* @param decryptor the decryptor function (returns a promise)
|
|
224
|
+
*/
|
|
225
|
+
function decrypt(obj, decryptor) {
|
|
226
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
yield Object.keys(obj).reduce((prev, k) => __awaiter(this, void 0, void 0, function* () {
|
|
228
|
+
yield prev;
|
|
229
|
+
if (Array.isArray(obj[k])) {
|
|
230
|
+
yield obj[k]
|
|
231
|
+
.filter((o) => typeof o === 'object' && o !== null)
|
|
232
|
+
.reduce((prev, so) => __awaiter(this, void 0, void 0, function* () {
|
|
233
|
+
yield prev;
|
|
234
|
+
yield decrypt(so, decryptor);
|
|
235
|
+
}), Promise.resolve());
|
|
236
|
+
}
|
|
237
|
+
}), Promise.resolve());
|
|
238
|
+
if (obj.encryptedSelf) {
|
|
239
|
+
Object.assign(obj, yield decryptor((0, binary_utils_1.string2ua)((0, binary_utils_1.a2b)(obj.encryptedSelf))));
|
|
240
|
+
}
|
|
241
|
+
return obj;
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
exports.decrypt = decrypt;
|
|
245
|
+
//# sourceMappingURL=crypto-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto-utils.js","sourceRoot":"","sources":["../../../icc-x-api/utils/crypto-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAA4B;AAE5B,4BAA2B;AAC3B,wDAAoG;AACpG,+CAAoC;AACpC,+CAAyC;AAEzC,SAAgB,aAAa,CAAI,cAAiD,EAAE,GAAW,EAAE,IAA0B;IACzH,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,GAAS,EAAE;YACxC,IAAI;gBACF,OAAO,MAAM,IAAI,EAAE,CAAA;aACpB;oBAAS;gBACR,OAAO,cAAc,CAAC,GAAG,CAAC,CAAA;aAC3B;QACH,CAAC,CAAA,CAAC,EAAE,CAAC,CAAA;KACN;SAAM;QACL,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;KAChF;AACH,CAAC;AAbD,sCAaC;AAED,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,IAAA,kBAAI,EAAC;QACV,IAAI;QACJ;YACE,CAAC,IAAI,EAAE,IAAI,CAAC;YACZ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C;gBACE,IAAI;gBACJ;oBACE;wBACE,IAAI;wBACJ;4BACE,CAAC,IAAI,EAAE,IAAI,CAAC;4BACZ,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;4BACjC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;4BACjC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;yBAClC;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC;AA3BD,8BA2BC;AAED,SAAgB,QAAQ,CAAC,GAAQ;IAC/B,OAAO,IAAA,kBAAI,EAAC;QACV,IAAI;QACJ;YACE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C;gBACE,IAAI;gBACJ;oBACE;wBACE,IAAI;wBACJ;4BACE,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BAChC,CAAC,IAAI,EAAE,IAAA,qBAAM,EAAC,IAAA,wBAAS,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;yBACjC;qBACF;iBACF;aACF;SACF;KACF,CAAC,CAAA;AACJ,CAAC;AAnBD,4BAmBC;AAED,SAAgB,SAAS,CAAC,GAAe;;IACvC,MAAM,IAAI,GAAG,IAAA,uBAAS,EAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAE3C,IAAI,OAAO,GAA2B,SAAS,CAAA;IAC/C,IAAI,QAAQ,GAA2B,SAAS,CAAA;IAChD,IACE,IAAI,CAAC,IAAI,KAAK,IAAI;QAClB,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,IAAI,MAAK,IAAI;QACjC,CAAA,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,IAAI,MAAK,IAAI;QAChD,IAAA,qBAAM,EAAC,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,KAAK,mCAAI,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,oBAAoB,EAC9F;QACA,OAAO,GAAG,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA;QACjE,QAAQ,GAAG,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,QAAQ,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA;KACnE;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,IAAI,MAAK,IAAI,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,IAAI,MAAK,IAAI,EAAE;QACvG,OAAO,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA;QACnC,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,0CAAE,KAAK,CAAA;KACrC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACvC;IACD,OAAO;QACL,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,IAAI;QACT,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;KACnC,CAAA;AACH,CAAC;AA5BD,8BA4BC;AAED,SAAgB,UAAU,CAAC,GAA6B;;IACtD,MAAM,MAAM,GAAG,IAAA,uBAAS,EAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7C,MAAM,GAAG,GACP,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,MAAM,MAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAA,MAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAAE,MAAM,MAAK,CAAC;QAC5G,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,MAAM,CAAA;IACZ,OAAO;QACL,GAAG,EAAE,KAAK;QACV,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC9D,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC9D,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC9D,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC9D,CAAC,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC9D,EAAE,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC/D,EAAE,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;QAC/D,EAAE,EAAE,IAAA,wBAAS,EAAC,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC;KAChE,CAAA;AACH,CAAC;AAjBD,gCAiBC;AAED,SAAS,UAAU,CAAC,CAAa;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QACjB,CAAC,EAAE,CAAA;KACJ;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CAAC,CAAa;IACjD,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;IAC1B,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;QAC/B,GAAG,EAAE,CAAA;KACN;IACD,yEAAyE;IACzE,8CAA8C;IAC9C,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;AAC/B,CAAC;AARD,sDAQC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,OAAoB,EAAE,OAAoB;IACrE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACnE,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;IACpD,OAAO,GAAG,CAAC,MAAqB,CAAA;AAClC,CAAC;AALD,oCAKC;AAED,0CAA0C;AAC1C,SAAgB,KAAK,CAAC,EAA6B,EAAE,EAA6B;IAChF,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,CAAA;AAC/G,CAAC;AAFD,sBAEC;AAED,SAAgB,MAAM,CAAC,EAA6B,EAAE,EAA6B;IACjF,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC,CAAA;AAChH,CAAC;AAFD,wBAEC;AAED,SAAS,MAAM,CAAC,mBAA2B;IACzC,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,KAAK,CAAC,EAAE;QACrD,OAAO,IAAI,CAAA;KACZ;IACD,IAAI,mBAAmB,IAAI,QAAQ,IAAI,mBAAmB,GAAG,QAAQ,EAAE;QACrE,OAAO,EAAE,CAAC,EAAE,GAAG,mBAAmB,EAAE,UAAU,CAAC,CAAA;KAChD;SAAM,IAAI,mBAAmB,IAAI,cAAc,EAAE;QAChD,OAAO,EAAE,CAAC,EAAE,GAAG,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;KACtD;SAAM;QACL,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAA;KAC/B;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAsB,KAAK,CAAC,GAAQ,EAAE,OAAiE,EAAE,IAAmB;;QAC1H,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CACnB,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACrC,CAAA;QACD,GAAG,CAAC,aAAa,GAAG,IAAA,kBAAG,EAAC,IAAA,wBAAS,EAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAEjD,MAAM,IAAI;aACP,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC9B,MAAM,CAAC,CAAO,IAAmB,EAAE,CAAM,EAAE,EAAE;YAC5C,MAAM,IAAI,CAAA;YACV,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YAElC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YACzI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QACxB,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAEvB,OAAO,GAAG,CAAA;IACZ,CAAC;CAAA;AApBD,sBAoBC;AAED;;;;;GAKG;AACH,SAAsB,OAAO,CAAC,GAAQ,EAAE,SAAkE;;QACxG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAO,IAAmB,EAAE,CAAM,EAAE,EAAE;YAClE,MAAM,IAAI,CAAA;YACV,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzB,MAAO,GAAG,CAAC,CAAC,CAAgB;qBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;qBAClD,MAAM,CAAC,CAAO,IAAmB,EAAE,EAAO,EAAE,EAAE;oBAC7C,MAAM,IAAI,CAAA;oBACV,MAAM,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;gBAC9B,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;aACxB;QACH,CAAC,CAAA,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QACrB,IAAI,GAAG,CAAC,aAAa,EAAE;YACrB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC,IAAA,wBAAS,EAAC,IAAA,kBAAG,EAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;SACvE;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CAAA;AAhBD,0BAgBC","sourcesContent":["import * as mm from 'moment'\nimport { Moment } from 'moment'\nimport * as _ from 'lodash'\nimport { a2b, b2a, b64Url2ua, string2ua, ua2b64Url, ua2hex, ua2string } from '../utils/binary-utils'\nimport { pack } from './asn1-packer'\nimport { parseAsn1 } from './asn1-parser'\n\nexport function notConcurrent<T>(concurrencyMap: { [key: string]: PromiseLike<T> }, key: string, proc: () => PromiseLike<T>): PromiseLike<T> {\n const inFlight = concurrencyMap[key]\n if (!inFlight) {\n return (concurrencyMap[key] = (async () => {\n try {\n return await proc()\n } finally {\n delete concurrencyMap[key]\n }\n })())\n } else {\n return concurrencyMap[key].then(() => notConcurrent(concurrencyMap, key, proc))\n }\n}\n\nexport function jwk2pkcs8(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x02, '00'],\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]],\n [\n 0x04,\n [\n [\n 0x30,\n [\n [0x02, '00'],\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n [0x02, ua2hex(b64Url2ua(jwk.d))],\n [0x02, ua2hex(b64Url2ua(jwk.p))],\n [0x02, ua2hex(b64Url2ua(jwk.q))],\n [0x02, ua2hex(b64Url2ua(jwk.dp))],\n [0x02, ua2hex(b64Url2ua(jwk.dq))],\n [0x02, ua2hex(b64Url2ua(jwk.qi))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function jwk2spki(jwk: any): string {\n return pack([\n 0x30,\n [\n [0x30, [[0x06, '2a864886f70d010101'], [0x05]]],\n [\n 0x03,\n [\n [\n 0x30,\n [\n [0x02, ua2hex(b64Url2ua(jwk.n))],\n [0x02, ua2hex(b64Url2ua(jwk.e))],\n ],\n ],\n ],\n ],\n ],\n ])\n}\n\nexport function spkiToJwk(buf: Uint8Array): { kty: string; alg: string; n: string; e: string; ext: boolean } {\n const asn1 = parseAsn1(new Uint8Array(buf))\n\n var modulus: Uint8Array | undefined = undefined\n var exponent: Uint8Array | undefined = undefined\n if (\n asn1.type === 0x30 &&\n asn1.children?.[0]?.type === 0x30 &&\n asn1.children?.[0]?.children?.[0]?.type === 0x06 &&\n ua2hex(asn1.children?.[0]?.children?.[0]?.value ?? new Uint8Array(0)) === '2a864886f70d010101'\n ) {\n modulus = asn1.children?.[1]?.children?.[0]?.children?.[0]?.value\n exponent = asn1.children?.[1]?.children?.[0]?.children?.[1]?.value\n } else if (asn1.type === 0x30 && asn1.children?.[0]?.type === 0x02 && asn1.children?.[1]?.type === 0x02) {\n modulus = asn1.children?.[0]?.value\n exponent = asn1.children?.[1]?.value\n }\n\n if (!modulus || !exponent) {\n throw new Error('Invalid spki format')\n }\n return {\n kty: 'RSA',\n alg: 'RSA-OAEP',\n ext: true,\n n: ua2b64Url(minimalRep(modulus)),\n e: ua2b64Url(minimalRep(exponent)),\n }\n}\n\nexport function pkcs8ToJwk(buf: Uint8Array | ArrayBuffer) {\n const parsed = parseAsn1(new Uint8Array(buf))\n const seq =\n parsed.children?.length === 3 && parsed.children[2].type === 0x04 && parsed.children[2].children?.length === 1\n ? parsed.children[2].children[0]\n : parsed\n return {\n kty: 'RSA',\n n: ua2b64Url(minimalRep(seq.children![1].value as Uint8Array)),\n e: ua2b64Url(minimalRep(seq.children![2].value as Uint8Array)),\n d: ua2b64Url(minimalRep(seq.children![3].value as Uint8Array)),\n p: ua2b64Url(minimalRep(seq.children![4].value as Uint8Array)),\n q: ua2b64Url(minimalRep(seq.children![5].value as Uint8Array)),\n dp: ua2b64Url(minimalRep(seq.children![6].value as Uint8Array)),\n dq: ua2b64Url(minimalRep(seq.children![7].value as Uint8Array)),\n qi: ua2b64Url(minimalRep(seq.children![8].value as Uint8Array)),\n }\n}\n\nfunction minimalRep(b: Uint8Array) {\n let i = 0\n while (b[i] === 0) {\n i++\n }\n return b.slice(i)\n}\n\n/**\n * Provide a view over the given Uint8Array where any trailing null bytes at\n * the end are truncated.\n *\n * This can be used to ignore null bytes at the end of a padded UTF-8 string\n * without needing to copy that string, assuming code point U+0000 is encoded\n * in one null byte according to standards rather than in a multi-byte\n * overlong form.\n */\nexport function truncateTrailingNulls(a: Uint8Array) {\n let end = a.byteLength - 1\n while (a[end] === 0 && end >= 0) {\n end--\n }\n // end is now either the last non-null position in a or -1; in the latter\n // case the returned array will have length 0.\n return a.subarray(0, end + 1)\n}\n\n/**\n *\n * @param buffer1 {Uint8Array}\n * @param buffer2{ Uint8Array}\n * @returns {ArrayBuffer}\n */\nexport function appendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer {\n const tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength)\n tmp.set(new Uint8Array(buffer1), 0)\n tmp.set(new Uint8Array(buffer2), buffer1.byteLength)\n return tmp.buffer as ArrayBuffer\n}\n\n//Convenience methods for dates management\nexport function after(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isAfter(moment(d2)!)\n}\n\nexport function before(d1: number | null | undefined, d2: number | null | undefined): boolean {\n return d1 === null || d2 === null || d1 === undefined || d2 === undefined || moment(d1)!.isBefore(moment(d2)!)\n}\n\nfunction moment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return mm('' + epochOrLongCalendar, 'YYYYMMDDHHmmss')\n } else {\n return mm(epochOrLongCalendar)\n }\n}\n\n/**\n * Encrypt object graph recursively\n *\n * @param obj the object to encrypt\n * @param cryptor the cryptor function (returns a promise)\n * @param keys the keys to be crypted: ex for a Patient ['note', 'addresses.*.[\"street\", \"houseNumber\", \"telecoms.*.telecomNumber\"]']\n */\nexport async function crypt(obj: any, cryptor: (obj: { [key: string]: string }) => Promise<ArrayBuffer>, keys: Array<string>) {\n const subObj = _.pick(\n obj,\n keys.filter((k) => !k.includes('*'))\n )\n obj.encryptedSelf = b2a(ua2string(await cryptor(subObj)))\n Object.keys(subObj).forEach((k) => delete obj[k])\n\n await keys\n .filter((k) => k.includes('*'))\n .reduce(async (prev: Promise<void>, k: any) => {\n await prev\n const k1 = k.split('.*.')[0]\n const k2 = k.substr(k1.length + 3)\n\n const mapped = await Promise.all((_.get(obj, k1) || []).map((so: any) => crypt(so, cryptor, k2.startsWith('[') ? JSON.parse(k2) : [k2])))\n _.set(obj, k1, mapped)\n }, Promise.resolve())\n\n return obj\n}\n\n/**\n * Decrypt object graph recursively\n *\n * @param obj the object to encrypt\n * @param decryptor the decryptor function (returns a promise)\n */\nexport async function decrypt(obj: any, decryptor: (obj: Uint8Array) => Promise<{ [key: string]: string }>) {\n await Object.keys(obj).reduce(async (prev: Promise<void>, k: any) => {\n await prev\n if (Array.isArray(obj[k])) {\n await (obj[k] as Array<any>)\n .filter((o) => typeof o === 'object' && o !== null)\n .reduce(async (prev: Promise<void>, so: any) => {\n await prev\n await decrypt(so, decryptor)\n }, Promise.resolve())\n }\n }, Promise.resolve())\n if (obj.encryptedSelf) {\n Object.assign(obj, await decryptor(string2ua(a2b(obj.encryptedSelf))))\n }\n return obj\n}\n"]}
|
|
@@ -78,16 +78,16 @@ export function phoneNumberFormat(phoneNumber: string): string {
|
|
|
78
78
|
}
|
|
79
79
|
*/
|
|
80
80
|
function phoneNumberValidate(phoneNumber) {
|
|
81
|
-
return libphonenumber_js_1.isValidNumber(phoneNumber);
|
|
81
|
+
return (0, libphonenumber_js_1.isValidNumber)(phoneNumber);
|
|
82
82
|
}
|
|
83
83
|
exports.phoneNumberValidate = phoneNumberValidate;
|
|
84
84
|
function phoneNumberFormat(phoneNumber) {
|
|
85
|
-
const parsedPhoneNumber = libphonenumber_js_1.parseNumber(phoneNumber, DEFAULT_COUNTRY);
|
|
85
|
+
const parsedPhoneNumber = (0, libphonenumber_js_1.parseNumber)(phoneNumber, DEFAULT_COUNTRY);
|
|
86
86
|
if (_.isEmpty(parsedPhoneNumber)) {
|
|
87
87
|
// The number is not valid, so we leave the input string as-is.
|
|
88
88
|
return phoneNumber;
|
|
89
89
|
}
|
|
90
|
-
return libphonenumber_js_1.formatNumber(parsedPhoneNumber, 'International');
|
|
90
|
+
return (0, libphonenumber_js_1.formatNumber)(parsedPhoneNumber, 'International');
|
|
91
91
|
}
|
|
92
92
|
exports.phoneNumberFormat = phoneNumberFormat;
|
|
93
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatting-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/formatting-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport { Moment } from 'moment'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return isValidNumber(phoneNumber)\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (_.isEmpty(parsedPhoneNumber)) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'International')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = _.padStart(dateNumber.toString(), 8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD000000').toDate() : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD').toDate() : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? moment(timeNumber.toString(), 'YYYYMMDDHHmmss').toDate() : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = _.padStart(moment(date).format('YYYYMMDD'), 8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(moment(date).format('YYYYMMDDHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return _.filter(_.map(params, (value, key) => (value ? key + '=' + value : undefined))).join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDDhhmmss')\n } else {\n return moment(epochOrLongCalendar)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"formatting-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/formatting-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseNumber, formatNumber, isValidNumber, ParsedNumber } from 'libphonenumber-js'\n\nimport * as moment from 'moment'\nimport * as _ from 'lodash'\nimport { Moment } from 'moment'\n\n// TODO: move this to env.js?\nconst DEFAULT_COUNTRY = 'BE'\n\nexport const nihiiRegExp = new RegExp('^(\\\\d{1})(\\\\d{5})(\\\\d{2})(\\\\d{3})$')\nexport const ssinRegExp = new RegExp('^(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})$')\nexport const ibanRegExp = new RegExp('^(\\\\d{4})(\\\\d{4})(\\\\d{4})(\\\\d{4})$')\n\nconst patterns = {\n IBAN: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n IBANBE: (iban: string) => /^BE\\d{14}$/.test(iban) && isValidIBAN(iban),\n}\n\n//http://ht5ifv.serprest.pt/extensions/tools/IBAN/\nexport function isValidIBAN(iban: string) {\n //This function check if the checksum if correct\n iban = iban.replace(/^(.{4})(.*)$/, '$2$1') //Move the first 4 chars from left to the right\n const fun = (e: string) => (e.charCodeAt(0) - 'A'.charCodeAt(0) + 10).toString()\n iban = iban.replace(/[A-Z]/g, fun) //Convert A-Z to 10-25\n let $sum = 0\n let $ei = 1 //First exponent\n for (let $i = iban.length - 1; $i >= 0; $i--) {\n $sum += $ei * parseInt(iban.charAt($i), 10) //multiply the digit by it's exponent\n $ei = ($ei * 10) % 97 //compute next base 10 exponent in modulus 97\n }\n return $sum % 97 === 1\n}\n\nexport function ibanValidate(iban: string) {\n if (iban.startsWith('BE')) {\n return patterns.IBANBE(iban)\n } else {\n return patterns.IBAN(iban)\n }\n}\n\nexport function ibanFormat(iban: string): string {\n return iban.replace(ibanRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiFormat(nihii: string): string {\n return nihii.replace(nihiiRegExp, '$1 $2 $3 $4')\n}\n\nexport function nihiiValidate(nihii: string): boolean {\n return !!nihii.match(nihiiRegExp)\n}\n\nexport function ssinFormat(ssin: string): string {\n return ssin.replace(ssinRegExp, '$1 $2 $3 $4 $5')\n}\n\nexport function ssinValidate(ssin: string): boolean {\n return !!ssin.match(ssinRegExp)\n}\n\n/* Alternate lib free version\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return (\n !!phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/) ||\n !!phoneNumber.match(/(0[1-9][0-9]*)([- /.]*([0-9]+))+/)\n )\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n let match = phoneNumber.match(/(?:\\+|00)([1-9][0-9]{1-2})([- /.]*([0-9]+))+/)\n if (match) {\n return `+${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n match = phoneNumber.match(/0([1-9][0-9]*)([- /.]*([0-9]+))+/)\n if (match) {\n return `+32 ${match[1]} ${match[2].replace(/[- /.]/g, \" \")}`.replace(/ /g, \" \")\n }\n return phoneNumber\n}\n*/\n\nexport function phoneNumberValidate(phoneNumber: string): boolean {\n return isValidNumber(phoneNumber)\n}\n\nexport function phoneNumberFormat(phoneNumber: string): string {\n const parsedPhoneNumber = parseNumber(phoneNumber, DEFAULT_COUNTRY) as ParsedNumber\n if (_.isEmpty(parsedPhoneNumber)) {\n // The number is not valid, so we leave the input string as-is.\n return phoneNumber\n }\n return formatNumber(parsedPhoneNumber, 'International')\n}\n\n/**\n * Converts a backend date number (e.g., patient birth date) into a Date object.\n * @param dateNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @throws Error if it is impossible to create a date from the number, other if dateNumber is negative.\n * @see #dateEncode\n * @see #timeDecode\n */\nexport function dateDecode(dateNumber: number): Date | undefined {\n if (!dateNumber) {\n return undefined\n }\n\n if (dateNumber < 0) {\n throw new Error(\"We don't decode negative dates. Please make sure you have valid data.\")\n }\n const dateNumberStr: string = _.padStart(dateNumber.toString(), 8, '19700101')\n if (dateNumberStr.length > 8) {\n if (dateNumberStr.endsWith('000000')) {\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD000000').toDate() : undefined\n }\n\n throw Error(\"Decoded date is over year 9999. We can't format it properly.\")\n }\n return dateNumber ? moment(dateNumberStr, 'YYYYMMDD').toDate() : undefined\n}\n\n/**\n * Converts a backend time number (e.g., health element openingDate) into a Date object.\n * @param timeNumber a YYYYMMDD date number from the backend\n * @return a Date object\n * @see #timeEncode\n * @see #dateDecode\n */\nexport function timeDecode(timeNumber: number): Date | undefined {\n return timeNumber ? moment(timeNumber.toString(), 'YYYYMMDDHHmmss').toDate() : undefined\n}\n\n/**\n * Encodes a Date object into a backend date number (e.g., patient birth date).\n * @param date a Date object\n * @return a YYYYMMDD date number for the backend\n * @see #dateDecode\n * @see #timeEncode\n */\nexport function dateEncode(date: Date): number | undefined {\n const dateStr = _.padStart(moment(date).format('YYYYMMDD'), 8, '19700101')\n // date is null if the field is not set\n return date ? Number(dateStr) : undefined\n}\n\n/**\n * Encodes a Date object into a backend time number (e.g., health element openingDate).\n * @param date a Date object\n * @return a YYYYMMDDHHmmss date number for the backend\n * @see #timeDecode\n * @see #dateEncode\n */\nexport function timeEncode(date: Date): number | undefined {\n return date ? Number(moment(date).format('YYYYMMDDHHmmss')) : undefined\n}\n\n/**\n * Formats a value and a physical unit into text.\n * @param value the numerical or string value to encode\n * @param unit the unit represented as a string (an empty string is also supported)\n */\nexport function unit(value: number | string, unit: string | null): string {\n unit = unit || ''\n let separator: string\n if (!unit || unit.startsWith('°')) {\n separator = ''\n } else {\n // including '%'\n separator = '\\xa0'\n }\n return value + separator + unit\n}\n\n/**\n * 0.1 + 0.2 = 0.30000000000000004. Use this function to be better at maths.\n * @param a number\n * @return the rounded number, two after the comma\n */\nexport function amount(value: number): number {\n return Number((value || 0).toFixed(2))\n}\n\n/**\n * A simple formatter to keep the logic across the app.\n * Input: 2.1 ; Output: 2.10€\n */\nexport function money(value: number): string {\n return [(value || 0).toFixed(2), '€'].join('')\n}\n\n/**\n * Transform a dictionary to a url params.\n * From { key1: value1, key2: value2, ... } returns key1=value1&key2=value2&...=...\n */\nexport function toUrlParams(params: { [key: string]: string }): string {\n return _.filter(_.map(params, (value, key) => (value ? key + '=' + value : undefined))).join('&')\n}\n\nexport function personName(person: { firstName?: string; lastName?: string }): string {\n return `${person.firstName || ''} ${person.lastName || ''}`.trim()\n}\n\nexport function personNameAbbrev(person: { firstName?: string; lastName?: string }): string {\n const firstName = person.firstName ? person.firstName[0] + '.' : undefined\n return personName({ ...person, firstName })\n}\n\nexport function toMoment(epochOrLongCalendar: number): Moment | null {\n if (!epochOrLongCalendar && epochOrLongCalendar !== 0) {\n return null\n }\n if (epochOrLongCalendar >= 18000101 && epochOrLongCalendar < 25400000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDD')\n } else if (epochOrLongCalendar >= 18000101000000) {\n return moment('' + epochOrLongCalendar, 'YYYYMMDDhhmmss')\n } else {\n return moment(epochOrLongCalendar)\n }\n}\n"]}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.also = void 0;
|
|
3
|
+
exports.fold = exports.also = void 0;
|
|
4
4
|
function also(value, lambda) {
|
|
5
5
|
lambda(value);
|
|
6
6
|
return value;
|
|
7
7
|
}
|
|
8
8
|
exports.also = also;
|
|
9
|
+
function fold(whereToFold, initial, operation) {
|
|
10
|
+
let accumulator = initial;
|
|
11
|
+
for (let i = 0; i < whereToFold.length; i++)
|
|
12
|
+
accumulator = operation(accumulator, whereToFold[i]);
|
|
13
|
+
return accumulator;
|
|
14
|
+
}
|
|
15
|
+
exports.fold = fold;
|
|
9
16
|
//# sourceMappingURL=functional-util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functional-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/functional-util.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI,CAAI,KAAQ,EAAE,MAAuB;IACvD,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,oBAGC","sourcesContent":["export function also<T>(value: T, lambda: (it: T) => void) {\n lambda(value)\n return value\n}\n"]}
|
|
1
|
+
{"version":3,"file":"functional-util.js","sourceRoot":"","sources":["../../../icc-x-api/utils/functional-util.ts"],"names":[],"mappings":";;;AAAA,SAAgB,IAAI,CAAI,KAAQ,EAAE,MAAuB;IACvD,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,oBAGC;AAED,SAAgB,IAAI,CAAO,WAAqB,EAAE,OAAU,EAAE,SAAoC;IAChG,IAAI,WAAW,GAAG,OAAO,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACjG,OAAO,WAAW,CAAA;AACpB,CAAC;AAJD,oBAIC","sourcesContent":["export function also<T>(value: T, lambda: (it: T) => void) {\n lambda(value)\n return value\n}\n\nexport function fold<T, R>(whereToFold: Array<T>, initial: R, operation: (acc: R, element: T) => R): R {\n let accumulator = initial\n for (let i = 0; i < whereToFold.length; i++) accumulator = operation(accumulator, whereToFold[i])\n return accumulator\n}\n"]}
|
package/icc-x-api/utils/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -12,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
17
|
__exportStar(require("./code-util"), exports);
|
|
14
18
|
__exportStar(require("./net-utils"), exports);
|
|
19
|
+
__exportStar(require("./crypto-utils"), exports);
|
|
15
20
|
__exportStar(require("./formatting-util"), exports);
|
|
16
21
|
__exportStar(require("./binary-utils"), exports);
|
|
17
22
|
__exportStar(require("./hcp-util"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../icc-x-api/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../icc-x-api/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,8CAA2B;AAC3B,iDAA8B;AAC9B,oDAAiC;AACjC,iDAA8B;AAC9B,6CAA0B;AAC1B,oDAAiC","sourcesContent":["export * from './code-util'\nexport * from './net-utils'\nexport * from './crypto-utils'\nexport * from './formatting-util'\nexport * from './binary-utils'\nexport * from './hcp-util'\nexport * from './functional-util'\n"]}
|
package/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,4CAAyB;AACzB,yDAAsC;AAEtC,oDAAiC;AACjC,8DAA2C;AAE3C,yCAAuC;AAA9B,0FAAA,GAAG,OAAA","sourcesContent":["export * from './icc-x-api'\nexport * from './icc-api'\nexport * from './icc-api/model/models'\n\nexport * from './icc-x-api/utils'\nexport * from './icc-x-api/filters/filters'\n\nexport { XHR } from './icc-api/api/XHR'\n"]}
|
package/node-compat.d.ts
CHANGED