UNPKG

rocketmq-client-nodejs

Version:
191 lines 12 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.OffsetOption = exports.OffsetType = void 0; /** * OffsetOption type enum. */ var OffsetType; (function (OffsetType) { OffsetType[OffsetType["POLICY"] = 0] = "POLICY"; OffsetType[OffsetType["OFFSET"] = 1] = "OFFSET"; OffsetType[OffsetType["TAIL_N"] = 2] = "TAIL_N"; OffsetType[OffsetType["TIMESTAMP"] = 3] = "TIMESTAMP"; })(OffsetType || (exports.OffsetType = OffsetType = {})); /** * ProtoBuf OffsetOption type. */ const definition_pb_1 = require("../../proto/apache/rocketmq/v2/definition_pb"); /** * OffsetOption for specifying consume from offset. * * <p>OffsetOption is used to specify the starting point for message consumption. * It supports various policies and custom offsets.</p> */ class OffsetOption { /** Policy constant: last offset */ static POLICY_LAST_VALUE = BigInt(0); /** Policy constant: min offset */ static POLICY_MIN_VALUE = BigInt(1); /** Policy constant: max offset */ static POLICY_MAX_VALUE = BigInt(2); /** Predefined option: LAST_OFFSET */ static LAST_OFFSET = new OffsetOption(OffsetType.POLICY, OffsetOption.POLICY_LAST_VALUE); /** Predefined option: MIN_OFFSET */ static MIN_OFFSET = new OffsetOption(OffsetType.POLICY, OffsetOption.POLICY_MIN_VALUE); /** Predefined option: MAX_OFFSET */ static MAX_OFFSET = new OffsetOption(OffsetType.POLICY, OffsetOption.POLICY_MAX_VALUE); type; value; constructor(type, value) { this.type = type; this.value = value; } /** * Create an OffsetOption from a specific offset. * * @param offset - The offset value (must be >= 0) * @return OffsetOption instance * @throws Error if offset is negative */ static ofOffset(offset) { const value = typeof offset === 'number' ? BigInt(offset) : offset; if (value < BigInt(0)) { throw new Error('offset must be greater than or equal to 0'); } return new OffsetOption(OffsetType.OFFSET, value); } /** * Create an OffsetOption from tail N messages. * * @param tailN - Number of messages from the tail (must be >= 0) * @return OffsetOption instance * @throws Error if tailN is negative */ static ofTailN(tailN) { const value = typeof tailN === 'number' ? BigInt(tailN) : tailN; if (value < BigInt(0)) { throw new Error('tailN must be greater than or equal to 0'); } return new OffsetOption(OffsetType.TAIL_N, value); } /** * Create an OffsetOption from a timestamp. * * @param timestamp - Unix timestamp in milliseconds (must be >= 0) * @return OffsetOption instance * @throws Error if timestamp is negative */ static ofTimestamp(timestamp) { const value = typeof timestamp === 'number' ? BigInt(timestamp) : timestamp; if (value < BigInt(0)) { throw new Error('timestamp must be greater than or equal to 0'); } return new OffsetOption(OffsetType.TIMESTAMP, value); } /** * Get the type of this OffsetOption. * * @return OffsetType */ getType() { return this.type; } /** * Get the value of this OffsetOption. * * @return Value as bigint */ getValue() { return this.value; } /** * Returns a string representation of this OffsetOption. * * @return String representation */ toString() { return `OffsetOption{type=${OffsetType[this.type]}, value=${this.value}}`; } /** * Validate that a bigint value is within the safe number range. * * @param value - The bigint value to validate * @throws Error if value is out of safe number range */ validateSafeNumberRange(value) { if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(Number.MIN_SAFE_INTEGER)) { throw new Error(`Value ${value} is out of safe number range`); } } /** * Convert this OffsetOption to ProtoBuf OffsetOption. * * @return ProtoBuf OffsetOption instance */ toProtobuf() { const proto = new definition_pb_1.OffsetOption(); switch (this.type) { case OffsetType.POLICY: { // Map our policy values to ProtoBuf Policy enum // POLICY_LAST_VALUE (0) -> Policy.LAST (0) // POLICY_MIN_VALUE (1) -> Policy.MIN (1) // POLICY_MAX_VALUE (2) -> Policy.MAX (2) this.validateSafeNumberRange(this.value); proto.setPolicy(Number(this.value)); break; } case OffsetType.OFFSET: { this.validateSafeNumberRange(this.value); proto.setOffset(Number(this.value)); break; } case OffsetType.TAIL_N: { this.validateSafeNumberRange(this.value); proto.setTailN(Number(this.value)); break; } case OffsetType.TIMESTAMP: { this.validateSafeNumberRange(this.value); proto.setTimestamp(Number(this.value)); break; } default: throw new Error(`Unknown OffsetType: ${this.type}`); } return proto; } equals(other) { if (this === other) return true; if (!other) return false; return this.type === other.type && this.value === other.value; } hashCode() { let hash = 17; // eslint-disable-next-line no-bitwise hash = (hash * 31 + this.type) | 0; const valueNum = Number(this.value); // eslint-disable-next-line no-bitwise hash = (hash * 31 + valueNum) | 0; return hash; } } exports.OffsetOption = OffsetOption; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2Zmc2V0T3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN1bWVyL09mZnNldE9wdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFFSDs7R0FFRztBQUNILElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiwrQ0FBVSxDQUFBO0lBQ1YsK0NBQVUsQ0FBQTtJQUNWLCtDQUFVLENBQUE7SUFDVixxREFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLFVBQVUsMEJBQVYsVUFBVSxRQUtyQjtBQUVEOztHQUVHO0FBQ0gsZ0ZBQWlHO0FBRWpHOzs7OztHQUtHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCLG1DQUFtQztJQUNuQyxNQUFNLENBQVUsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlDLGtDQUFrQztJQUNsQyxNQUFNLENBQVUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdDLGtDQUFrQztJQUNsQyxNQUFNLENBQVUsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTdDLHFDQUFxQztJQUNyQyxNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFbEcsb0NBQW9DO0lBQ3BDLE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVoRyxvQ0FBb0M7SUFDcEMsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRS9FLElBQUksQ0FBYTtJQUNqQixLQUFLLENBQVM7SUFFL0IsWUFBb0IsSUFBZ0Is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