From 4e87195739f2a5d9a05451b48773c8afdc680765 Mon Sep 17 00:00:00 2001 From: akiyamn Date: Sun, 24 Sep 2023 23:22:21 +1000 Subject: Initial commit (by create-cloudflare CLI) --- .../rollup-pluginutils/src/extractAssignedNames.ts | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 node_modules/rollup-pluginutils/src/extractAssignedNames.ts (limited to 'node_modules/rollup-pluginutils/src/extractAssignedNames.ts') diff --git a/node_modules/rollup-pluginutils/src/extractAssignedNames.ts b/node_modules/rollup-pluginutils/src/extractAssignedNames.ts new file mode 100644 index 0000000..996f41a --- /dev/null +++ b/node_modules/rollup-pluginutils/src/extractAssignedNames.ts @@ -0,0 +1,46 @@ +import { Node } from 'estree-walker'; + +interface Extractors { + [key: string]: (names: Array, param: Node) => void; +} + +const extractors: Extractors = { + ArrayPattern(names: Array, param: Node) { + for (const element of param.elements) { + if (element) extractors[element.type](names, element); + } + }, + + AssignmentPattern(names: Array, param: Node) { + extractors[param.left.type](names, param.left); + }, + + Identifier(names: Array, param: Node) { + names.push(param.name); + }, + + MemberExpression() {}, + + ObjectPattern(names: Array, 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, param: Node) { + extractors[param.argument.type](names, param.argument); + } +}; + +const extractAssignedNames = function extractAssignedNames(param: Node): Array { + const names: Array = []; + + extractors[param.type](names, param); + return names; +}; + +export { extractAssignedNames as default }; -- cgit v1.2.3