mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-08-06 04:37:37 +00:00
fa07af2d82
Largely this is written by an LLM after I provided the targets, and I've looked through the tests themselves to confirm they are accurate. There may be improvements in how to actually *set up* the tests, though, as I am less familiar with those. This has two test suites: the first for html structure, the second for behavior. Each of them calls another script that provides helper functions for setting things up and taking them down. This keeps the test suites themselves fairly lean.
177 lines
6.1 KiB
JSON
177 lines
6.1 KiB
JSON
{
|
|
"name": "homebrewery",
|
|
"description": "Create authentic looking D&D homebrews using only markdown",
|
|
"version": "3.22.0",
|
|
"type": "module",
|
|
"engines": {
|
|
"npm": ">=10.8 <12",
|
|
"node": ">=20.18 <25"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git://github.com/naturalcrit/homebrewery.git"
|
|
},
|
|
"scripts": {
|
|
"start": "node server.js",
|
|
"build": "vite build",
|
|
"lint": "eslint --fix",
|
|
"lint:dry": "eslint",
|
|
"stylelint": "stylelint --fix **/*.{less}",
|
|
"stylelint:dry": "stylelint **/*.less",
|
|
"circleci": "npm test && eslint **/*.{js,jsx} --max-warnings=0",
|
|
"verify": "npm run lint && npm test",
|
|
"test": "jest --runInBand",
|
|
"test:api-unit": "jest \"server/.*.spec.js\" --verbose",
|
|
"test:api-unit:themes": "jest \"server/.*.spec.js\" -t \"theme bundle\" --verbose",
|
|
"test:api-unit:css": "jest \"server/.*.spec.js\" -t \"Get CSS\" --verbose",
|
|
"test:api-unit:notifications": "jest \"server/.*.spec.js\" -t \"Notifications\" --verbose",
|
|
"test:content-negotiation": "jest \"server/middleware/.*.spec.js\" --verbose",
|
|
"test:coverage": "jest --coverage --silent --runInBand",
|
|
"test:dev": "jest --verbose --watch",
|
|
"test:basic": "jest tests/markdown/basic.test.js --verbose",
|
|
"test:components": "jest \"client/components/.*\\.test\\.(js|jsx)$\" --verbose",
|
|
"test:variables": "jest tests/markdown/variables.test.js --verbose",
|
|
"test:mustache-syntax": "jest \".*(mustache-syntax).*\" --verbose --noStackTrace",
|
|
"test:mustache-syntax:inline": "jest \".*(mustache-syntax).*\" -t '^Inline:.*' --verbose --noStackTrace",
|
|
"test:mustache-syntax:block": "jest \".*(mustache-syntax).*\" -t '^Block:.*' --verbose --noStackTrace",
|
|
"test:mustache-syntax:injection": "jest \".*(mustache-syntax).*\" -t '^Injection:.*' --verbose --noStackTrace",
|
|
"test:hard-breaks": "jest tests/markdown/hard-breaks.test.js --verbose --noStackTrace",
|
|
"test:non-breaking-spaces": "jest tests/markdown/non-breaking-spaces.test.js --verbose --noStackTrace",
|
|
"test:emojis": "jest tests/markdown/emojis.test.js --verbose --noStackTrace",
|
|
"test:route": "jest tests/routes/static-pages.test.js --verbose",
|
|
"test:safehtml": "jest tests/html/safeHTML.test.js --verbose",
|
|
"phb": "node --experimental-require-module scripts/phb.js",
|
|
"prod": "set NODE_ENV=production && npm run build",
|
|
"postinstall": "npm run build",
|
|
"docker:build": "docker build -t ${DOCKERID}/homebrewery:$npm_package_version .",
|
|
"docker:publish": "docker login && docker push ${DOCKERID}/homebrewery:$npm_package_version"
|
|
},
|
|
"author": "stolksdorf",
|
|
"license": "MIT",
|
|
"eslintIgnore": [
|
|
"build/*"
|
|
],
|
|
"jest": {
|
|
"testTimeout": 30000,
|
|
"modulePaths": [
|
|
"node_modules",
|
|
"shared",
|
|
"server"
|
|
],
|
|
"transformIgnorePatterns": [
|
|
"node_modules/(?!(nanoid|@exodus/bytes|parse5|@asamuzakjp|@csstools|entities)/)"
|
|
],
|
|
"transform": {
|
|
"^.+\\.[jt]sx?$": "babel-jest",
|
|
"^.+\\.mjs$": "babel-jest"
|
|
},
|
|
"moduleNameMapper": {
|
|
"\\.(less|css)$": "<rootDir>/tests/__mocks__/styleMock.js"
|
|
},
|
|
"coveragePathIgnorePatterns": [
|
|
"build/*"
|
|
],
|
|
"coverageThreshold": {
|
|
"global": {
|
|
"statements": 50,
|
|
"branches": 40,
|
|
"functions": 40,
|
|
"lines": 50
|
|
},
|
|
"server/homebrew.api.js": {
|
|
"statements": 60,
|
|
"branches": 50,
|
|
"functions": 65,
|
|
"lines": 70
|
|
}
|
|
},
|
|
"setupFilesAfterEnv": [
|
|
"jest-expect-message"
|
|
]
|
|
},
|
|
"dependencies": {
|
|
"@babel/core": "^7.29.0",
|
|
"@babel/plugin-transform-runtime": "^7.29.0",
|
|
"@babel/preset-env": "^7.29.5",
|
|
"@babel/preset-react": "^7.28.5",
|
|
"@babel/runtime": "^7.29.2",
|
|
"@codemirror/autocomplete": "^6.20.2",
|
|
"@codemirror/commands": "^6.10.3",
|
|
"@codemirror/highlight": "^0.19.8",
|
|
"@codemirror/lang-css": "^6.3.1",
|
|
"@codemirror/lang-javascript": "^6.2.5",
|
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
"@codemirror/language": "^6.12.2",
|
|
"@codemirror/language-data": "^6.5.2",
|
|
"@codemirror/search": "^6.6.0",
|
|
"@codemirror/state": "^6.6.0",
|
|
"@codemirror/view": "^6.43.0",
|
|
"@dmsnell/diff-match-patch": "^1.1.0",
|
|
"@googleapis/drive": "^20.1.0",
|
|
"@lezer/highlight": "^1.2.3",
|
|
"@oddbird/css-anchor-positioning": "^0.9.0",
|
|
"@sanity/diff-match-patch": "^3.2.0",
|
|
"@vitejs/plugin-react": "^5.1.2",
|
|
"body-parser": "^2.2.0",
|
|
"classnames": "^2.5.1",
|
|
"codemirror-5-themes": "^1.5.1",
|
|
"cookie-parser": "^1.4.7",
|
|
"core-js": "^3.49.0",
|
|
"cors": "^2.8.5",
|
|
"create-react-class": "^15.7.0",
|
|
"dedent": "^1.7.1",
|
|
"express": "^5.1.0",
|
|
"express-async-handler": "^1.2.0",
|
|
"express-static-gzip": "3.0.1",
|
|
"fflate": "^0.8.2",
|
|
"fs-extra": "^11.3.5",
|
|
"hash-wasm": "^4.12.0",
|
|
"idb-keyval": "^6.2.2",
|
|
"js-yaml": "^4.1.1",
|
|
"jwt-simple": "^0.5.6",
|
|
"less": "^4.6.4",
|
|
"lodash": "^4.18.1",
|
|
"marked": "15.0.12",
|
|
"marked-alignment-paragraphs": "^1.0.0",
|
|
"marked-definition-lists": "^1.0.1",
|
|
"marked-emoji": "^2.0.2",
|
|
"marked-extended-tables": "^2.0.1",
|
|
"marked-gfm-heading-id": "^4.1.3",
|
|
"marked-nonbreaking-spaces": "^1.0.1",
|
|
"marked-smartypants-lite": "^1.0.3",
|
|
"marked-subsuper-text": "^1.0.4",
|
|
"marked-variables": "^1.0.5",
|
|
"markedLegacy": "npm:marked@^0.3.19",
|
|
"moment": "^2.30.1",
|
|
"mongoose": "^9.6.2",
|
|
"nanoid": "5.1.11",
|
|
"nconf": "^0.13.0",
|
|
"node": "^25.9.0",
|
|
"react": "^19.2.6",
|
|
"react-dom": "^19.2.6",
|
|
"react-frame-component": "^5.3.2",
|
|
"react-router": "^7.15.1",
|
|
"sanitize-filename": "1.6.4",
|
|
"superagent": "^10.2.1"
|
|
},
|
|
"devDependencies": {
|
|
"@stylistic/stylelint-plugin": "^5.0.1",
|
|
"babel-jest": "^30.4.1",
|
|
"babel-plugin-transform-import-meta": "^2.3.3",
|
|
"eslint": "9.7",
|
|
"eslint-plugin-jest": "^29.15.1",
|
|
"eslint-plugin-react": "^7.37.5",
|
|
"globals": "^16.4.0",
|
|
"jest": "^30.4.2",
|
|
"jest-expect-message": "^1.1.3",
|
|
"jsdom": "^28.1.0",
|
|
"jsdom-global": "^3.0.2",
|
|
"postcss-less": "^6.0.0",
|
|
"stylelint": "^17.11.1",
|
|
"stylelint-config-recess-order": "^7.7.0",
|
|
"stylelint-config-recommended": "^18.0.0",
|
|
"supertest": "^7.1.4",
|
|
"vite": "^7.3.1"
|
|
}
|
|
}
|