Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2f17f24b3b |
@@ -46,6 +46,9 @@ COPY --from=build /app/server ./server
|
|||||||
# Quote PDF branding asset loaded at runtime by pdf generation
|
# Quote PDF branding asset loaded at runtime by pdf generation
|
||||||
COPY logo.png ./logo.png
|
COPY logo.png ./logo.png
|
||||||
|
|
||||||
|
# Sales tax lookup data loaded by expectedSalesTax at runtime
|
||||||
|
COPY --from=build /app/src/modules/sales-utils/salesTaxRates.json ./salesTaxRates.json
|
||||||
|
|
||||||
# Copy Prisma artifacts needed at runtime
|
# Copy Prisma artifacts needed at runtime
|
||||||
COPY --from=build /app/generated/ ./generated/
|
COPY --from=build /app/generated/ ./generated/
|
||||||
COPY --from=build /app/prisma/ ./prisma/
|
COPY --from=build /app/prisma/ ./prisma/
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { readFileSync } from "fs";
|
import { readFileSync } from "fs";
|
||||||
|
import { join } from "path";
|
||||||
|
|
||||||
export interface SalesTaxAddressInput {
|
export interface SalesTaxAddressInput {
|
||||||
line1?: string | null;
|
line1?: string | null;
|
||||||
@@ -25,18 +26,26 @@ interface StateTaxRecord {
|
|||||||
local_jurisdictions?: LocalJurisdiction[];
|
local_jurisdictions?: LocalJurisdiction[];
|
||||||
}
|
}
|
||||||
|
|
||||||
const taxDataPath = new URL("./salesTaxRates.json", import.meta.url);
|
const TAX_DATA_FALLBACK_URL = new URL("./salesTaxRates.json", import.meta.url);
|
||||||
|
|
||||||
|
const TAX_DATA_CANDIDATE_PATHS: Array<string | URL> = [
|
||||||
|
process.env.SALES_TAX_RATES_PATH ?? "",
|
||||||
|
join(process.cwd(), "salesTaxRates.json"),
|
||||||
|
TAX_DATA_FALLBACK_URL,
|
||||||
|
].filter(Boolean);
|
||||||
|
|
||||||
const parseTaxData = (): StateTaxRecord[] => {
|
const parseTaxData = (): StateTaxRecord[] => {
|
||||||
|
for (const source of TAX_DATA_CANDIDATE_PATHS) {
|
||||||
try {
|
try {
|
||||||
const raw = readFileSync(taxDataPath, "utf-8");
|
const raw = readFileSync(source, "utf-8");
|
||||||
const parsed = JSON.parse(raw) as StateTaxRecord[];
|
const parsed = JSON.parse(raw) as StateTaxRecord[];
|
||||||
|
if (Array.isArray(parsed)) return parsed;
|
||||||
if (!Array.isArray(parsed)) return [];
|
|
||||||
return parsed;
|
|
||||||
} catch {
|
} catch {
|
||||||
return [];
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [];
|
||||||
};
|
};
|
||||||
|
|
||||||
const SALES_TAX_DATA = parseTaxData();
|
const SALES_TAX_DATA = parseTaxData();
|
||||||
|
|||||||
Reference in New Issue
Block a user