Rocky_Mountain_Vending/.pnpm-store/v10/files/16/09a42bda545a058fd81a5a1dc55a3c82c7dd8a600b9687ad6a86a98bcef65754aa0fb8de3429dd88c81d62c4f74c9e06ff143a0374fc99fa532f0715fcc2ba
DMleadgen 46d973904b
Initial commit: Rocky Mountain Vending website
Next.js website for Rocky Mountain Vending company featuring:
- Product catalog with Stripe integration
- Service areas and parts pages
- Admin dashboard with Clerk authentication
- SEO optimized pages with JSON-LD structured data

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 16:22:15 -07:00

46 lines
1.1 KiB
Text

import { Node } from 'estree-walker';
interface Extractors {
[key: string]: (names: Array<string>, param: Node) => void;
}
const extractors: Extractors = {
ArrayPattern(names: Array<string>, param: Node) {
for (const element of param.elements) {
if (element) extractors[element.type](names, element);
}
},
AssignmentPattern(names: Array<string>, param: Node) {
extractors[param.left.type](names, param.left);
},
Identifier(names: Array<string>, param: Node) {
names.push(param.name);
},
MemberExpression() {},
ObjectPattern(names: Array<string>, param: Node) {
for (const prop of param.properties) {
if (prop.type === 'RestElement') {
extractors.RestElement(names, prop);
} else {
extractors[prop.value.type](names, prop.value);
}
}
},
RestElement(names: Array<string>, param: Node) {
extractors[param.argument.type](names, param.argument);
}
};
const extractAssignedNames = function extractAssignedNames(param: Node): Array<string> {
const names: Array<string> = [];
extractors[param.type](names, param);
return names;
};
export { extractAssignedNames as default };