@fluid-experimental/property-common 2.12.0 → 2.13.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.
- package/CHANGELOG.md +4 -0
- package/dist/guidUtils.js +0 -1
- package/dist/guidUtils.js.map +1 -1
- package/lib/guidUtils.js +0 -1
- package/lib/guidUtils.js.map +1 -1
- package/package.json +3 -3
- package/platform-dependent/CHANGELOG.md +4 -0
- package/platform-dependent/package.json +1 -1
- package/src/guidUtils.ts +1 -1
package/CHANGELOG.md
CHANGED
package/dist/guidUtils.js
CHANGED
|
@@ -221,7 +221,6 @@ const generateGUID = function (base64 = false) {
|
|
|
221
221
|
// by decoder, e.g. "+Q" and "+Z" result in the same decoding.
|
|
222
222
|
// The only characters with last 4 bits set to 0 are A, Q, g, w.
|
|
223
223
|
const reBase64 = /^[\w-]{21}[AQgw]$/;
|
|
224
|
-
// eslint-disable-next-line unicorn/no-unsafe-regex
|
|
225
224
|
const reBase16 = /^[\dA-Fa-f]{8}(?:-[\dA-Fa-f]{4}){3}-[\dA-Fa-f]{12}$/;
|
|
226
225
|
/**
|
|
227
226
|
* Routine used to check whether the given string is a valid GUID
|
package/dist/guidUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidUtils.js","sourceRoot":"","sources":["../src/guidUtils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,+BAA+B;AAE/B;;GAEG;AAEH,0DAAiC;AAEjC,8DAAkE;AAClE,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,OAAO,GAAG;IACf,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,aAAa,EAAE,KAAK;IAEpB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,OAAgB,EAAE,6BAAsC,KAAK;QACvE,6DAA6D;QAC7D,sDAAsD;QACtD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACvD,OAAO,CAAC,CAAC;QACV,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,IAAA,8CAAyB,EAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;gBACnB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;gBACpB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;gBAEpB,IAAI,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;IACF,CAAC;IAED;;OAEG;IACH,aAAa;QACZ,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;AAE/D;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,CAAC,MAAM,CAAC,CAAC;IACT,CAAC,MAAM,CAAC,CAAC;IACT,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,UAAU,CAAS;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,UACtB,YAAiD,EACjD,SAAkB,KAAK;IAEvB,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,mBAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,6BAA6B;QAC7B,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,gCAAgC;QAChC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAChF,EAAE,EACF,CAAC,CACD,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;AACF,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,UACtB,OAAe,EACf,SAAsB,IAAI,WAAW,CAAC,CAAC,CAAC;IAExC,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,mBAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,MAAM,GAAG,KAAK;IAC5C,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhC,qCAAqC;IACrC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,2FAA2F;AAC3F,8DAA8D;AAC9D,gEAAgE;AAChE,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,mDAAmD;AACnD,MAAM,QAAQ,GAAG,qDAAqD,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,UAC3B,SAAsB,EACtB,SAAsB,EACtB,SAAuB;IAEvB,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACP,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAC7B,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC5B,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAC7B,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAE7B,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE7E,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,QAAgB,EAAE,QAAgB,EAAE,MAAM,GAAG,KAAK;IAChF,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC9D,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,mCAAmC;AACnC,OAAO,CAAC,UAAU,EAAE,CAAC;AAErB,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;IAC3C,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;GAEG;AACU,QAAA,SAAS,GAAG;IACxB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,uBAAuB;IACvB,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,mBAAmB;CACnB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\n/**\n * @fileoverview Utility functions related to handling GUIDs\n */\n\nimport base64js from \"base64-js\";\n\nimport { generateRandomUInt32Array } from \"../platform-dependent\";\nconst UINT_32HASH_PRIME = 16777619;\n\n/**\n * Fast high quality 32 bit RNG for consistent GUID.\n *\n * Good \"randomness\" (distribution); Period is approximately equal to 3.11*10^37\n * Implementation was take from \"Numerical recipes. The Art of Scientific Computing.\", 3rd edition.\n * Page 357, algorithm name: Ranlim32\n */\nconst guidRNG = {\n\tu: 0,\n\tv: 0,\n\tw1: 0,\n\tw2: 0,\n\tisInitialized: false,\n\n\t/**\n\t * Initialize RNG.\n\t * This function need to be called once, before the first GUID gets created.\n\t *\n\t * @param in_seed - Optional 32-bit seed for GUID RNG.\n\t * If no seed is given, a combination of system's local time and `Math.random()` is used.\n\t * @param in_enforceReInitialization - Optionally enforce re-initialization with another seed.\n\t *\n\t * @returns The seed used to initialize the RNG;\n\t * If re-initialization is not enforced, a zero indicates that the RNG was not re-seeded.\n\t *\n\t * @alias property-common.initializeGUIDGenerator\n\t */\n\tinitialize(in_seed?: number, in_enforceReInitialization: boolean = false): number {\n\t\t// Quit if the RNG has already been initialized and we do not\n\t\t// want to enforce a re-initialization with a new seed\n\t\tif (this.isInitialized && !in_enforceReInitialization) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tthis.isInitialized = true;\n\n\t\t\tif (in_seed === undefined) {\n\t\t\t\tconst randomValues = generateRandomUInt32Array(4);\n\t\t\t\tthis.u = randomValues[0];\n\t\t\t\tthis.v = randomValues[1];\n\t\t\t\tthis.w1 = randomValues[2];\n\t\t\t\tthis.w2 = randomValues[3];\n\t\t\t} else {\n\t\t\t\tthis.v = 224461437;\n\t\t\t\tthis.w1 = 521288629;\n\t\t\t\tthis.w2 = 362436069;\n\n\t\t\t\tthis.u = in_seed ^ this.v;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t\tthis.v = this.u;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t},\n\n\t/**\n\t * @returns 32-bit random number based on the RNGs internal state\n\t */\n\tgenRandUInt32(): number {\n\t\tthis.u = multiply_uint32(this.u, 2891336453) + 1640531513;\n\t\tthis.v ^= this.v >>> 13;\n\t\tthis.v ^= this.v << 17;\n\t\tthis.v = ((this.v >>> 5) ^ this.v) >>> 0;\n\n\t\tthis.w1 = multiply_uint32(33378, this.w1 & 0xffff) + (this.w1 >>> 16);\n\t\tthis.w2 = multiply_uint32(57225, this.w2 & 0xffff) + (this.w2 >>> 16);\n\n\t\tlet x = this.u ^ (this.u << 9);\n\t\tx ^= x >>> 17;\n\t\tx ^= x << 6;\n\n\t\tlet y = this.w1 ^ (this.w1 << 17);\n\t\ty ^= y >>> 15;\n\t\ty ^= y << 5;\n\t\treturn (((x >>> 0) + this.v) ^ ((y >>> 0) + this.w2)) >>> 0;\n\t},\n};\n\n/**\n * Check if GUID is base64 based on the length\n * The length of base16 GUID is 36, base64 - 22\n *\n * @param GUID - Input GUID\n * @returns True if GUID is base64\n */\nconst isBase64 = (GUID: string): boolean => GUID.length === 22;\n\n/**\n * Allows for 32-bit integer multiplication with C-like semantics\n *\n * @param a - unsigned int32 value\n * @param b - unsigned int32 value\n * @returns The result of the unsigned integer multiplication.\n */\nfunction multiply_uint32(a: number, b: number): number {\n\tlet n = a;\n\tlet m = b;\n\n\tn >>>= 0;\n\tm >>>= 0;\n\tconst nlo = n & 0xffff;\n\treturn ((((n - nlo) * m) >>> 0) + nlo * m) >>> 0;\n}\n\n/**\n * Helper function to convert base64 encoding to url friendly format\n *\n * @param base64 - Base64 string\n *\n * @returns Url-friendly base64 encoding.\n */\nconst toUrlBase64 = (base64: string): string =>\n\tbase64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").split(\"=\")[0];\n\n/**\n * Helper function to recover padding of base64 encoding\n *\n * @param x - Base64 string\n *\n * @returns Padded base64 encoding.\n */\nconst toPaddedBase64 = function (x: string): string {\n\tlet base64 = x;\n\tconst padLength = 4 - (base64.length % 4);\n\tbase64 += \"=\".repeat(padLength);\n\treturn base64;\n};\n\n/**\n * Helper function to create a GUID string from an array with 32Bit values\n *\n * @param in_guidArray - Array with the 32 bit values\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst uint32x4ToGUID = function (\n\tin_guidArray: Uint32Array | Int32Array | number[],\n\tbase64: boolean = false,\n): string {\n\tif (base64) {\n\t\tconst intArray = new Uint32Array(in_guidArray);\n\t\tconst byteArray = new Uint8Array(intArray.buffer);\n\t\tconst base64guid = base64js.fromByteArray(byteArray);\n\t\t// return url-friendly base64\n\t\treturn toUrlBase64(base64guid);\n\t} else {\n\t\t// Convert to hexadecimal string\n\t\tlet str = \"\";\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst hex = in_guidArray[i].toString(16);\n\t\t\tstr += \"0\".repeat(8 - hex.length) + hex;\n\t\t}\n\t\treturn `${str.substr(0, 8)}-${str.substr(8, 4)}-${str.substr(12, 4)}-${str.substr(\n\t\t\t16,\n\t\t\t4,\n\t\t)}-${str.substr(20, 12)}`;\n\t}\n};\n\n/**\n * Convert GUID to four 32Bit values.\n *\n * @param in_guid - The GUID to convert\n * @param io_result - An optional array to write the result to.\n * If no array is given, a new one gets created.\n * @returns Four 32-bit values\n *\n */\nconst guidToUint32x4 = function (\n\tin_guid: string,\n\tresult: Uint32Array = new Uint32Array(4),\n): Uint32Array {\n\tif (isBase64(in_guid)) {\n\t\tconst GUID = toPaddedBase64(in_guid);\n\t\tconst bytes = base64js.toByteArray(GUID);\n\t\tconst intArray = new Uint32Array(bytes.buffer);\n\t\tresult.set(intArray);\n\t} else {\n\t\tresult[0] = parseInt(`0x${in_guid.substr(0, 8)}`, 16);\n\t\tresult[1] = parseInt(`0x${in_guid.substr(9, 4)}${in_guid.substr(14, 4)}`, 16);\n\t\tresult[2] = parseInt(`0x${in_guid.substr(19, 4)}${in_guid.substr(24, 4)}`, 16);\n\t\tresult[3] = parseInt(`0x${in_guid.substr(28, 8)}`, 16);\n\t}\n\treturn result;\n};\n\n/**\n * Convert base64 GUID into base16.\n *\n * @param in_guid - Base64 GUID to convert\n * @returns Base16 GUID\n *\n */\nconst base64Tobase16 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid));\n\n/**\n * Convert base16 into base64 GUID.\n *\n * @param in_guid - Base16 GUID to convert\n * @returns Base64 GUID\n *\n */\nconst base16ToBase64 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid), true);\n\n/**\n * Based on the boolean parameter generate either\n * a 128 bit base16 GUID with the following format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\n * or url-friendly base64 string GUID of length 22\n *\n * This function is *not* thread safe!\n *\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst generateGUID = function (base64 = false): string {\n\tconst rnds = new Uint32Array(4);\n\n\t// Random numbers for GUID (4x32 bit)\n\trnds[0] = guidRNG.genRandUInt32();\n\trnds[1] = guidRNG.genRandUInt32();\n\trnds[2] = guidRNG.genRandUInt32();\n\trnds[3] = guidRNG.genRandUInt32();\n\treturn uint32x4ToGUID(rnds, base64);\n};\n\n// The last character is checked this way because last 4 bits of 22nd character are ignored\n// by decoder, e.g. \"+Q\" and \"+Z\" result in the same decoding.\n// The only characters with last 4 bits set to 0 are A, Q, g, w.\nconst reBase64 = /^[\\w-]{21}[AQgw]$/;\n// eslint-disable-next-line unicorn/no-unsafe-regex\nconst reBase16 = /^[\\dA-Fa-f]{8}(?:-[\\dA-Fa-f]{4}){3}-[\\dA-Fa-f]{12}$/;\n\n/**\n * Routine used to check whether the given string is a valid GUID\n *\n * @param in_guid - The GUID to test.\n * @returns True if the parameter is a valid GUID, false otherwise.\n */\nconst isGUID = (in_guid: string) => reBase16.test(in_guid) || reBase64.test(in_guid);\n\n/**\n * Performs a hash combination operation on the two supplied Uint32 arrays of length 4 (using\n * a variant of the algorithm from boost::hash_combine\n *\n * @param in_array1 - First array\n * @param in_array2 - Second array\n * @returns New combined hash\n */\nconst hashCombine4xUint32 = function (\n\tin_array1: Uint32Array,\n\tin_array2: Uint32Array,\n\tio_result?: Uint32Array,\n): Uint32Array {\n\tlet accumulated = io_result;\n\tif (accumulated === undefined) {\n\t\taccumulated = new Uint32Array(in_array2);\n\t} else {\n\t\taccumulated[0] = in_array2[0];\n\t\taccumulated[1] = in_array2[1];\n\t\taccumulated[2] = in_array2[2];\n\t\taccumulated[3] = in_array2[3];\n\t}\n\n\taccumulated[0] += 0x9e3779b9;\n\taccumulated[1] += 0x638f227;\n\taccumulated[2] += 0x1aff2bad;\n\taccumulated[3] += 0x3a8f05c5;\n\n\taccumulated[0] += in_array1[3] << 6;\n\taccumulated[1] += in_array1[0] << 6;\n\taccumulated[2] += in_array1[1] << 6;\n\taccumulated[3] += in_array1[2] << 6;\n\n\taccumulated[0] += in_array1[2] >> 2;\n\taccumulated[1] += in_array1[3] >> 2;\n\taccumulated[2] += in_array1[0] >> 2;\n\taccumulated[3] += in_array1[1] >> 2;\n\n\taccumulated[0] = ((accumulated[0] ^ in_array1[1]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[1] = ((accumulated[1] ^ in_array1[2]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[2] = ((accumulated[2] ^ in_array1[3]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[3] = ((accumulated[3] ^ in_array1[0]) * UINT_32HASH_PRIME) >>> 0;\n\n\treturn accumulated;\n};\n\n/**\n * Takes two guids and generates a new derived GUID.\n *\n * @remarks Note: You should only use this helper function when you need only one combination.\n * Otherwise, it is more efficient to work on the uint8 arrays directly.\n *\n * @param in_guid1 - Input GUID\n * @param in_guid2 - Input GUID\n * @param base64 - Use base64 encoding instead of standart GUIDs\n * @returns Combined GUID\n */\nconst combineGuids = function (in_guid1: string, in_guid2: string, base64 = false): string {\n\tconst firstArray = guidToUint32x4(in_guid1);\n\tconst secondArray = guidToUint32x4(in_guid2);\n\tconst combined = hashCombine4xUint32(firstArray, secondArray);\n\treturn uint32x4ToGUID(combined, base64);\n};\n\n// Make sure the RNG is initialized\nguidRNG.initialize();\n\nconst initializeGUIDGenerator = (...args) => {\n\tguidRNG.initialize(...args);\n};\n\n/**\n * @internal\n */\nexport const GuidUtils = {\n\tuint32x4ToGUID,\n\tguidToUint32x4,\n\tbase64Tobase16,\n\tbase16ToBase64,\n\tinitializeGUIDGenerator,\n\tgenerateGUID,\n\tisGUID,\n\tcombineGuids,\n\thashCombine4xUint32,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"guidUtils.js","sourceRoot":"","sources":["../src/guidUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\n/**\n * @fileoverview Utility functions related to handling GUIDs\n */\n\nimport base64js from \"base64-js\";\n\nimport { generateRandomUInt32Array } from \"../platform-dependent\";\nconst UINT_32HASH_PRIME = 16777619;\n\n/**\n * Fast high quality 32 bit RNG for consistent GUID.\n *\n * Good \"randomness\" (distribution); Period is approximately equal to 3.11*10^37\n * Implementation was take from \"Numerical recipes. The Art of Scientific Computing.\", 3rd edition.\n * Page 357, algorithm name: Ranlim32\n */\nconst guidRNG = {\n\tu: 0,\n\tv: 0,\n\tw1: 0,\n\tw2: 0,\n\tisInitialized: false,\n\n\t/**\n\t * Initialize RNG.\n\t * This function need to be called once, before the first GUID gets created.\n\t *\n\t * @param in_seed - Optional 32-bit seed for GUID RNG.\n\t * If no seed is given, a combination of system's local time and `Math.random()` is used.\n\t * @param in_enforceReInitialization - Optionally enforce re-initialization with another seed.\n\t *\n\t * @returns The seed used to initialize the RNG;\n\t * If re-initialization is not enforced, a zero indicates that the RNG was not re-seeded.\n\t *\n\t * @alias property-common.initializeGUIDGenerator\n\t */\n\tinitialize(in_seed?: number, in_enforceReInitialization: boolean = false): number {\n\t\t// Quit if the RNG has already been initialized and we do not\n\t\t// want to enforce a re-initialization with a new seed\n\t\tif (this.isInitialized && !in_enforceReInitialization) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tthis.isInitialized = true;\n\n\t\t\tif (in_seed === undefined) {\n\t\t\t\tconst randomValues = generateRandomUInt32Array(4);\n\t\t\t\tthis.u = randomValues[0];\n\t\t\t\tthis.v = randomValues[1];\n\t\t\t\tthis.w1 = randomValues[2];\n\t\t\t\tthis.w2 = randomValues[3];\n\t\t\t} else {\n\t\t\t\tthis.v = 224461437;\n\t\t\t\tthis.w1 = 521288629;\n\t\t\t\tthis.w2 = 362436069;\n\n\t\t\t\tthis.u = in_seed ^ this.v;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t\tthis.v = this.u;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t},\n\n\t/**\n\t * @returns 32-bit random number based on the RNGs internal state\n\t */\n\tgenRandUInt32(): number {\n\t\tthis.u = multiply_uint32(this.u, 2891336453) + 1640531513;\n\t\tthis.v ^= this.v >>> 13;\n\t\tthis.v ^= this.v << 17;\n\t\tthis.v = ((this.v >>> 5) ^ this.v) >>> 0;\n\n\t\tthis.w1 = multiply_uint32(33378, this.w1 & 0xffff) + (this.w1 >>> 16);\n\t\tthis.w2 = multiply_uint32(57225, this.w2 & 0xffff) + (this.w2 >>> 16);\n\n\t\tlet x = this.u ^ (this.u << 9);\n\t\tx ^= x >>> 17;\n\t\tx ^= x << 6;\n\n\t\tlet y = this.w1 ^ (this.w1 << 17);\n\t\ty ^= y >>> 15;\n\t\ty ^= y << 5;\n\t\treturn (((x >>> 0) + this.v) ^ ((y >>> 0) + this.w2)) >>> 0;\n\t},\n};\n\n/**\n * Check if GUID is base64 based on the length\n * The length of base16 GUID is 36, base64 - 22\n *\n * @param GUID - Input GUID\n * @returns True if GUID is base64\n */\nconst isBase64 = (GUID: string): boolean => GUID.length === 22;\n\n/**\n * Allows for 32-bit integer multiplication with C-like semantics\n *\n * @param a - unsigned int32 value\n * @param b - unsigned int32 value\n * @returns The result of the unsigned integer multiplication.\n */\nfunction multiply_uint32(a: number, b: number): number {\n\tlet n = a;\n\tlet m = b;\n\n\tn >>>= 0;\n\tm >>>= 0;\n\tconst nlo = n & 0xffff;\n\treturn ((((n - nlo) * m) >>> 0) + nlo * m) >>> 0;\n}\n\n/**\n * Helper function to convert base64 encoding to url friendly format\n *\n * @param base64 - Base64 string\n *\n * @returns Url-friendly base64 encoding.\n */\nconst toUrlBase64 = (base64: string): string =>\n\tbase64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").split(\"=\")[0];\n\n/**\n * Helper function to recover padding of base64 encoding\n *\n * @param x - Base64 string\n *\n * @returns Padded base64 encoding.\n */\nconst toPaddedBase64 = function (x: string): string {\n\tlet base64 = x;\n\tconst padLength = 4 - (base64.length % 4);\n\tbase64 += \"=\".repeat(padLength);\n\treturn base64;\n};\n\n/**\n * Helper function to create a GUID string from an array with 32Bit values\n *\n * @param in_guidArray - Array with the 32 bit values\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst uint32x4ToGUID = function (\n\tin_guidArray: Uint32Array | Int32Array | number[],\n\tbase64: boolean = false,\n): string {\n\tif (base64) {\n\t\tconst intArray = new Uint32Array(in_guidArray);\n\t\tconst byteArray = new Uint8Array(intArray.buffer);\n\t\tconst base64guid = base64js.fromByteArray(byteArray);\n\t\t// return url-friendly base64\n\t\treturn toUrlBase64(base64guid);\n\t} else {\n\t\t// Convert to hexadecimal string\n\t\tlet str = \"\";\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst hex = in_guidArray[i].toString(16);\n\t\t\tstr += \"0\".repeat(8 - hex.length) + hex;\n\t\t}\n\t\treturn `${str.substr(0, 8)}-${str.substr(8, 4)}-${str.substr(12, 4)}-${str.substr(\n\t\t\t16,\n\t\t\t4,\n\t\t)}-${str.substr(20, 12)}`;\n\t}\n};\n\n/**\n * Convert GUID to four 32Bit values.\n *\n * @param in_guid - The GUID to convert\n * @param io_result - An optional array to write the result to.\n * If no array is given, a new one gets created.\n * @returns Four 32-bit values\n *\n */\nconst guidToUint32x4 = function (\n\tin_guid: string,\n\tresult: Uint32Array = new Uint32Array(4),\n): Uint32Array {\n\tif (isBase64(in_guid)) {\n\t\tconst GUID = toPaddedBase64(in_guid);\n\t\tconst bytes = base64js.toByteArray(GUID);\n\t\tconst intArray = new Uint32Array(bytes.buffer);\n\t\tresult.set(intArray);\n\t} else {\n\t\tresult[0] = parseInt(`0x${in_guid.substr(0, 8)}`, 16);\n\t\tresult[1] = parseInt(`0x${in_guid.substr(9, 4)}${in_guid.substr(14, 4)}`, 16);\n\t\tresult[2] = parseInt(`0x${in_guid.substr(19, 4)}${in_guid.substr(24, 4)}`, 16);\n\t\tresult[3] = parseInt(`0x${in_guid.substr(28, 8)}`, 16);\n\t}\n\treturn result;\n};\n\n/**\n * Convert base64 GUID into base16.\n *\n * @param in_guid - Base64 GUID to convert\n * @returns Base16 GUID\n *\n */\nconst base64Tobase16 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid));\n\n/**\n * Convert base16 into base64 GUID.\n *\n * @param in_guid - Base16 GUID to convert\n * @returns Base64 GUID\n *\n */\nconst base16ToBase64 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid), true);\n\n/**\n * Based on the boolean parameter generate either\n * a 128 bit base16 GUID with the following format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\n * or url-friendly base64 string GUID of length 22\n *\n * This function is *not* thread safe!\n *\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst generateGUID = function (base64 = false): string {\n\tconst rnds = new Uint32Array(4);\n\n\t// Random numbers for GUID (4x32 bit)\n\trnds[0] = guidRNG.genRandUInt32();\n\trnds[1] = guidRNG.genRandUInt32();\n\trnds[2] = guidRNG.genRandUInt32();\n\trnds[3] = guidRNG.genRandUInt32();\n\treturn uint32x4ToGUID(rnds, base64);\n};\n\n// The last character is checked this way because last 4 bits of 22nd character are ignored\n// by decoder, e.g. \"+Q\" and \"+Z\" result in the same decoding.\n// The only characters with last 4 bits set to 0 are A, Q, g, w.\nconst reBase64 = /^[\\w-]{21}[AQgw]$/;\n\nconst reBase16 = /^[\\dA-Fa-f]{8}(?:-[\\dA-Fa-f]{4}){3}-[\\dA-Fa-f]{12}$/;\n\n/**\n * Routine used to check whether the given string is a valid GUID\n *\n * @param in_guid - The GUID to test.\n * @returns True if the parameter is a valid GUID, false otherwise.\n */\nconst isGUID = (in_guid: string) => reBase16.test(in_guid) || reBase64.test(in_guid);\n\n/**\n * Performs a hash combination operation on the two supplied Uint32 arrays of length 4 (using\n * a variant of the algorithm from boost::hash_combine\n *\n * @param in_array1 - First array\n * @param in_array2 - Second array\n * @returns New combined hash\n */\nconst hashCombine4xUint32 = function (\n\tin_array1: Uint32Array,\n\tin_array2: Uint32Array,\n\tio_result?: Uint32Array,\n): Uint32Array {\n\tlet accumulated = io_result;\n\tif (accumulated === undefined) {\n\t\taccumulated = new Uint32Array(in_array2);\n\t} else {\n\t\taccumulated[0] = in_array2[0];\n\t\taccumulated[1] = in_array2[1];\n\t\taccumulated[2] = in_array2[2];\n\t\taccumulated[3] = in_array2[3];\n\t}\n\n\taccumulated[0] += 0x9e3779b9;\n\taccumulated[1] += 0x638f227;\n\taccumulated[2] += 0x1aff2bad;\n\taccumulated[3] += 0x3a8f05c5;\n\n\taccumulated[0] += in_array1[3] << 6;\n\taccumulated[1] += in_array1[0] << 6;\n\taccumulated[2] += in_array1[1] << 6;\n\taccumulated[3] += in_array1[2] << 6;\n\n\taccumulated[0] += in_array1[2] >> 2;\n\taccumulated[1] += in_array1[3] >> 2;\n\taccumulated[2] += in_array1[0] >> 2;\n\taccumulated[3] += in_array1[1] >> 2;\n\n\taccumulated[0] = ((accumulated[0] ^ in_array1[1]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[1] = ((accumulated[1] ^ in_array1[2]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[2] = ((accumulated[2] ^ in_array1[3]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[3] = ((accumulated[3] ^ in_array1[0]) * UINT_32HASH_PRIME) >>> 0;\n\n\treturn accumulated;\n};\n\n/**\n * Takes two guids and generates a new derived GUID.\n *\n * @remarks Note: You should only use this helper function when you need only one combination.\n * Otherwise, it is more efficient to work on the uint8 arrays directly.\n *\n * @param in_guid1 - Input GUID\n * @param in_guid2 - Input GUID\n * @param base64 - Use base64 encoding instead of standart GUIDs\n * @returns Combined GUID\n */\nconst combineGuids = function (in_guid1: string, in_guid2: string, base64 = false): string {\n\tconst firstArray = guidToUint32x4(in_guid1);\n\tconst secondArray = guidToUint32x4(in_guid2);\n\tconst combined = hashCombine4xUint32(firstArray, secondArray);\n\treturn uint32x4ToGUID(combined, base64);\n};\n\n// Make sure the RNG is initialized\nguidRNG.initialize();\n\nconst initializeGUIDGenerator = (...args) => {\n\tguidRNG.initialize(...args);\n};\n\n/**\n * @internal\n */\nexport const GuidUtils = {\n\tuint32x4ToGUID,\n\tguidToUint32x4,\n\tbase64Tobase16,\n\tbase16ToBase64,\n\tinitializeGUIDGenerator,\n\tgenerateGUID,\n\tisGUID,\n\tcombineGuids,\n\thashCombine4xUint32,\n};\n"]}
|
package/lib/guidUtils.js
CHANGED
|
@@ -215,7 +215,6 @@ const generateGUID = function (base64 = false) {
|
|
|
215
215
|
// by decoder, e.g. "+Q" and "+Z" result in the same decoding.
|
|
216
216
|
// The only characters with last 4 bits set to 0 are A, Q, g, w.
|
|
217
217
|
const reBase64 = /^[\w-]{21}[AQgw]$/;
|
|
218
|
-
// eslint-disable-next-line unicorn/no-unsafe-regex
|
|
219
218
|
const reBase16 = /^[\dA-Fa-f]{8}(?:-[\dA-Fa-f]{4}){3}-[\dA-Fa-f]{12}$/;
|
|
220
219
|
/**
|
|
221
220
|
* Routine used to check whether the given string is a valid GUID
|
package/lib/guidUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidUtils.js","sourceRoot":"","sources":["../src/guidUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,+BAA+B;AAE/B;;GAEG;AAEH,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,OAAO,GAAG;IACf,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,EAAE,EAAE,CAAC;IACL,EAAE,EAAE,CAAC;IACL,aAAa,EAAE,KAAK;IAEpB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,OAAgB,EAAE,6BAAsC,KAAK;QACvE,6DAA6D;QAC7D,sDAAsD;QACtD,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACvD,OAAO,CAAC,CAAC;QACV,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;gBACnB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;gBACpB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;gBAEpB,IAAI,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;QACX,CAAC;IACF,CAAC;IAED;;OAEG;IACH,aAAa;QACZ,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;AAE/D;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,CAAC,MAAM,CAAC,CAAC;IACT,CAAC,MAAM,CAAC,CAAC;IACT,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,UAAU,CAAS;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,cAAc,GAAG,UACtB,YAAiD,EACjD,SAAkB,KAAK;IAEvB,IAAI,MAAM,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACrD,6BAA6B;QAC7B,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACP,gCAAgC;QAChC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QACzC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAChF,EAAE,EACF,CAAC,CACD,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC3B,CAAC;AACF,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,UACtB,OAAe,EACf,SAAsB,IAAI,WAAW,CAAC,CAAC,CAAC;IAExC,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpF;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAE1F;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,MAAM,GAAG,KAAK;IAC5C,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAEhC,qCAAqC;IACrC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,2FAA2F;AAC3F,8DAA8D;AAC9D,gEAAgE;AAChE,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AACrC,mDAAmD;AACnD,MAAM,QAAQ,GAAG,qDAAqD,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG,UAC3B,SAAsB,EACtB,SAAsB,EACtB,SAAuB;IAEvB,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/B,WAAW,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACP,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAC7B,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAC5B,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAC7B,WAAW,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAE7B,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEpC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7E,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE7E,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAG,UAAU,QAAgB,EAAE,QAAgB,EAAE,MAAM,GAAG,KAAK;IAChF,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC9D,OAAO,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,mCAAmC;AACnC,OAAO,CAAC,UAAU,EAAE,CAAC;AAErB,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;IAC3C,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,uBAAuB;IACvB,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,mBAAmB;CACnB,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\n/**\n * @fileoverview Utility functions related to handling GUIDs\n */\n\nimport base64js from \"base64-js\";\n\nimport { generateRandomUInt32Array } from \"../platform-dependent\";\nconst UINT_32HASH_PRIME = 16777619;\n\n/**\n * Fast high quality 32 bit RNG for consistent GUID.\n *\n * Good \"randomness\" (distribution); Period is approximately equal to 3.11*10^37\n * Implementation was take from \"Numerical recipes. The Art of Scientific Computing.\", 3rd edition.\n * Page 357, algorithm name: Ranlim32\n */\nconst guidRNG = {\n\tu: 0,\n\tv: 0,\n\tw1: 0,\n\tw2: 0,\n\tisInitialized: false,\n\n\t/**\n\t * Initialize RNG.\n\t * This function need to be called once, before the first GUID gets created.\n\t *\n\t * @param in_seed - Optional 32-bit seed for GUID RNG.\n\t * If no seed is given, a combination of system's local time and `Math.random()` is used.\n\t * @param in_enforceReInitialization - Optionally enforce re-initialization with another seed.\n\t *\n\t * @returns The seed used to initialize the RNG;\n\t * If re-initialization is not enforced, a zero indicates that the RNG was not re-seeded.\n\t *\n\t * @alias property-common.initializeGUIDGenerator\n\t */\n\tinitialize(in_seed?: number, in_enforceReInitialization: boolean = false): number {\n\t\t// Quit if the RNG has already been initialized and we do not\n\t\t// want to enforce a re-initialization with a new seed\n\t\tif (this.isInitialized && !in_enforceReInitialization) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tthis.isInitialized = true;\n\n\t\t\tif (in_seed === undefined) {\n\t\t\t\tconst randomValues = generateRandomUInt32Array(4);\n\t\t\t\tthis.u = randomValues[0];\n\t\t\t\tthis.v = randomValues[1];\n\t\t\t\tthis.w1 = randomValues[2];\n\t\t\t\tthis.w2 = randomValues[3];\n\t\t\t} else {\n\t\t\t\tthis.v = 224461437;\n\t\t\t\tthis.w1 = 521288629;\n\t\t\t\tthis.w2 = 362436069;\n\n\t\t\t\tthis.u = in_seed ^ this.v;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t\tthis.v = this.u;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t},\n\n\t/**\n\t * @returns 32-bit random number based on the RNGs internal state\n\t */\n\tgenRandUInt32(): number {\n\t\tthis.u = multiply_uint32(this.u, 2891336453) + 1640531513;\n\t\tthis.v ^= this.v >>> 13;\n\t\tthis.v ^= this.v << 17;\n\t\tthis.v = ((this.v >>> 5) ^ this.v) >>> 0;\n\n\t\tthis.w1 = multiply_uint32(33378, this.w1 & 0xffff) + (this.w1 >>> 16);\n\t\tthis.w2 = multiply_uint32(57225, this.w2 & 0xffff) + (this.w2 >>> 16);\n\n\t\tlet x = this.u ^ (this.u << 9);\n\t\tx ^= x >>> 17;\n\t\tx ^= x << 6;\n\n\t\tlet y = this.w1 ^ (this.w1 << 17);\n\t\ty ^= y >>> 15;\n\t\ty ^= y << 5;\n\t\treturn (((x >>> 0) + this.v) ^ ((y >>> 0) + this.w2)) >>> 0;\n\t},\n};\n\n/**\n * Check if GUID is base64 based on the length\n * The length of base16 GUID is 36, base64 - 22\n *\n * @param GUID - Input GUID\n * @returns True if GUID is base64\n */\nconst isBase64 = (GUID: string): boolean => GUID.length === 22;\n\n/**\n * Allows for 32-bit integer multiplication with C-like semantics\n *\n * @param a - unsigned int32 value\n * @param b - unsigned int32 value\n * @returns The result of the unsigned integer multiplication.\n */\nfunction multiply_uint32(a: number, b: number): number {\n\tlet n = a;\n\tlet m = b;\n\n\tn >>>= 0;\n\tm >>>= 0;\n\tconst nlo = n & 0xffff;\n\treturn ((((n - nlo) * m) >>> 0) + nlo * m) >>> 0;\n}\n\n/**\n * Helper function to convert base64 encoding to url friendly format\n *\n * @param base64 - Base64 string\n *\n * @returns Url-friendly base64 encoding.\n */\nconst toUrlBase64 = (base64: string): string =>\n\tbase64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").split(\"=\")[0];\n\n/**\n * Helper function to recover padding of base64 encoding\n *\n * @param x - Base64 string\n *\n * @returns Padded base64 encoding.\n */\nconst toPaddedBase64 = function (x: string): string {\n\tlet base64 = x;\n\tconst padLength = 4 - (base64.length % 4);\n\tbase64 += \"=\".repeat(padLength);\n\treturn base64;\n};\n\n/**\n * Helper function to create a GUID string from an array with 32Bit values\n *\n * @param in_guidArray - Array with the 32 bit values\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst uint32x4ToGUID = function (\n\tin_guidArray: Uint32Array | Int32Array | number[],\n\tbase64: boolean = false,\n): string {\n\tif (base64) {\n\t\tconst intArray = new Uint32Array(in_guidArray);\n\t\tconst byteArray = new Uint8Array(intArray.buffer);\n\t\tconst base64guid = base64js.fromByteArray(byteArray);\n\t\t// return url-friendly base64\n\t\treturn toUrlBase64(base64guid);\n\t} else {\n\t\t// Convert to hexadecimal string\n\t\tlet str = \"\";\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst hex = in_guidArray[i].toString(16);\n\t\t\tstr += \"0\".repeat(8 - hex.length) + hex;\n\t\t}\n\t\treturn `${str.substr(0, 8)}-${str.substr(8, 4)}-${str.substr(12, 4)}-${str.substr(\n\t\t\t16,\n\t\t\t4,\n\t\t)}-${str.substr(20, 12)}`;\n\t}\n};\n\n/**\n * Convert GUID to four 32Bit values.\n *\n * @param in_guid - The GUID to convert\n * @param io_result - An optional array to write the result to.\n * If no array is given, a new one gets created.\n * @returns Four 32-bit values\n *\n */\nconst guidToUint32x4 = function (\n\tin_guid: string,\n\tresult: Uint32Array = new Uint32Array(4),\n): Uint32Array {\n\tif (isBase64(in_guid)) {\n\t\tconst GUID = toPaddedBase64(in_guid);\n\t\tconst bytes = base64js.toByteArray(GUID);\n\t\tconst intArray = new Uint32Array(bytes.buffer);\n\t\tresult.set(intArray);\n\t} else {\n\t\tresult[0] = parseInt(`0x${in_guid.substr(0, 8)}`, 16);\n\t\tresult[1] = parseInt(`0x${in_guid.substr(9, 4)}${in_guid.substr(14, 4)}`, 16);\n\t\tresult[2] = parseInt(`0x${in_guid.substr(19, 4)}${in_guid.substr(24, 4)}`, 16);\n\t\tresult[3] = parseInt(`0x${in_guid.substr(28, 8)}`, 16);\n\t}\n\treturn result;\n};\n\n/**\n * Convert base64 GUID into base16.\n *\n * @param in_guid - Base64 GUID to convert\n * @returns Base16 GUID\n *\n */\nconst base64Tobase16 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid));\n\n/**\n * Convert base16 into base64 GUID.\n *\n * @param in_guid - Base16 GUID to convert\n * @returns Base64 GUID\n *\n */\nconst base16ToBase64 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid), true);\n\n/**\n * Based on the boolean parameter generate either\n * a 128 bit base16 GUID with the following format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\n * or url-friendly base64 string GUID of length 22\n *\n * This function is *not* thread safe!\n *\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst generateGUID = function (base64 = false): string {\n\tconst rnds = new Uint32Array(4);\n\n\t// Random numbers for GUID (4x32 bit)\n\trnds[0] = guidRNG.genRandUInt32();\n\trnds[1] = guidRNG.genRandUInt32();\n\trnds[2] = guidRNG.genRandUInt32();\n\trnds[3] = guidRNG.genRandUInt32();\n\treturn uint32x4ToGUID(rnds, base64);\n};\n\n// The last character is checked this way because last 4 bits of 22nd character are ignored\n// by decoder, e.g. \"+Q\" and \"+Z\" result in the same decoding.\n// The only characters with last 4 bits set to 0 are A, Q, g, w.\nconst reBase64 = /^[\\w-]{21}[AQgw]$/;\n// eslint-disable-next-line unicorn/no-unsafe-regex\nconst reBase16 = /^[\\dA-Fa-f]{8}(?:-[\\dA-Fa-f]{4}){3}-[\\dA-Fa-f]{12}$/;\n\n/**\n * Routine used to check whether the given string is a valid GUID\n *\n * @param in_guid - The GUID to test.\n * @returns True if the parameter is a valid GUID, false otherwise.\n */\nconst isGUID = (in_guid: string) => reBase16.test(in_guid) || reBase64.test(in_guid);\n\n/**\n * Performs a hash combination operation on the two supplied Uint32 arrays of length 4 (using\n * a variant of the algorithm from boost::hash_combine\n *\n * @param in_array1 - First array\n * @param in_array2 - Second array\n * @returns New combined hash\n */\nconst hashCombine4xUint32 = function (\n\tin_array1: Uint32Array,\n\tin_array2: Uint32Array,\n\tio_result?: Uint32Array,\n): Uint32Array {\n\tlet accumulated = io_result;\n\tif (accumulated === undefined) {\n\t\taccumulated = new Uint32Array(in_array2);\n\t} else {\n\t\taccumulated[0] = in_array2[0];\n\t\taccumulated[1] = in_array2[1];\n\t\taccumulated[2] = in_array2[2];\n\t\taccumulated[3] = in_array2[3];\n\t}\n\n\taccumulated[0] += 0x9e3779b9;\n\taccumulated[1] += 0x638f227;\n\taccumulated[2] += 0x1aff2bad;\n\taccumulated[3] += 0x3a8f05c5;\n\n\taccumulated[0] += in_array1[3] << 6;\n\taccumulated[1] += in_array1[0] << 6;\n\taccumulated[2] += in_array1[1] << 6;\n\taccumulated[3] += in_array1[2] << 6;\n\n\taccumulated[0] += in_array1[2] >> 2;\n\taccumulated[1] += in_array1[3] >> 2;\n\taccumulated[2] += in_array1[0] >> 2;\n\taccumulated[3] += in_array1[1] >> 2;\n\n\taccumulated[0] = ((accumulated[0] ^ in_array1[1]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[1] = ((accumulated[1] ^ in_array1[2]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[2] = ((accumulated[2] ^ in_array1[3]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[3] = ((accumulated[3] ^ in_array1[0]) * UINT_32HASH_PRIME) >>> 0;\n\n\treturn accumulated;\n};\n\n/**\n * Takes two guids and generates a new derived GUID.\n *\n * @remarks Note: You should only use this helper function when you need only one combination.\n * Otherwise, it is more efficient to work on the uint8 arrays directly.\n *\n * @param in_guid1 - Input GUID\n * @param in_guid2 - Input GUID\n * @param base64 - Use base64 encoding instead of standart GUIDs\n * @returns Combined GUID\n */\nconst combineGuids = function (in_guid1: string, in_guid2: string, base64 = false): string {\n\tconst firstArray = guidToUint32x4(in_guid1);\n\tconst secondArray = guidToUint32x4(in_guid2);\n\tconst combined = hashCombine4xUint32(firstArray, secondArray);\n\treturn uint32x4ToGUID(combined, base64);\n};\n\n// Make sure the RNG is initialized\nguidRNG.initialize();\n\nconst initializeGUIDGenerator = (...args) => {\n\tguidRNG.initialize(...args);\n};\n\n/**\n * @internal\n */\nexport const GuidUtils = {\n\tuint32x4ToGUID,\n\tguidToUint32x4,\n\tbase64Tobase16,\n\tbase16ToBase64,\n\tinitializeGUIDGenerator,\n\tgenerateGUID,\n\tisGUID,\n\tcombineGuids,\n\thashCombine4xUint32,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"guidUtils.js","sourceRoot":"","sources":["../src/guidUtils.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint-disable no-bitwise */\n\n/**\n * @fileoverview Utility functions related to handling GUIDs\n */\n\nimport base64js from \"base64-js\";\n\nimport { generateRandomUInt32Array } from \"../platform-dependent\";\nconst UINT_32HASH_PRIME = 16777619;\n\n/**\n * Fast high quality 32 bit RNG for consistent GUID.\n *\n * Good \"randomness\" (distribution); Period is approximately equal to 3.11*10^37\n * Implementation was take from \"Numerical recipes. The Art of Scientific Computing.\", 3rd edition.\n * Page 357, algorithm name: Ranlim32\n */\nconst guidRNG = {\n\tu: 0,\n\tv: 0,\n\tw1: 0,\n\tw2: 0,\n\tisInitialized: false,\n\n\t/**\n\t * Initialize RNG.\n\t * This function need to be called once, before the first GUID gets created.\n\t *\n\t * @param in_seed - Optional 32-bit seed for GUID RNG.\n\t * If no seed is given, a combination of system's local time and `Math.random()` is used.\n\t * @param in_enforceReInitialization - Optionally enforce re-initialization with another seed.\n\t *\n\t * @returns The seed used to initialize the RNG;\n\t * If re-initialization is not enforced, a zero indicates that the RNG was not re-seeded.\n\t *\n\t * @alias property-common.initializeGUIDGenerator\n\t */\n\tinitialize(in_seed?: number, in_enforceReInitialization: boolean = false): number {\n\t\t// Quit if the RNG has already been initialized and we do not\n\t\t// want to enforce a re-initialization with a new seed\n\t\tif (this.isInitialized && !in_enforceReInitialization) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tthis.isInitialized = true;\n\n\t\t\tif (in_seed === undefined) {\n\t\t\t\tconst randomValues = generateRandomUInt32Array(4);\n\t\t\t\tthis.u = randomValues[0];\n\t\t\t\tthis.v = randomValues[1];\n\t\t\t\tthis.w1 = randomValues[2];\n\t\t\t\tthis.w2 = randomValues[3];\n\t\t\t} else {\n\t\t\t\tthis.v = 224461437;\n\t\t\t\tthis.w1 = 521288629;\n\t\t\t\tthis.w2 = 362436069;\n\n\t\t\t\tthis.u = in_seed ^ this.v;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t\tthis.v = this.u;\n\t\t\t\tthis.genRandUInt32();\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\t},\n\n\t/**\n\t * @returns 32-bit random number based on the RNGs internal state\n\t */\n\tgenRandUInt32(): number {\n\t\tthis.u = multiply_uint32(this.u, 2891336453) + 1640531513;\n\t\tthis.v ^= this.v >>> 13;\n\t\tthis.v ^= this.v << 17;\n\t\tthis.v = ((this.v >>> 5) ^ this.v) >>> 0;\n\n\t\tthis.w1 = multiply_uint32(33378, this.w1 & 0xffff) + (this.w1 >>> 16);\n\t\tthis.w2 = multiply_uint32(57225, this.w2 & 0xffff) + (this.w2 >>> 16);\n\n\t\tlet x = this.u ^ (this.u << 9);\n\t\tx ^= x >>> 17;\n\t\tx ^= x << 6;\n\n\t\tlet y = this.w1 ^ (this.w1 << 17);\n\t\ty ^= y >>> 15;\n\t\ty ^= y << 5;\n\t\treturn (((x >>> 0) + this.v) ^ ((y >>> 0) + this.w2)) >>> 0;\n\t},\n};\n\n/**\n * Check if GUID is base64 based on the length\n * The length of base16 GUID is 36, base64 - 22\n *\n * @param GUID - Input GUID\n * @returns True if GUID is base64\n */\nconst isBase64 = (GUID: string): boolean => GUID.length === 22;\n\n/**\n * Allows for 32-bit integer multiplication with C-like semantics\n *\n * @param a - unsigned int32 value\n * @param b - unsigned int32 value\n * @returns The result of the unsigned integer multiplication.\n */\nfunction multiply_uint32(a: number, b: number): number {\n\tlet n = a;\n\tlet m = b;\n\n\tn >>>= 0;\n\tm >>>= 0;\n\tconst nlo = n & 0xffff;\n\treturn ((((n - nlo) * m) >>> 0) + nlo * m) >>> 0;\n}\n\n/**\n * Helper function to convert base64 encoding to url friendly format\n *\n * @param base64 - Base64 string\n *\n * @returns Url-friendly base64 encoding.\n */\nconst toUrlBase64 = (base64: string): string =>\n\tbase64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").split(\"=\")[0];\n\n/**\n * Helper function to recover padding of base64 encoding\n *\n * @param x - Base64 string\n *\n * @returns Padded base64 encoding.\n */\nconst toPaddedBase64 = function (x: string): string {\n\tlet base64 = x;\n\tconst padLength = 4 - (base64.length % 4);\n\tbase64 += \"=\".repeat(padLength);\n\treturn base64;\n};\n\n/**\n * Helper function to create a GUID string from an array with 32Bit values\n *\n * @param in_guidArray - Array with the 32 bit values\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst uint32x4ToGUID = function (\n\tin_guidArray: Uint32Array | Int32Array | number[],\n\tbase64: boolean = false,\n): string {\n\tif (base64) {\n\t\tconst intArray = new Uint32Array(in_guidArray);\n\t\tconst byteArray = new Uint8Array(intArray.buffer);\n\t\tconst base64guid = base64js.fromByteArray(byteArray);\n\t\t// return url-friendly base64\n\t\treturn toUrlBase64(base64guid);\n\t} else {\n\t\t// Convert to hexadecimal string\n\t\tlet str = \"\";\n\t\tfor (let i = 0; i < 4; i++) {\n\t\t\tconst hex = in_guidArray[i].toString(16);\n\t\t\tstr += \"0\".repeat(8 - hex.length) + hex;\n\t\t}\n\t\treturn `${str.substr(0, 8)}-${str.substr(8, 4)}-${str.substr(12, 4)}-${str.substr(\n\t\t\t16,\n\t\t\t4,\n\t\t)}-${str.substr(20, 12)}`;\n\t}\n};\n\n/**\n * Convert GUID to four 32Bit values.\n *\n * @param in_guid - The GUID to convert\n * @param io_result - An optional array to write the result to.\n * If no array is given, a new one gets created.\n * @returns Four 32-bit values\n *\n */\nconst guidToUint32x4 = function (\n\tin_guid: string,\n\tresult: Uint32Array = new Uint32Array(4),\n): Uint32Array {\n\tif (isBase64(in_guid)) {\n\t\tconst GUID = toPaddedBase64(in_guid);\n\t\tconst bytes = base64js.toByteArray(GUID);\n\t\tconst intArray = new Uint32Array(bytes.buffer);\n\t\tresult.set(intArray);\n\t} else {\n\t\tresult[0] = parseInt(`0x${in_guid.substr(0, 8)}`, 16);\n\t\tresult[1] = parseInt(`0x${in_guid.substr(9, 4)}${in_guid.substr(14, 4)}`, 16);\n\t\tresult[2] = parseInt(`0x${in_guid.substr(19, 4)}${in_guid.substr(24, 4)}`, 16);\n\t\tresult[3] = parseInt(`0x${in_guid.substr(28, 8)}`, 16);\n\t}\n\treturn result;\n};\n\n/**\n * Convert base64 GUID into base16.\n *\n * @param in_guid - Base64 GUID to convert\n * @returns Base16 GUID\n *\n */\nconst base64Tobase16 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid));\n\n/**\n * Convert base16 into base64 GUID.\n *\n * @param in_guid - Base16 GUID to convert\n * @returns Base64 GUID\n *\n */\nconst base16ToBase64 = (in_guid: string) => uint32x4ToGUID(guidToUint32x4(in_guid), true);\n\n/**\n * Based on the boolean parameter generate either\n * a 128 bit base16 GUID with the following format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx\n * or url-friendly base64 string GUID of length 22\n *\n * This function is *not* thread safe!\n *\n * @param base64 - Use base64 encoding instead of standart guids\n *\n * @returns The GUID\n */\nconst generateGUID = function (base64 = false): string {\n\tconst rnds = new Uint32Array(4);\n\n\t// Random numbers for GUID (4x32 bit)\n\trnds[0] = guidRNG.genRandUInt32();\n\trnds[1] = guidRNG.genRandUInt32();\n\trnds[2] = guidRNG.genRandUInt32();\n\trnds[3] = guidRNG.genRandUInt32();\n\treturn uint32x4ToGUID(rnds, base64);\n};\n\n// The last character is checked this way because last 4 bits of 22nd character are ignored\n// by decoder, e.g. \"+Q\" and \"+Z\" result in the same decoding.\n// The only characters with last 4 bits set to 0 are A, Q, g, w.\nconst reBase64 = /^[\\w-]{21}[AQgw]$/;\n\nconst reBase16 = /^[\\dA-Fa-f]{8}(?:-[\\dA-Fa-f]{4}){3}-[\\dA-Fa-f]{12}$/;\n\n/**\n * Routine used to check whether the given string is a valid GUID\n *\n * @param in_guid - The GUID to test.\n * @returns True if the parameter is a valid GUID, false otherwise.\n */\nconst isGUID = (in_guid: string) => reBase16.test(in_guid) || reBase64.test(in_guid);\n\n/**\n * Performs a hash combination operation on the two supplied Uint32 arrays of length 4 (using\n * a variant of the algorithm from boost::hash_combine\n *\n * @param in_array1 - First array\n * @param in_array2 - Second array\n * @returns New combined hash\n */\nconst hashCombine4xUint32 = function (\n\tin_array1: Uint32Array,\n\tin_array2: Uint32Array,\n\tio_result?: Uint32Array,\n): Uint32Array {\n\tlet accumulated = io_result;\n\tif (accumulated === undefined) {\n\t\taccumulated = new Uint32Array(in_array2);\n\t} else {\n\t\taccumulated[0] = in_array2[0];\n\t\taccumulated[1] = in_array2[1];\n\t\taccumulated[2] = in_array2[2];\n\t\taccumulated[3] = in_array2[3];\n\t}\n\n\taccumulated[0] += 0x9e3779b9;\n\taccumulated[1] += 0x638f227;\n\taccumulated[2] += 0x1aff2bad;\n\taccumulated[3] += 0x3a8f05c5;\n\n\taccumulated[0] += in_array1[3] << 6;\n\taccumulated[1] += in_array1[0] << 6;\n\taccumulated[2] += in_array1[1] << 6;\n\taccumulated[3] += in_array1[2] << 6;\n\n\taccumulated[0] += in_array1[2] >> 2;\n\taccumulated[1] += in_array1[3] >> 2;\n\taccumulated[2] += in_array1[0] >> 2;\n\taccumulated[3] += in_array1[1] >> 2;\n\n\taccumulated[0] = ((accumulated[0] ^ in_array1[1]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[1] = ((accumulated[1] ^ in_array1[2]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[2] = ((accumulated[2] ^ in_array1[3]) * UINT_32HASH_PRIME) >>> 0;\n\taccumulated[3] = ((accumulated[3] ^ in_array1[0]) * UINT_32HASH_PRIME) >>> 0;\n\n\treturn accumulated;\n};\n\n/**\n * Takes two guids and generates a new derived GUID.\n *\n * @remarks Note: You should only use this helper function when you need only one combination.\n * Otherwise, it is more efficient to work on the uint8 arrays directly.\n *\n * @param in_guid1 - Input GUID\n * @param in_guid2 - Input GUID\n * @param base64 - Use base64 encoding instead of standart GUIDs\n * @returns Combined GUID\n */\nconst combineGuids = function (in_guid1: string, in_guid2: string, base64 = false): string {\n\tconst firstArray = guidToUint32x4(in_guid1);\n\tconst secondArray = guidToUint32x4(in_guid2);\n\tconst combined = hashCombine4xUint32(firstArray, secondArray);\n\treturn uint32x4ToGUID(combined, base64);\n};\n\n// Make sure the RNG is initialized\nguidRNG.initialize();\n\nconst initializeGUIDGenerator = (...args) => {\n\tguidRNG.initialize(...args);\n};\n\n/**\n * @internal\n */\nexport const GuidUtils = {\n\tuint32x4ToGUID,\n\tguidToUint32x4,\n\tbase64Tobase16,\n\tbase16ToBase64,\n\tinitializeGUIDGenerator,\n\tgenerateGUID,\n\tisGUID,\n\tcombineGuids,\n\thashCombine4xUint32,\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluid-experimental/property-common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.13.0",
|
|
4
4
|
"description": "common functions used in properties",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@biomejs/biome": "~1.9.3",
|
|
51
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
51
|
+
"@fluid-internal/mocha-test-setup": "~2.13.0",
|
|
52
52
|
"@fluidframework/build-common": "^2.0.3",
|
|
53
53
|
"@fluidframework/build-tools": "^0.51.0",
|
|
54
54
|
"@fluidframework/eslint-config-fluid": "^5.6.0",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@types/chai": "^4.0.0",
|
|
57
57
|
"@types/debug": "^4.1.5",
|
|
58
58
|
"@types/lodash": "^4.14.118",
|
|
59
|
-
"@types/mocha": "^
|
|
59
|
+
"@types/mocha": "^10.0.10",
|
|
60
60
|
"@types/node": "^18.19.0",
|
|
61
61
|
"@types/semver": "^7.5.0",
|
|
62
62
|
"@types/sinon": "^17.0.3",
|
package/src/guidUtils.ts
CHANGED
|
@@ -245,7 +245,7 @@ const generateGUID = function (base64 = false): string {
|
|
|
245
245
|
// by decoder, e.g. "+Q" and "+Z" result in the same decoding.
|
|
246
246
|
// The only characters with last 4 bits set to 0 are A, Q, g, w.
|
|
247
247
|
const reBase64 = /^[\w-]{21}[AQgw]$/;
|
|
248
|
-
|
|
248
|
+
|
|
249
249
|
const reBase16 = /^[\dA-Fa-f]{8}(?:-[\dA-Fa-f]{4}){3}-[\dA-Fa-f]{12}$/;
|
|
250
250
|
|
|
251
251
|
/**
|