@sanity/plugin-kit 7.0.1 → 8.0.0
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 +83 -6
- package/assets/inject/semver-workflow/.github/workflows/main.yml +3 -3
- package/assets/inject/semver-workflow/commitlint.template.js +1 -1
- package/assets/inject/semver-workflow/lint-staged.template.js +3 -3
- package/dist/{_chunks-es/constants.js → constants-BLTUL_Wd.js} +2 -3
- package/dist/constants-BLTUL_Wd.js.map +1 -0
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/{_chunks-es/init.js → init-BDY7XRmJ.js} +31 -74
- package/dist/init-BDY7XRmJ.js.map +1 -0
- package/dist/{_chunks-es/init2.js → init-v15fyisU.js} +9 -9
- package/dist/init-v15fyisU.js.map +1 -0
- package/dist/{_chunks-es/inject.js → inject-B41UktQ3.js} +10 -10
- package/dist/inject-B41UktQ3.js.map +1 -0
- package/dist/{_chunks-es/link-watch.js → link-watch-B2ixqs1y.js} +6 -6
- package/dist/link-watch-B2ixqs1y.js.map +1 -0
- package/dist/{_chunks-es/load-package-config.js → load-package-config-CNQRvdGW.js} +1 -1
- package/dist/load-package-config-CNQRvdGW.js.map +1 -0
- package/dist/{_chunks-es/log.js → log-DgQL-Rv9.js} +1 -1
- package/dist/log-DgQL-Rv9.js.map +1 -0
- package/dist/oxfmt.d.ts +29 -0
- package/dist/oxfmt.d.ts.map +1 -0
- package/dist/oxfmt.js +46 -0
- package/dist/oxfmt.js.map +1 -0
- package/dist/oxlint.d.ts +35 -0
- package/dist/oxlint.d.ts.map +1 -0
- package/dist/oxlint.js +126 -0
- package/dist/oxlint.js.map +1 -0
- package/dist/{_chunks-es/package.js → package-BrKrShA_.js} +283 -51
- package/dist/package-BrKrShA_.js.map +1 -0
- package/dist/package-z3cLp2Jt.js +4 -0
- package/dist/package-z3cLp2Jt.js.map +1 -0
- package/dist/verify-common-CzG3zw3J.js +39 -0
- package/dist/verify-common-CzG3zw3J.js.map +1 -0
- package/dist/{_chunks-es/verify-package.js → verify-package-B32oCYay.js} +16 -9
- package/dist/verify-package-B32oCYay.js.map +1 -0
- package/dist/{_chunks-es/verify-studio.js → verify-studio-DUoKxnYy.js} +8 -12
- package/dist/verify-studio-DUoKxnYy.js.map +1 -0
- package/dist/{_chunks-es/version.js → version-N9n1cr5G.js} +3 -3
- package/dist/version-N9n1cr5G.js.map +1 -0
- package/package.json +22 -20
- package/assets/inject/prettierrc.json +0 -6
- package/dist/_chunks-es/constants.js.map +0 -1
- package/dist/_chunks-es/init.js.map +0 -1
- package/dist/_chunks-es/init2.js.map +0 -1
- package/dist/_chunks-es/inject.js.map +0 -1
- package/dist/_chunks-es/link-watch.js.map +0 -1
- package/dist/_chunks-es/load-package-config.js.map +0 -1
- package/dist/_chunks-es/log.js.map +0 -1
- package/dist/_chunks-es/package.js.map +0 -1
- package/dist/_chunks-es/package2.js +0 -4
- package/dist/_chunks-es/package2.js.map +0 -1
- package/dist/_chunks-es/verify-common.js +0 -161
- package/dist/_chunks-es/verify-common.js.map +0 -1
- package/dist/_chunks-es/verify-package.js.map +0 -1
- package/dist/_chunks-es/verify-studio.js.map +0 -1
- package/dist/_chunks-es/version.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as cliName } from "./constants.js";
|
|
2
|
-
import { t as log_default } from "./log.js";
|
|
3
|
-
import { i as presetHelpList, n as initFlags, r as inject } from "./init.js";
|
|
4
|
-
import { u as findStudioV3Config } from "./package.js";
|
|
5
|
-
import { t as loadPackageConfig } from "./load-package-config.js";
|
|
1
|
+
import { t as cliName } from "./constants-BLTUL_Wd.js";
|
|
2
|
+
import { t as log_default } from "./log-DgQL-Rv9.js";
|
|
3
|
+
import { i as presetHelpList, n as initFlags, r as inject } from "./init-BDY7XRmJ.js";
|
|
4
|
+
import { u as findStudioV3Config } from "./package-BrKrShA_.js";
|
|
5
|
+
import { t as loadPackageConfig } from "./load-package-config-CNQRvdGW.js";
|
|
6
6
|
import meow from "meow";
|
|
7
7
|
import path from "path";
|
|
8
8
|
const help = `
|
|
@@ -10,8 +10,8 @@ Usage
|
|
|
10
10
|
$ ${cliName} inject [dir] [<args>]
|
|
11
11
|
|
|
12
12
|
Options
|
|
13
|
-
--no-
|
|
14
|
-
--no-
|
|
13
|
+
--no-oxlint Disables oxlint config and dependencies from being added
|
|
14
|
+
--no-oxfmt Disables oxfmt config and dependencies from being added
|
|
15
15
|
--no-typescript Disables typescript config and dependencies from being added
|
|
16
16
|
--no-license Disables LICENSE + package.json license field from being added
|
|
17
17
|
--no-editorconfig Disables .editorconfig from being added
|
|
@@ -33,8 +33,8 @@ Examples
|
|
|
33
33
|
# Inject configuration into the plugin in ~/my-plugin
|
|
34
34
|
$ ${cliName} inject ~/my-plugin
|
|
35
35
|
|
|
36
|
-
# Don't inject
|
|
37
|
-
$ ${cliName} inject --no-
|
|
36
|
+
# Don't inject oxlint or oxfmt
|
|
37
|
+
$ ${cliName} inject --no-oxlint --no-oxfmt
|
|
38
38
|
|
|
39
39
|
# Inject plugin configuration and semver-workflow into the plugin in the current directory
|
|
40
40
|
$ @sanity/plugin-kit inject --preset semver-workflow
|
|
@@ -59,4 +59,4 @@ async function run({ argv }) {
|
|
|
59
59
|
}
|
|
60
60
|
export { run as default };
|
|
61
61
|
|
|
62
|
-
//# sourceMappingURL=inject.js.map
|
|
62
|
+
//# sourceMappingURL=inject-B41UktQ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-B41UktQ3.js","names":[],"sources":["../src/cmds/inject.ts"],"sourcesContent":["import path from 'path'\n\nimport meow from 'meow'\n\nimport {initFlags} from '../actions/init'\nimport {inject} from '../actions/inject'\nimport {cliName, defaultOutDir} from '../constants'\nimport {presetHelpList} from '../presets/presets'\nimport {findStudioV3Config} from '../sanity/manifest'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\n\nconst description = `Inject configuration into a Sanity plugin`\n\nconst help = `\nUsage\n $ ${cliName} inject [dir] [<args>]\n\nOptions\n --no-oxlint Disables oxlint config and dependencies from being added\n --no-oxfmt Disables oxfmt config and dependencies from being added\n --no-typescript Disables typescript config and dependencies from being added\n --no-license Disables LICENSE + package.json license field from being added\n --no-editorconfig Disables .editorconfig from being added\n --no-gitignore Disables .gitignore from being added\n --no-scripts Disables scripts from being added to package.json\n\n --license [spdx] Use the license with the given SPDX identifier\n --force No prompt when overwriting files\n\n --preset [preset-name] Adds config and files from a named preset. --preset can be supplied multiple times.\n The following presets are available:\n${presetHelpList(30)}\n --preset-only Skips the default inject steps. Use this to apply a preset to an otherwise complete plugin.\n\nExamples\n # Inject configuration into the plugin in the current directory\n $ ${cliName} inject\n\n # Inject configuration into the plugin in ~/my-plugin\n $ ${cliName} inject ~/my-plugin\n\n # Don't inject oxlint or oxfmt\n $ ${cliName} inject --no-oxlint --no-oxfmt\n\n # Inject plugin configuration and semver-workflow into the plugin in the current directory\n $ @sanity/plugin-kit inject --preset semver-workflow\n\n # Only inject semver-workflow and renovatebot config from presets\n $ ${cliName} inject --preset-only --preset semver-workflow --preset renovatebot\n\n`\n\nasync function run({argv}: {argv: string[]}) {\n const cli = meow(help, {flags: initFlags, argv, description})\n const basePath = path.resolve(cli.input[0] || process.cwd())\n const packageConfig = await loadPackageConfig({basePath})\n const outDir = packageConfig?.dist ?? defaultOutDir\n\n const {v3ConfigFile} = await findStudioV3Config(basePath)\n if (v3ConfigFile) {\n throw new Error(\n `${v3ConfigFile} exists - are you trying to INJECT into a studio instead of a plugin?`,\n )\n }\n log.info('Inject config into plugin in \"%s\"', basePath)\n\n await inject({basePath, outDir, flags: cli.flags, validate: false})\n log.info('Done!')\n}\n\nexport default run\n"],"mappings":";;;;;;;AAYA,MAEM,OAAO;;MAEP,QAAQ;;;;;;;;;;;;;;;;EAgBZ,eAAe,EAAE,EAAE;;;;;MAKf,QAAQ;;;MAGR,QAAQ;;;MAGR,QAAQ;;;;;;MAMR,QAAQ;;;AAId,eAAe,IAAI,EAAC,QAAyB;CAC3C,IAAM,MAAM,KAAK,MAAM;EAAC,OAAO;EAAW;EAAM;CAAW,CAAC,GACtD,WAAW,KAAK,QAAQ,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC,GAErD,UAAS,MADa,kBAAkB,EAAC,SAAQ,CAAC,EAAA,EAC1B,QAAA,QAExB,EAAC,iBAAgB,MAAM,mBAAmB,QAAQ;CACxD,IAAI,cACF,MAAU,MACR,GAAG,aAAa,sEAClB;CAKF,AAHA,YAAI,KAAK,uCAAqC,QAAQ,GAEtD,MAAM,OAAO;EAAC;EAAU;EAAQ,OAAO,IAAI;EAAO,UAAU;CAAK,CAAC,GAClE,YAAI,KAAK,OAAO;AAClB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "./constants.js";
|
|
2
|
-
import { n as sharedFlags_default, t as log_default } from "./log.js";
|
|
3
|
-
import { I as mkdir, P as fileExists, a as getPackage } from "./package.js";
|
|
4
|
-
import { t as binname } from "./
|
|
5
|
-
import { t as loadPackageConfig } from "./load-package-config.js";
|
|
1
|
+
import "./constants-BLTUL_Wd.js";
|
|
2
|
+
import { n as sharedFlags_default, t as log_default } from "./log-DgQL-Rv9.js";
|
|
3
|
+
import { I as mkdir, P as fileExists, a as getPackage } from "./package-BrKrShA_.js";
|
|
4
|
+
import { t as binname } from "./package-z3cLp2Jt.js";
|
|
5
|
+
import { t as loadPackageConfig } from "./load-package-config-CNQRvdGW.js";
|
|
6
6
|
import meow from "meow";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
import path from "path";
|
|
@@ -90,4 +90,4 @@ function run({ argv }) {
|
|
|
90
90
|
}
|
|
91
91
|
export { run as default };
|
|
92
92
|
|
|
93
|
-
//# sourceMappingURL=link-watch.js.map
|
|
93
|
+
//# sourceMappingURL=link-watch-B2ixqs1y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-watch-B2ixqs1y.js","names":["pkg.binname","sharedFlags"],"sources":["../src/actions/link-watch.ts","../src/cmds/link-watch.ts"],"sourcesContent":["/*\nISC License (ISC)\nCopyright 2019 Johan Otterud\n\nPermission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,\nprovided that the above copyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,\nWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH\nTHE USE OR PERFORMANCE OF THIS SOFTWARE.\n*/\n\n/*\nThis code is a modified version of https://github.com/johot/yalc-watch,\nand the ISC License has been added for this file only, in accordance with the package.json license field in that package\n*/\n\nimport fs from 'fs'\nimport path from 'path'\n\nimport chalk from 'chalk'\nimport concurrently from 'concurrently'\nimport nodemon from 'nodemon'\nimport outdent from 'outdent'\n\nimport {defaultOutDir} from '../constants'\nimport {getPackage} from '../npm/package'\nimport {fileExists, mkdir} from '../util/files'\nimport {loadPackageConfig} from '../util/load-package-config'\nimport log from '../util/log'\n\ninterface YalcWatchConfig {\n command?: string\n extensions?: string\n}\n\ninterface PackageJson {\n sanityPlugin?: {linkWatch?: YalcWatchConfig}\n}\n\nexport async function linkWatch({basePath}: {basePath: string}) {\n const packageJson: PackageJson = JSON.parse(\n fs.readFileSync(path.join(basePath, 'package.json'), 'utf8'),\n )\n\n const packageConfig = await loadPackageConfig({basePath})\n const outDir = packageConfig?.dist ?? defaultOutDir\n\n const watch: Required<YalcWatchConfig> = {\n command: 'npm run watch',\n extensions: 'ts,js,png,svg,gif,jpeg,css',\n ...packageJson.sanityPlugin?.linkWatch,\n }\n\n nodemon({\n watch: [outDir],\n ext: watch.extensions,\n exec: 'yalc push --changed',\n //delay: 1000\n })\n\n // ensure the folder exits so it can be watched\n const folder = path.join(basePath, outDir)\n if (!(await fileExists(folder))) {\n await mkdir(folder)\n }\n\n const pkg = await getPackage({basePath, validate: false})\n\n concurrently([watch.command])\n\n nodemon\n .on('start', function () {\n log.info(\n outdent`\n Watching ${outDir} for changes to files with extensions: ${watch.extensions}\n\n To test this package in Sanity Studio or another package, in a separate shell run:\n cd /path/to/sanity/studio-or-package\n\n Then, run one of the below commands, based on the package manager used in studio-or-package:\n\n ## yarn\n ${chalk.greenBright(`yalc add --link ${pkg.name} && yarn install`)}\n\n ## npm\n ${chalk.greenBright(`npx yalc add ${pkg.name} && npx yalc link ${pkg.name} && npm install`)}\n `.trimStart(),\n )\n })\n .on('quit', function () {\n process.exit()\n })\n .on('restart', function (files: any) {\n log.info('Found changes in files:', chalk.magentaBright(files))\n log.info('Pushing new yalc package...')\n })\n}\n","import path from 'path'\n\nimport meow from 'meow'\n\nimport pkg from '../../package.json'\nimport {linkWatch} from '../actions/link-watch'\nimport sharedFlags from '../sharedFlags'\n\nconst description = `Run the watch command and pushes any changes to yalc`\n\nconst help = `\nUsage\n $ ${pkg.binname} link-watch [<args>]\n\nOptions\n --silent Do not print info and warning messages\n --verbose Log everything. This option conflicts with --silent\n --version Output the version number\n --help Output usage information\n\nConfiguration\nTo override the default watch command configuration, provide an override in package.json under sanityPlugin:\n{\n \"sanityPlugin\": {\n \"watchCommand\": \"microbundle watch --format modern,esm,cjs --jsx React.createElement --jsxImportSource react --css inline\",\n \"linkWatch\": {\n \"command\": \"npm run watch\",\n \"extensions\": \"js,png,svg,gif,jpeg,css\"\n }\n }\n}\n\nExamples\n # Run the watch command and pushes any changes to yalc\n $ ${pkg.binname} link-watch\n`\n\nconst flags = {\n ...sharedFlags,\n watch: {\n type: 'boolean',\n default: false,\n },\n} as const\n\nfunction run({argv}: {argv: string[]}) {\n const cli = meow(help, {flags, argv, description})\n const basePath = path.resolve(cli.input[0] || process.cwd())\n return linkWatch({basePath})\n}\n\nexport default run\n"],"mappings":";;;;;;;;;;;;AA0CA,eAAsB,UAAU,EAAC,YAA+B;CAC9D,IAAM,cAA2B,KAAK,MACpC,GAAG,aAAa,KAAK,KAAK,UAAU,cAAc,GAAG,MAAM,CAC7D,GAGM,UAAS,MADa,kBAAkB,EAAC,SAAQ,CAAC,EAAA,EAC1B,QAAA,QAExB,QAAmC;EACvC,SAAS;EACT,YAAY;EACZ,GAAG,YAAY,cAAc;CAC/B;CAEA,QAAQ;EACN,OAAO,CAAC,MAAM;EACd,KAAK,MAAM;EACX,MAAM;CAER,CAAC;CAGD,IAAM,SAAS,KAAK,KAAK,UAAU,MAAM;CACzC,AAAM,MAAM,WAAW,MAAM,KAC3B,MAAM,MAAM,MAAM;CAGpB,IAAM,MAAM,MAAM,WAAW;EAAC;EAAU,UAAU;CAAK,CAAC;CAIxD,AAFA,aAAa,CAAC,MAAM,OAAO,CAAC,GAE5B,QACG,GAAG,SAAS,WAAY;EACvB,YAAI,KACF,OAAO;mBACI,OAAO,yCAAyC,MAAM,WAAW;;;;;;;;UAQ1E,MAAM,YAAY,mBAAmB,IAAI,KAAK,iBAAiB,EAAE;;;UAGjE,MAAM,YAAY,gBAAgB,IAAI,KAAK,oBAAoB,IAAI,KAAK,gBAAgB,EAAE;QAC5F,UAAU,CACZ;CACF,CAAC,CAAC,CACD,GAAG,QAAQ,WAAY;EACtB,QAAQ,KAAK;CACf,CAAC,CAAC,CACD,GAAG,WAAW,SAAU,OAAY;EAEnC,AADA,YAAI,KAAK,2BAA2B,MAAM,cAAc,KAAK,CAAC,GAC9D,YAAI,KAAK,6BAA6B;CACxC,CAAC;AACL;AC3FA,MAEM,OAAO;;MAEPA,QAAY;;;;;;;;;;;;;;;;;;;;;;MAsBZA,QAAY;GAGZ,QAAQ;CACZ,GAAGC;CACH,OAAO;EACL,MAAM;EACN,SAAS;CACX;AACF;AAEA,SAAS,IAAI,EAAC,QAAyB;CACrC,IAAM,MAAM,KAAK,MAAM;EAAC;EAAO;EAAM;CAAW,CAAC;CAEjD,OAAO,UAAU,EAAC,UADD,KAAK,QAAQ,IAAI,MAAM,MAAM,QAAQ,IAAI,CACjC,EAAC,CAAC;AAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-package-config-CNQRvdGW.js","names":[],"sources":["../src/util/load-package-config.ts"],"sourcesContent":["import fs from 'node:fs'\nimport {createRequire} from 'node:module'\nimport path from 'node:path'\nimport {pathToFileURL} from 'node:url'\n\nimport type {loadConfig as LoadConfig, PkgConfigOptions} from '@sanity/pkg-utils'\n\n// Config file candidates supported by `@sanity/pkg-utils`.\nconst CONFIG_FILE_NAMES = [\n 'package.config.ts',\n 'package.config.js',\n 'package.config.cjs',\n 'package.config.mts',\n 'package.config.mjs',\n]\n\n/**\n * Loads the `@sanity/pkg-utils` package.config file for the plugin in `basePath`.\n *\n * `@sanity/pkg-utils` is a peer dependency, so we resolve `loadConfig` from the plugin's own\n * installation (relative to `basePath`). This guarantees the config is parsed with the exact\n * same pkg-utils version the plugin builds with, and lets plugin-kit run via `npx` without\n * bundling its own copy of pkg-utils.\n */\nexport async function loadPackageConfig(options: {\n basePath: string\n}): Promise<PkgConfigOptions | undefined> {\n const {basePath} = options\n\n // Cheap check first: avoid resolving the pkg-utils peer when there's no config to load.\n const hasConfigFile = CONFIG_FILE_NAMES.some((file) => fs.existsSync(path.join(basePath, file)))\n if (!hasConfigFile) {\n return undefined\n }\n\n const pkgPath = path.join(basePath, 'package.json')\n const require = createRequire(pkgPath)\n const pkgUtilsEntry = require.resolve('@sanity/pkg-utils')\n const {loadConfig} = (await import(pathToFileURL(pkgUtilsEntry).href)) as {\n loadConfig: typeof LoadConfig\n }\n\n return loadConfig({cwd: basePath, pkgPath})\n}\n"],"mappings":";;;;AAQA,MAAM,oBAAoB;CACxB;CACA;CACA;CACA;CACA;AACF;;;;;;;;;AAUA,eAAsB,kBAAkB,SAEE;CACxC,IAAM,EAAC,aAAY;CAInB,IAAI,CADkB,kBAAkB,MAAM,SAAS,GAAG,WAAW,KAAK,KAAK,UAAU,IAAI,CAAC,CAC7E,GACf;CAGF,IAAM,UAAU,KAAK,KAAK,UAAU,cAAc,GAG5C,EAAC,eAAe,MAAM,OAAO,cAFnB,cAAc,OACF,CAAC,CAAC,QAAQ,mBACuB,CAAC,CAAC,CAAC;CAIhE,OAAO,WAAW;EAAC,KAAK;EAAU;CAAO,CAAC;AAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-DgQL-Rv9.js","names":[],"sources":["../src/sharedFlags.ts","../src/util/log.ts"],"sourcesContent":["export default {\n debug: {\n default: false,\n type: 'boolean',\n },\n silent: {\n type: 'boolean',\n default: false,\n },\n verbose: {\n type: 'boolean',\n default: false,\n },\n} as const\n","// Note: This is _specifically_ meant for CLI usage,\n// I realize that \"singletons\" are bad.\n\nimport chalk from 'chalk'\n\nlet beQuiet = false\nlet beVerbose = false\n\nfunction setVerbosity({verbose, silent}: {verbose: boolean; silent: boolean}) {\n if (silent) {\n beVerbose = false\n beQuiet = true\n } else if (verbose) {\n beVerbose = true\n beQuiet = false\n }\n}\n\nexport default {\n setVerbosity: setVerbosity,\n\n // Bypasses any checks, prints regardless (only use for things like `cli --version`)\n msg: (msg: any, ...args: any[]) => !beQuiet && console.log(msg, ...args),\n\n // Debug only printed on --verbose\n debug: (msg: any, ...args: any[]) =>\n !beQuiet && beVerbose && console.debug(`${chalk.bgBlack.white('[debug]')} ${msg}`, ...args),\n\n // Success messages only printed if not --silent\n success: (msg: any, ...args: any[]) =>\n !beQuiet && console.info(`${chalk.bgBlack.greenBright('[success]')} ${msg}`, ...args),\n\n // Info only printed if not --silent (\"standard\" level)\n info: (msg: any, ...args: any[]) =>\n !beQuiet && console.info(`${chalk.bgBlack.cyanBright('[info]')} ${msg}`, ...args),\n\n // Warning only printed if not --silent\n warn: (msg: any, ...args: any[]) =>\n !beQuiet && console.warn(`${chalk.bgBlack.yellowBright('[warn]')} ${msg}`, ...args),\n\n // Errors are always printed\n error: (msg: any, ...args: any[]) =>\n console.error(`${chalk.bgBlack.redBright('[error]')} ${msg}`, ...args),\n}\n"],"mappings":";AAAA,IAAA,sBAAe;CACb,OAAO;EACL,SAAS;EACT,MAAM;CACR;CACA,QAAQ;EACN,MAAM;EACN,SAAS;CACX;CACA,SAAS;EACP,MAAM;EACN,SAAS;CACX;AACF;ACRA,IAAI,UAAU,IACV,YAAY;AAEhB,SAAS,aAAa,EAAC,SAAS,UAA8C;CAC5E,AAAI,UACF,YAAY,IACZ,UAAU,MACD,YACT,YAAY,IACZ,UAAU;AAEd;AAEA,IAAA,cAAe;CACC;CAGd,MAAM,KAAU,GAAG,SAAgB,CAAC,WAAW,QAAQ,IAAI,KAAK,GAAG,IAAI;CAGvE,QAAQ,KAAU,GAAG,SACnB,CAAC,WAAW,aAAa,QAAQ,MAAM,GAAG,MAAM,QAAQ,MAAM,SAAS,EAAE,GAAG,OAAO,GAAG,IAAI;CAG5F,UAAU,KAAU,GAAG,SACrB,CAAC,WAAW,QAAQ,KAAK,GAAG,MAAM,QAAQ,YAAY,WAAW,EAAE,GAAG,OAAO,GAAG,IAAI;CAGtF,OAAO,KAAU,GAAG,SAClB,CAAC,WAAW,QAAQ,KAAK,GAAG,MAAM,QAAQ,WAAW,QAAQ,EAAE,GAAG,OAAO,GAAG,IAAI;CAGlF,OAAO,KAAU,GAAG,SAClB,CAAC,WAAW,QAAQ,KAAK,GAAG,MAAM,QAAQ,aAAa,QAAQ,EAAE,GAAG,OAAO,GAAG,IAAI;CAGpF,QAAQ,KAAU,GAAG,SACnB,QAAQ,MAAM,GAAG,MAAM,QAAQ,UAAU,SAAS,EAAE,GAAG,OAAO,GAAG,IAAI;AACzE"}
|
package/dist/oxfmt.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { OxfmtConfig } from "oxfmt";
|
|
2
|
+
/**
|
|
3
|
+
* Shared [Oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) preset for Sanity plugins - the
|
|
4
|
+
* same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses.
|
|
5
|
+
*
|
|
6
|
+
* Re-export it from an `oxfmt.config.ts` next to the `package.json` that runs oxfmt (the
|
|
7
|
+
* repository root in a monorepo, otherwise the plugin directory):
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* export {default} from '@sanity/plugin-kit/oxfmt'
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Oxfmt has no `extends` mechanism; to customize, spread the preset and override options:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* import pluginKitOxfmt from '@sanity/plugin-kit/oxfmt'
|
|
17
|
+
* import {defineConfig} from 'oxfmt'
|
|
18
|
+
*
|
|
19
|
+
* export default defineConfig({
|
|
20
|
+
* ...pluginKitOxfmt,
|
|
21
|
+
* ignorePatterns: [...(pluginKitOxfmt.ignorePatterns ?? []), 'CHANGELOG.md'],
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
declare const config: OxfmtConfig;
|
|
28
|
+
export { config as default };
|
|
29
|
+
//# sourceMappingURL=oxfmt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxfmt.d.ts","names":[],"sources":["../src/oxfmt.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;cA2BM,QAAQ"}
|
package/dist/oxfmt.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared [Oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) preset for Sanity plugins - the
|
|
3
|
+
* same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses.
|
|
4
|
+
*
|
|
5
|
+
* Re-export it from an `oxfmt.config.ts` next to the `package.json` that runs oxfmt (the
|
|
6
|
+
* repository root in a monorepo, otherwise the plugin directory):
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* export {default} from '@sanity/plugin-kit/oxfmt'
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Oxfmt has no `extends` mechanism; to customize, spread the preset and override options:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import pluginKitOxfmt from '@sanity/plugin-kit/oxfmt'
|
|
16
|
+
* import {defineConfig} from 'oxfmt'
|
|
17
|
+
*
|
|
18
|
+
* export default defineConfig({
|
|
19
|
+
* ...pluginKitOxfmt,
|
|
20
|
+
* ignorePatterns: [...(pluginKitOxfmt.ignorePatterns ?? []), 'CHANGELOG.md'],
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
const config = {
|
|
27
|
+
printWidth: 100,
|
|
28
|
+
semi: !1,
|
|
29
|
+
singleQuote: !0,
|
|
30
|
+
bracketSpacing: !1,
|
|
31
|
+
quoteProps: "consistent",
|
|
32
|
+
sortImports: !0,
|
|
33
|
+
sortPackageJson: { sortScripts: !0 },
|
|
34
|
+
ignorePatterns: [
|
|
35
|
+
"dist/**",
|
|
36
|
+
"pnpm-lock.yaml",
|
|
37
|
+
"turbo/**/*.hbs"
|
|
38
|
+
],
|
|
39
|
+
overrides: [{
|
|
40
|
+
files: [".changeset/*.md"],
|
|
41
|
+
options: { singleQuote: !1 }
|
|
42
|
+
}]
|
|
43
|
+
};
|
|
44
|
+
export { config as default };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=oxfmt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxfmt.js","names":[],"sources":["../src/oxfmt.ts"],"sourcesContent":["import type {OxfmtConfig} from 'oxfmt'\n\n/**\n * Shared [Oxfmt](https://oxc.rs/docs/guide/usage/formatter.html) preset for Sanity plugins - the\n * same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses.\n *\n * Re-export it from an `oxfmt.config.ts` next to the `package.json` that runs oxfmt (the\n * repository root in a monorepo, otherwise the plugin directory):\n *\n * ```ts\n * export {default} from '@sanity/plugin-kit/oxfmt'\n * ```\n *\n * Oxfmt has no `extends` mechanism; to customize, spread the preset and override options:\n *\n * ```ts\n * import pluginKitOxfmt from '@sanity/plugin-kit/oxfmt'\n * import {defineConfig} from 'oxfmt'\n *\n * export default defineConfig({\n * ...pluginKitOxfmt,\n * ignorePatterns: [...(pluginKitOxfmt.ignorePatterns ?? []), 'CHANGELOG.md'],\n * })\n * ```\n *\n * @public\n */\nconst config: OxfmtConfig = {\n printWidth: 100,\n semi: false,\n singleQuote: true,\n bracketSpacing: false,\n quoteProps: 'consistent',\n sortImports: true,\n sortPackageJson: {sortScripts: true},\n ignorePatterns: ['dist/**', 'pnpm-lock.yaml', 'turbo/**/*.hbs'],\n overrides: [\n {\n files: ['.changeset/*.md'],\n options: {singleQuote: false},\n },\n ],\n}\n\nexport default config\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,SAAsB;CAC1B,YAAY;CACZ,MAAM;CACN,aAAa;CACb,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,iBAAiB,EAAC,aAAa,GAAI;CACnC,gBAAgB;EAAC;EAAW;EAAkB;CAAgB;CAC9D,WAAW,CACT;EACE,OAAO,CAAC,iBAAiB;EACzB,SAAS,EAAC,aAAa,GAAK;CAC9B,CACF;AACF"}
|
package/dist/oxlint.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { OxlintConfig } from "oxlint";
|
|
2
|
+
/**
|
|
3
|
+
* Shared [oxlint](https://oxc.rs/docs/guide/usage/linter.html) config for Sanity plugins - the
|
|
4
|
+
* same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses:
|
|
5
|
+
* type-aware rules and TypeScript type checking enabled (via `oxlint-tsgolint`), warnings denied,
|
|
6
|
+
* and the React, React Compiler, import, promise, a11y and unicorn rule sets turned on.
|
|
7
|
+
*
|
|
8
|
+
* Re-export it from an `oxlint.config.ts` next to the `package.json` that runs oxlint (the
|
|
9
|
+
* repository root in a monorepo, otherwise the plugin directory):
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* export {default} from '@sanity/plugin-kit/oxlint'
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* To customize, extend it and add your own options ([`ignorePatterns` do not propagate through
|
|
16
|
+
* `extends`](https://oxc.rs/docs/guide/usage/linter/config.html#extend-shared-configs), so spread
|
|
17
|
+
* them explicitly when adding your own):
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* import sanityPluginKitOxlint from '@sanity/plugin-kit/oxlint'
|
|
21
|
+
* import {defineConfig} from 'oxlint'
|
|
22
|
+
*
|
|
23
|
+
* export default defineConfig({
|
|
24
|
+
* extends: [sanityPluginKitOxlint],
|
|
25
|
+
* ignorePatterns: [...(sanityPluginKitOxlint.ignorePatterns ?? []), 'examples/**'],
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* Note: TypeScript config files require the Node-based `oxlint` package and Node `>=22.18`.
|
|
30
|
+
*
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
33
|
+
declare const config: OxlintConfig;
|
|
34
|
+
export { config as default };
|
|
35
|
+
//# sourceMappingURL=oxlint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxlint.d.ts","names":[],"sources":["../src/oxlint.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAiCM,QAAQ"}
|
package/dist/oxlint.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared [oxlint](https://oxc.rs/docs/guide/usage/linter.html) config for Sanity plugins - the
|
|
3
|
+
* same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses:
|
|
4
|
+
* type-aware rules and TypeScript type checking enabled (via `oxlint-tsgolint`), warnings denied,
|
|
5
|
+
* and the React, React Compiler, import, promise, a11y and unicorn rule sets turned on.
|
|
6
|
+
*
|
|
7
|
+
* Re-export it from an `oxlint.config.ts` next to the `package.json` that runs oxlint (the
|
|
8
|
+
* repository root in a monorepo, otherwise the plugin directory):
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* export {default} from '@sanity/plugin-kit/oxlint'
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* To customize, extend it and add your own options ([`ignorePatterns` do not propagate through
|
|
15
|
+
* `extends`](https://oxc.rs/docs/guide/usage/linter/config.html#extend-shared-configs), so spread
|
|
16
|
+
* them explicitly when adding your own):
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* import sanityPluginKitOxlint from '@sanity/plugin-kit/oxlint'
|
|
20
|
+
* import {defineConfig} from 'oxlint'
|
|
21
|
+
*
|
|
22
|
+
* export default defineConfig({
|
|
23
|
+
* extends: [sanityPluginKitOxlint],
|
|
24
|
+
* ignorePatterns: [...(sanityPluginKitOxlint.ignorePatterns ?? []), 'examples/**'],
|
|
25
|
+
* })
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* Note: TypeScript config files require the Node-based `oxlint` package and Node `>=22.18`.
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
const config = {
|
|
33
|
+
plugins: [
|
|
34
|
+
"typescript",
|
|
35
|
+
"unicorn",
|
|
36
|
+
"react",
|
|
37
|
+
"react-perf",
|
|
38
|
+
"oxc",
|
|
39
|
+
"import",
|
|
40
|
+
"jsx-a11y",
|
|
41
|
+
"promise"
|
|
42
|
+
],
|
|
43
|
+
ignorePatterns: [
|
|
44
|
+
"**/.sanity/*",
|
|
45
|
+
"**/dist/*",
|
|
46
|
+
"**/sanity.types.ts"
|
|
47
|
+
],
|
|
48
|
+
options: {
|
|
49
|
+
denyWarnings: !0,
|
|
50
|
+
reportUnusedDisableDirectives: "error",
|
|
51
|
+
typeAware: !0,
|
|
52
|
+
typeCheck: !0
|
|
53
|
+
},
|
|
54
|
+
categories: {
|
|
55
|
+
correctness: "error",
|
|
56
|
+
suspicious: "error",
|
|
57
|
+
perf: "error"
|
|
58
|
+
},
|
|
59
|
+
rules: {
|
|
60
|
+
"no-underscore-dangle": "off",
|
|
61
|
+
"consistent-function-scoping": "off",
|
|
62
|
+
"eslint/no-restricted-imports": ["error", {
|
|
63
|
+
paths: [
|
|
64
|
+
{
|
|
65
|
+
name: "lodash-es",
|
|
66
|
+
message: "Import from individual modules instead, e.g. `import debounce from 'lodash-es/debounce.js'`. Barrel imports are ~55% slower."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "react",
|
|
70
|
+
importNames: ["createElement"],
|
|
71
|
+
message: "Please use JSX instead of createElement, for example `createElement(Icon)` should be `<Icon />`"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "react",
|
|
75
|
+
importNames: ["forwardRef"],
|
|
76
|
+
message: "forwardRef is unnecessary in React 19 — `ref` is a regular prop. Accept `ref` in your component props instead, e.g. `function Foo({ref, ...props}: Props & {ref?: Ref<T>}) {}`. See the sanity-plugin-best-practices skill."
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
patterns: [{
|
|
80
|
+
group: [
|
|
81
|
+
"lodash.*",
|
|
82
|
+
"lodash/*",
|
|
83
|
+
"lodash"
|
|
84
|
+
],
|
|
85
|
+
message: "Please use individual imports from 'lodash-es' instead, e.g. `import debounce from 'lodash-es/debounce.js'`."
|
|
86
|
+
}]
|
|
87
|
+
}],
|
|
88
|
+
"react/react-compiler": "error",
|
|
89
|
+
"typescript/ban-ts-comment": "error",
|
|
90
|
+
"typescript/no-deprecated": "error",
|
|
91
|
+
"typescript/no-unnecessary-type-assertion": "error",
|
|
92
|
+
"typescript/no-unnecessary-type-arguments": "error",
|
|
93
|
+
"typescript/prefer-ts-expect-error": "error",
|
|
94
|
+
"import/no-commonjs": "error",
|
|
95
|
+
"import/no-unassigned-import": ["error", { allow: ["**/*.css"] }],
|
|
96
|
+
"no-restricted-globals": [
|
|
97
|
+
"error",
|
|
98
|
+
{
|
|
99
|
+
name: "__dirname",
|
|
100
|
+
message: "Use path.dirname(fileURLToPath(import.meta.url)) instead"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "__filename",
|
|
104
|
+
message: "Use fileURLToPath(import.meta.url) instead"
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
"react/jsx-key": "error",
|
|
108
|
+
"unicorn/no-abusive-eslint-disable": "error",
|
|
109
|
+
"react-in-jsx-scope": "off",
|
|
110
|
+
"react_perf/jsx-no-new-array-as-prop": "off",
|
|
111
|
+
"react_perf/jsx-no-new-object-as-prop": "off",
|
|
112
|
+
"react_perf/jsx-no-new-function-as-prop": "off",
|
|
113
|
+
"react_perf/jsx-no-jsx-as-prop": "off",
|
|
114
|
+
"jsx_a11y/anchor-is-valid": "off",
|
|
115
|
+
"jsx_a11y/no-autofocus": "off",
|
|
116
|
+
"react/exhaustive-deps": "error",
|
|
117
|
+
"react/rules-of-hooks": "error",
|
|
118
|
+
"eslint/no-console": ["error", { allow: ["warn", "error"] }],
|
|
119
|
+
"no-array-reverse": "off",
|
|
120
|
+
"no-array-sort": "off",
|
|
121
|
+
"no-shadow": "off"
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
export { config as default };
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=oxlint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxlint.js","names":[],"sources":["../src/oxlint.ts"],"sourcesContent":["import type {OxlintConfig} from 'oxlint'\n\n/**\n * Shared [oxlint](https://oxc.rs/docs/guide/usage/linter.html) config for Sanity plugins - the\n * same settings the [sanity-io/plugins](https://github.com/sanity-io/plugins) monorepo uses:\n * type-aware rules and TypeScript type checking enabled (via `oxlint-tsgolint`), warnings denied,\n * and the React, React Compiler, import, promise, a11y and unicorn rule sets turned on.\n *\n * Re-export it from an `oxlint.config.ts` next to the `package.json` that runs oxlint (the\n * repository root in a monorepo, otherwise the plugin directory):\n *\n * ```ts\n * export {default} from '@sanity/plugin-kit/oxlint'\n * ```\n *\n * To customize, extend it and add your own options ([`ignorePatterns` do not propagate through\n * `extends`](https://oxc.rs/docs/guide/usage/linter/config.html#extend-shared-configs), so spread\n * them explicitly when adding your own):\n *\n * ```ts\n * import sanityPluginKitOxlint from '@sanity/plugin-kit/oxlint'\n * import {defineConfig} from 'oxlint'\n *\n * export default defineConfig({\n * extends: [sanityPluginKitOxlint],\n * ignorePatterns: [...(sanityPluginKitOxlint.ignorePatterns ?? []), 'examples/**'],\n * })\n * ```\n *\n * Note: TypeScript config files require the Node-based `oxlint` package and Node `>=22.18`.\n *\n * @public\n */\nconst config: OxlintConfig = {\n plugins: ['typescript', 'unicorn', 'react', 'react-perf', 'oxc', 'import', 'jsx-a11y', 'promise'],\n ignorePatterns: ['**/.sanity/*', '**/dist/*', '**/sanity.types.ts'],\n options: {\n denyWarnings: true,\n reportUnusedDisableDirectives: 'error',\n typeAware: true,\n typeCheck: true,\n },\n categories: {\n correctness: 'error',\n suspicious: 'error',\n perf: 'error',\n },\n rules: {\n 'no-underscore-dangle': 'off',\n 'consistent-function-scoping': 'off',\n 'eslint/no-restricted-imports': [\n 'error',\n {\n paths: [\n {\n name: 'lodash-es',\n message:\n \"Import from individual modules instead, e.g. `import debounce from 'lodash-es/debounce.js'`. Barrel imports are ~55% slower.\",\n },\n {\n name: 'react',\n importNames: ['createElement'],\n message:\n 'Please use JSX instead of createElement, for example `createElement(Icon)` should be `<Icon />`',\n },\n {\n name: 'react',\n importNames: ['forwardRef'],\n message:\n 'forwardRef is unnecessary in React 19 — `ref` is a regular prop. Accept `ref` in your component props instead, e.g. `function Foo({ref, ...props}: Props & {ref?: Ref<T>}) {}`. See the sanity-plugin-best-practices skill.',\n },\n ],\n patterns: [\n {\n group: ['lodash.*', 'lodash/*', 'lodash'],\n message:\n \"Please use individual imports from 'lodash-es' instead, e.g. `import debounce from 'lodash-es/debounce.js'`.\",\n },\n ],\n },\n ],\n\n // React Compiler checks\n 'react/react-compiler': 'error',\n\n 'typescript/ban-ts-comment': 'error',\n 'typescript/no-deprecated': 'error',\n 'typescript/no-unnecessary-type-assertion': 'error',\n 'typescript/no-unnecessary-type-arguments': 'error',\n 'typescript/prefer-ts-expect-error': 'error',\n 'import/no-commonjs': 'error',\n 'import/no-unassigned-import': ['error', {allow: ['**/*.css']}],\n 'no-restricted-globals': [\n 'error',\n {name: '__dirname', message: 'Use path.dirname(fileURLToPath(import.meta.url)) instead'},\n {name: '__filename', message: 'Use fileURLToPath(import.meta.url) instead'},\n ],\n 'react/jsx-key': 'error',\n 'unicorn/no-abusive-eslint-disable': 'error',\n // Not relevant as we use the modern jsx-runtime transform\n 'react-in-jsx-scope': 'off',\n // Not relevant due to React Compiler\n 'react_perf/jsx-no-new-array-as-prop': 'off',\n 'react_perf/jsx-no-new-object-as-prop': 'off',\n 'react_perf/jsx-no-new-function-as-prop': 'off',\n 'react_perf/jsx-no-jsx-as-prop': 'off',\n // False negatives\n 'jsx_a11y/anchor-is-valid': 'off',\n 'jsx_a11y/no-autofocus': 'off',\n // Handy rules that are disabled by default\n 'react/exhaustive-deps': 'error',\n 'react/rules-of-hooks': 'error',\n 'eslint/no-console': ['error', {allow: ['warn', 'error']}],\n // Requires polyfills for older browsers\n 'no-array-reverse': 'off',\n 'no-array-sort': 'off',\n // Too noisy, common in callbacks/closures\n 'no-shadow': 'off',\n },\n}\n\nexport default config\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,SAAuB;CAC3B,SAAS;EAAC;EAAc;EAAW;EAAS;EAAc;EAAO;EAAU;EAAY;CAAS;CAChG,gBAAgB;EAAC;EAAgB;EAAa;CAAoB;CAClE,SAAS;EACP,cAAc;EACd,+BAA+B;EAC/B,WAAW;EACX,WAAW;CACb;CACA,YAAY;EACV,aAAa;EACb,YAAY;EACZ,MAAM;CACR;CACA,OAAO;EACL,wBAAwB;EACxB,+BAA+B;EAC/B,gCAAgC,CAC9B,SACA;GACE,OAAO;IACL;KACE,MAAM;KACN,SACE;IACJ;IACA;KACE,MAAM;KACN,aAAa,CAAC,eAAe;KAC7B,SACE;IACJ;IACA;KACE,MAAM;KACN,aAAa,CAAC,YAAY;KAC1B,SACE;IACJ;GACF;GACA,UAAU,CACR;IACE,OAAO;KAAC;KAAY;KAAY;IAAQ;IACxC,SACE;GACJ,CACF;EACF,CACF;EAGA,wBAAwB;EAExB,6BAA6B;EAC7B,4BAA4B;EAC5B,4CAA4C;EAC5C,4CAA4C;EAC5C,qCAAqC;EACrC,sBAAsB;EACtB,+BAA+B,CAAC,SAAS,EAAC,OAAO,CAAC,UAAU,EAAC,CAAC;EAC9D,yBAAyB;GACvB;GACA;IAAC,MAAM;IAAa,SAAS;GAA0D;GACvF;IAAC,MAAM;IAAc,SAAS;GAA4C;EAC5E;EACA,iBAAiB;EACjB,qCAAqC;EAErC,sBAAsB;EAEtB,uCAAuC;EACvC,wCAAwC;EACxC,0CAA0C;EAC1C,iCAAiC;EAEjC,4BAA4B;EAC5B,yBAAyB;EAEzB,yBAAyB;EACzB,wBAAwB;EACxB,qBAAqB,CAAC,SAAS,EAAC,OAAO,CAAC,QAAQ,OAAO,EAAC,CAAC;EAEzD,oBAAoB;EACpB,iBAAiB;EAEjB,aAAa;CACf;AACF"}
|