{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import { type Config } from 'prettier';\n\n/**\n * Available prettier plugins that can be automatically managed\n */\nexport const SUPPORTED_PLUGINS = {\n  SORT_IMPORTS: '@ianvs/prettier-plugin-sort-imports',\n  TAILWINDCSS: 'prettier-plugin-tailwindcss',\n  PACKAGEJSON: 'prettier-plugin-packagejson',\n} as const;\n\n/**\n * Configuration options for import ordering\n */\nexport interface ImportOrderOptions {\n  /** Whether to enable import sorting (default: true) */\n  enabled?: boolean;\n  /** Internal scopes for import organization (e.g., ['components', 'hooks']) */\n  scope?: string | string[];\n  /** Path aliases used in your project (e.g., ['@', '~']) */\n  alias?: string[];\n}\n\n/**\n * Configuration options for the prettier config\n */\nexport interface PrettierConfigOptions {\n  /** Import sorting configuration */\n  order?: ImportOrderOptions;\n  /** Enable Tailwind CSS plugin (default: false) */\n  tailwind?: boolean;\n  /** Enable package.json formatting plugin (default: false) */\n  packageJson?: boolean;\n  /** Extend or override any Prettier configuration option */\n  extend?: Partial<Config> & {\n    /** Additional plugins to include */\n    plugins?: string[];\n  };\n}\n\n/**\n * Create a Prettier configuration with intelligent defaults and customizable options\n *\n * @param options - Configuration options\n * @returns Complete Prettier configuration object\n *\n * @example\n * ```js\n * import defineConfig from '@deutschlandgpt/prettier-config';\n *\n * export default defineConfig({\n *   order: {\n *     enabled: true,\n *     scope: ['components', 'hooks'],\n *     alias: ['@', '~']\n *   },\n *   tailwind: true,\n *   extend: {\n *     printWidth: 120\n *   }\n * });\n * ```\n */\nexport default function defineConfig(options: Partial<PrettierConfigOptions> = {}): Config {\n  const {\n    tailwind = false,\n    packageJson = false,\n    order: { enabled: orderEnabled = false, scope = [], alias = [] } = {},\n    extend: { plugins = [], ...extendConfig } = {},\n  } = options;\n\n  function getOrderOptions(): Partial<Config> {\n    if (!orderEnabled) return {};\n\n    const scopeOrder = (Array.isArray(scope) ? scope : [scope])\n      .filter(Boolean)\n      .map((s) => `^@${s}(/.*)`);\n\n    const aliasOrder = alias.filter(Boolean).map((a) => `^${a}(.*)`);\n\n    const importOrder: string[] = [\n      '<BUILT_IN_MODULES>',\n      '',\n      '<THIRD_PARTY_MODULES>',\n      '',\n      ...aliasOrder,\n      ...(aliasOrder.length > 0 ? [''] : []), // Add separator only if aliases exist\n      ...scopeOrder,\n      ...(scopeOrder.length > 0 ? [''] : []), // Add separator only if scopes exist\n      '^[.]',\n      '',\n      '^(?!.*[.]css$)[./].*$',\n      '.css$',\n    ];\n\n    return { importOrder };\n  }\n\n  return {\n    printWidth: 100,\n    tabWidth: 2,\n    useTabs: false,\n    semi: true,\n    singleQuote: true,\n    quoteProps: 'as-needed',\n    jsxSingleQuote: false,\n    trailingComma: 'all',\n    bracketSpacing: true,\n    bracketSameLine: false,\n    arrowParens: 'always',\n    requirePragma: false,\n    insertPragma: false,\n    proseWrap: 'preserve',\n    htmlWhitespaceSensitivity: 'strict',\n    endOfLine: 'lf',\n    embeddedLanguageFormatting: 'off',\n    ...(tailwind ? { tailwindFunctions: ['clsx', 'cn', 'cva'] } : {}),\n    ...getOrderOptions(),\n    ...extendConfig,\n    plugins: [\n      ...(orderEnabled ? [SUPPORTED_PLUGINS.SORT_IMPORTS] : []),\n      ...(tailwind ? [SUPPORTED_PLUGINS.TAILWINDCSS] : []),\n      ...(packageJson ? [SUPPORTED_PLUGINS.PACKAGEJSON] : []),\n      ...plugins,\n    ],\n  } satisfies Config;\n}\n\n/**\n * Create a preset configuration for common use cases\n */\nexport const presets = {\n  /**\n   * Configuration for Next.js projects using Tailwind CSS\n   *\n   * Default values:\n   * - `tailwind`: true\n   * - `order`: { enabled: true }\n   * - `packageJson`: false\n   * - `extend`: {}\n   */\n  nextjs: ({\n    tailwind = true,\n    order = { enabled: true },\n    packageJson = false,\n    extend = {},\n  }: {\n    tailwind?: boolean;\n    order?: ImportOrderOptions;\n    packageJson?: boolean;\n    extend?: Partial<Config> & { plugins?: string[] };\n  } = {}): Partial<PrettierConfigOptions> => ({\n    tailwind,\n    packageJson,\n    order,\n    extend,\n  }),\n\n  /**\n   * Configuration for typical node.js projects\n   *\n   * Default values:\n   * - `order`: { enabled: true }\n   * - `packageJson`: false\n   * - `extend`: {}\n   */\n  nodejs: ({\n    order = { enabled: true },\n    packageJson = false,\n    extend = {},\n  }: {\n    order?: ImportOrderOptions;\n    packageJson?: boolean;\n    extend?: Partial<Config> & { plugins?: string[] };\n  } = {}): Partial<PrettierConfigOptions> => ({\n    packageJson,\n    order,\n    extend,\n  }),\n} as const;\n"]}