@standard-config/prettier 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,6 +8,7 @@ TypeScript-first Prettier config with carefully considered details.
8
8
 
9
9
  - Uses the [`oxc` parser](https://oxc.rs/docs/guide/usage/parser.html) for lightning-fast TypeScript and JavaScript formatting.
10
10
  - Formats shell scripts out of the box, including `git` hook files.
11
+ - Formats raw HTML fragments in `README.md` and other Markdown documents.
11
12
  - Sorts all JSON files, with sensible order patterns for common configs like `package.json`, `tsconfig.json`, `.oxlintrc.json`, and more.
12
13
 
13
14
  ## Install
@@ -51,6 +52,9 @@ ln -s node_modules/@standard-config/prettier/.editorconfig
51
52
  ## Related
52
53
 
53
54
  - [**@standard-config/eslint**](https://github.com/standard-config/eslint)
55
+ - [**prettier-plugin-expand-json**](https://github.com/porada/prettier-plugin-expand-json)
56
+ - [**prettier-plugin-markdown-html**](https://github.com/porada/prettier-plugin-markdown-html)
57
+ - [**prettier-plugin-yaml**](https://github.com/porada/prettier-plugin-yaml)
54
58
 
55
59
  ## License
56
60
 
package/dist/index.mjs CHANGED
@@ -1,11 +1,5 @@
1
1
  import defineClone from "rfdc";
2
- import * as pluginOxidation from "@prettier/plugin-oxc";
3
- import * as pluginExpandJSON from "prettier-plugin-expand-json";
4
- import * as pluginMarkdownHTML from "prettier-plugin-markdown-html";
5
- import * as pluginPackageJSON from "prettier-plugin-packagejson";
6
- import * as pluginShell from "prettier-plugin-sh";
7
- import * as pluginSortJSON from "prettier-plugin-sort-json";
8
- import * as pluginYAML from "prettier-plugin-yaml";
2
+ import { fileURLToPath } from "node:url";
9
3
 
10
4
  //#region src/clone/index.ts
11
5
  var clone_default = defineClone({ circles: true });
@@ -29,6 +23,7 @@ function generateConfig(baseDefaults = {}, shellDefaults = {}) {
29
23
  return clone_default({
30
24
  plugins: [
31
25
  "@prettier/plugin-oxc",
26
+ "@prettier/plugin-xml",
32
27
  "prettier-plugin-expand-json",
33
28
  "prettier-plugin-markdown-html",
34
29
  "prettier-plugin-sh",
@@ -131,8 +126,8 @@ function getFileTypeOverrides(baseDefaults = {}, shellDefaults = {}) {
131
126
  {
132
127
  files: ["*.md"],
133
128
  options: {
134
- printWidth: Number.POSITIVE_INFINITY,
135
- singleAttributePerLine: true
129
+ htmlFragmentPrintWidth: Number.POSITIVE_INFINITY,
130
+ htmlFragmentSingleAttributePerLine: true
136
131
  }
137
132
  },
138
133
  {
@@ -159,9 +154,11 @@ function getFileTypeOverrides(baseDefaults = {}, shellDefaults = {}) {
159
154
  ],
160
155
  options: {
161
156
  ...baseDefaults,
162
- parser: "html",
157
+ parser: "xml",
163
158
  printWidth: 80,
164
- singleAttributePerLine: true
159
+ singleAttributePerLine: true,
160
+ xmlQuoteAttributes: "double",
161
+ xmlWhitespaceSensitivity: "ignore"
165
162
  }
166
163
  },
167
164
  {
@@ -379,13 +376,16 @@ function transformJSONSortOrder(jsonSortOrder) {
379
376
  }
380
377
  function transformPlugins(plugins, pluginOverrides) {
381
378
  const pluginMap = {
382
- "@prettier/plugin-oxc": pluginOxidation,
383
- "prettier-plugin-expand-json": pluginExpandJSON,
384
- "prettier-plugin-markdown-html": pluginMarkdownHTML,
385
- "prettier-plugin-packagejson": pluginPackageJSON,
386
- "prettier-plugin-sh": pluginShell,
387
- "prettier-plugin-sort-json": pluginSortJSON,
388
- "prettier-plugin-yaml": pluginYAML,
379
+ ...Object.fromEntries([
380
+ "@prettier/plugin-oxc",
381
+ "@prettier/plugin-xml",
382
+ "prettier-plugin-expand-json",
383
+ "prettier-plugin-markdown-html",
384
+ "prettier-plugin-packagejson",
385
+ "prettier-plugin-sh",
386
+ "prettier-plugin-sort-json",
387
+ "prettier-plugin-yaml"
388
+ ].map((name) => [name, transformPlugin(name)])),
389
389
  ...pluginOverrides
390
390
  };
391
391
  const resolved = [];
@@ -395,6 +395,14 @@ function transformPlugins(plugins, pluginOverrides) {
395
395
  }
396
396
  return resolved;
397
397
  }
398
+ function transformPlugin(plugin) {
399
+ try {
400
+ return fileURLToPath(import.meta.resolve(plugin));
401
+ } catch {
402
+ /* v8 ignore next -- @preserve */
403
+ return plugin;
404
+ }
405
+ }
398
406
 
399
407
  //#endregion
400
408
  //#region src/define-config/index.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["clone","clone","clone"],"sources":["../src/clone/index.ts","../src/generate-config/index.ts","../src/merge-config/index.ts","../src/prioritize-keys/index.ts","../src/transform-config/index.ts","../src/define-config/index.ts"],"sourcesContent":["import defineClone from 'rfdc';\n\nexport default defineClone({ circles: true });\n","import type {\n\tIndentationOptions,\n\tShellIndentationOptions,\n\tStandardConfig,\n\tStandardConfigOverrides,\n} from '../types/index.d.ts';\nimport clone from '../clone/index.ts';\n\n/**\n * Generate the base Standard Config.\n *\n * Shell scripts can’t be reliably identified by name alone—they’re recognized\n * by the shebang, not the extension. As a result, shell formatting options\n * (two-space indentation) must be defined as the global defaults.\n *\n * This requires overriding those options for other file types individually\n * with what we consider the actual defaults (`baseDefaults`). `generateConfig`\n * is a factory that encapsulates this logic and returns the final config.\n */\nexport default function generateConfig(\n\tbaseDefaults: IndentationOptions = {},\n\tshellDefaults: ShellIndentationOptions = {}\n): StandardConfig {\n\tconst { tabWidth = 4, useTabs = true } = baseDefaults;\n\tconst { shellTabWidth = 2, shellUseTabs = false } = shellDefaults;\n\n\treturn clone({\n\t\tplugins: [\n\t\t\t'@prettier/plugin-oxc',\n\t\t\t'prettier-plugin-expand-json',\n\t\t\t'prettier-plugin-markdown-html',\n\t\t\t'prettier-plugin-sh',\n\t\t\t'prettier-plugin-yaml',\n\t\t],\n\t\tbracketSpacing: true,\n\t\tprintWidth: 80,\n\t\tquoteProps: 'consistent',\n\t\tsingleQuote: true,\n\t\ttabWidth: shellTabWidth,\n\t\ttrailingComma: 'es5',\n\t\tuseTabs: shellUseTabs,\n\t\toverrides: [\n\t\t\t...getFileTypeOverrides(\n\t\t\t\t{ tabWidth, useTabs },\n\t\t\t\t{ tabWidth: shellTabWidth, useTabs: shellUseTabs }\n\t\t\t),\n\t\t\t...getFileNameOverrides(),\n\t\t],\n\t});\n}\n\nfunction getFileTypeOverrides(\n\tbaseDefaults: IndentationOptions = {},\n\tshellDefaults: IndentationOptions = {}\n): StandardConfigOverrides {\n\treturn [\n\t\t{\n\t\t\tfiles: ['*.css', '*.scss'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tprintWidth: 100,\n\t\t\t\tsingleQuote: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.graphql', '*.graphqls', '*.gql'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.html', '*.htm'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tprintWidth: 100,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.js', '*.jsx', '*.cjs', '*.mjs'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'oxc',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.json', '*.jsonc', '*.json5'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.json', '*.jsonc', '*.json5'],\n\t\t\texcludeFiles: ['package.json'],\n\t\t\toptions: {\n\t\t\t\tplugins: [\n\t\t\t\t\t'prettier-plugin-sort-json',\n\t\t\t\t\t'prettier-plugin-expand-json',\n\t\t\t\t],\n\t\t\t\tjsonRecursiveSort: true,\n\t\t\t\tjsonSortOrder: ['$schema'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Tab-based indentation becomes inconvenient when rendered outside the\n\t\t * context of a code editor. In documentation, tabs in code blocks\n\t\t * require special handling that very few renderers support.\n\t\t *\n\t\t * At the time of writing, GitHub renders tabs correctly on the web, but\n\t\t * not in its mobile app. `npm`, often the point of discovery for\n\t\t * packages, does not provide any special handling for tabs either.\n\t\t *\n\t\t * To maximize the readability of code blocks in documentation, spaces\n\t\t * are the right compromise.\n\t\t */\n\t\t{\n\t\t\tfiles: ['*.md', '*.mdx'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tuseTabs: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.md'],\n\t\t\toptions: {\n\t\t\t\tprintWidth: Number.POSITIVE_INFINITY,\n\t\t\t\tsingleAttributePerLine: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.sh'],\n\t\t\toptions: {\n\t\t\t\t...shellDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.ts', '*.tsx', '*.cts', '*.mts'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'oxc-ts',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.xml', '*.plist', '*.svg'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'html',\n\t\t\t\tprintWidth: 80,\n\t\t\t\tsingleAttributePerLine: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.yaml', '*.yml'],\n\t\t\toptions: {\n\t\t\t\tyamlCollectionStyle: 'block',\n\t\t\t\tuseTabs: false,\n\t\t\t},\n\t\t},\n\t];\n}\n\nfunction getFileNameOverrides(): StandardConfigOverrides {\n\treturn [\n\t\t/**\n\t\t * All `.oxlintrc.json` fields defined by the Oxlint documentation\n\t\t * are sorted, including nested fields.\n\t\t */\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t'oxlintrc.json',\n\t\t\t\t'oxlintrc.jsonc',\n\t\t\t\t'oxlintrc.*.json',\n\t\t\t\t'oxlintrc.*.jsonc',\n\t\t\t\t'.oxlintrc.json',\n\t\t\t\t'.oxlintrc.jsonc',\n\t\t\t\t'.oxlintrc.*.json',\n\t\t\t\t'.oxlintrc.*.jsonc',\n\t\t\t],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'files',\n\t\t\t\t\t'extends',\n\t\t\t\t\t'ignorePatterns',\n\t\t\t\t\t'plugins',\n\t\t\t\t\t'jsPlugins',\n\t\t\t\t\t'categories',\n\t\t\t\t\t'env',\n\t\t\t\t\t'globals',\n\t\t\t\t\t'settings',\n\t\t\t\t\t'rules',\n\t\t\t\t\t'overrides',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * By default, Prettier uses a different parser for `package.json`\n\t\t * files, which causes most JSON plugins to skip them entirely.\n\t\t * This override ensures `package.json` is treated (and sorted)\n\t\t * like any other `*.json` file.\n\t\t *\n\t\t * All `package.json` fields defined in the `npm@11` specification\n\t\t * are sorted, along with additional commonly used fields.\n\t\t */\n\t\t{\n\t\t\tfiles: ['package.json'],\n\t\t\toptions: {\n\t\t\t\tplugins: [\n\t\t\t\t\t'prettier-plugin-packagejson',\n\t\t\t\t\t'prettier-plugin-expand-json',\n\t\t\t\t],\n\t\t\t\tpackageSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'name',\n\t\t\t\t\t'version',\n\t\t\t\t\t'private',\n\t\t\t\t\t'description',\n\t\t\t\t\t'license',\n\t\t\t\t\t'author',\n\t\t\t\t\t'contributors',\n\t\t\t\t\t'funding',\n\t\t\t\t\t'homepage',\n\t\t\t\t\t'repository',\n\t\t\t\t\t'bugs',\n\t\t\t\t\t'keywords',\n\t\t\t\t\t'workspaces',\n\t\t\t\t\t'directories',\n\t\t\t\t\t'files',\n\t\t\t\t\t'type',\n\t\t\t\t\t'browser',\n\t\t\t\t\t'sideEffects',\n\t\t\t\t\t'main',\n\t\t\t\t\t'module',\n\t\t\t\t\t'exports',\n\t\t\t\t\t'types',\n\t\t\t\t\t'typesVersions',\n\t\t\t\t\t'bin',\n\t\t\t\t\t'man',\n\t\t\t\t\t'imports',\n\t\t\t\t\t'engines',\n\t\t\t\t\t'os',\n\t\t\t\t\t'cpu',\n\t\t\t\t\t'libc',\n\t\t\t\t\t'gypfile',\n\t\t\t\t\t'packageManager',\n\t\t\t\t\t'devEngines',\n\t\t\t\t\t'dependencies',\n\t\t\t\t\t'bundleDependencies',\n\t\t\t\t\t'peerDependencies',\n\t\t\t\t\t'peerDependenciesMeta',\n\t\t\t\t\t'optionalDependencies',\n\t\t\t\t\t'devDependencies',\n\t\t\t\t\t'overrides',\n\t\t\t\t\t'pnpm',\n\t\t\t\t\t'config',\n\t\t\t\t\t'publishConfig',\n\t\t\t\t\t'scripts',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * All `tsconfig.json` fields defined by the TypeScript documentation\n\t\t * are sorted, including nested fields.\n\t\t */\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t'tsconfig.json',\n\t\t\t\t'tsconfig.*.json',\n\t\t\t\t'jsconfig.json',\n\t\t\t\t'jsconfig.*.json',\n\t\t\t],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'extends',\n\t\t\t\t\t'enable',\n\t\t\t\t\t'references',\n\t\t\t\t\t'compilerOptions',\n\t\t\t\t\t'typeAcquisition',\n\t\t\t\t\t'files',\n\t\t\t\t\t'include',\n\t\t\t\t\t'exclude',\n\t\t\t\t\t'watchOptions',\n\t\t\t\t\t'watchDirectory',\n\t\t\t\t\t'watchFile',\n\t\t\t\t\t'fallbackPolling',\n\t\t\t\t\t'synchronousWatchDirectory',\n\t\t\t\t\t'compileOnSave',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['.vscode/mcp.json'],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: ['$schema', 'command'],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['.vscode/sessions.json'],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: ['$schema', 'name', 'commands', 'active'],\n\t\t\t},\n\t\t},\n\t];\n}\n","import type { StandardConfig } from '../types/index.d.ts';\nimport clone from '../clone/index.ts';\n\n/**\n * Deep-merge two Standard Config objects.\n */\nexport default function mergeConfig(\n\tbaseConfig: StandardConfig,\n\textensionConfig: StandardConfig\n): StandardConfig {\n\tif (\n\t\t!(typeof baseConfig === 'object' && typeof extensionConfig === 'object')\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Standard Config error: expected config to be an object'\n\t\t);\n\t}\n\n\tconst result = clone(baseConfig);\n\n\tfor (const [key, value] of Object.entries(clone(extensionConfig))) {\n\t\tif (value === undefined) {\n\t\t\t/* oxlint-disable-next-line typescript/no-dynamic-delete */\n\t\t\tdelete result[key];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isArray(value) && isArray(result[key])) {\n\t\t\tresult[key] = [...result[key], ...value];\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult[key] = value;\n\t}\n\n\treturn result;\n}\n\nfunction isArray(value: unknown): value is unknown[] {\n\treturn Array.isArray(value);\n}\n","/**\n * @deprecated Use an array value for the `jsonSortOrder` property instead.\n */\nexport default function prioritizeKeys(...keys: ReadonlyArray<string>): string {\n\t/* oxlint-disable-next-line typescript/no-restricted-types */\n\tconst order: Record<string, null> = {};\n\n\tfor (const key of keys) {\n\t\torder[String(key)] = null;\n\t}\n\n\treturn JSON.stringify({\n\t\t...order,\n\t\t/* oxlint-disable-next-line typescript/no-explicit-any */\n\t\t[/.*/ as any]: 'lexical',\n\t});\n}\n","import type { Config as PrettierConfig } from 'prettier';\nimport type {\n\tPrettierPlugins,\n\tStandardConfig,\n\tStandardConfigPluginOverrides,\n\tStandardOptions,\n} from '../types/index.d.ts';\nimport * as pluginOxidation from '@prettier/plugin-oxc';\nimport * as pluginExpandJSON from 'prettier-plugin-expand-json';\nimport * as pluginMarkdownHTML from 'prettier-plugin-markdown-html';\nimport * as pluginPackageJSON from 'prettier-plugin-packagejson';\nimport * as pluginShell from 'prettier-plugin-sh';\nimport * as pluginSortJSON from 'prettier-plugin-sort-json';\nimport * as pluginYAML from 'prettier-plugin-yaml';\nimport clone from '../clone/index.ts';\nimport prioritizeKeys from '../prioritize-keys/index.ts';\n\n/**\n * Convert Standard Config to an exportable, Prettier-compatible format.\n */\nexport default function transformConfig(\n\tconfig: StandardConfig,\n\tpluginOverrides: StandardConfigPluginOverrides = {}\n): PrettierConfig {\n\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\tconfig = clone(config);\n\n\tconst transform = (options: StandardOptions) => {\n\t\tif (options.jsonSortOrder) {\n\t\t\toptions.jsonSortOrder = transformJSONSortOrder(\n\t\t\t\toptions.jsonSortOrder\n\t\t\t);\n\t\t}\n\n\t\tif (options.plugins) {\n\t\t\tconst plugins = transformPlugins(options.plugins, pluginOverrides);\n\n\t\t\tif (plugins.length > 0) {\n\t\t\t\toptions.plugins = plugins;\n\t\t\t} else {\n\t\t\t\tdelete options.plugins;\n\t\t\t}\n\t\t}\n\t};\n\n\ttransform(config);\n\n\tif (config.overrides) {\n\t\tfor (const override of config.overrides) {\n\t\t\ttransform(override.options);\n\t\t}\n\t}\n\n\treturn config as PrettierConfig;\n}\n\nfunction transformJSONSortOrder(jsonSortOrder: string | string[]): string {\n\tif (Array.isArray(jsonSortOrder)) {\n\t\treturn prioritizeKeys(...jsonSortOrder);\n\t}\n\n\treturn jsonSortOrder;\n}\n\nfunction transformPlugins(\n\tplugins: PrettierPlugins,\n\tpluginOverrides: StandardConfigPluginOverrides\n): PrettierPlugins {\n\tconst pluginMap: StandardConfigPluginOverrides = {\n\t\t'@prettier/plugin-oxc': pluginOxidation,\n\t\t'prettier-plugin-expand-json': pluginExpandJSON,\n\t\t'prettier-plugin-markdown-html': pluginMarkdownHTML,\n\t\t'prettier-plugin-packagejson': pluginPackageJSON,\n\t\t'prettier-plugin-sh': pluginShell,\n\t\t'prettier-plugin-sort-json': pluginSortJSON,\n\t\t'prettier-plugin-yaml': pluginYAML,\n\t\t...pluginOverrides,\n\t};\n\n\tconst resolved: PrettierPlugins = [];\n\n\tfor (const plugin of plugins) {\n\t\tconst resolvedPlugin =\n\t\t\ttypeof plugin === 'string' && Object.hasOwn(pluginMap, plugin)\n\t\t\t\t? pluginMap[plugin]\n\t\t\t\t: plugin;\n\n\t\tif (resolvedPlugin) {\n\t\t\tresolved.push(resolvedPlugin);\n\t\t}\n\t}\n\n\treturn resolved;\n}\n","import type { Config as PrettierConfig } from 'prettier';\nimport type { StandardConfig } from '../types/index.d.ts';\nimport generateConfig from '../generate-config/index.ts';\nimport mergeConfig from '../merge-config/index.ts';\nimport transformConfig from '../transform-config/index.ts';\n\n/**\n * Combine Standard Config with optional config overrides.\n */\nexport default function defineConfig(\n\tconfig: StandardConfig = {}\n): PrettierConfig {\n\tconst {\n\t\tpluginOverrides,\n\t\tshellTabWidth,\n\t\tshellUseTabs,\n\t\ttabWidth,\n\t\tuseTabs,\n\t\t...extensionConfig\n\t} = config;\n\n\tconst baseConfig = generateConfig(\n\t\t{ useTabs, tabWidth },\n\t\t{ shellUseTabs, shellTabWidth }\n\t);\n\n\tconst extendedConfig = mergeConfig(baseConfig, extensionConfig);\n\n\treturn transformConfig(extendedConfig, pluginOverrides);\n}\n"],"mappings":";;;;;;;;;;AAEA,oBAAe,YAAY,EAAE,SAAS,MAAM,CAAC;;;;;;;;;;;;;;;ACiB7C,SAAwB,eACvB,eAAmC,EAAE,EACrC,gBAAyC,EAAE,EAC1B;CACjB,MAAM,EAAE,WAAW,GAAG,UAAU,SAAS;CACzC,MAAM,EAAE,gBAAgB,GAAG,eAAe,UAAU;AAEpD,QAAOA,cAAM;EACZ,SAAS;GACR;GACA;GACA;GACA;GACA;GACA;EACD,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,UAAU;EACV,eAAe;EACf,SAAS;EACT,WAAW,CACV,GAAG,qBACF;GAAE;GAAU;GAAS,EACrB;GAAE,UAAU;GAAe,SAAS;GAAc,CAClD,EACD,GAAG,sBAAsB,CACzB;EACD,CAAC;;AAGH,SAAS,qBACR,eAAmC,EAAE,EACrC,gBAAoC,EAAE,EACZ;AAC1B,QAAO;EACN;GACC,OAAO,CAAC,SAAS,SAAS;GAC1B,SAAS;IACR,GAAG;IACH,YAAY;IACZ,aAAa;IACb;GACD;EACD;GACC,OAAO;IAAC;IAAa;IAAc;IAAQ;GAC3C,SAAS,EACR,GAAG,cACH;GACD;EACD;GACC,OAAO,CAAC,UAAU,QAAQ;GAC1B,SAAS;IACR,GAAG;IACH,YAAY;IACZ;GACD;EACD;GACC,OAAO;IAAC;IAAQ;IAAS;IAAS;IAAQ;GAC1C,SAAS;IACR,GAAG;IACH,QAAQ;IACR;GACD;EACD;GACC,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,SAAS,EACR,GAAG,cACH;GACD;EACD;GACC,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,cAAc,CAAC,eAAe;GAC9B,SAAS;IACR,SAAS,CACR,6BACA,8BACA;IACD,mBAAmB;IACnB,eAAe,CAAC,UAAU;IAC1B;GACD;;;;;;;;;;;;;;EAaD;GACC,OAAO,CAAC,QAAQ,QAAQ;GACxB,SAAS;IACR,GAAG;IACH,SAAS;IACT;GACD;EACD;GACC,OAAO,CAAC,OAAO;GACf,SAAS;IACR,YAAY,OAAO;IACnB,wBAAwB;IACxB;GACD;EACD;GACC,OAAO,CAAC,OAAO;GACf,SAAS,EACR,GAAG,eACH;GACD;EACD;GACC,OAAO;IAAC;IAAQ;IAAS;IAAS;IAAQ;GAC1C,SAAS;IACR,GAAG;IACH,QAAQ;IACR;GACD;EACD;GACC,OAAO;IAAC;IAAS;IAAW;IAAQ;GACpC,SAAS;IACR,GAAG;IACH,QAAQ;IACR,YAAY;IACZ,wBAAwB;IACxB;GACD;EACD;GACC,OAAO,CAAC,UAAU,QAAQ;GAC1B,SAAS;IACR,qBAAqB;IACrB,SAAS;IACT;GACD;EACD;;AAGF,SAAS,uBAAgD;AACxD,QAAO;;;;;;EAKN;GACC,OAAO;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,SAAS,EACR,eAAe;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD;;;;;;;;;;;EAUD;GACC,OAAO,CAAC,eAAe;GACvB,SAAS;IACR,SAAS,CACR,+BACA,8BACA;IACD,kBAAkB;KACjB;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;;;;;;EAKD;GACC,OAAO;IACN;IACA;IACA;IACA;IACA;GACD,SAAS,EACR,eAAe;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD;EACD;GACC,OAAO,CAAC,mBAAmB;GAC3B,SAAS,EACR,eAAe,CAAC,WAAW,UAAU,EACrC;GACD;EACD;GACC,OAAO,CAAC,wBAAwB;GAChC,SAAS,EACR,eAAe;IAAC;IAAW;IAAQ;IAAY;IAAS,EACxD;GACD;EACD;;;;;;;;ACxSF,SAAwB,YACvB,YACA,iBACiB;AACjB,KACC,EAAE,OAAO,eAAe,YAAY,OAAO,oBAAoB,UAE/D,OAAM,IAAI,UACT,yDACA;CAGF,MAAM,SAASC,cAAM,WAAW;AAEhC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQA,cAAM,gBAAgB,CAAC,EAAE;AAClE,MAAI,UAAU,QAAW;AAExB,UAAO,OAAO;AACd;;AAGD,MAAI,QAAQ,MAAM,IAAI,QAAQ,OAAO,KAAK,EAAE;AAC3C,UAAO,OAAO,CAAC,GAAG,OAAO,MAAM,GAAG,MAAM;AACxC;;AAGD,SAAO,OAAO;;AAGf,QAAO;;AAGR,SAAS,QAAQ,OAAoC;AACpD,QAAO,MAAM,QAAQ,MAAM;;;;;;;;ACpC5B,SAAwB,eAAe,GAAG,MAAqC;CAE9E,MAAM,QAA8B,EAAE;AAEtC,MAAK,MAAM,OAAO,KACjB,OAAM,OAAO,IAAI,IAAI;AAGtB,QAAO,KAAK,UAAU;EACrB,GAAG;GAEF,OAAc;EACf,CAAC;;;;;;;;ACKH,SAAwB,gBACvB,QACA,kBAAiD,EAAE,EAClC;AAEjB,UAASC,cAAM,OAAO;CAEtB,MAAM,aAAa,YAA6B;AAC/C,MAAI,QAAQ,cACX,SAAQ,gBAAgB,uBACvB,QAAQ,cACR;AAGF,MAAI,QAAQ,SAAS;GACpB,MAAM,UAAU,iBAAiB,QAAQ,SAAS,gBAAgB;AAElE,OAAI,QAAQ,SAAS,EACpB,SAAQ,UAAU;OAElB,QAAO,QAAQ;;;AAKlB,WAAU,OAAO;AAEjB,KAAI,OAAO,UACV,MAAK,MAAM,YAAY,OAAO,UAC7B,WAAU,SAAS,QAAQ;AAI7B,QAAO;;AAGR,SAAS,uBAAuB,eAA0C;AACzE,KAAI,MAAM,QAAQ,cAAc,CAC/B,QAAO,eAAe,GAAG,cAAc;AAGxC,QAAO;;AAGR,SAAS,iBACR,SACA,iBACkB;CAClB,MAAM,YAA2C;EAChD,wBAAwB;EACxB,+BAA+B;EAC/B,iCAAiC;EACjC,+BAA+B;EAC/B,sBAAsB;EACtB,6BAA6B;EAC7B,wBAAwB;EACxB,GAAG;EACH;CAED,MAAM,WAA4B,EAAE;AAEpC,MAAK,MAAM,UAAU,SAAS;EAC7B,MAAM,iBACL,OAAO,WAAW,YAAY,OAAO,OAAO,WAAW,OAAO,GAC3D,UAAU,UACV;AAEJ,MAAI,eACH,UAAS,KAAK,eAAe;;AAI/B,QAAO;;;;;;;;ACnFR,SAAwB,aACvB,SAAyB,EAAE,EACV;CACjB,MAAM,EACL,iBACA,eACA,cACA,UACA,SACA,GAAG,oBACA;AASJ,QAAO,gBAFgB,YALJ,eAClB;EAAE;EAAS;EAAU,EACrB;EAAE;EAAc;EAAe,CAC/B,EAE8C,gBAAgB,EAExB,gBAAgB"}
1
+ {"version":3,"file":"index.mjs","names":["clone","clone","clone"],"sources":["../src/clone/index.ts","../src/generate-config/index.ts","../src/merge-config/index.ts","../src/prioritize-keys/index.ts","../src/transform-config/index.ts","../src/define-config/index.ts"],"sourcesContent":["import defineClone from 'rfdc';\n\nexport default defineClone({ circles: true });\n","import type {\n\tIndentationOptions,\n\tShellIndentationOptions,\n\tStandardConfig,\n\tStandardConfigOverrides,\n} from '../types/index.d.ts';\nimport clone from '../clone/index.ts';\n\n/**\n * Generate the base Standard Config.\n *\n * Shell scripts can’t be reliably identified by name alone—they’re recognized\n * by the shebang, not the extension. As a result, shell formatting options\n * (two-space indentation) must be defined as the global defaults.\n *\n * This requires overriding those options for other file types individually\n * with what we consider the actual defaults (`baseDefaults`). `generateConfig`\n * is a factory that encapsulates this logic and returns the final config.\n */\nexport default function generateConfig(\n\tbaseDefaults: IndentationOptions = {},\n\tshellDefaults: ShellIndentationOptions = {}\n): StandardConfig {\n\tconst { tabWidth = 4, useTabs = true } = baseDefaults;\n\tconst { shellTabWidth = 2, shellUseTabs = false } = shellDefaults;\n\n\treturn clone({\n\t\tplugins: [\n\t\t\t'@prettier/plugin-oxc',\n\t\t\t'@prettier/plugin-xml',\n\t\t\t'prettier-plugin-expand-json',\n\t\t\t'prettier-plugin-markdown-html',\n\t\t\t'prettier-plugin-sh',\n\t\t\t'prettier-plugin-yaml',\n\t\t],\n\t\tbracketSpacing: true,\n\t\tprintWidth: 80,\n\t\tquoteProps: 'consistent',\n\t\tsingleQuote: true,\n\t\ttabWidth: shellTabWidth,\n\t\ttrailingComma: 'es5',\n\t\tuseTabs: shellUseTabs,\n\t\toverrides: [\n\t\t\t...getFileTypeOverrides(\n\t\t\t\t{ tabWidth, useTabs },\n\t\t\t\t{ tabWidth: shellTabWidth, useTabs: shellUseTabs }\n\t\t\t),\n\t\t\t...getFileNameOverrides(),\n\t\t],\n\t});\n}\n\nfunction getFileTypeOverrides(\n\tbaseDefaults: IndentationOptions = {},\n\tshellDefaults: IndentationOptions = {}\n): StandardConfigOverrides {\n\treturn [\n\t\t{\n\t\t\tfiles: ['*.css', '*.scss'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tprintWidth: 100,\n\t\t\t\tsingleQuote: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.graphql', '*.graphqls', '*.gql'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.html', '*.htm'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tprintWidth: 100,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.js', '*.jsx', '*.cjs', '*.mjs'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'oxc',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.json', '*.jsonc', '*.json5'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.json', '*.jsonc', '*.json5'],\n\t\t\texcludeFiles: ['package.json'],\n\t\t\toptions: {\n\t\t\t\tplugins: [\n\t\t\t\t\t'prettier-plugin-sort-json',\n\t\t\t\t\t'prettier-plugin-expand-json',\n\t\t\t\t],\n\t\t\t\tjsonRecursiveSort: true,\n\t\t\t\tjsonSortOrder: ['$schema'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Tab-based indentation becomes inconvenient when rendered outside the\n\t\t * context of a code editor. In documentation, tabs in code blocks\n\t\t * require special handling that very few renderers support.\n\t\t *\n\t\t * At the time of writing, GitHub renders tabs correctly on the web, but\n\t\t * not in its mobile app. `npm`, often the point of discovery for\n\t\t * packages, does not provide any special handling for tabs either.\n\t\t *\n\t\t * To maximize the readability of code blocks in documentation, spaces\n\t\t * are the right compromise.\n\t\t */\n\t\t{\n\t\t\tfiles: ['*.md', '*.mdx'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tuseTabs: false,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.md'],\n\t\t\toptions: {\n\t\t\t\thtmlFragmentPrintWidth: Number.POSITIVE_INFINITY,\n\t\t\t\thtmlFragmentSingleAttributePerLine: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.sh'],\n\t\t\toptions: {\n\t\t\t\t...shellDefaults,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.ts', '*.tsx', '*.cts', '*.mts'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'oxc-ts',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.xml', '*.plist', '*.svg'],\n\t\t\toptions: {\n\t\t\t\t...baseDefaults,\n\t\t\t\tparser: 'xml',\n\t\t\t\tprintWidth: 80,\n\t\t\t\tsingleAttributePerLine: true,\n\t\t\t\txmlQuoteAttributes: 'double',\n\t\t\t\txmlWhitespaceSensitivity: 'ignore',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['*.yaml', '*.yml'],\n\t\t\toptions: {\n\t\t\t\tyamlCollectionStyle: 'block',\n\t\t\t\tuseTabs: false,\n\t\t\t},\n\t\t},\n\t];\n}\n\nfunction getFileNameOverrides(): StandardConfigOverrides {\n\treturn [\n\t\t/**\n\t\t * All `.oxlintrc.json` fields defined by the Oxlint documentation\n\t\t * are sorted, including nested fields.\n\t\t */\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t'oxlintrc.json',\n\t\t\t\t'oxlintrc.jsonc',\n\t\t\t\t'oxlintrc.*.json',\n\t\t\t\t'oxlintrc.*.jsonc',\n\t\t\t\t'.oxlintrc.json',\n\t\t\t\t'.oxlintrc.jsonc',\n\t\t\t\t'.oxlintrc.*.json',\n\t\t\t\t'.oxlintrc.*.jsonc',\n\t\t\t],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'files',\n\t\t\t\t\t'extends',\n\t\t\t\t\t'ignorePatterns',\n\t\t\t\t\t'plugins',\n\t\t\t\t\t'jsPlugins',\n\t\t\t\t\t'categories',\n\t\t\t\t\t'env',\n\t\t\t\t\t'globals',\n\t\t\t\t\t'settings',\n\t\t\t\t\t'rules',\n\t\t\t\t\t'overrides',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * By default, Prettier uses a different parser for `package.json`\n\t\t * files, which causes most JSON plugins to skip them entirely.\n\t\t * This override ensures `package.json` is treated (and sorted)\n\t\t * like any other `*.json` file.\n\t\t *\n\t\t * All `package.json` fields defined in the `npm@11` specification\n\t\t * are sorted, along with additional commonly used fields.\n\t\t */\n\t\t{\n\t\t\tfiles: ['package.json'],\n\t\t\toptions: {\n\t\t\t\tplugins: [\n\t\t\t\t\t'prettier-plugin-packagejson',\n\t\t\t\t\t'prettier-plugin-expand-json',\n\t\t\t\t],\n\t\t\t\tpackageSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'name',\n\t\t\t\t\t'version',\n\t\t\t\t\t'private',\n\t\t\t\t\t'description',\n\t\t\t\t\t'license',\n\t\t\t\t\t'author',\n\t\t\t\t\t'contributors',\n\t\t\t\t\t'funding',\n\t\t\t\t\t'homepage',\n\t\t\t\t\t'repository',\n\t\t\t\t\t'bugs',\n\t\t\t\t\t'keywords',\n\t\t\t\t\t'workspaces',\n\t\t\t\t\t'directories',\n\t\t\t\t\t'files',\n\t\t\t\t\t'type',\n\t\t\t\t\t'browser',\n\t\t\t\t\t'sideEffects',\n\t\t\t\t\t'main',\n\t\t\t\t\t'module',\n\t\t\t\t\t'exports',\n\t\t\t\t\t'types',\n\t\t\t\t\t'typesVersions',\n\t\t\t\t\t'bin',\n\t\t\t\t\t'man',\n\t\t\t\t\t'imports',\n\t\t\t\t\t'engines',\n\t\t\t\t\t'os',\n\t\t\t\t\t'cpu',\n\t\t\t\t\t'libc',\n\t\t\t\t\t'gypfile',\n\t\t\t\t\t'packageManager',\n\t\t\t\t\t'devEngines',\n\t\t\t\t\t'dependencies',\n\t\t\t\t\t'bundleDependencies',\n\t\t\t\t\t'peerDependencies',\n\t\t\t\t\t'peerDependenciesMeta',\n\t\t\t\t\t'optionalDependencies',\n\t\t\t\t\t'devDependencies',\n\t\t\t\t\t'overrides',\n\t\t\t\t\t'pnpm',\n\t\t\t\t\t'config',\n\t\t\t\t\t'publishConfig',\n\t\t\t\t\t'scripts',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * All `tsconfig.json` fields defined by the TypeScript documentation\n\t\t * are sorted, including nested fields.\n\t\t */\n\t\t{\n\t\t\tfiles: [\n\t\t\t\t'tsconfig.json',\n\t\t\t\t'tsconfig.*.json',\n\t\t\t\t'jsconfig.json',\n\t\t\t\t'jsconfig.*.json',\n\t\t\t],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: [\n\t\t\t\t\t'$schema',\n\t\t\t\t\t'extends',\n\t\t\t\t\t'enable',\n\t\t\t\t\t'references',\n\t\t\t\t\t'compilerOptions',\n\t\t\t\t\t'typeAcquisition',\n\t\t\t\t\t'files',\n\t\t\t\t\t'include',\n\t\t\t\t\t'exclude',\n\t\t\t\t\t'watchOptions',\n\t\t\t\t\t'watchDirectory',\n\t\t\t\t\t'watchFile',\n\t\t\t\t\t'fallbackPolling',\n\t\t\t\t\t'synchronousWatchDirectory',\n\t\t\t\t\t'compileOnSave',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['.vscode/mcp.json'],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: ['$schema', 'command'],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfiles: ['.vscode/sessions.json'],\n\t\t\toptions: {\n\t\t\t\tjsonSortOrder: ['$schema', 'name', 'commands', 'active'],\n\t\t\t},\n\t\t},\n\t];\n}\n","import type { StandardConfig } from '../types/index.d.ts';\nimport clone from '../clone/index.ts';\n\n/**\n * Deep-merge two Standard Config objects.\n */\nexport default function mergeConfig(\n\tbaseConfig: StandardConfig,\n\textensionConfig: StandardConfig\n): StandardConfig {\n\tif (\n\t\t!(typeof baseConfig === 'object' && typeof extensionConfig === 'object')\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Standard Config error: expected config to be an object'\n\t\t);\n\t}\n\n\tconst result = clone(baseConfig);\n\n\tfor (const [key, value] of Object.entries(clone(extensionConfig))) {\n\t\tif (value === undefined) {\n\t\t\t/* oxlint-disable-next-line typescript/no-dynamic-delete */\n\t\t\tdelete result[key];\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isArray(value) && isArray(result[key])) {\n\t\t\tresult[key] = [...result[key], ...value];\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult[key] = value;\n\t}\n\n\treturn result;\n}\n\nfunction isArray(value: unknown): value is unknown[] {\n\treturn Array.isArray(value);\n}\n","/**\n * @deprecated Use an array value for the `jsonSortOrder` property instead.\n */\nexport default function prioritizeKeys(...keys: ReadonlyArray<string>): string {\n\t/* oxlint-disable-next-line typescript/no-restricted-types */\n\tconst order: Record<string, null> = {};\n\n\tfor (const key of keys) {\n\t\torder[String(key)] = null;\n\t}\n\n\treturn JSON.stringify({\n\t\t...order,\n\t\t/* oxlint-disable-next-line typescript/no-explicit-any */\n\t\t[/.*/ as any]: 'lexical',\n\t});\n}\n","import type { Config as PrettierConfig } from 'prettier';\nimport type {\n\tPrettierPlugins,\n\tStandardConfig,\n\tStandardConfigPluginOverrides,\n\tStandardOptions,\n} from '../types/index.d.ts';\nimport { fileURLToPath } from 'node:url';\nimport clone from '../clone/index.ts';\nimport prioritizeKeys from '../prioritize-keys/index.ts';\n\n/**\n * Convert Standard Config to an exportable, Prettier-compatible format.\n */\nexport default function transformConfig(\n\tconfig: StandardConfig,\n\tpluginOverrides: StandardConfigPluginOverrides = {}\n): PrettierConfig {\n\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\tconfig = clone(config);\n\n\tconst transform = (options: StandardOptions) => {\n\t\tif (options.jsonSortOrder) {\n\t\t\toptions.jsonSortOrder = transformJSONSortOrder(\n\t\t\t\toptions.jsonSortOrder\n\t\t\t);\n\t\t}\n\n\t\tif (options.plugins) {\n\t\t\tconst plugins = transformPlugins(options.plugins, pluginOverrides);\n\n\t\t\tif (plugins.length > 0) {\n\t\t\t\toptions.plugins = plugins;\n\t\t\t} else {\n\t\t\t\tdelete options.plugins;\n\t\t\t}\n\t\t}\n\t};\n\n\ttransform(config);\n\n\tif (config.overrides) {\n\t\tfor (const override of config.overrides) {\n\t\t\ttransform(override.options);\n\t\t}\n\t}\n\n\treturn config as PrettierConfig;\n}\n\nfunction transformJSONSortOrder(jsonSortOrder: string | string[]): string {\n\tif (Array.isArray(jsonSortOrder)) {\n\t\treturn prioritizeKeys(...jsonSortOrder);\n\t}\n\n\treturn jsonSortOrder;\n}\n\nfunction transformPlugins(\n\tplugins: PrettierPlugins,\n\tpluginOverrides: StandardConfigPluginOverrides\n): PrettierPlugins {\n\tconst pluginMap: StandardConfigPluginOverrides = {\n\t\t...Object.fromEntries(\n\t\t\t[\n\t\t\t\t'@prettier/plugin-oxc',\n\t\t\t\t'@prettier/plugin-xml',\n\t\t\t\t'prettier-plugin-expand-json',\n\t\t\t\t'prettier-plugin-markdown-html',\n\t\t\t\t'prettier-plugin-packagejson',\n\t\t\t\t'prettier-plugin-sh',\n\t\t\t\t'prettier-plugin-sort-json',\n\t\t\t\t'prettier-plugin-yaml',\n\t\t\t].map((name) => [name, transformPlugin(name)])\n\t\t),\n\t\t...pluginOverrides,\n\t};\n\n\tconst resolved: PrettierPlugins = [];\n\n\tfor (const plugin of plugins) {\n\t\tconst resolvedPlugin =\n\t\t\ttypeof plugin === 'string' && Object.hasOwn(pluginMap, plugin)\n\t\t\t\t? pluginMap[plugin]\n\t\t\t\t: plugin;\n\n\t\tif (resolvedPlugin) {\n\t\t\tresolved.push(resolvedPlugin);\n\t\t}\n\t}\n\n\treturn resolved;\n}\n\nfunction transformPlugin(plugin: string): string {\n\ttry {\n\t\treturn fileURLToPath(import.meta.resolve(plugin));\n\t} catch {\n\t\t/* v8 ignore next -- @preserve */\n\t\treturn plugin;\n\t}\n}\n","import type { Config as PrettierConfig } from 'prettier';\nimport type { StandardConfig } from '../types/index.d.ts';\nimport generateConfig from '../generate-config/index.ts';\nimport mergeConfig from '../merge-config/index.ts';\nimport transformConfig from '../transform-config/index.ts';\n\n/**\n * Combine Standard Config with optional config overrides.\n */\nexport default function defineConfig(\n\tconfig: StandardConfig = {}\n): PrettierConfig {\n\tconst {\n\t\tpluginOverrides,\n\t\tshellTabWidth,\n\t\tshellUseTabs,\n\t\ttabWidth,\n\t\tuseTabs,\n\t\t...extensionConfig\n\t} = config;\n\n\tconst baseConfig = generateConfig(\n\t\t{ useTabs, tabWidth },\n\t\t{ shellUseTabs, shellTabWidth }\n\t);\n\n\tconst extendedConfig = mergeConfig(baseConfig, extensionConfig);\n\n\treturn transformConfig(extendedConfig, pluginOverrides);\n}\n"],"mappings":";;;;AAEA,oBAAe,YAAY,EAAE,SAAS,MAAM,CAAC;;;;;;;;;;;;;;;ACiB7C,SAAwB,eACvB,eAAmC,EAAE,EACrC,gBAAyC,EAAE,EAC1B;CACjB,MAAM,EAAE,WAAW,GAAG,UAAU,SAAS;CACzC,MAAM,EAAE,gBAAgB,GAAG,eAAe,UAAU;AAEpD,QAAOA,cAAM;EACZ,SAAS;GACR;GACA;GACA;GACA;GACA;GACA;GACA;EACD,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,UAAU;EACV,eAAe;EACf,SAAS;EACT,WAAW,CACV,GAAG,qBACF;GAAE;GAAU;GAAS,EACrB;GAAE,UAAU;GAAe,SAAS;GAAc,CAClD,EACD,GAAG,sBAAsB,CACzB;EACD,CAAC;;AAGH,SAAS,qBACR,eAAmC,EAAE,EACrC,gBAAoC,EAAE,EACZ;AAC1B,QAAO;EACN;GACC,OAAO,CAAC,SAAS,SAAS;GAC1B,SAAS;IACR,GAAG;IACH,YAAY;IACZ,aAAa;IACb;GACD;EACD;GACC,OAAO;IAAC;IAAa;IAAc;IAAQ;GAC3C,SAAS,EACR,GAAG,cACH;GACD;EACD;GACC,OAAO,CAAC,UAAU,QAAQ;GAC1B,SAAS;IACR,GAAG;IACH,YAAY;IACZ;GACD;EACD;GACC,OAAO;IAAC;IAAQ;IAAS;IAAS;IAAQ;GAC1C,SAAS;IACR,GAAG;IACH,QAAQ;IACR;GACD;EACD;GACC,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,SAAS,EACR,GAAG,cACH;GACD;EACD;GACC,OAAO;IAAC;IAAU;IAAW;IAAU;GACvC,cAAc,CAAC,eAAe;GAC9B,SAAS;IACR,SAAS,CACR,6BACA,8BACA;IACD,mBAAmB;IACnB,eAAe,CAAC,UAAU;IAC1B;GACD;;;;;;;;;;;;;;EAaD;GACC,OAAO,CAAC,QAAQ,QAAQ;GACxB,SAAS;IACR,GAAG;IACH,SAAS;IACT;GACD;EACD;GACC,OAAO,CAAC,OAAO;GACf,SAAS;IACR,wBAAwB,OAAO;IAC/B,oCAAoC;IACpC;GACD;EACD;GACC,OAAO,CAAC,OAAO;GACf,SAAS,EACR,GAAG,eACH;GACD;EACD;GACC,OAAO;IAAC;IAAQ;IAAS;IAAS;IAAQ;GAC1C,SAAS;IACR,GAAG;IACH,QAAQ;IACR;GACD;EACD;GACC,OAAO;IAAC;IAAS;IAAW;IAAQ;GACpC,SAAS;IACR,GAAG;IACH,QAAQ;IACR,YAAY;IACZ,wBAAwB;IACxB,oBAAoB;IACpB,0BAA0B;IAC1B;GACD;EACD;GACC,OAAO,CAAC,UAAU,QAAQ;GAC1B,SAAS;IACR,qBAAqB;IACrB,SAAS;IACT;GACD;EACD;;AAGF,SAAS,uBAAgD;AACxD,QAAO;;;;;;EAKN;GACC,OAAO;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,SAAS,EACR,eAAe;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD;;;;;;;;;;;EAUD;GACC,OAAO,CAAC,eAAe;GACvB,SAAS;IACR,SAAS,CACR,+BACA,8BACA;IACD,kBAAkB;KACjB;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;GACD;;;;;;EAKD;GACC,OAAO;IACN;IACA;IACA;IACA;IACA;GACD,SAAS,EACR,eAAe;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD;EACD;GACC,OAAO,CAAC,mBAAmB;GAC3B,SAAS,EACR,eAAe,CAAC,WAAW,UAAU,EACrC;GACD;EACD;GACC,OAAO,CAAC,wBAAwB;GAChC,SAAS,EACR,eAAe;IAAC;IAAW;IAAQ;IAAY;IAAS,EACxD;GACD;EACD;;;;;;;;AC3SF,SAAwB,YACvB,YACA,iBACiB;AACjB,KACC,EAAE,OAAO,eAAe,YAAY,OAAO,oBAAoB,UAE/D,OAAM,IAAI,UACT,yDACA;CAGF,MAAM,SAASC,cAAM,WAAW;AAEhC,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQA,cAAM,gBAAgB,CAAC,EAAE;AAClE,MAAI,UAAU,QAAW;AAExB,UAAO,OAAO;AACd;;AAGD,MAAI,QAAQ,MAAM,IAAI,QAAQ,OAAO,KAAK,EAAE;AAC3C,UAAO,OAAO,CAAC,GAAG,OAAO,MAAM,GAAG,MAAM;AACxC;;AAGD,SAAO,OAAO;;AAGf,QAAO;;AAGR,SAAS,QAAQ,OAAoC;AACpD,QAAO,MAAM,QAAQ,MAAM;;;;;;;;ACpC5B,SAAwB,eAAe,GAAG,MAAqC;CAE9E,MAAM,QAA8B,EAAE;AAEtC,MAAK,MAAM,OAAO,KACjB,OAAM,OAAO,IAAI,IAAI;AAGtB,QAAO,KAAK,UAAU;EACrB,GAAG;GAEF,OAAc;EACf,CAAC;;;;;;;;ACDH,SAAwB,gBACvB,QACA,kBAAiD,EAAE,EAClC;AAEjB,UAASC,cAAM,OAAO;CAEtB,MAAM,aAAa,YAA6B;AAC/C,MAAI,QAAQ,cACX,SAAQ,gBAAgB,uBACvB,QAAQ,cACR;AAGF,MAAI,QAAQ,SAAS;GACpB,MAAM,UAAU,iBAAiB,QAAQ,SAAS,gBAAgB;AAElE,OAAI,QAAQ,SAAS,EACpB,SAAQ,UAAU;OAElB,QAAO,QAAQ;;;AAKlB,WAAU,OAAO;AAEjB,KAAI,OAAO,UACV,MAAK,MAAM,YAAY,OAAO,UAC7B,WAAU,SAAS,QAAQ;AAI7B,QAAO;;AAGR,SAAS,uBAAuB,eAA0C;AACzE,KAAI,MAAM,QAAQ,cAAc,CAC/B,QAAO,eAAe,GAAG,cAAc;AAGxC,QAAO;;AAGR,SAAS,iBACR,SACA,iBACkB;CAClB,MAAM,YAA2C;EAChD,GAAG,OAAO,YACT;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,CAAC,KAAK,SAAS,CAAC,MAAM,gBAAgB,KAAK,CAAC,CAAC,CAC9C;EACD,GAAG;EACH;CAED,MAAM,WAA4B,EAAE;AAEpC,MAAK,MAAM,UAAU,SAAS;EAC7B,MAAM,iBACL,OAAO,WAAW,YAAY,OAAO,OAAO,WAAW,OAAO,GAC3D,UAAU,UACV;AAEJ,MAAI,eACH,UAAS,KAAK,eAAe;;AAI/B,QAAO;;AAGR,SAAS,gBAAgB,QAAwB;AAChD,KAAI;AACH,SAAO,cAAc,OAAO,KAAK,QAAQ,OAAO,CAAC;SAC1C;;AAEP,SAAO;;;;;;;;;AC1FT,SAAwB,aACvB,SAAyB,EAAE,EACV;CACjB,MAAM,EACL,iBACA,eACA,cACA,UACA,SACA,GAAG,oBACA;AASJ,QAAO,gBAFgB,YALJ,eAClB;EAAE;EAAS;EAAU,EACrB;EAAE;EAAc;EAAe,CAC/B,EAE8C,gBAAgB,EAExB,gBAAgB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@standard-config/prettier",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
4
4
  "description": "TypeScript-first Prettier config",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -32,25 +32,27 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@prettier/plugin-oxc": "^0.1.3",
35
+ "@prettier/plugin-xml": "^3.4.2",
35
36
  "prettier-plugin-expand-json": "^1.0.4",
36
- "prettier-plugin-markdown-html": "^1.0.0",
37
+ "prettier-plugin-markdown-html": "^1.1.0",
37
38
  "prettier-plugin-packagejson": "^3.0.0",
38
39
  "prettier-plugin-sh": "^0.18.0",
39
40
  "prettier-plugin-sort-json": "^4.2.0",
40
- "prettier-plugin-yaml": "^1.1.1",
41
+ "prettier-plugin-yaml": "^1.1.2",
41
42
  "rfdc": "^1.4.1"
42
43
  },
43
44
  "peerDependencies": {
44
45
  "prettier": ">=3.7"
45
46
  },
46
47
  "devDependencies": {
47
- "@standard-config/eslint": "1.2.1",
48
+ "@standard-config/eslint": "1.3.0",
48
49
  "@standard-config/tsconfig": "2.0.2",
50
+ "@types/node": "^22.19.8",
49
51
  "@vitest/coverage-v8": "4.0.18",
50
52
  "eslint": "9.39.2",
51
53
  "husky": "9.1.7",
52
54
  "jiti": "2.6.1",
53
- "oxlint": "1.42.0",
55
+ "oxlint": "1.43.0",
54
56
  "oxlint-tsgolint": "0.11.4",
55
57
  "prettier": "3.8.1",
56
58
  "publint": "0.3.17",