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>
182 lines
9.8 KiB
Text
182 lines
9.8 KiB
Text
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.SetNumberFormatDigitOptions = SetNumberFormatDigitOptions;
|
|
var DefaultNumberOption_1 = require("../DefaultNumberOption");
|
|
var GetNumberOption_1 = require("../GetNumberOption");
|
|
var GetOption_1 = require("../GetOption");
|
|
var utils_1 = require("../utils");
|
|
//IMPL: Valid rounding increments as per implementation
|
|
var VALID_ROUNDING_INCREMENTS = new Set([
|
|
1, 2, 5, 10, 20, 25, 50, 100, 200, 250, 500, 1000, 2000, 2500, 5000,
|
|
]);
|
|
/**
|
|
* https://tc39.es/ecma402/#sec-setnfdigitoptions
|
|
*/
|
|
function SetNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) {
|
|
// 1. Let mnid be ? GetNumberOption(opts, "minimumIntegerDigits", 1, 21, 1).
|
|
var mnid = (0, GetNumberOption_1.GetNumberOption)(opts, 'minimumIntegerDigits', 1, 21, 1);
|
|
// 2. Let mnfd be opts.[[MinimumFractionDigits]].
|
|
var mnfd = opts.minimumFractionDigits;
|
|
// 3. Let mxfd be opts.[[MaximumFractionDigits]].
|
|
var mxfd = opts.maximumFractionDigits;
|
|
// 4. Let mnsd be opts.[[MinimumSignificantDigits]].
|
|
var mnsd = opts.minimumSignificantDigits;
|
|
// 5. Let mxsd be opts.[[MaximumSignificantDigits]].
|
|
var mxsd = opts.maximumSignificantDigits;
|
|
// 6. Set internalSlots.[[MinimumIntegerDigits]] to mnid.
|
|
internalSlots.minimumIntegerDigits = mnid;
|
|
// 7. Let roundingIncrement be ? GetNumberOption(opts, "roundingIncrement", 1, 5000, 1).
|
|
var roundingIncrement = (0, GetNumberOption_1.GetNumberOption)(opts, 'roundingIncrement', 1, 5000, 1);
|
|
// 8. If roundingIncrement is not an element of the list {1, 2, 5, 10, 20, 25, 50, 100, 200, 250, 500, 1000, 2000, 2500, 5000}, throw a RangeError exception.
|
|
(0, utils_1.invariant)(VALID_ROUNDING_INCREMENTS.has(roundingIncrement), "Invalid rounding increment value: ".concat(roundingIncrement, ".\nValid values are ").concat(Array.from(VALID_ROUNDING_INCREMENTS).join(', '), "."));
|
|
// 9. Let roundingMode be ? GetOption(opts, "roundingMode", "string", « "ceil", "floor", "expand", "trunc", "halfCeil", "halfFloor", "halfExpand", "halfTrunc", "halfEven" », "halfExpand").
|
|
var roundingMode = (0, GetOption_1.GetOption)(opts, 'roundingMode', 'string', [
|
|
'ceil',
|
|
'floor',
|
|
'expand',
|
|
'trunc',
|
|
'halfCeil',
|
|
'halfFloor',
|
|
'halfExpand',
|
|
'halfTrunc',
|
|
'halfEven',
|
|
], 'halfExpand');
|
|
// 10. Let roundingPriority be ? GetOption(opts, "roundingPriority", "string", « "auto", "morePrecision", "lessPrecision" », "auto").
|
|
var roundingPriority = (0, GetOption_1.GetOption)(opts, 'roundingPriority', 'string', ['auto', 'morePrecision', 'lessPrecision'], 'auto');
|
|
// 11. Let trailingZeroDisplay be ? GetOption(opts, "trailingZeroDisplay", "string", « "auto", "stripIfInteger" », "auto").
|
|
var trailingZeroDisplay = (0, GetOption_1.GetOption)(opts, 'trailingZeroDisplay', 'string', ['auto', 'stripIfInteger'], 'auto');
|
|
// 12. If roundingIncrement is not 1, then
|
|
if (roundingIncrement !== 1) {
|
|
// 12.a. Set mxfdDefault to mnfdDefault.
|
|
mxfdDefault = mnfdDefault;
|
|
}
|
|
// 13. Set internalSlots.[[RoundingIncrement]] to roundingIncrement.
|
|
internalSlots.roundingIncrement = roundingIncrement;
|
|
// 14. Set internalSlots.[[RoundingMode]] to roundingMode.
|
|
internalSlots.roundingMode = roundingMode;
|
|
// 15. Set internalSlots.[[TrailingZeroDisplay]] to trailingZeroDisplay.
|
|
internalSlots.trailingZeroDisplay = trailingZeroDisplay;
|
|
// 16. Let hasSd be true if mnsd is not undefined or mxsd is not undefined; otherwise, let hasSd be false.
|
|
var hasSd = mnsd !== undefined || mxsd !== undefined;
|
|
// 17. Let hasFd be true if mnfd is not undefined or mxfd is not undefined; otherwise, let hasFd be false.
|
|
var hasFd = mnfd !== undefined || mxfd !== undefined;
|
|
// 18. Let needSd be true.
|
|
var needSd = true;
|
|
// 19. Let needFd be true.
|
|
var needFd = true;
|
|
// 20. If roundingPriority is "auto", then
|
|
if (roundingPriority === 'auto') {
|
|
// 20.a. Set needSd to hasSd.
|
|
needSd = hasSd;
|
|
// 20.b. If hasSd is true or hasFd is false and notation is "compact", then
|
|
if (hasSd || (!hasFd && notation === 'compact')) {
|
|
// 20.b.i. Set needFd to false.
|
|
needFd = false;
|
|
}
|
|
}
|
|
// 21. If needSd is true, then
|
|
if (needSd) {
|
|
// 21.a. If hasSd is true, then
|
|
if (hasSd) {
|
|
// 21.a.i. Set internalSlots.[[MinimumSignificantDigits]] to ? DefaultNumberOption(mnsd, 1, 21, 1).
|
|
internalSlots.minimumSignificantDigits = (0, DefaultNumberOption_1.DefaultNumberOption)(mnsd, 1, 21, 1);
|
|
// 21.a.ii. Set internalSlots.[[MaximumSignificantDigits]] to ? DefaultNumberOption(mxsd, internalSlots.[[MinimumSignificantDigits]], 21, 21).
|
|
internalSlots.maximumSignificantDigits = (0, DefaultNumberOption_1.DefaultNumberOption)(mxsd, internalSlots.minimumSignificantDigits, 21, 21);
|
|
}
|
|
else {
|
|
// 21.b. Else,
|
|
// 21.b.i. Set internalSlots.[[MinimumSignificantDigits]] to 1.
|
|
internalSlots.minimumSignificantDigits = 1;
|
|
// 21.b.ii. Set internalSlots.[[MaximumSignificantDigits]] to 21.
|
|
internalSlots.maximumSignificantDigits = 21;
|
|
}
|
|
}
|
|
// 22. If needFd is true, then
|
|
if (needFd) {
|
|
// 22.a. If hasFd is true, then
|
|
if (hasFd) {
|
|
// 22.a.i. Set mnfd to ? DefaultNumberOption(mnfd, 0, 100, undefined).
|
|
mnfd = (0, DefaultNumberOption_1.DefaultNumberOption)(mnfd, 0, 100, undefined);
|
|
// 22.a.ii. Set mxfd to ? DefaultNumberOption(mxfd, 0, 100, undefined).
|
|
mxfd = (0, DefaultNumberOption_1.DefaultNumberOption)(mxfd, 0, 100, undefined);
|
|
// 22.a.iii. If mnfd is undefined, then
|
|
if (mnfd === undefined) {
|
|
// 22.a.iii.1. Assert: mxfd is not undefined.
|
|
(0, utils_1.invariant)(mxfd !== undefined, 'maximumFractionDigits must be defined');
|
|
// 22.a.iii.2. Set mnfd to min(mnfdDefault, mxfd).
|
|
mnfd = Math.min(mnfdDefault, mxfd);
|
|
}
|
|
else if (mxfd === undefined) {
|
|
// 22.a.iv. Else if mxfd is undefined, then
|
|
// 22.a.iv.1. Set mxfd to max(mxfdDefault, mnfd).
|
|
mxfd = Math.max(mxfdDefault, mnfd);
|
|
}
|
|
else if (mnfd > mxfd) {
|
|
// 22.a.v. Else if mnfd > mxfd, throw a RangeError exception.
|
|
throw new RangeError("Invalid range, ".concat(mnfd, " > ").concat(mxfd));
|
|
}
|
|
// 22.a.vi. Set internalSlots.[[MinimumFractionDigits]] to mnfd.
|
|
internalSlots.minimumFractionDigits = mnfd;
|
|
// 22.a.vii. Set internalSlots.[[MaximumFractionDigits]] to mxfd.
|
|
internalSlots.maximumFractionDigits = mxfd;
|
|
}
|
|
else {
|
|
// 22.b. Else,
|
|
// 22.b.i. Set internalSlots.[[MinimumFractionDigits]] to mnfdDefault.
|
|
internalSlots.minimumFractionDigits = mnfdDefault;
|
|
// 22.b.ii. Set internalSlots.[[MaximumFractionDigits]] to mxfdDefault.
|
|
internalSlots.maximumFractionDigits = mxfdDefault;
|
|
}
|
|
}
|
|
// 23. If needSd is false and needFd is false, then
|
|
if (!needSd && !needFd) {
|
|
// 23.a. Set internalSlots.[[MinimumFractionDigits]] to 0.
|
|
internalSlots.minimumFractionDigits = 0;
|
|
// 23.b. Set internalSlots.[[MaximumFractionDigits]] to 0.
|
|
internalSlots.maximumFractionDigits = 0;
|
|
// 23.c. Set internalSlots.[[MinimumSignificantDigits]] to 1.
|
|
internalSlots.minimumSignificantDigits = 1;
|
|
// 23.d. Set internalSlots.[[MaximumSignificantDigits]] to 2.
|
|
internalSlots.maximumSignificantDigits = 2;
|
|
// 23.e. Set internalSlots.[[RoundingType]] to "morePrecision".
|
|
internalSlots.roundingType = 'morePrecision';
|
|
// 23.f. Set internalSlots.[[RoundingPriority]] to "morePrecision".
|
|
internalSlots.roundingPriority = 'morePrecision';
|
|
}
|
|
else if (roundingPriority === 'morePrecision') {
|
|
// 24. Else if roundingPriority is "morePrecision", then
|
|
// 24.a. Set internalSlots.[[RoundingType]] to "morePrecision".
|
|
internalSlots.roundingType = 'morePrecision';
|
|
// 24.b. Set internalSlots.[[RoundingPriority]] to "morePrecision".
|
|
internalSlots.roundingPriority = 'morePrecision';
|
|
}
|
|
else if (roundingPriority === 'lessPrecision') {
|
|
// 25. Else if roundingPriority is "lessPrecision", then
|
|
// 25.a. Set internalSlots.[[RoundingType]] to "lessPrecision".
|
|
internalSlots.roundingType = 'lessPrecision';
|
|
// 25.b. Set internalSlots.[[RoundingPriority]] to "lessPrecision".
|
|
internalSlots.roundingPriority = 'lessPrecision';
|
|
}
|
|
else if (hasSd) {
|
|
// 26. Else if hasSd is true, then
|
|
// 26.a. Set internalSlots.[[RoundingType]] to "significantDigits".
|
|
internalSlots.roundingType = 'significantDigits';
|
|
// 26.b. Set internalSlots.[[RoundingPriority]] to "auto".
|
|
internalSlots.roundingPriority = 'auto';
|
|
}
|
|
else {
|
|
// 27. Else,
|
|
// 27.a. Set internalSlots.[[RoundingType]] to "fractionDigits".
|
|
internalSlots.roundingType = 'fractionDigits';
|
|
// 27.b. Set internalSlots.[[RoundingPriority]] to "auto".
|
|
internalSlots.roundingPriority = 'auto';
|
|
}
|
|
// 28. If roundingIncrement is not 1, then
|
|
if (roundingIncrement !== 1) {
|
|
// 28.a. Assert: internalSlots.[[RoundingType]] is "fractionDigits".
|
|
(0, utils_1.invariant)(internalSlots.roundingType === 'fractionDigits', 'Invalid roundingType', TypeError);
|
|
// 28.b. Assert: internalSlots.[[MaximumFractionDigits]] is equal to internalSlots.[[MinimumFractionDigits]].
|
|
(0, utils_1.invariant)(internalSlots.maximumFractionDigits ===
|
|
internalSlots.minimumFractionDigits, 'With roundingIncrement > 1, maximumFractionDigits and minimumFractionDigits must be equal.', RangeError);
|
|
}
|
|
}
|