Files
klz-cables.com/.pnpm-store/v10/files/a8/81f5e3ab0c92815b80511194e71a2e7324fdd93e461432850f9816d80557ae979c9e6404da708000a221ef238bf6c1d398d6e56e1cb7e53b9ba255899f24a1
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

59 lines
1.8 KiB
Plaintext

// https://github.com/abhiaiyer91/graphql-currency-scalars
import { GraphQLScalarType, Kind } from 'graphql';
import { createGraphQLError } from '../error.js';
function generateCurrency(value) {
if (typeof value !== 'number') {
throw createGraphQLError(`Currency cannot represent non integer type ${JSON.stringify(value)}`);
}
const currencyInCents = parseInt(value.toString(), 10);
return (currencyInCents / 100).toLocaleString('en-US', {
style: 'currency',
currency: 'USD',
});
}
function generateCents(value) {
const digits = value.replace('$', '').replace(',', '');
const number = parseFloat(digits);
return number * 100;
}
/**
* An Currency Scalar.
*
* Input:
* This scalar takes a currency string as input and
* formats it to currency in cents.
*
* Output:
* This scalar serializes currency in cents to
* currency strings.
*/
export const GraphQLUSCurrency = /*#__PURE__*/ new GraphQLScalarType({
name: 'USCurrency',
description: 'A currency string, such as $21.25',
serialize: generateCurrency,
parseValue(value) {
if (typeof value !== 'string') {
throw createGraphQLError(`Currency cannot represent non string type ${JSON.stringify(value)}`);
}
return generateCents(value);
},
parseLiteral(ast) {
if (ast.kind === Kind.STRING) {
if (typeof ast.value === 'string') {
return generateCents(ast.value);
}
}
throw createGraphQLError(`Currency cannot represent an invalid currency-string ${JSON.stringify(ast)}.`, {
nodes: ast,
});
},
extensions: {
codegenScalarType: 'string',
jsonSchema: {
title: 'USCurrency',
type: 'string',
pattern: '^\\$[0-9]+(\\.[0-9]{2})?$',
},
},
});