import { a as createRule } from "../utils.mjs";
//#region src/rules/exports-last/exports-last.ts
function isNonExportStatement({ type }) {
	return type !== "ExportDefaultDeclaration" && type !== "ExportNamedDeclaration" && type !== "ExportAllDeclaration";
}
var exports_last_default = createRule({
	name: "exports-last",
	meta: {
		type: "suggestion",
		docs: { description: "Ensure all exports appear after other statements." },
		schema: [],
		messages: { end: "Export statements should appear at the end of the file" }
	},
	defaultOptions: [],
	create(context) {
		return { Program({ body }) {
			const lastNonExportStatementIndex = body.findLastIndex(isNonExportStatement);
			if (lastNonExportStatementIndex !== -1) {
				for (const node of body.slice(0, lastNonExportStatementIndex)) if (!isNonExportStatement(node)) context.report({
					node,
					messageId: "end"
				});
			}
		} };
	}
});
//#endregion
export { exports_last_default as t };
