{"version":3,"sources":["jsdelivr-header.js","/npm/@babel/helper-replace-supers@7.28.6/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@babel/helper-replace-supers@7.28.6/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@babel/helper-replace-supers@7.28.6/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import type { File, NodePath, Scope } from \"@babel/core\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type { HandlerState } from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport { template, types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nconst {\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  identifier,\n  memberExpression,\n  sequenceExpression,\n  stringLiteral,\n  thisExpression,\n} = t;\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.environmentVisitor = visitors.environmentVisitor({});\n  // eslint-disable-next-line no-restricted-globals\n  exports.skipAllButComputedKey = function skipAllButComputedKey(\n    path: NodePath<t.Method | t.ClassProperty>,\n  ) {\n    path.skip();\n    if (path.node.computed) {\n      path.context.maybeQueue(path.get(\"key\"));\n    }\n  };\n}\n\nconst visitor = visitors.environmentVisitor<\n  HandlerState<ReplaceState> & ReplaceState\n>({\n  Super(path, state) {\n    const { node, parentPath } = path;\n    if (!parentPath.isMemberExpression({ object: node })) return;\n    state.handle(parentPath);\n  },\n});\n\nconst unshadowSuperBindingVisitor = visitors.environmentVisitor<{\n  refName: string;\n}>({\n  Scopable(path, { refName }) {\n    // https://github.com/Zzzen/babel/pull/1#pullrequestreview-564833183\n    const binding = path.scope.getOwnBinding(refName);\n    if (binding?.identifier.name === refName) {\n      path.scope.rename(refName);\n    }\n  },\n});\n\ntype SharedState = {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: () => t.Identifier;\n  getSuperRef: () => t.Identifier;\n  // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n  boundGet: HandlerState[\"get\"];\n};\n\ntype Handler = HandlerState<SharedState> & SharedState;\ntype SuperMember = NodePath<\n  t.MemberExpression & {\n    object: t.Super;\n    property: Exclude<t.MemberExpression[\"property\"], t.PrivateName>;\n  }\n>;\n\nconst enum Flags {\n  Prototype = 0b1,\n  Call = 0b10,\n}\n\ninterface SpecHandler\n  extends Pick<\n    Handler,\n    | \"memoise\"\n    | \"get\"\n    | \"set\"\n    | \"destructureSet\"\n    | \"call\"\n    | \"optionalCall\"\n    | \"delete\"\n  > {\n  _get?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n  ): t.CallExpression;\n  _call?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression;\n  _getPrototypeOfExpression(this: Handler & SpecHandler): t.CallExpression;\n  prop(this: Handler & SpecHandler, superMember: SuperMember): t.Expression;\n}\n\nconst specHandlers: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const objectRef = cloneNode(this.getObjectRef());\n    return callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      ...(this.isStatic || this.isPrivateMethod\n        ? []\n        : [t.numericLiteral(Flags.Prototype)]),\n    ]);\n  },\n\n  _call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression {\n    const objectRef = cloneNode(this.getObjectRef());\n    let argsNode: t.ArrayExpression | t.Identifier;\n    if (\n      args.length === 1 &&\n      t.isSpreadElement(args[0]) &&\n      (t.isIdentifier(args[0].argument) ||\n        t.isArrayExpression(args[0].argument))\n    ) {\n      argsNode = args[0].argument;\n    } else {\n      argsNode = t.arrayExpression(args as t.Expression[]);\n    }\n\n    const call = t.callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      t.numericLiteral(\n        Flags.Call |\n          (this.isStatic || this.isPrivateMethod ? 0 : Flags.Prototype),\n      ),\n    ]);\n    if (optional) {\n      return t.optionalCallExpression(call, [argsNode], true);\n    }\n    return callExpression(call, [argsNode]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const objectRef = cloneNode(this.getObjectRef());\n\n    return callExpression(this.file.addHelper(\"superPropSet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.numericLiteral(superMember.isInStrictMode() ? 1 : 0),\n      ...(this.isStatic || this.isPrivateMethod ? [] : [t.numericLiteral(1)]),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, true);\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst specHandlers_old: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    return this._get(superMember);\n  },\n\n  _get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const proto = this._getPrototypeOfExpression();\n    return callExpression(this.file.addHelper(\"get\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      thisExpression(),\n    ]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const proto = this._getPrototypeOfExpression();\n\n    return callExpression(this.file.addHelper(\"set\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.booleanLiteral(superMember.isInStrictMode()),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this._get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(\n      this._get(superMember),\n      cloneNode(thisExpression()),\n      args,\n      true,\n    );\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst looseHandlers = {\n  ...specHandlers,\n\n  prop(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    return cloneNode(property);\n  },\n\n  get(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { isStatic, getSuperRef } = this;\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    let object;\n    if (isStatic) {\n      object =\n        getSuperRef() ??\n        memberExpression(identifier(\"Function\"), identifier(\"prototype\"));\n    } else {\n      object = memberExpression(\n        getSuperRef() ?? identifier(\"Object\"),\n        identifier(\"prototype\"),\n      );\n    }\n\n    return memberExpression(object, prop, computed);\n  },\n\n  set(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return assignmentExpression(\n      \"=\",\n      memberExpression(thisExpression(), prop, computed),\n      value,\n    );\n  },\n\n  destructureSet(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return memberExpression(thisExpression(), prop, computed);\n  },\n\n  call(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, true);\n  },\n};\n\ntype ReplaceSupersOptionsBase = {\n  methodPath: NodePath<\n    | t.ClassMethod\n    | t.ClassProperty\n    | t.ObjectMethod\n    | t.ClassPrivateMethod\n    | t.ClassPrivateProperty\n    | t.StaticBlock\n  >;\n  constantSuper?: boolean;\n  file: File;\n  // objectRef might have been shadowed in child scopes,\n  // in that case, we need to rename related variables.\n  refToPreserve?: t.Identifier;\n};\n\ntype ReplaceSupersOptions = ReplaceSupersOptionsBase &\n  (\n    | { objectRef?: undefined; getObjectRef: () => t.Node }\n    | { objectRef: t.Node; getObjectRef?: undefined }\n  ) &\n  (\n    | { superRef?: undefined; getSuperRef: () => t.Node }\n    | { superRef: t.Node; getSuperRef?: undefined }\n  );\n\ninterface ReplaceState {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: ReplaceSupers[\"getObjectRef\"];\n  getSuperRef: ReplaceSupers[\"getSuperRef\"];\n}\n\nexport default class ReplaceSupers {\n  constructor(opts: ReplaceSupersOptions) {\n    const path = opts.methodPath;\n\n    this.methodPath = path;\n    this.isDerivedConstructor =\n      path.isClassMethod({ kind: \"constructor\" }) && !!opts.superRef;\n    this.isStatic =\n      path.isObjectMethod() ||\n      // @ts-expect-error static is not in ClassPrivateMethod\n      path.node.static ||\n      path.isStaticBlock?.();\n    this.isPrivateMethod = path.isPrivate() && path.isMethod();\n\n    this.file = opts.file;\n    this.constantSuper = process.env.BABEL_8_BREAKING\n      ? opts.constantSuper\n      : // Fallback to isLoose for backward compatibility\n        (opts.constantSuper ?? (opts as any).isLoose);\n    this.opts = opts;\n  }\n\n  declare file: File;\n  declare isDerivedConstructor: boolean;\n  declare constantSuper: boolean;\n  declare isPrivateMethod: boolean;\n  declare isStatic: boolean;\n  declare methodPath: NodePath;\n  declare opts: ReplaceSupersOptions;\n\n  getObjectRef() {\n    return cloneNode(this.opts.objectRef || this.opts.getObjectRef());\n  }\n\n  getSuperRef() {\n    if (this.opts.superRef) return cloneNode(this.opts.superRef);\n    if (this.opts.getSuperRef) {\n      return cloneNode(this.opts.getSuperRef());\n    }\n  }\n\n  replace() {\n    const { methodPath } = this;\n    // https://github.com/babel/babel/issues/11994\n    if (this.opts.refToPreserve) {\n      methodPath.traverse(unshadowSuperBindingVisitor, {\n        refName: this.opts.refToPreserve.name,\n      });\n    }\n\n    const handler = this.constantSuper\n      ? looseHandlers\n      : process.env.BABEL_8_BREAKING ||\n          this.file.availableHelper(\"superPropSet\")\n        ? specHandlers\n        : specHandlers_old;\n\n    // todo: this should have been handled by the environmentVisitor,\n    // consider add visitSelf support for the path.traverse\n    // @ts-expect-error: Refine typings in packages/babel-traverse/src/types.ts\n    // shouldSkip is accepted in traverseNode\n    visitor.shouldSkip = (path: NodePath) => {\n      if (path.parentPath === methodPath) {\n        if (path.parentKey === \"decorators\" || path.parentKey === \"key\") {\n          return true;\n        }\n      }\n    };\n\n    memberExpressionToFunctions<ReplaceState>(methodPath, visitor, {\n      file: this.file,\n      scope: this.methodPath.scope,\n      isDerivedConstructor: this.isDerivedConstructor,\n      isStatic: this.isStatic,\n      isPrivateMethod: this.isPrivateMethod,\n      getObjectRef: this.getObjectRef.bind(this),\n      getSuperRef: this.getSuperRef.bind(this),\n      // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n      boundGet: handler.get,\n      ...handler,\n    });\n  }\n}\n"]}