challenge-algorithms-v2.0-D.../node_modules/@babel/traverse/lib/scope/binding.js.map

1 line
5.7 KiB
Plaintext

{"version":3,"names":["Binding","constructor","identifier","scope","path","kind","constantViolations","constant","referencePaths","referenced","references","isDeclaredInLoop","Error","reassign","clearValue","deoptValue","hasDeoptedValue","setValue","value","hasValue","indexOf","push","reference","dereference","parentPath","key","isFunctionParent","isWhile","isForXStatement","isForStatement"],"sources":["../../src/scope/binding.ts"],"sourcesContent":["import type NodePath from \"../path\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index\";\n\nexport type BindingKind =\n | \"var\" /* var declarator */\n | \"let\" /* let declarator, class declaration id, catch clause parameters */\n | \"const\" /* const declarator */\n | \"module\" /* import specifiers */\n | \"hoisted\" /* function declaration id */\n | \"param\" /* function declaration parameters */\n | \"local\" /* function expression id, class expression id */\n | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n * * Node path.\n * * Amount of times referenced by other nodes.\n * * Paths to nodes that reassign or modify this binding.\n * * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n\n constructor({\n identifier,\n scope,\n path,\n kind,\n }: {\n identifier: t.Identifier;\n scope: Scope;\n path: NodePath;\n kind: BindingKind;\n }) {\n this.identifier = identifier;\n this.scope = scope;\n this.path = path;\n this.kind = kind;\n\n if (\n (kind === \"var\" || kind === \"hoisted\") &&\n // https://github.com/rollup/rollup/issues/4654\n // Rollup removes the path argument from this call. Add an\n // unreachable IIFE (that rollup doesn't know is unreachable)\n // with side effects, to prevent it from messing up with arguments.\n // You can reproduce this with\n // BABEL_8_BREAKING=true make prepublish-build\n isDeclaredInLoop(\n path ||\n (() => {\n throw new Error(\"Internal Babel error: unreachable \");\n })(),\n )\n ) {\n this.reassign(path);\n }\n\n this.clearValue();\n }\n\n constantViolations: Array<NodePath> = [];\n constant: boolean = true;\n\n referencePaths: Array<NodePath> = [];\n referenced: boolean = false;\n references: number = 0;\n\n declare hasDeoptedValue: boolean;\n declare hasValue: boolean;\n declare value: any;\n\n deoptValue() {\n this.clearValue();\n this.hasDeoptedValue = true;\n }\n\n setValue(value: any) {\n if (this.hasDeoptedValue) return;\n this.hasValue = true;\n this.value = value;\n }\n\n clearValue() {\n this.hasDeoptedValue = false;\n this.hasValue = false;\n this.value = null;\n }\n\n /**\n * Register a constant violation with the provided `path`.\n */\n\n reassign(path: NodePath) {\n this.constant = false;\n if (this.constantViolations.indexOf(path) !== -1) {\n return;\n }\n this.constantViolations.push(path);\n }\n\n /**\n * Increment the amount of references to this binding.\n */\n\n reference(path: NodePath) {\n if (this.referencePaths.indexOf(path) !== -1) {\n return;\n }\n this.referenced = true;\n this.references++;\n this.referencePaths.push(path);\n }\n\n /**\n * Decrement the amount of references to this binding.\n */\n\n dereference() {\n this.references--;\n this.referenced = !!this.references;\n }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n for (\n let { parentPath, key } = path;\n parentPath;\n { parentPath, key } = parentPath\n ) {\n if (parentPath.isFunctionParent()) return false;\n if (\n parentPath.isWhile() ||\n parentPath.isForXStatement() ||\n (parentPath.isForStatement() && key === \"body\")\n ) {\n return true;\n }\n }\n return false;\n}\n"],"mappings":";;;;;;;AAwBe,MAAMA,OAAN,CAAc;EAM3BC,WAAW,CAAC;IACVC,UADU;IAEVC,KAFU;IAGVC,IAHU;IAIVC;EAJU,CAAD,EAUR;IAAA,KAfHH,UAeG;IAAA,KAdHC,KAcG;IAAA,KAbHC,IAaG;IAAA,KAZHC,IAYG;IAAA,KA2BHC,kBA3BG,GA2BmC,EA3BnC;IAAA,KA4BHC,QA5BG,GA4BiB,IA5BjB;IAAA,KA8BHC,cA9BG,GA8B+B,EA9B/B;IAAA,KA+BHC,UA/BG,GA+BmB,KA/BnB;IAAA,KAgCHC,UAhCG,GAgCkB,CAhClB;IACD,KAAKR,UAAL,GAAkBA,UAAlB;IACA,KAAKC,KAAL,GAAaA,KAAb;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAKC,IAAL,GAAYA,IAAZ;;IAEA,IACE,CAACA,IAAI,KAAK,KAAT,IAAkBA,IAAI,KAAK,SAA5B,KAOAM,gBAAgB,CACdP,IAAI,IACF,CAAC,MAAM;MACL,MAAM,IAAIQ,KAAJ,CAAU,oCAAV,CAAN;IACD,CAFD,GAFY,CARlB,EAcE;MACA,KAAKC,QAAL,CAAcT,IAAd;IACD;;IAED,KAAKU,UAAL;EACD;;EAaDC,UAAU,GAAG;IACX,KAAKD,UAAL;IACA,KAAKE,eAAL,GAAuB,IAAvB;EACD;;EAEDC,QAAQ,CAACC,KAAD,EAAa;IACnB,IAAI,KAAKF,eAAT,EAA0B;IAC1B,KAAKG,QAAL,GAAgB,IAAhB;IACA,KAAKD,KAAL,GAAaA,KAAb;EACD;;EAEDJ,UAAU,GAAG;IACX,KAAKE,eAAL,GAAuB,KAAvB;IACA,KAAKG,QAAL,GAAgB,KAAhB;IACA,KAAKD,KAAL,GAAa,IAAb;EACD;;EAMDL,QAAQ,CAACT,IAAD,EAAiB;IACvB,KAAKG,QAAL,GAAgB,KAAhB;;IACA,IAAI,KAAKD,kBAAL,CAAwBc,OAAxB,CAAgChB,IAAhC,MAA0C,CAAC,CAA/C,EAAkD;MAChD;IACD;;IACD,KAAKE,kBAAL,CAAwBe,IAAxB,CAA6BjB,IAA7B;EACD;;EAMDkB,SAAS,CAAClB,IAAD,EAAiB;IACxB,IAAI,KAAKI,cAAL,CAAoBY,OAApB,CAA4BhB,IAA5B,MAAsC,CAAC,CAA3C,EAA8C;MAC5C;IACD;;IACD,KAAKK,UAAL,GAAkB,IAAlB;IACA,KAAKC,UAAL;IACA,KAAKF,cAAL,CAAoBa,IAApB,CAAyBjB,IAAzB;EACD;;EAMDmB,WAAW,GAAG;IACZ,KAAKb,UAAL;IACA,KAAKD,UAAL,GAAkB,CAAC,CAAC,KAAKC,UAAzB;EACD;;AAvG0B;;;;AA0G7B,SAASC,gBAAT,CAA0BP,IAA1B,EAA0C;EACxC,KACE,IAAI;IAAEoB,UAAF;IAAcC;EAAd,IAAsBrB,IAD5B,EAEEoB,UAFF,GAGE;IAAEA,UAAF;IAAcC;EAAd,IAAsBD,UAHxB,GAIE;IACA,IAAIA,UAAU,CAACE,gBAAX,EAAJ,EAAmC,OAAO,KAAP;;IACnC,IACEF,UAAU,CAACG,OAAX,MACAH,UAAU,CAACI,eAAX,EADA,IAECJ,UAAU,CAACK,cAAX,MAA+BJ,GAAG,KAAK,MAH1C,EAIE;MACA,OAAO,IAAP;IACD;EACF;;EACD,OAAO,KAAP;AACD"}