relution-sdk
Version:
Relution Software Development Kit for TypeScript and JavaScript
43 lines • 4.91 kB
JavaScript
/*
* @file core/objectid.ts
* Relution SDK
*
* Created by Thomas Beckmann on 04.07.2016
* Copyright 2016 M-Way Solutions GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @module core
*/
/** */
;
var machineId = parseInt('' + (Math.random() * Math.pow(16, 6)));
var processId = parseInt('' + (Math.random() * Math.pow(16, 4)));
var counter = parseInt('' + (Math.random() * Math.pow(16, 6)));
function hexString(len, num) {
var str = num.toString(16);
while (str.length < len) {
str = '0' + str;
}
return str.substr(0, len);
}
// random-based impl of Mongo ObjectID
function makeObjectID() {
return hexString(8, Date.now() / 1000) +
hexString(6, machineId) +
hexString(4, processId) +
hexString(6, counter++); // a 3-byte counter, starting with a random value.
}
exports.makeObjectID = makeObjectID;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0aWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9vYmplY3RpZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0g7O0dBRUc7QUFDSCxNQUFNOztBQUVOLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRS9ELG1CQUFtQixHQUFXLEVBQUUsR0FBVztJQUN6QyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUN4QixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEM7SUFDRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQy9CLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO1FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFVLGtEQUFrRDtBQUM3RixDQUFDO0FBTGUsb0JBQVksZUFLM0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAZmlsZSBjb3JlL29iamVjdGlkLnRzXG4gKiBSZWx1dGlvbiBTREtcbiAqXG4gKiBDcmVhdGVkIGJ5IFRob21hcyBCZWNrbWFubiBvbiAwNC4wNy4yMDE2XG4gKiBDb3B5cmlnaHQgMjAxNiBNLVdheSBTb2x1dGlvbnMgR21iSFxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIEBtb2R1bGUgY29yZVxuICovXG4vKiogKi9cblxubGV0IG1hY2hpbmVJZCA9IHBhcnNlSW50KCcnICsgKE1hdGgucmFuZG9tKCkgKiBNYXRoLnBvdygxNiwgNikpKTtcbmxldCBwcm9jZXNzSWQgPSBwYXJzZUludCgnJyArIChNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMTYsIDQpKSk7XG5sZXQgY291bnRlciA9IHBhcnNlSW50KCcnICsgKE1hdGgucmFuZG9tKCkgKiBNYXRoLnBvdygxNiwgNikpKTtcblxuZnVuY3Rpb24gaGV4U3RyaW5nKGxlbjogbnVtYmVyLCBudW06IG51bWJlcikge1xuICBsZXQgc3RyID0gbnVtLnRvU3RyaW5nKDE2KTtcbiAgd2hpbGUgKHN0ci5sZW5ndGggPCBsZW4pIHtcbiAgICBzdHIgPSAnMCcgKyBzdHI7XG4gIH1cbiAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgbGVuKTtcbn1cblxuLy8gcmFuZG9tLWJhc2VkIGltcGwgb2YgTW9uZ28gT2JqZWN0SURcbmV4cG9ydCBmdW5jdGlvbiBtYWtlT2JqZWN0SUQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleFN0cmluZyg4LCBEYXRlLm5vdygpIC8gMTAwMCkgKyAvLyBhIDQtYnl0ZSB2YWx1ZSBmcm9tIHRoZSBVbml4IHRpbWVzdGFtcFxuICAgICAgICAgaGV4U3RyaW5nKDYsIG1hY2hpbmVJZCkgKyAgICAgICAgIC8vIGEgMy1ieXRlIG1hY2hpbmUgaWRlbnRpZmllclxuICAgICAgICAgaGV4U3RyaW5nKDQsIHByb2Nlc3NJZCkgKyAgICAgICAgIC8vIGEgMi1ieXRlIHByb2Nlc3MgaWRlbnRpZmllclxuICAgICAgICAgaGV4U3RyaW5nKDYsIGNvdW50ZXIrKyk7ICAgICAgICAgIC8vIGEgMy1ieXRlIGNvdW50ZXIsIHN0YXJ0aW5nIHdpdGggYSByYW5kb20gdmFsdWUuXG59XG4iXX0=