var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
  for (var prop in b || (b = {}))
    if (__hasOwnProp.call(b, prop))
      __defNormalProp(a, prop, b[prop]);
  if (__getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(b)) {
      if (__propIsEnum.call(b, prop))
        __defNormalProp(a, prop, b[prop]);
    }
  return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
  var target = {};
  for (var prop in source)
    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
      target[prop] = source[prop];
  if (source != null && __getOwnPropSymbols)
    for (var prop of __getOwnPropSymbols(source)) {
      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
        target[prop] = source[prop];
    }
  return target;
};
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/loader/swc.ts
var swc_exports = {};
__export(swc_exports, {
  default: () => swc_default
});
module.exports = __toCommonJS(swc_exports);
var import_core = require("@swc/core");
var import_types = require("../types");
function getBaseOpts({ filename }) {
  const isTSFile = filename.endsWith(".ts");
  const isTypeScript = isTSFile || filename.endsWith(".tsx");
  const isDev = process.env.NODE_ENV === import_types.Env.development;
  const swcOpts = {
    module: {
      type: "es6",
      ignoreDynamic: true
    },
    jsc: {
      parser: {
        syntax: isTypeScript ? "typescript" : "ecmascript",
        [isTypeScript ? "tsx" : "jsx"]: !isTSFile,
        dynamicImport: isTypeScript
      },
      target: "es2015",
      transform: {
        react: {
          runtime: "automatic",
          pragma: "React.createElement",
          pragmaFrag: "React.Fragment",
          throwIfNamespace: true,
          development: isDev,
          useBuiltins: true
        }
      }
    }
  };
  return swcOpts;
}
function swcLoader(contents) {
  const callback = this.async();
  const loaderOpts = this.getOptions();
  const _a = loaderOpts, { sync = false, parseMap = false } = _a, otherOpts = __objRest(_a, ["sync", "parseMap"]);
  const filename = this.resourcePath;
  const swcOpts = __spreadValues(__spreadProps(__spreadValues({}, getBaseOpts({
    filename
  })), {
    filename,
    sourceMaps: this.sourceMap,
    sourceFileName: filename
  }), otherOpts);
  try {
    if (sync) {
      const output = (0, import_core.transformSync)(contents, swcOpts);
      callback(null, output.code, parseMap ? JSON.parse(output.map) : output.map);
    } else {
      (0, import_core.transform)(contents, swcOpts).then((output) => {
        callback(null, output.code, parseMap ? JSON.parse(output.map) : output.map);
      }, (err) => {
        callback(err);
      });
    }
  } catch (e) {
    callback(e);
  }
}
var swc_default = swcLoader;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {});
