// Generated by scripts/generate-manifest.mjs. Do not edit by hand. import type { AddOnCompiled } from '../../../../../types.js' type TemplateRecord = Record type TemplateAddOn = TemplateRecord & { integrations?: Array routes?: Array } type TemplateRenderContext = { [key: string]: any packageManager: any projectName: any typescript: any tailwind: any blank: any js: any jsx: any fileRouter: any codeRouter: any routerOnly: any includeExamples: any addOnEnabled: Record addOnOption: Record addOns: Array integrations: Array routes: Array getPackageManagerAddScript: (...args: Array) => string getPackageManagerRunScript: (...args: Array) => string getPackageManagerExecuteScript: (...args: Array) => string relativePath: (...args: Array) => string integrationImportContent: (...args: Array) => string integrationImportCode: (...args: Array) => string | undefined renderTemplate: (content: string) => string ignoreFile: () => never } type TemplateRenderer = (context: TemplateRenderContext) => string | undefined function __escapeXML(value: unknown) { if (value === undefined || value === null) { return '' } return String(value).replace(/[&<>'"]/g, (character) => { switch (character) { case '&': return '&' case '<': return '<' case '>': return '>' case '"': return '"' case "'": return ''' default: return character } }) } export function getManifestTemplateKey(template: string) { let hash = 0x811c9dc5 for (let i = 0; i < template.length; i++) { hash ^= template.charCodeAt(i) hash = Math.imul(hash, 0x01000193) >>> 0 } return `${hash.toString(16).padStart(8, '0')}:${template.length}` } const templateRenderers: Record = { } export function hasManifestTemplate(template: string) { return getManifestTemplateKey(template) in templateRenderers } export function renderManifestTemplate( template: string, context: TemplateRenderContext, ) { const key = getManifestTemplateKey(template) const renderer = templateRenderers[key] if (!renderer) { throw new Error(`Template ${key} was not precompiled into the manifest`) } return renderer(context) ?? '' } export const addOn = { "name": "ESLint", "description": "ESLint + Prettier toolchain support.", "phase": "setup", "type": "toolchain", "category": "tooling", "exclusive": [ "linter" ], "color": "#4B32C3", "modes": [ "code-router", "file-router" ], "link": "https://eslint.org", "id": "eslint", "version": "0.0.0", "packageAdditions": { "scripts": { "lint": "eslint", "format": "prettier --write . && eslint --fix", "check": "prettier --check ." }, "devDependencies": { "@tanstack/eslint-config": "latest", "eslint": "^9.20.0", "prettier": "^3.8.1" } }, "readmeIsEjs": false, "files": { "_dot_prettierignore": "package-lock.json\npnpm-lock.yaml\nyarn.lock", "eslint.config.js": "// @ts-check\n\nimport { tanstackConfig } from \"@tanstack/eslint-config\";\n\nexport default [\n ...tanstackConfig,\n {\n rules: {\n \"import/no-cycle\": \"off\",\n \"import/order\": \"off\",\n \"sort-imports\": \"off\",\n \"@typescript-eslint/array-type\": \"off\",\n \"@typescript-eslint/require-await\": \"off\",\n \"pnpm/json-enforce-catalog\": \"off\",\n },\n },\n {\n ignores: [\"eslint.config.js\", \"prettier.config.js\"],\n },\n];\n", "prettier.config.js": "// @ts-check\n\n/** @type {import('prettier').Config} */\nconst config = {\n semi: false,\n singleQuote: true,\n trailingComma: \"all\",\n};\n\nexport default config;\n" }, "deletedFiles": [], "smallLogo": "\n\n \n \n \n \n\n" } satisfies AddOnCompiled