-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage.json
More file actions
138 lines (138 loc) · 9.13 KB
/
Copy pathpackage.json
File metadata and controls
138 lines (138 loc) · 9.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{
"name": "sectorcalc",
"version": "0.0.1",
"private": true,
"type": "module",
"description": "Deterministic engineering calculators for the shop floor.",
"license": "UNLICENSED",
"engines": {
"node": ">=20.0.0",
"npm": ">=10.0.0"
},
"scripts": {
"dev": "vite",
"build": "node scripts/assert-production-env.mjs && node scripts/build-guides-enterprise.mjs && node scripts/build-hubs-enterprise.mjs && node scripts/inject-guides.mjs && node scripts/inject-eeat.mjs && node scripts/inject-site-nav.mjs && node scripts/inject-related-tools.mjs && node scripts/inject-money-pages.mjs && node scripts/inject-aeo-hubs.mjs && node scripts/inject-free-tools-strip.mjs && node scripts/inject-free-tool-aeo.mjs && node scripts/inject-pricing-floor.mjs && node scripts/inject-leaf-nav.mjs && node scripts/inject-calc-sheet.mjs && node scripts/inject-tools-resources.mjs && node scripts/inject-tools-catalog.mjs && node scripts/export-seo-registry.mjs && node scripts/generate-sitemap.mjs && node scripts/generate-llm-discovery.mjs && python3 scripts/inject-seo.py && node scripts/inject-site-footer.mjs && node scripts/verify-calculator-dom-order.mjs && node scripts/hash-head-assets.mjs && node scripts/inject-head-assets.mjs && node scripts/normalize-root-assets.mjs && node scripts/verify-form-fields.mjs && node scripts/verify-charts-engineering.mjs && node scripts/verify-home-credit-packs.mjs && node scripts/verify-home-footer.mjs && node scripts/verify-honest-credits.mjs && node scripts/verify-demo-lock.mjs && node scripts/verify-tool-pricing-ssot.mjs && node scripts/verify-tools-catalog-dna.mjs && tsc --noEmit && vite build && node scripts/normalize-root-assets.mjs --dist && node scripts/normalize-root-assets.mjs --check --dist && node scripts/verify-nav.mjs && node scripts/guard-head-ssot.mjs && node scripts/guard-case-studies-academic.mjs && node scripts/guard-tools-prerender.mjs --dist && node scripts/guard-sitemap-coverage.mjs && node scripts/verify-calculator-dom-order.mjs --dist && node scripts/verify-form-fields.mjs && node scripts/verify-charts-engineering.mjs && node scripts/verify-seo.mjs && node scripts/verify-guides-exclusive.mjs && node scripts/verify-seo-money.mjs && node scripts/verify-eng-paper.mjs && node scripts/verify-hero-sacred.mjs && node scripts/verify-home-credit-packs.mjs && node scripts/verify-home-footer.mjs && node scripts/verify-honest-credits.mjs && node scripts/verify-demo-lock.mjs && node scripts/verify-tool-pricing-ssot.mjs && node scripts/verify-production-bundle.mjs && node scripts/verify-paddle-production-guard.mjs --dist",
"build:guides": "node scripts/build-guides-enterprise.mjs",
"build:hubs": "node scripts/build-hubs-enterprise.mjs",
"inject:tools-resources": "node scripts/inject-tools-resources.mjs",
"inject:aeo": "node scripts/inject-aeo-hubs.mjs",
"inject:free": "node scripts/inject-free-tools-strip.mjs && node scripts/inject-free-tool-aeo.mjs && node scripts/inject-pricing-floor.mjs",
"inject:money": "node scripts/inject-money-pages.mjs",
"verify:home-credits": "node scripts/verify-home-credit-packs.mjs",
"verify:dom-order": "node scripts/verify-calculator-dom-order.mjs",
"verify:home-footer": "node scripts/verify-home-footer.mjs",
"verify:honest-credits": "node scripts/verify-honest-credits.mjs",
"verify:demo-lock": "node scripts/verify-demo-lock.mjs",
"verify:tool-pricing": "node scripts/verify-tool-pricing-ssot.mjs",
"verify:root-assets": "node scripts/normalize-root-assets.mjs --check --dist",
"smoke:prod-env": "node scripts/assert-production-env.mjs",
"smoke:paddle": "node scripts/smoke-paddle-sandbox.mjs",
"verify:paddle-catalog": "node scripts/verify-paddle-catalog.mjs",
"verify:paddle-production": "node scripts/verify-paddle-production-guard.mjs",
"reconcile:purchases": "node scripts/reconcile-purchases.mjs",
"seo:preflight": "node scripts/seo/preflight.ts --site $SITE_ID",
"seo:validate-registry": "node scripts/seo/registry-validate.ts --site $SITE_ID --dry-run",
"seo:conformance": "vitest run tests/conformance",
"seo:coldstart-check": "node scripts/seo/coldstart-check.ts --site $SITE_ID --dry-run",
"verify:seo": "node scripts/verify-seo.mjs",
"verify:seo:registry": "node scripts/export-seo-registry.mjs",
"verify:seo:llms": "node scripts/generate-llm-discovery.mjs && node scripts/verify-seo.mjs",
"verify:seo:links": "node scripts/verify-internal-link-graph.mjs",
"verify:seo:language": "node scripts/verify-language-integrity.mjs",
"verify:seo:schema": "node scripts/verify-schema.mjs",
"verify:seo:identity": "node scripts/verify-tool-content-identity.mjs",
"verify:seo:enterprise": "node scripts/verify-seo-enterprise.mjs",
"verify:seo:money": "node scripts/verify-seo-money.mjs",
"verify:assets": "node scripts/normalize-root-assets.mjs --check",
"verify:host-parity": "node scripts/verify-host-parity.mjs",
"verify:legacy-surface": "node scripts/verify-legacy-surface.mjs",
"seo:money:generate": "npx vite-node scripts/generate-worked-examples.mjs && node scripts/inject-money-pages.mjs",
"verify:eng-paper": "node scripts/verify-eng-paper.mjs",
"verify:hero": "node scripts/verify-hero-sacred.mjs",
"inject:guides": "node scripts/inject-guides.mjs",
"inject:nav": "node scripts/inject-site-nav.mjs",
"inject:leaf-nav": "node scripts/inject-leaf-nav.mjs",
"inject:footer": "node scripts/inject-site-footer.mjs",
"inject:head-assets": "node scripts/inject-head-assets.mjs",
"inject:tools-catalog": "node scripts/inject-tools-catalog.mjs",
"guard:sitemap": "node scripts/guard-sitemap-coverage.mjs",
"guard:tools-prerender": "node scripts/guard-tools-prerender.mjs",
"guard:head-ssot": "node scripts/guard-head-ssot.mjs",
"guard:case-studies-academic": "node scripts/guard-case-studies-academic.mjs",
"hash:head-assets": "node scripts/hash-head-assets.mjs",
"new:tool": "node scripts/new-tool.mjs",
"verify:forms": "node scripts/verify-form-fields.mjs",
"verify:nav": "node scripts/verify-nav.mjs",
"typecheck": "tsc --noEmit",
"preview": "vite preview",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"test:e2e": "node scripts/export-regression-catalog.mjs --check && playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:debug": "playwright test --debug",
"test:e2e:critical": "playwright test --project=chromium --grep @critical --workers=1",
"test:e2e:matrix": "playwright test --project=chromium --grep @matrix",
"test:e2e:deep": "playwright test --project=chromium --grep @deep",
"test:e2e:prod": "BASE_URL=https://sectorcalc.com playwright test --project=chromium --grep @critical --workers=1",
"test:e2e:preview": "playwright test --project=chromium --grep @critical --workers=1",
"test:unit": "vitest run",
"test:unit:watch": "vitest",
"test:all": "npm run test:unit && npm run test:e2e",
"test:deterministic": "vitest run tests/deterministic",
"lint": "eslint src/ scripts/ --ext .js,.mjs --no-error-on-unmatched-pattern",
"lint:fix": "eslint src/ scripts/ --ext .js,.mjs --fix --no-error-on-unmatched-pattern",
"format": "prettier --write \"src/**/*.{js,json,css,html}\"",
"format:check": "prettier --check \"src/**/*.{js,json,css,html}\"",
"schema:validate": "node scripts/validate-schemas.js",
"check:lang": "node scripts/check-language.mjs --strict",
"check": "npm run format:check && npm run lint && npm run test",
"catalog:regression": "node scripts/export-regression-catalog.mjs",
"catalog:regression:check": "node scripts/export-regression-catalog.mjs --check",
"regression:ci": "npm run typecheck && npm run check:lang && npm run test:unit && npm run catalog:regression:check && npm run build && npm run test:e2e",
"regression:prod": "npm run test:e2e:prod",
"regression:visual": "REGRESSION_VISUAL=1 playwright test --project=chromium --grep @visual",
"prepare": "husky",
"inject:calc-sheet": "node scripts/inject-calc-sheet.mjs",
"inject:eeat": "node scripts/inject-eeat.mjs",
"verify:guides": "node scripts/verify-guides-exclusive.mjs",
"verify:charts": "node scripts/verify-charts-engineering.mjs",
"verify:paddle-live": "node scripts/verify-paddle-live.mjs",
"test:rules": "firebase emulators:exec --only firestore --project demo-sectorcalc \"vitest run tests/firestore-rules.test.ts\""
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"prettier --write"
],
"*.{css,scss,json,md}": [
"prettier --write"
],
"src/**/*.{html,css}": [
"prettier --write"
]
},
"dependencies": {
"ajv": "8.12.0",
"ajv-formats": "2.1.1",
"chart.js": "4.4.1",
"decimal.js": "10.4.3",
"dexie": "3.2.7",
"firebase": "^10.14.1",
"html2canvas": "1.4.1",
"jspdf": "2.5.1",
"lit": "3.1.2"
},
"devDependencies": {
"@firebase/rules-unit-testing": "^3.0.2",
"@playwright/test": "1.42.1",
"@vitest/coverage-v8": "1.3.1",
"eslint": "8.57.0",
"husky": "^9.1.7",
"jsdom": "24.0.0",
"lint-staged": "^15.5.2",
"prettier": "3.2.5",
"typescript": "5.4.5",
"vite": "5.1.4",
"vitest": "1.3.1"
}
}