routie dev init since i didn't adhere to any proper guidance up until now

This commit is contained in:
2026-04-29 22:27:29 -06:00
commit e1dabb71e2
15301 changed files with 3562618 additions and 0 deletions
@@ -0,0 +1,79 @@
import { a as createRule, r as getValue } from "../utils.mjs";
//#region src/rules/prefer-default-export/prefer-default-export.ts
var prefer_default_export_default = createRule({
name: "prefer-default-export",
meta: {
type: "suggestion",
docs: { description: "Prefer a default export if module exports a single name or multiple names." },
schema: [{
type: "object",
properties: { target: {
type: "string",
enum: ["single", "any"],
default: "single"
} },
additionalProperties: false
}],
messages: {
single: "Prefer default export on a file with single export.",
any: "Prefer default export to be present on every file that has export."
}
},
defaultOptions: [{ target: "single" }],
create(context, [options]) {
let specifierExportCount = 0;
let hasDefaultExport = false;
let hasStarExport = false;
let hasTypeExport = false;
let namedExportNode;
const { target } = options;
function captureDeclaration(identifierOrPattern) {
if (identifierOrPattern?.type === "ObjectPattern") for (const property of identifierOrPattern.properties) captureDeclaration(property.value);
else if (identifierOrPattern?.type === "ArrayPattern") for (const el of identifierOrPattern.elements) captureDeclaration(el);
else specifierExportCount++;
}
return {
ExportDefaultSpecifier() {
hasDefaultExport = true;
},
ExportSpecifier(node) {
if (getValue(node.exported) === "default") hasDefaultExport = true;
else {
specifierExportCount++;
namedExportNode = node;
}
},
ExportNamedDeclaration(node) {
if (!node.declaration) return;
const { type } = node.declaration;
if (type === "TSTypeAliasDeclaration" || type === "TSInterfaceDeclaration") {
specifierExportCount++;
hasTypeExport = true;
return;
}
if ("declarations" in node.declaration && node.declaration.declarations) for (const declaration of node.declaration.declarations) captureDeclaration(declaration.id);
else specifierExportCount++;
namedExportNode = node;
},
ExportDefaultDeclaration() {
hasDefaultExport = true;
},
ExportAllDeclaration() {
hasStarExport = true;
},
"Program:exit": function() {
if (hasDefaultExport || hasStarExport || hasTypeExport) return;
if (target === "single" && specifierExportCount === 1) context.report({
node: namedExportNode,
messageId: "single"
});
else if (target === "any" && specifierExportCount > 0) context.report({
node: namedExportNode,
messageId: "any"
});
}
};
}
});
//#endregion
export { prefer_default_export_default as t };