Rocky_Mountain_Vending/.pnpm-store/v10/files/ab/ebba60a4fb0f2193eae7da573980878041d593a9e7fed18f43048a2779b533e4257f8146fea104416ae8bfb43fa94b4baab9c935a8d0e76ce10073bc43d666
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

158 lines
No EOL
5 KiB
Text

// Copyright 2024 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @returns A BigUint32Array implementation which is based on Array.
* This means that its length automatically expands to include the highest index
* used, and asArrayOrFail will succeed.
*/
export function createExpandableBigUint32Array() {
return new ExpandableBigUint32ArrayImpl();
}
/**
* @returns A BigUint32Array implementation which is based on Uint32Array.
* If the length is small enough to fit in a single Uint32Array, then
* asUint32ArrayOrFail will succeed. Otherwise, it will throw an exception.
*/
export function createFixedBigUint32Array(length, maxLengthForTesting) {
try {
if (maxLengthForTesting !== undefined && length > maxLengthForTesting) {
// Simulate allocation failure.
throw new RangeError();
}
return new BasicBigUint32ArrayImpl(length);
}
catch {
// We couldn't allocate a big enough ArrayBuffer.
return new SplitBigUint32ArrayImpl(length, maxLengthForTesting);
}
}
class BasicBigUint32ArrayImpl extends Uint32Array {
getValue(index) {
return this[index];
}
setValue(index, value) {
this[index] = value;
}
asUint32ArrayOrFail() {
return this;
}
asArrayOrFail() {
throw new Error('Not an array');
}
}
class SplitBigUint32ArrayImpl {
#data;
#partLength;
length;
constructor(length, maxLengthForTesting) {
this.#data = [];
this.length = length;
let partCount = 1;
while (true) {
partCount *= 2;
this.#partLength = Math.ceil(length / partCount);
try {
if (maxLengthForTesting !== undefined && this.#partLength > maxLengthForTesting) {
// Simulate allocation failure.
throw new RangeError();
}
for (let i = 0; i < partCount; ++i) {
this.#data[i] = new Uint32Array(this.#partLength);
}
return;
}
catch (e) {
if (this.#partLength < 1e6) {
// The length per part is already small, so continuing to subdivide it
// will probably not help.
throw e;
}
}
}
}
getValue(index) {
if (index >= 0 && index < this.length) {
const partLength = this.#partLength;
return this.#data[Math.floor(index / partLength)][index % partLength];
}
// On out-of-bounds accesses, match the behavior of Uint32Array: return an
// undefined value that's incorrectly typed as number.
return this.#data[0][-1];
}
setValue(index, value) {
if (index >= 0 && index < this.length) {
const partLength = this.#partLength;
this.#data[Math.floor(index / partLength)][index % partLength] = value;
}
// Attempting to set a value out of bounds does nothing, like Uint32Array.
}
asUint32ArrayOrFail() {
throw new Error('Not a Uint32Array');
}
asArrayOrFail() {
throw new Error('Not an array');
}
}
class ExpandableBigUint32ArrayImpl extends Array {
getValue(index) {
return this[index];
}
setValue(index, value) {
this[index] = value;
}
asUint32ArrayOrFail() {
throw new Error('Not a Uint32Array');
}
asArrayOrFail() {
return this;
}
}
export function createBitVector(lengthOrBuffer) {
return new BitVectorImpl(lengthOrBuffer);
}
class BitVectorImpl extends Uint8Array {
constructor(lengthOrBuffer) {
if (typeof lengthOrBuffer === 'number') {
super(Math.ceil(lengthOrBuffer / 8));
}
else {
super(lengthOrBuffer);
}
}
getBit(index) {
const value = this[index >> 3] & (1 << (index & 7));
return value !== 0;
}
setBit(index) {
this[index >> 3] |= (1 << (index & 7));
}
clearBit(index) {
this[index >> 3] &= ~(1 << (index & 7));
}
previous(index) {
// First, check for more bits in the current byte.
while (index !== ((index >> 3) << 3)) {
--index;
if (this.getBit(index)) {
return index;
}
}
// Next, iterate by bytes to skip over ranges of zeros.
let byteIndex = (index >> 3) - 1;
while (byteIndex >= 0 && this[byteIndex] === 0) {
--byteIndex;
}
if (byteIndex < 0) {
return -1;
}
// Finally, iterate the nonzero byte to find the highest bit.
for (index = (byteIndex << 3) + 7; index >= (byteIndex << 3); --index) {
if (this.getBit(index)) {
return index;
}
}
throw new Error('Unreachable');
}
}
//# sourceMappingURL=TypedArrayUtilities.js.map