rocketmq-client-nodejs-beta
Version:
RocketMQ Node.js Client
88 lines • 6.52 kB
JavaScript
;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MASTER_BROKER_ID = void 0;
exports.getTimestamp = getTimestamp;
exports.getRequestDateTime = getRequestDateTime;
exports.sign = sign;
exports.createDuration = createDuration;
exports.createResource = createResource;
exports.crc32CheckSum = crc32CheckSum;
exports.md5CheckSum = md5CheckSum;
exports.sha1CheckSum = sha1CheckSum;
exports.calculateStringSipHash24 = calculateStringSipHash24;
const node_perf_hooks_1 = require("node:perf_hooks");
const node_crypto_1 = require("node:crypto");
const duration_pb_1 = require("google-protobuf/google/protobuf/duration_pb");
const crc32_1 = require("@node-rs/crc32");
const siphash24_1 = __importDefault(require("siphash24"));
const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb");
exports.MASTER_BROKER_ID = 0;
function getTimestamp() {
const timestamp = node_perf_hooks_1.performance.timeOrigin + node_perf_hooks_1.performance.now();
const seconds = Math.floor(timestamp / 1000);
const nanos = Math.floor((timestamp % 1000) * 1e6);
return { seconds, nanos, timestamp };
}
// DATE_TIME_FORMAT = "yyyyMMdd'T'HHmmss'Z'"
function getRequestDateTime() {
// 2023-09-13T06:30:59.399Z => 20230913T063059Z
const now = new Date().toISOString().split('.')[0].replace(/[\-\:]/g, '');
return `${now}Z`;
}
function sign(accessSecret, dateTime) {
const hmacSha1 = (0, node_crypto_1.createHmac)('sha1', accessSecret);
hmacSha1.update(dateTime);
return hmacSha1.digest('hex').toUpperCase();
}
function createDuration(ms) {
const nanos = ms % 1000 * 1000000;
return new duration_pb_1.Duration()
.setSeconds(ms / 1000)
.setNanos(nanos);
}
function createResource(name) {
return new definition_pb_1.Resource().setName(name);
}
function crc32CheckSum(bytes) {
return `${(0, crc32_1.crc32)(bytes)}`;
}
function md5CheckSum(bytes) {
return (0, node_crypto_1.createHash)('md5').update(bytes).digest('hex')
.toUpperCase();
}
function sha1CheckSum(bytes) {
return (0, node_crypto_1.createHash)('sha1').update(bytes).digest('hex')
.toUpperCase();
}
// k0: 0x0706050403020100L, k1: 0x0f0e0d0c0b0a0908L
const SIP_HASH_24_KEY = Buffer.from([
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
]);
/**
* Java: Hashing.sipHash24().hashBytes(messageGroup.getBytes(StandardCharsets.UTF_8)).asLong()
*/
function calculateStringSipHash24(value) {
const hash = (0, siphash24_1.default)(Buffer.from(value), SIP_HASH_24_KEY);
return Buffer.from(hash).readBigUInt64BE();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7Ozs7QUFXSCxvQ0FLQztBQUdELGdEQUlDO0FBRUQsb0JBSUM7QUFFRCx3Q0FLQztBQUVELHdDQUVDO0FBRUQsc0NBRUM7QUFFRCxrQ0FHQztBQUVELG9DQUdDO0FBVUQsNERBR0M7QUFqRUQscURBQThDO0FBQzlDLDZDQUFxRDtBQUNyRCw2RUFBdUU7QUFDdkUsMENBQXVDO0FBQ3ZDLDBEQUFrQztBQUNsQyxnRkFBd0U7QUFFM0QsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFFbEMsU0FBZ0IsWUFBWTtJQUMxQixNQUFNLFNBQVMsR0FBRyw2QkFBVyxDQUFDLFVBQVUsR0FBRyw2QkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVELDRDQUE0QztBQUM1QyxTQUFnQixrQkFBa0I7SUFDaEMsK0NBQStDO0lBQy9DLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFnQixJQUFJLENBQUMsWUFBb0IsRUFBRSxRQUFnQjtJQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFBLHdCQUFVLEVBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xELFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQzlDLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsRUFBVTtJQUN2QyxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQztJQUNsQyxPQUFPLElBQUksc0JBQVEsRUFBRTtTQUNsQixVQUFVLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztTQUNyQixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE9BQU8sSUFBSSx3QkFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsS0FBYTtJQUN6QyxPQUFPLEdBQUcsSUFBQSxhQUFLLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQWlCO0lBQzNDLE9BQU8sSUFBQSx3QkFBVSxFQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2pELFdBQVcsRUFBRSxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBaUI7SUFDNUMsT0FBTyxJQUFBLHdCQUFVLEVBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDbEQsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQ2xDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzlDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQy9DLENBQUMsQ0FBQztBQUNIOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsS0FBYTtJQUNwRCxNQUFNLElBQUksR0FBRyxJQUFBLG1CQUFTLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM1RCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDN0MsQ0FBQyJ9