UNPKG

rocketmq-client-nodejs

Version:
107 lines 7.74 kB
"use strict"; /** * 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; exports.hashCodeOfString = hashCodeOfString; 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(); } /** * Calculate hash code for a string (Java String.hashCode() compatible). * This is used for implementing equals/hashCode contract in TypeScript classes. * * @param str - The string to calculate hash code for * @return Hash code as a 32-bit integer */ function hashCodeOfString(str) { let hash = 0; for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i); // eslint-disable-next-line no-bitwise hash = ((hash << 5) - hash) + char; // eslint-disable-next-line no-bitwise hash = hash & hash; // Convert to 32bit integer } return hash; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7Ozs7QUFXSCxvQ0FLQztBQUdELGdEQUlDO0FBRUQsb0JBSUM7QUFFRCx3Q0FLQztBQUVELHdDQUVDO0FBRUQsc0NBRUM7QUFFRCxrQ0FHQztBQUVELG9DQUdDO0FBVUQsNERBR0M7QUFTRCw0Q0FVQztBQXBGRCxxREFBOEM7QUFDOUMsNkNBQXFEO0FBQ3JELDZFQUF1RTtBQUN2RSwwQ0FBdUM7QUFDdkMsMERBQWtDO0FBQ2xDLGdGQUF3RTtBQUUzRCxRQUFBLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUVsQyxTQUFnQixZQUFZO0lBQzFCLE1BQU0sU0FBUyxHQUFHLDZCQUFXLENBQUMsVUFBVSxHQUFHLDZCQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUN2QyxDQUFDO0FBRUQsNENBQTRDO0FBQzVDLFNBQWdCLGtCQUFrQjtJQUNoQywrQ0FBK0M7SUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRSxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQWdCLElBQUksQ0FBQyxZQUFv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