@solvro/config 2.0.7 → 2.1.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.
Files changed (39) hide show
  1. package/dist/{adonis-GN4AQKAU.js → adonis-IGPNFIOR.js} +4 -4
  2. package/dist/adonis-IGPNFIOR.js.map +1 -0
  3. package/dist/{chunk-LNSDT6IT.js → chunk-DPDE52KB.js} +2 -2
  4. package/dist/chunk-DPDE52KB.js.map +1 -0
  5. package/dist/{chunk-VMUJRX4H.js → chunk-GO7SIG7Y.js} +1 -1
  6. package/dist/chunk-GO7SIG7Y.js.map +1 -0
  7. package/dist/{chunk-VXVVMPZI.js → chunk-NCPWMNFM.js} +2 -2
  8. package/dist/chunk-NCPWMNFM.js.map +1 -0
  9. package/dist/{chunk-SUGOLX7X.js → chunk-YZ6XWZKU.js} +2 -2
  10. package/dist/chunk-YZ6XWZKU.js.map +1 -0
  11. package/dist/cli/index.cjs +63 -48
  12. package/dist/cli/index.cjs.map +1 -1
  13. package/dist/cli/index.js +63 -48
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/commitlint/index.cjs +1 -1
  16. package/dist/commitlint/index.cjs.map +1 -1
  17. package/dist/commitlint/index.js +1 -1
  18. package/dist/commitlint/index.js.map +1 -1
  19. package/dist/eslint/index.cjs +3 -2
  20. package/dist/eslint/index.cjs.map +1 -1
  21. package/dist/eslint/index.d.cts +2 -3
  22. package/dist/eslint/index.d.ts +2 -3
  23. package/dist/eslint/index.js +7 -7
  24. package/dist/eslint/index.js.map +1 -1
  25. package/dist/{nestjs-SVXAEFXN.js → nestjs-2STKSA5M.js} +5 -5
  26. package/dist/nestjs-2STKSA5M.js.map +1 -0
  27. package/dist/{node-LOZFNKBL.js → node-6FQFMXKP.js} +5 -5
  28. package/dist/node-6FQFMXKP.js.map +1 -0
  29. package/dist/{react-CM27K2YV.js → react-ZVTTVRVH.js} +5 -4
  30. package/dist/react-ZVTTVRVH.js.map +1 -0
  31. package/package.json +44 -40
  32. package/dist/adonis-GN4AQKAU.js.map +0 -1
  33. package/dist/chunk-LNSDT6IT.js.map +0 -1
  34. package/dist/chunk-SUGOLX7X.js.map +0 -1
  35. package/dist/chunk-VMUJRX4H.js.map +0 -1
  36. package/dist/chunk-VXVVMPZI.js.map +0 -1
  37. package/dist/nestjs-SVXAEFXN.js.map +0 -1
  38. package/dist/node-LOZFNKBL.js.map +0 -1
  39. package/dist/react-CM27K2YV.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  node
3
- } from "./chunk-SUGOLX7X.js";
3
+ } from "./chunk-YZ6XWZKU.js";
4
4
  import {
5
5
  imports
6
- } from "./chunk-LNSDT6IT.js";
7
- import "./chunk-VMUJRX4H.js";
6
+ } from "./chunk-DPDE52KB.js";
7
+ import "./chunk-GO7SIG7Y.js";
8
8
 
9
9
  // src/eslint/presets/adonis.ts
10
10
  import { configApp } from "@adonisjs/eslint-config";
@@ -49,4 +49,4 @@ var adonisPreset = () => {
49
49
  export {
50
50
  adonisPreset
51
51
  };
52
- //# sourceMappingURL=adonis-GN4AQKAU.js.map
52
+ //# sourceMappingURL=adonis-IGPNFIOR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/eslint/presets/adonis.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { configApp } from \"@adonisjs/eslint-config\";\n\nimport { imports } from \"../configs/imports\";\nimport { node } from \"../configs/node\";\n\nexport const adonisPreset = (): ConfigWithExtends[] => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const builtinAdonisConfig: ConfigWithExtends[] = configApp();\n\n return [\n ...builtinAdonisConfig,\n ...node(),\n ...imports(),\n {\n rules: {\n \"@typescript-eslint/naming-convention\": [\n \"error\",\n {\n selector: [\"enum\", \"enumMember\", \"class\", \"interface\", \"typeLike\"],\n format: [\"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: [\n \"classProperty\",\n \"classMethod\",\n \"method\",\n \"variableLike\",\n ],\n format: [\"camelCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n {\n selector: \"variable\",\n format: [\"camelCase\", \"UPPER_CASE\", \"PascalCase\"],\n leadingUnderscore: \"allow\",\n trailingUnderscore: \"allow\",\n },\n ],\n },\n },\n ];\n};\n"],"mappings":";;;;;;;;;AAEA,SAAS,iBAAiB;AAKnB,IAAM,eAAe,MAA2B;AAErD,QAAM,sBAA2C,UAAU;AAE3D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,KAAK;AAAA,IACR,GAAG,QAAQ;AAAA,IACX;AAAA,MACE,OAAO;AAAA,QACL,wCAAwC;AAAA,UACtC;AAAA,UACA;AAAA,YACE,UAAU,CAAC,QAAQ,cAAc,SAAS,aAAa,UAAU;AAAA,YACjE,QAAQ,CAAC,YAAY;AAAA,YACrB,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ,CAAC,WAAW;AAAA,YACpB,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV,QAAQ,CAAC,aAAa,cAAc,YAAY;AAAA,YAChD,mBAAmB;AAAA,YACnB,oBAAoB;AAAA,UACtB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  default2,
3
3
  default3
4
- } from "./chunk-VMUJRX4H.js";
4
+ } from "./chunk-GO7SIG7Y.js";
5
5
 
6
6
  // src/eslint/configs/imports.ts
7
7
  var forbiddenUiLibraries = [
@@ -80,4 +80,4 @@ function imports({
80
80
  export {
81
81
  imports
82
82
  };
83
- //# sourceMappingURL=chunk-LNSDT6IT.js.map
83
+ //# sourceMappingURL=chunk-DPDE52KB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/eslint/configs/imports.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { pluginAntfu, pluginImport } from \"../plugins\";\n\nconst forbiddenUiLibraries = [\n \"@headlessui/react\",\n \"@mui/material\",\n \"@chakra-ui/react\",\n \"@chakra-ui/core\",\n \"@nextui-org/react\",\n \"react-bootstrap\",\n \"antd\",\n];\n\nexport function imports({\n forbidDefaultExport = true,\n} = {}): ConfigWithExtends[] {\n const config: ConfigWithExtends[] = [\n pluginImport.flatConfigs.typescript,\n {\n name: \"solvro/imports/rules\",\n plugins: {\n antfu: pluginAntfu,\n },\n\n rules: {\n \"antfu/import-dedupe\": \"error\",\n \"antfu/no-import-dist\": \"error\",\n \"antfu/no-import-node-modules-by-path\": \"error\",\n\n ...(pluginImport.flatConfigs.recommended\n .rules as ConfigWithExtends[\"rules\"]),\n \"import/no-dynamic-require\": \"warn\",\n \"import/no-unresolved\": \"off\",\n \"import/consistent-type-specifier-style\": \"warn\",\n \"@typescript-eslint/no-restricted-imports\": [\n \"error\",\n {\n paths: [\n {\n name: \"axios\",\n message: \"Please use fetch instead\",\n },\n ...forbiddenUiLibraries.map((library) => ({\n name: library,\n message: `Please use ui.shadcn.com components instead.`,\n })),\n ],\n },\n ],\n },\n },\n ];\n\n if (forbidDefaultExport) {\n config.push(\n {\n rules: { \"import/no-default-export\": \"error\" },\n },\n {\n files: [\n \"tsup.config.*\",\n \"eslint.config.*\",\n \".commitlintrc.*\",\n \"knip.*\",\n \"next.config.*\",\n \"commitlint.config.*\",\n \"vite.config.*\",\n \".releaserc.*\",\n \"vitest.config.*\",\n \"postcss.config.*\",\n \"playwright.config.*\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n );\n }\n\n return config;\n}\n"],"mappings":";;;;;;AAIA,IAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,QAAQ;AAAA,EACtB,sBAAsB;AACxB,IAAI,CAAC,GAAwB;AAC3B,QAAM,SAA8B;AAAA,IAClCA,SAAa,YAAY;AAAA,IACzB;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,QACP,OAAOA;AAAA,MACT;AAAA,MAEA,OAAO;AAAA,QACL,uBAAuB;AAAA,QACvB,wBAAwB;AAAA,QACxB,wCAAwC;AAAA,QAExC,GAAIA,SAAa,YAAY,YAC1B;AAAA,QACH,6BAA6B;AAAA,QAC7B,wBAAwB;AAAA,QACxB,0CAA0C;AAAA,QAC1C,4CAA4C;AAAA,UAC1C;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL;AAAA,gBACE,MAAM;AAAA,gBACN,SAAS;AAAA,cACX;AAAA,cACA,GAAG,qBAAqB,IAAI,CAAC,aAAa;AAAA,gBACxC,MAAM;AAAA,gBACN,SAAS;AAAA,cACX,EAAE;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,qBAAqB;AACvB,WAAO;AAAA,MACL;AAAA,QACE,OAAO,EAAE,4BAA4B,QAAQ;AAAA,MAC/C;AAAA,MACA;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,4BAA4B;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":["default"]}
@@ -14,4 +14,4 @@ export {
14
14
  default6 as default5,
15
15
  default7 as default6
16
16
  };
17
- //# sourceMappingURL=chunk-VMUJRX4H.js.map
17
+ //# sourceMappingURL=chunk-GO7SIG7Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/eslint/plugins.ts"],"sourcesContent":["export { default as pluginComments } from \"@eslint-community/eslint-plugin-eslint-comments\";\nexport { default as pluginAntfu } from \"eslint-plugin-antfu\";\nexport { default as pluginImport } from \"eslint-plugin-import\";\nexport { default as pluginNode } from \"eslint-plugin-n\";\nexport { default as pluginUnicorn } from \"eslint-plugin-unicorn\";\nexport { default as pluginUnusedImports } from \"eslint-plugin-unused-imports\";\n"],"mappings":";AAAA,SAAoB,WAAXA,gBAAiC;AAC1C,SAAoB,WAAXA,gBAA8B;AACvC,SAAoB,WAAXA,gBAA+B;AACxC,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAAgC;AACzC,SAAoB,WAAXA,gBAAsC;","names":["default"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  default2,
3
3
  default5 as default3
4
- } from "./chunk-VMUJRX4H.js";
4
+ } from "./chunk-GO7SIG7Y.js";
5
5
 
6
6
  // src/eslint/configs/typescript-strict.ts
7
7
  import tseslint from "typescript-eslint";
@@ -182,4 +182,4 @@ export {
182
182
  typescriptStrict,
183
183
  unicorn
184
184
  };
185
- //# sourceMappingURL=chunk-VXVVMPZI.js.map
185
+ //# sourceMappingURL=chunk-NCPWMNFM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/eslint/configs/typescript-strict.ts","../src/eslint/configs/unicorn.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\nimport tseslint from \"typescript-eslint\";\n\nimport { pluginAntfu } from \"../plugins\";\n\nexport function typescriptStrict(): ConfigWithExtends[] {\n return [\n ...tseslint.configs.strictTypeChecked,\n ...tseslint.configs.stylisticTypeChecked,\n {\n name: \"solvro/typescript-strict/setup\",\n plugins: {\n antfu: pluginAntfu,\n },\n },\n {\n files: [\"**/*.{ts,tsx}\"],\n name: \"solvro/typescript-strict/rules\",\n rules: {\n \"@typescript-eslint/ban-ts-comment\": [\n \"error\",\n { \"ts-expect-error\": \"allow-with-description\" },\n ],\n \"@typescript-eslint/consistent-type-definitions\": [\n \"error\",\n \"interface\",\n ],\n \"@typescript-eslint/consistent-type-imports\": [\n \"error\",\n {\n disallowTypeAnnotations: false,\n prefer: \"type-imports\",\n },\n ],\n \"@typescript-eslint/method-signature-style\": [\"error\", \"property\"], // https://www.totaltypescript.com/method-shorthand-syntax-considered-harmful\n \"@typescript-eslint/no-dupe-class-members\": \"error\",\n \"@typescript-eslint/no-empty-object-type\": [\n \"error\",\n { allowInterfaces: \"always\" },\n ],\n \"@typescript-eslint/no-import-type-side-effects\": \"error\",\n \"@typescript-eslint/no-redeclare\": [\"error\", { builtinGlobals: false }],\n \"@typescript-eslint/no-require-imports\": \"error\",\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTaggedTemplates: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-use-before-define\": [\n \"error\",\n { classes: false, functions: false, variables: true },\n ],\n \"@typescript-eslint/no-wrapper-object-types\": \"error\",\n // prevent unnecessary use of void operator\n \"@typescript-eslint/no-meaningless-void-operator\": \"error\",\n // \"using non-null assertions cancels the benefits of the strict\n // null-checking mode.\"\n // warn when one of the types in union / intersection overrides others\n \"@typescript-eslint/no-redundant-type-constituents\": \"warn\",\n // prevent variables shadowing\n \"no-shadow\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n // prevent assignment of this, signals a wrong usage of it\n \"@typescript-eslint/no-this-alias\": \"error\",\n // prevent throwing non-error\n \"no-throw-literal\": \"off\",\n\n // prevent unnecessary explicitly adding a default type argument\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"error\",\n // prevent unnecessary assertions that won't change the outcome\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n // prevent extending default types\n \"@typescript-eslint/no-unnecessary-type-constraint\": \"error\",\n // force typing out function arguments\n \"@typescript-eslint/no-unsafe-argument\": \"error\",\n // prevent usage of any via reassigning\n \"@typescript-eslint/no-unsafe-assignment\": \"error\",\n // prevent usage of any via calling it\n \"@typescript-eslint/no-unsafe-call\": \"error\",\n // prevent usage of any via using it's members\n \"@typescript-eslint/no-unsafe-member-access\": \"error\",\n // prevent reverting any from functions\n \"@typescript-eslint/no-unsafe-return\": \"error\",\n // prevent unused expressions\n \"no-unused-expressions\": \"off\",\n // var<'string'> = 'string' -> var = 'string' as const\n \"@typescript-eslint/prefer-as-const\": \"error\",\n // force initializing enums\n \"@typescript-eslint/prefer-enum-initializers\": \"error\",\n // prefer for x of obj to for let i = 0...\n \"@typescript-eslint/prefer-for-of\": \"error\",\n // prefer includes() to indexOf()\n \"@typescript-eslint/prefer-includes\": \"error\",\n // use literals for enum initialization\n \"@typescript-eslint/prefer-literal-enum-member\": \"error\",\n // prefer safe cascade of a value when dealing with undefined or null\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n // prefer optional chaining (a?.b)\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n // prefer using type parameter for Array.reduce\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"error\",\n // prefer RegExp#exec when no /g flag in regex\n \"@typescript-eslint/prefer-regexp-exec\": \"error\",\n // enforce `this` as a type when stating type for a method\n \"@typescript-eslint/prefer-return-this-type\": \"error\",\n // enforce startsWith to indexOf === 0\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"error\",\n // prevents default behavior of .sort() - which is confusing\n \"@typescript-eslint/require-array-sort-compare\": \"error\",\n // no async functions without awaits in body\n \"require-await\": \"off\",\n \"@typescript-eslint/require-await\": \"error\",\n // prevent number + string\n \"@typescript-eslint/restrict-plus-operands\": \"error\",\n // only allow string in templates\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n // prevent returning await\n \"no-return-await\": \"off\",\n \"@typescript-eslint/return-await\": \"error\",\n // only booleans in ifs and whiles\n \"@typescript-eslint/strict-boolean-expressions\": \"error\",\n // check if all paths are followed in code\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"dot-notation\": \"off\",\n \"no-implied-eval\": \"off\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/dot-notation\": [\"error\", { allowKeywords: true }],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-for-in-array\": \"error\",\n \"@typescript-eslint/no-implied-eval\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/promise-function-async\": \"error\",\n \"@typescript-eslint/unbound-method\": \"error\",\n \"no-restricted-imports\": \"off\",\n },\n },\n ];\n}\n","import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { pluginUnicorn } from \"../plugins\";\n\nexport function unicorn(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/unicorn/rules\",\n plugins: {\n unicorn: pluginUnicorn,\n },\n rules: {\n ...pluginUnicorn.configs.recommended.rules,\n \"unicorn/no-array-reduce\": \"off\",\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-useless-switch-case\": \"off\",\n \"unicorn/prefer-global-this\": \"off\",\n \"unicorn/prevent-abbreviations\": [\n \"error\",\n {\n replacements: {\n env: false,\n envs: false,\n props: false,\n prop: false,\n ref: false,\n utils: false,\n },\n allowList: {\n e2e: true,\n },\n ignore: [String.raw`e2e`],\n },\n ],\n },\n },\n ];\n}\n"],"mappings":"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","names":["default","default"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  default4 as default2
3
- } from "./chunk-VMUJRX4H.js";
3
+ } from "./chunk-GO7SIG7Y.js";
4
4
 
5
5
  // src/eslint/configs/node.ts
6
6
  function node() {
@@ -27,4 +27,4 @@ function node() {
27
27
  export {
28
28
  node
29
29
  };
30
- //# sourceMappingURL=chunk-SUGOLX7X.js.map
30
+ //# sourceMappingURL=chunk-YZ6XWZKU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/eslint/configs/node.ts"],"sourcesContent":["import type { ConfigWithExtends } from \"@eslint/config-helpers\";\n\nimport { pluginNode } from \"../plugins\";\n\nexport function node(): ConfigWithExtends[] {\n return [\n {\n name: \"solvro/node/rules\",\n plugins: {\n node: pluginNode,\n },\n rules: {\n \"node/handle-callback-err\": [\"error\", \"^(err|error)$\"],\n \"node/no-deprecated-api\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-new-require\": \"error\",\n \"node/no-path-concat\": \"error\",\n \"node/prefer-global/buffer\": [\"error\"],\n \"node/prefer-global/process\": [\"error\"],\n \"node/process-exit-as-throw\": \"error\",\n },\n },\n ];\n}\n"],"mappings":";;;;;AAIO,SAAS,OAA4B;AAC1C,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,QACP,MAAMA;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,4BAA4B,CAAC,SAAS,eAAe;AAAA,QACrD,0BAA0B;AAAA,QAC1B,0BAA0B;AAAA,QAC1B,uBAAuB;AAAA,QACvB,uBAAuB;AAAA,QACvB,6BAA6B,CAAC,OAAO;AAAA,QACrC,8BAA8B,CAAC,OAAO;AAAA,QACtC,8BAA8B;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACF;","names":["default"]}
@@ -31,7 +31,7 @@ var import_picocolors = __toESM(require("picocolors"), 1);
31
31
  // package.json
32
32
  var package_default = {
33
33
  name: "@solvro/config",
34
- version: "2.0.6",
34
+ version: "2.0.7",
35
35
  description: "Solvro's engineering style guide",
36
36
  keywords: [
37
37
  "eslint",
@@ -83,7 +83,7 @@ var package_default = {
83
83
  test: "vitest run",
84
84
  "test:ui": "vitest --ui",
85
85
  "test:watch": "vitest",
86
- typecheck: "tsc --noEmit"
86
+ typecheck: "tsgo --noEmit"
87
87
  },
88
88
  "lint-staged": {
89
89
  "*": "prettier -w --ignore-unknown"
@@ -92,65 +92,69 @@ var package_default = {
92
92
  dependencies: {
93
93
  "@adonisjs/eslint-config": "^2.1.2",
94
94
  "@clack/prompts": "^0.11.0",
95
- "@commitlint/config-conventional": "^19.8.1",
96
- "@darraghor/eslint-plugin-nestjs-typed": "^6.7.1",
97
- "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
98
- "@eslint/js": "^9.34.0",
99
- "@tanstack/eslint-plugin-query": "^5.83.1",
95
+ "@commitlint/config-conventional": "^20.4.3",
96
+ "@darraghor/eslint-plugin-nestjs-typed": "^6.18.0",
97
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
98
+ "@eslint/config-helpers": "^0.4.2",
99
+ "@eslint/js": "^9.37.0",
100
+ "@tanstack/eslint-plugin-query": "^5.91.4",
100
101
  "@trivago/prettier-plugin-sort-imports": "^5.2.2",
101
- "@typescript-eslint/eslint-plugin": "^8.41.0",
102
- commander: "^14.0.0",
103
- "eslint-config-flat-gitignore": "^2.1.0",
102
+ "@typescript-eslint/eslint-plugin": "^8.46.0",
103
+ commander: "^14.0.3",
104
+ "eslint-config-flat-gitignore": "^2.2.1",
104
105
  "eslint-config-prettier": "^10.1.8",
105
- "eslint-plugin-antfu": "^3.1.1",
106
+ "eslint-plugin-antfu": "^3.2.2",
106
107
  "eslint-plugin-import": "^2.32.0",
107
- "eslint-plugin-jsdoc": "^54.1.1",
108
+ "eslint-plugin-jsdoc": "^62.7.1",
108
109
  "eslint-plugin-jsx-a11y": "^6.10.2",
109
- "eslint-plugin-n": "^17.21.3",
110
+ "eslint-plugin-n": "^17.24.0",
110
111
  "eslint-plugin-react": "^7.37.5",
111
- "eslint-plugin-react-hooks": "^5.2.0",
112
- "eslint-plugin-react-refresh": "^0.4.20",
113
- "eslint-plugin-react-you-might-not-need-an-effect": "^0.5.0",
112
+ "eslint-plugin-react-hooks": "^7.0.1",
113
+ "eslint-plugin-react-refresh": "^0.4.26",
114
+ "eslint-plugin-react-you-might-not-need-an-effect": "^0.6.1",
114
115
  "eslint-plugin-unicorn": "^61.0.2",
115
- "eslint-plugin-unused-imports": "^4.2.0",
116
- execa: "^9.6.0",
116
+ "eslint-plugin-unused-imports": "^4.4.1",
117
+ execa: "^9.6.1",
117
118
  "find-up-simple": "^1.0.1",
118
- globals: "^16.3.0",
119
+ globals: "^16.5.0",
119
120
  "is-interactive": "^2.0.0",
120
121
  "local-pkg": "^1.1.2",
121
- "package-manager-detector": "^1.3.0",
122
+ "package-manager-detector": "^1.6.0",
122
123
  picocolors: "^1.1.1",
123
- "prettier-plugin-packagejson": "^2.5.19",
124
- "prettier-plugin-tailwindcss": "^0.6.14",
125
- semver: "^7.7.2",
126
- "typescript-eslint": "^8.41.0"
124
+ "prettier-plugin-packagejson": "^2.5.22",
125
+ "prettier-plugin-tailwindcss": "^0.7.2",
126
+ semver: "^7.7.4",
127
+ "typescript-eslint": "^8.56.1"
127
128
  },
128
129
  devDependencies: {
129
- "@commitlint/cli": "^19.8.1",
130
- "@eslint/config-inspector": "^1.2.0",
131
- "@next/eslint-plugin-next": "^15.5.2",
130
+ "@commitlint/cli": "^20.4.3",
131
+ "@commitlint/types": "^20.4.3",
132
+ "@eslint/config-inspector": "^1.5.0",
133
+ "@next/eslint-plugin-next": "^15.5.12",
132
134
  "@semantic-release/git": "^10.0.1",
133
- "@types/node": "^24.3.0",
134
- "@types/semver": "^7.7.0",
135
+ "@types/node": "^25.3.5",
136
+ "@types/semver": "^7.7.1",
137
+ "@typescript-eslint/utils": "^8.56.1",
138
+ "@typescript/native-preview": "^7.0.0-dev.20251012.1",
135
139
  "@vitest/coverage-v8": "^3.2.4",
136
140
  "@vitest/ui": "^3.2.4",
137
- eslint: "^9.34.0",
141
+ eslint: "^9.39.4",
138
142
  husky: "^9.1.7",
139
- knip: "^5.63.0",
140
- "lint-staged": "^16.1.5",
141
- "pkg-pr-new": "^0.0.59",
142
- prettier: "^3.6.2",
143
- "semantic-release": "^24.2.7",
144
- tsup: "^8.5.0",
145
- tsx: "^4.20.5",
146
- typescript: "^5.9.2",
143
+ knip: "^5.86.0",
144
+ "lint-staged": "^16.3.2",
145
+ "pkg-pr-new": "^0.0.60",
146
+ prettier: "^3.8.1",
147
+ "semantic-release": "^25.0.3",
148
+ tsup: "^8.5.1",
149
+ tsx: "^4.21.0",
150
+ typescript: "^5.9.3",
147
151
  vitest: "^3.2.4"
148
152
  },
149
153
  peerDependencies: {
150
- "@next/eslint-plugin-next": ">=12.3.0 <16.0.0-0",
154
+ "@next/eslint-plugin-next": ">=12.3.0",
151
155
  eslint: ">=9.0.0 <10.0.0"
152
156
  },
153
- packageManager: "npm@11.5.2",
157
+ packageManager: "npm@11.11.0",
154
158
  engines: {
155
159
  node: "^20.19.0 || >=22.12.0"
156
160
  },
@@ -506,16 +510,16 @@ jobs:
506
510
  cp .env.example .env
507
511
  node ace generate:key
508
512
  ${withCommitlint ? commitLintCi() : ""}
509
- - name: Run prettier
513
+ - name: Check formatting
510
514
  run: npm run format:check
511
515
  if: always()
512
516
 
513
- - name: Run Lint
517
+ - name: Lint code
514
518
  run: npm run lint
515
519
  if: always()
516
520
 
517
521
  - name: Check types
518
- run: npm run typecheck
522
+ run: npm run types:check
519
523
  if: always()
520
524
 
521
525
  - name: Run tests
@@ -618,16 +622,16 @@ jobs:
618
622
  - name: Install dependencies
619
623
  run: npm ci
620
624
  ${withCommitlint ? commitLintCi() : ""}
621
- - name: Run prettier
625
+ - name: Check formatting
622
626
  run: npm run format:check
623
627
  if: always()
624
628
 
625
- - name: Run Lint
629
+ - name: Lint code
626
630
  run: npm run lint
627
631
  if: always()
628
632
 
629
633
  - name: Check types
630
- run: npm run typecheck
634
+ run: npm run types:check
631
635
  if: always()
632
636
 
633
637
  - name: Run tests
@@ -684,10 +688,18 @@ ${usingNextJs ? nextJsCi() : ""}
684
688
  - name: Install dependencies
685
689
  run: npm ci
686
690
  ${withCommitlint ? commitLintCi() : ""}
687
- - name: Format check
691
+ - name: Check formatting
688
692
  run: npm run format:check
689
693
  if: always()
690
694
 
695
+ - name: Lint code
696
+ run: npm run lint
697
+ if: always()
698
+
699
+ - name: Check types
700
+ run: npm run types:check
701
+ if: always()
702
+
691
703
  - name: Build
692
704
  run: npm run build
693
705
  if: always()
@@ -732,6 +744,9 @@ var installGithubActions = async () => {
732
744
  usingNextJs
733
745
  })
734
746
  );
747
+ if (usingNextJs) {
748
+ await packageJson4.addScriptIfNotExists("types:generate", "next typegen");
749
+ }
735
750
  }
736
751
  if (type === "nestjs") {
737
752
  await fs2.writeFile(
@@ -751,7 +766,7 @@ var installGithubActions = async () => {
751
766
  await packageJson4.addScriptIfNotExists("format:check", "prettier --check .");
752
767
  await packageJson4.addScriptIfNotExists("lint", "eslint . --max-warnings=0");
753
768
  await packageJson4.addScriptIfNotExists("format", "prettier --write .");
754
- await packageJson4.addScriptIfNotExists("typecheck", "tsc --noEmit");
769
+ await packageJson4.addScriptIfNotExists("types:check", "tsc --noEmit");
755
770
  p4.note("Dodano konfiguracj\u0119 CI i skrypty.");
756
771
  };
757
772
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts","../../package.json","../../src/utils/is-git-clean.ts","../../src/utils/package-json.ts","../../src/utils/git-root.ts","../../src/utils/$$.ts","../../src/utils/run-if-interactive.ts","../../src/utils/polish-confirm.ts","../../src/cli/install-commitlint.ts","../../src/cli/install-husky.ts","../../src/cli/templates/commitlint.ts","../../src/cli/install-eslint.ts","../../src/cli/install-ga.ts","../../src/cli/templates/commit-lint-ci.ts","../../src/cli/templates/adonis-ci.ts","../../src/cli/templates/adonis-ci-migrations.ts","../../src/cli/templates/dependabot.ts","../../src/cli/templates/nestjs-ci.ts","../../src/cli/templates/nextjs-ci.ts","../../src/cli/templates/react-ci.ts","../../src/cli/install-lint-staged.ts","../../src/cli/install-prettier.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { getUserAgent } from \"package-manager-detector/detect\";\nimport c from \"picocolors\";\n\nimport packageJsonData from \"../../package.json\";\nimport { isGitClean } from \"../utils/is-git-clean\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\nimport { installCommitLint } from \"./install-commitlint\";\nimport { installEslint } from \"./install-eslint\";\nimport { installGithubActions } from \"./install-ga\";\nimport { installLintStaged } from \"./install-lint-staged\";\nimport { installPrettier } from \"./install-prettier\";\n\n// Types\ninterface CliOptions {\n force?: boolean;\n eslint?: boolean;\n prettier?: boolean;\n ghAction?: boolean;\n commitlint?: boolean;\n all?: boolean;\n}\n\n// CLI setup\nconst program = new Command();\nprogram\n .name(\"@solvro/config\")\n .description(\"Solvro's engineering style guide setup\")\n .version(packageJsonData.version)\n .option(\"-f, --force\", \"Skip git clean check\", false)\n .option(\"--eslint\", \"Install ESLint configuration\", false)\n .option(\"--prettier\", \"Install Prettier configuration\", false)\n .option(\"--gh-action\", \"Install GitHub Actions\", false)\n .option(\"--commitlint\", \"Install Commitlint configuration\", false)\n .option(\"-a, --all\", \"Install all tools\", false);\n\nprogram.parse();\nconst options: CliOptions = program.opts();\n\n// Check if running in non-interactive mode (any CLI flags provided)\nconst isNonInteractive = process.argv.length > 2;\n\nasync function main() {\n if (!isNonInteractive) {\n p.intro(c.bold(c.bgBlue(\" @solvro/config \")));\n }\n\n const userAgent = getUserAgent();\n\n if (userAgent !== \"npm\") {\n const packageManager = userAgent ?? \"unknown\";\n const warningMessage = `\n${c.red(c.bold(`⚠️ OSTRZEŻENIE: ${packageManager} nie jest obsługiwany ⚠️`))}\n\nPróbujesz uruchomić ten skrypt z ${c.yellow(packageManager)}'em, ale @solvro/config działa tylko z ${c.yellow(\"npm'em\")}. \n\nSupport dla innych menedżerów pakietów nie jest planowany - chcemy jednolitego stacku technologicznego dla projektów w naszym kochanym kole Solvro.\n\nUżyj zamiast tego npm'a:\n${c.cyan(\"npx @solvro/config\")}`;\n\n if (isNonInteractive) {\n console.error(warningMessage);\n } else {\n p.cancel(warningMessage);\n }\n process.exit(1);\n }\n\n // Git clean check\n if (options.force !== true && !isGitClean()) {\n if (isNonInteractive) {\n console.error(\n \"Repozytorium Git ma niezatwierdzone zmiany. Użyj --force, aby pominąć to sprawdzenie.\",\n );\n process.exit(1);\n }\n\n const isConfirmed = await polishConfirm({\n message: `Masz niezapisane zmiany w Git. Czy chcesz kontynuować?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zapisz zmiany w Git i spróbuj ponownie.\");\n process.exit(1);\n }\n }\n\n const packageJson = new PackageJson();\n\n // Determine project type automatically\n const projectType = await packageJson.getProjectType();\n\n // Project type confirmation (interactive mode only)\n if (!isNonInteractive) {\n if (projectType === \"adonis\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Adonisa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"react\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Reacta. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n\n if (!isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"nestjs\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał NestJsa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n }\n\n if (projectType === \"node\") {\n p.cancel(\n \"Nie znaleziono ani Adonisa, Reacta, ani NestJsa. Musisz ręcznie konfigurować projekt.\",\n );\n process.exit(1);\n }\n }\n if (projectType === \"adonis\" || projectType === \"react\") {\n if (isNonInteractive) {\n await packageJson.ensureESM();\n } else {\n if (!(await packageJson.isESM())) {\n const isConfirmed = await polishConfirm({\n message: `Twój projekt nie używa ESM (brak type: \"module\" w package.json). Czy chcesz to dodać? (Wymagane by kontynuować)`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zmień projekt na ESM i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await packageJson.ensureESM();\n }\n }\n }\n\n // Determine which tools to install\n let toolsToInstall: string[] = [];\n\n if (options.all === true) {\n toolsToInstall = [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"];\n } else if (isNonInteractive) {\n // In non-interactive mode, only install explicitly requested tools\n if (options.eslint === true) {\n toolsToInstall.push(\"eslint\");\n }\n if (options.prettier === true) {\n toolsToInstall.push(\"prettier\");\n }\n if (options.ghAction === true) {\n toolsToInstall.push(\"gh-action\");\n }\n if (options.commitlint === true) {\n toolsToInstall.push(\"commitlint\");\n }\n\n if (toolsToInstall.length === 0) {\n console.error(\n \"Nie wybrano żadnych narzędzi. Użyj --eslint, --prettier, --gh-action, --commitlint, lub --all\",\n );\n process.exit(1);\n }\n } else {\n // Interactive mode\n const additionalTools = await p.multiselect({\n message: `Które rzeczy Cię interesują? ${c.gray(\"zaznacz spacją, potwierdź enterem\")}`,\n initialValues: [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"],\n options: [\n {\n value: \"eslint\",\n label: c.bold(c.blueBright(\"ESLint\")),\n hint: \"sprawdzanie jakości kodu\",\n },\n {\n value: \"prettier\",\n label: c.bold(c.yellowBright(\"Prettier\")),\n hint: \"formatowanie\",\n },\n {\n value: \"gh-action\",\n label: c.bold(\"GitHub Actions\"),\n hint: \"automatyczne testy na Githubie\",\n },\n {\n value: \"commitlint\",\n label: c.bold(\"Commitlint\"),\n hint: \"walidacja treści commitów\",\n },\n ],\n required: false,\n });\n\n if (p.isCancel(additionalTools) || additionalTools.length === 0) {\n p.cancel(\"Nie wybrano żadnych narzędzi.\");\n process.exit(1);\n }\n\n toolsToInstall = additionalTools;\n }\n\n // Install the base package\n await packageJson.install(\"@solvro/config\", {\n dev: true,\n alwaysUpdate: !isNonInteractive,\n });\n\n // Install selected tools\n if (toolsToInstall.includes(\"eslint\")) {\n await installEslint(isNonInteractive);\n }\n\n if (toolsToInstall.includes(\"prettier\")) {\n await installPrettier(isNonInteractive);\n await installLintStaged();\n }\n\n if (toolsToInstall.includes(\"commitlint\")) {\n await installCommitLint();\n }\n\n if (toolsToInstall.includes(\"gh-action\")) {\n await installGithubActions();\n }\n\n await packageJson.clearInstall();\n\n if (isNonInteractive) {\n console.log(\"✅ Konfiguracja zakończona pomyślnie!\");\n } else {\n p.outro(\"✅ Konfiguracja zakończona pomyślnie!\");\n }\n}\n\n// Run the main function\ntry {\n // eslint-disable-next-line unicorn/prefer-top-level-await\n void main();\n} catch (error: unknown) {\n console.error(\"Wystąpił błąd:\", error);\n process.exit(1);\n}\n","{\n \"name\": \"@solvro/config\",\n \"version\": \"2.0.6\",\n \"description\": \"Solvro's engineering style guide\",\n \"keywords\": [\n \"eslint\",\n \"prettier\",\n \"solvro\"\n ],\n \"homepage\": \"https://github.com/Solvro/lib-web-solvro-config#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/Solvro/lib-web-solvro-config/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/Solvro/lib-web-solvro-config.git\"\n },\n \"license\": \"MPL-2.0\",\n \"type\": \"module\",\n \"exports\": {\n \"./eslint\": {\n \"types\": \"./dist/eslint/index.d.ts\",\n \"import\": \"./dist/eslint/index.js\",\n \"require\": \"./dist/eslint/index.cjs\"\n },\n \"./prettier\": {\n \"types\": \"./dist/prettier/index.d.ts\",\n \"import\": \"./dist/prettier/index.js\",\n \"require\": \"./dist/prettier/index.cjs\"\n },\n \"./commitlint\": {\n \"types\": \"./dist/commitlint/index.d.ts\",\n \"import\": \"./dist/commitlint/index.js\",\n \"require\": \"./dist/commitlint/index.cjs\"\n }\n },\n \"bin\": \"./bin/index.js\",\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:watch\": \"tsup --watch\",\n \"cli\": \"tsx ./src/cli/index.ts\",\n \"dev\": \"npx @eslint/config-inspector\",\n \"format\": \"prettier --check .\",\n \"knip\": \"knip\",\n \"lint\": \"eslint .\",\n \"prepare\": \"husky || true\",\n \"prepublish\": \"npm run build\",\n \"release\": \"semantic-release\",\n \"test\": \"vitest run\",\n \"test:ui\": \"vitest --ui\",\n \"test:watch\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"lint-staged\": {\n \"*\": \"prettier -w --ignore-unknown\"\n },\n \"prettier\": \"./dist/prettier/index.js\",\n \"dependencies\": {\n \"@adonisjs/eslint-config\": \"^2.1.2\",\n \"@clack/prompts\": \"^0.11.0\",\n \"@commitlint/config-conventional\": \"^19.8.1\",\n \"@darraghor/eslint-plugin-nestjs-typed\": \"^6.7.1\",\n \"@eslint-community/eslint-plugin-eslint-comments\": \"^4.5.0\",\n \"@eslint/js\": \"^9.34.0\",\n \"@tanstack/eslint-plugin-query\": \"^5.83.1\",\n \"@trivago/prettier-plugin-sort-imports\": \"^5.2.2\",\n \"@typescript-eslint/eslint-plugin\": \"^8.41.0\",\n \"commander\": \"^14.0.0\",\n \"eslint-config-flat-gitignore\": \"^2.1.0\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-antfu\": \"^3.1.1\",\n \"eslint-plugin-import\": \"^2.32.0\",\n \"eslint-plugin-jsdoc\": \"^54.1.1\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.2\",\n \"eslint-plugin-n\": \"^17.21.3\",\n \"eslint-plugin-react\": \"^7.37.5\",\n \"eslint-plugin-react-hooks\": \"^5.2.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.20\",\n \"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.5.0\",\n \"eslint-plugin-unicorn\": \"^61.0.2\",\n \"eslint-plugin-unused-imports\": \"^4.2.0\",\n \"execa\": \"^9.6.0\",\n \"find-up-simple\": \"^1.0.1\",\n \"globals\": \"^16.3.0\",\n \"is-interactive\": \"^2.0.0\",\n \"local-pkg\": \"^1.1.2\",\n \"package-manager-detector\": \"^1.3.0\",\n \"picocolors\": \"^1.1.1\",\n \"prettier-plugin-packagejson\": \"^2.5.19\",\n \"prettier-plugin-tailwindcss\": \"^0.6.14\",\n \"semver\": \"^7.7.2\",\n \"typescript-eslint\": \"^8.41.0\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"^19.8.1\",\n \"@eslint/config-inspector\": \"^1.2.0\",\n \"@next/eslint-plugin-next\": \"^15.5.2\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@types/node\": \"^24.3.0\",\n \"@types/semver\": \"^7.7.0\",\n \"@vitest/coverage-v8\": \"^3.2.4\",\n \"@vitest/ui\": \"^3.2.4\",\n \"eslint\": \"^9.34.0\",\n \"husky\": \"^9.1.7\",\n \"knip\": \"^5.63.0\",\n \"lint-staged\": \"^16.1.5\",\n \"pkg-pr-new\": \"^0.0.59\",\n \"prettier\": \"^3.6.2\",\n \"semantic-release\": \"^24.2.7\",\n \"tsup\": \"^8.5.0\",\n \"tsx\": \"^4.20.5\",\n \"typescript\": \"^5.9.2\",\n \"vitest\": \"^3.2.4\"\n },\n \"peerDependencies\": {\n \"@next/eslint-plugin-next\": \">=12.3.0 <16.0.0-0\",\n \"eslint\": \">=9.0.0 <10.0.0\"\n },\n \"packageManager\": \"npm@11.5.2\",\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"volta\": {\n \"node\": \"22.17.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import { execSync } from \"node:child_process\";\n\nexport function isGitClean(): boolean {\n try {\n execSync(\"git diff-index --quiet HEAD --\");\n return true;\n } catch {\n return false;\n }\n}\n","import * as p from \"@clack/prompts\";\nimport { getPackageInfo, isPackageListed, loadPackageJSON } from \"local-pkg\";\nimport assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport semver from \"semver\";\n\nimport { $$ } from \"./$$\";\nimport { projectRoot } from \"./git-root\";\nimport { runIfInteractive } from \"./run-if-interactive\";\n\nexport class PackageJson {\n public json: Awaited<ReturnType<typeof loadPackageJSON>> = null;\n\n async load() {\n const json = await loadPackageJSON(projectRoot());\n\n if (json === null) {\n p.cancel(\n \"Nie znaleziono package.json. Upewnij się, że jesteś w katalogu projektu.\",\n );\n process.exit(1);\n }\n\n this.json = json;\n }\n\n hasPackage(package_: string) {\n return isPackageListed(package_);\n }\n\n async isNextJs() {\n return this.hasPackage(\"next\");\n }\n\n async doesSatisfies(package_: string, version: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n const packageInfo = await getPackageInfo(package_);\n\n if (packageInfo?.version === undefined) {\n return false;\n }\n\n return semver.satisfies(packageInfo.version, version);\n }\n\n async isESM() {\n await this.load();\n\n assert.ok(this.json !== null);\n\n return this.json.type === \"module\";\n }\n\n async ensureESM() {\n if (await this.isESM()) {\n return;\n }\n\n assert.ok(this.json !== null);\n\n this.json.type = \"module\";\n\n await this.save();\n }\n\n async getProjectType() {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isReact = await isPackageListed(\"react\");\n const isNestJs = await isPackageListed(\"@nestjs/core\");\n if (isReact && isAdonis) {\n throw new Error(\n \"You can't use both Adonis and React in the same project\",\n );\n }\n\n if (isNestJs) {\n return \"nestjs\";\n }\n\n if (isAdonis) {\n return \"adonis\";\n }\n\n if (isReact) {\n return \"react\";\n }\n\n return \"node\";\n }\n\n async save() {\n await writeFile(\n path.join(projectRoot(), \"package.json\"),\n `${JSON.stringify(this.json, null, 2)}\\n`,\n );\n }\n\n async addScriptIfNotExists(name: string, script: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n if (this.json.scripts?.[name] !== undefined) {\n return;\n }\n\n this.json.scripts = this.json.scripts ?? {};\n this.json.scripts[name] = script;\n\n await this.save();\n }\n\n async install(\n package_: string,\n options?: { minVersion?: string; dev?: boolean; alwaysUpdate?: boolean },\n ) {\n const isInstalled = await this.hasPackage(package_);\n\n if (!isInstalled) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Instalowanie ${package_}`);\n });\n\n await $$`npm i ${options?.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zainstalowany 😍`);\n });\n\n await this.load();\n\n return;\n }\n\n const info = await getPackageInfo(package_);\n\n if (\n (info?.version !== undefined &&\n options?.minVersion !== undefined &&\n !semver.satisfies(info.version, options.minVersion)) ||\n options?.alwaysUpdate === true\n ) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Aktualizowanie ${package_}`);\n });\n await $$`npm i ${options.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zaktualizowany 😍`);\n });\n\n await this.load();\n }\n }\n\n async clearInstall() {\n await $$`npm ci`;\n }\n}\n","import { findUpSync } from \"find-up-simple\";\nimport { execSync } from \"node:child_process\";\nimport path from \"node:path\";\n\nexport const projectRoot = () => {\n const packageJsonPath = findUpSync(\"package.json\");\n\n if (packageJsonPath !== undefined) {\n return path.dirname(packageJsonPath);\n }\n\n return process.cwd();\n};\n\nexport const gitRoot = () => {\n try {\n const rootDirectory = execSync(\"git rev-parse --show-toplevel\", {\n cwd: projectRoot(),\n });\n return rootDirectory.toString().trim();\n } catch {\n return projectRoot();\n }\n};\n","import type { ExecaScriptMethod } from \"execa\";\n\nimport { projectRoot } from \"./git-root\";\n\nlet cachedExeca: ExecaScriptMethod | null = null;\n\nexport const $$ = (async (...arguments_: Parameters<ExecaScriptMethod>) => {\n if (cachedExeca === null) {\n const { $ } = await import(\"execa\");\n cachedExeca = $({\n cwd: projectRoot(),\n });\n }\n return cachedExeca(...arguments_);\n}) as ExecaScriptMethod;\n","import isInteractive from \"is-interactive\";\n\nexport const runIfInteractive = <T>(function_: () => T): T | undefined => {\n if (isInteractive()) {\n return function_();\n }\n\n return undefined;\n};\n","import * as p from \"@clack/prompts\";\nimport isInteractive from \"is-interactive\";\n\nexport const polishConfirm = async (props: p.ConfirmOptions) => {\n if (!isInteractive()) {\n return true;\n }\n\n return p.confirm({\n active: \"Tak\",\n inactive: \"Nie\",\n ...props,\n });\n};\n","import { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\nimport { commitlint } from \"./templates/commitlint\";\n\nconst root = projectRoot();\n\nconst packageJson = new PackageJson();\n\nexport const installCommitLint = async () => {\n await installHusky();\n\n await packageJson.install(\"@commitlint/cli\", { dev: true });\n\n await writeFile(\n path.join(root, \".husky/commit-msg\"),\n 'npx commitlint --edit \"$1\"\\n',\n );\n\n await writeFile(path.join(root, \".commitlintrc.js\"), commitlint());\n};\n","import assert from \"node:assert\";\n\nimport { $$ } from \"../utils/$$\";\nimport { PackageJson } from \"../utils/package-json\";\n\nconst packageJson = new PackageJson();\n\nexport const installHusky = async () => {\n if (!(await packageJson.hasPackage(\"husky\"))) {\n await packageJson.install(\"husky\", { dev: true });\n await $$`npx husky init`;\n }\n\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n packageJson.json.scripts = packageJson.json.scripts ?? {};\n packageJson.json.scripts.prepare = `husky || true`;\n\n await packageJson.save();\n};\n","export const commitlint = () => `export default {\n extends: [\"@solvro/config/commitlint\"],\n};\n`;\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst eslintConfigNames = [\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\",\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installEslint = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n\n await packageJson.install(\"eslint\", { dev: true, minVersion: \">=9\" });\n\n const type = await packageJson.getProjectType();\n\n if (type === \"react\" && (await packageJson.isNextJs())) {\n const is15 = await packageJson.doesSatisfies(\"next\", \">=15\");\n\n if (!is15) {\n p.cancel(\n \"Next.js musi być w conajmniej wersji 15. Zaktualizuj Next.js i spróbuj ponownie.\\nWięcej informacji tutaj: https://nextjs.org/docs/app/building-your-application/upgrading/version-15\",\n );\n process.exit(1);\n }\n\n await packageJson.install(\"@next/eslint-plugin-next\", { dev: true });\n }\n\n const eslintConfig = eslintConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n if (eslintConfig !== undefined) {\n const eslintContent = await fs.readFile(\n path.join(root, eslintConfig),\n \"utf8\",\n );\n\n if (eslintContent.includes(\"export default solvro(\")) {\n p.note(\"Eslint jest już skonfigurowany. Pomijam.\");\n\n return;\n } else {\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n await fs.rm(path.join(root, eslintConfig));\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono plik konfiguracyjny Eslint. Czy chcesz go nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Nadpisz plik konfiguracyjny Eslint i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await fs.rm(path.join(root, eslintConfig));\n }\n }\n }\n\n const isESM = await packageJson.isESM();\n\n const eslintFilename = isESM ? \"eslint.config.js\" : \"eslint.config.mjs\";\n\n await fs.writeFile(\n path.join(root, eslintFilename),\n `import { solvro } from \"@solvro/config/eslint\";\n\nexport default solvro();\n`,\n );\n\n p.note(\"Plik konfiguracyjny Eslint został utworzony.\");\n};\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { gitRoot, projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { adonisCi } from \"./templates/adonis-ci\";\nimport { adonisMigrationsCi } from \"./templates/adonis-ci-migrations\";\nimport { dependabot } from \"./templates/dependabot\";\nimport { nestjsCi } from \"./templates/nestjs-ci\";\nimport { reactCi } from \"./templates/react-ci\";\n\nconst packageJson = new PackageJson();\n\nexport const installGithubActions = async () => {\n const gitDirectory = gitRoot();\n const projectDirectory = projectRoot();\n await packageJson.load();\n\n const ghWorkflowsDirectory = path.join(gitDirectory, \".github/workflows\");\n await fs.mkdir(ghWorkflowsDirectory, { recursive: true });\n\n const type = await packageJson.getProjectType();\n\n const withCommitlint = await packageJson.hasPackage(\"@commitlint/cli\");\n\n if (type === \"adonis\") {\n if (!existsSync(path.join(projectDirectory, \".env.example\"))) {\n p.cancel(\n \"Nie znaleziono pliku .env.example. Upewnij się, że jesteś w katalogu projektu Adonisa.\",\n );\n process.exit(1);\n }\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n adonisCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"db.yml\"),\n adonisMigrationsCi(),\n );\n }\n\n if (type === \"react\") {\n const usingNextJs = await packageJson.isNextJs();\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n reactCi({\n nodeVersion: \"22\",\n withCommitlint,\n usingNextJs,\n }),\n );\n }\n\n if (type === \"nestjs\") {\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n nestjsCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n }\n\n if (!existsSync(path.join(gitDirectory, \".github/dependabot.yml\"))) {\n await fs.writeFile(\n path.join(gitDirectory, \".github/dependabot.yml\"),\n dependabot(),\n );\n }\n\n await packageJson.addScriptIfNotExists(\"format:check\", \"prettier --check .\");\n await packageJson.addScriptIfNotExists(\"lint\", \"eslint . --max-warnings=0\");\n await packageJson.addScriptIfNotExists(\"format\", \"prettier --write .\");\n await packageJson.addScriptIfNotExists(\"typecheck\", \"tsc --noEmit\");\n\n p.note(\"Dodano konfigurację CI i skrypty.\");\n};\n","export const commitLintCi = () => `\n - name: Check commit name\n if: github.event_name == 'pull_request'\n run: npx commitlint --from \\${{ github.event.pull_request.base.sha }} --to \\${{ github.event.pull_request.head.sha }} --verbose\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const adonisCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Run prettier\n run: npm run format:check\n if: always()\n\n - name: Run Lint\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run typecheck\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","export const adonisMigrationsCi = () => `name: Migration check\n\non:\n pull_request:\n branches: [\"*\"]\n push:\n branches: [\"main\"]\n\njobs:\n migration-check:\n runs-on: ubuntu-latest\n env:\n DB_HOST: 127.0.0.1\n DB_PORT: 5432\n DB_USER: postgres\n DB_PASSWORD: postgres\n DB_DATABASE: postgres\n\n services:\n postgres:\n image: postgres\n env:\n POSTGRES_PASSWORD: postgres\n options: >-\n --health-cmd pg_isready\n --health-interval 10s\n --health-timeout 5s\n --health-retries 5\n ports:\n - 5432:5432\n\n steps:\n - name: Check out repository code\n uses: actions/checkout@v4\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n\n - name: Run AdonisJS migrations\n run: node ace migration:run\n\n - name: Rollback and rerun AdonisJS migrations\n run: node ace migration:refresh\n`;\n","export const dependabot = () => `version: 2\nupdates:\n - package-ecosystem: \"npm\"\n directory: \"/\"\n schedule:\n interval: \"daily\"\n allow:\n - dependency-name: \"@solvro/config\"\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const nestjsCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Run prettier\n run: npm run format:check\n if: always()\n\n - name: Run Lint\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run typecheck\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Run e2e tests\n run: npm run test:e2e\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","export const nextJsCi = () => `\n - name: Setup build cache\n uses: actions/cache@v4\n with:\n path: \\${{ github.workspace }}/.next/cache\n key: \\${{ runner.os }}-nextjs-\\${{ hashFiles('**/package-lock.json') }}-\\${{ hashFiles('**/*.ts', '**/*.tsx') }}\n restore-keys: |\n \\${{ runner.os }}-nextjs-\\${{ hashFiles('**/package-lock.json') }}- \n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\nimport { nextJsCi } from \"./nextjs-ci\";\n\nexport const reactCi = ({\n nodeVersion,\n withCommitlint,\n usingNextJs,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n usingNextJs: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n${usingNextJs ? nextJsCi() : \"\"}\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Format check\n run: npm run format:check\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","import assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\n\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\n\nconst packageJson = new PackageJson();\n\nexport const installLintStaged = async () => {\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n await installHusky();\n\n await packageJson.install(\"lint-staged\", { dev: true });\n\n await writeFile(\".husky/pre-commit\", \"npx lint-staged\\n\");\n\n packageJson.json[\"lint-staged\"] = {\n \"*\": \"prettier -w --ignore-unknown\",\n };\n\n await packageJson.save();\n};\n","import * as p from \"@clack/prompts\";\nimport assert from \"node:assert\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst prettierConfigNames = [\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.yaml\",\n \".prettierrc.yml\",\n \".prettierrc.json\",\n \".prettierrc\",\n \"prettier.config.js\",\n \"prettier.config.mjs\",\n \"prettier.config.cjs\",\n \"prettier.config.ts\",\n \"prettier.config.mts\",\n \"prettier.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installPrettier = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n assert.ok(packageJson.json !== null);\n\n await packageJson.install(\"prettier\", { dev: true, minVersion: \">=3\" });\n\n const prettierConfig = prettierConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n const solvroPrettierPath = \"@solvro/config/prettier\";\n\n if (prettierConfig !== undefined || packageJson.json.prettier !== undefined) {\n if (packageJson.json.prettier === solvroPrettierPath) {\n p.note(\"Konfiguracja Prettiera jest już ustawiona. Pomijam.\");\n return;\n }\n\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono konfigurację Prettiera. Czy chcesz ją nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Usuń konfiguracje Prettiera i spróbuj ponownie.\");\n process.exit(1);\n }\n\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n }\n }\n\n packageJson.json.prettier = solvroPrettierPath;\n\n await packageJson.save();\n\n p.note(\"Konfiguracja Prettiera została dodana.\");\n};\n"],"mappings":"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","names":["p","import_node_path","import_node_child_process","path","isInteractive","assert","semver","path","options","spinner","p","import_is_interactive","isInteractive","import_promises","import_node_path","import_node_assert","assert","packageJson","path","p","import_node_path","packageJson","isNonInteractive","root","path","p","import_node_fs","fs","import_node_path","packageJson","path","import_node_assert","import_promises","packageJson","assert","p","import_node_assert","import_node_fs","fs","import_node_path","packageJson","isNonInteractive","root","assert","path","c","packageJson"]}
1
+ {"version":3,"sources":["../../src/cli/index.ts","../../package.json","../../src/utils/is-git-clean.ts","../../src/utils/package-json.ts","../../src/utils/git-root.ts","../../src/utils/$$.ts","../../src/utils/run-if-interactive.ts","../../src/utils/polish-confirm.ts","../../src/cli/install-commitlint.ts","../../src/cli/install-husky.ts","../../src/cli/templates/commitlint.ts","../../src/cli/install-eslint.ts","../../src/cli/install-ga.ts","../../src/cli/templates/commit-lint-ci.ts","../../src/cli/templates/adonis-ci.ts","../../src/cli/templates/adonis-ci-migrations.ts","../../src/cli/templates/dependabot.ts","../../src/cli/templates/nestjs-ci.ts","../../src/cli/templates/nextjs-ci.ts","../../src/cli/templates/react-ci.ts","../../src/cli/install-lint-staged.ts","../../src/cli/install-prettier.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { getUserAgent } from \"package-manager-detector/detect\";\nimport c from \"picocolors\";\n\nimport packageJsonData from \"../../package.json\";\nimport { isGitClean } from \"../utils/is-git-clean\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\nimport { installCommitLint } from \"./install-commitlint\";\nimport { installEslint } from \"./install-eslint\";\nimport { installGithubActions } from \"./install-ga\";\nimport { installLintStaged } from \"./install-lint-staged\";\nimport { installPrettier } from \"./install-prettier\";\n\n// Types\ninterface CliOptions {\n force?: boolean;\n eslint?: boolean;\n prettier?: boolean;\n ghAction?: boolean;\n commitlint?: boolean;\n all?: boolean;\n}\n\n// CLI setup\nconst program = new Command();\nprogram\n .name(\"@solvro/config\")\n .description(\"Solvro's engineering style guide setup\")\n .version(packageJsonData.version)\n .option(\"-f, --force\", \"Skip git clean check\", false)\n .option(\"--eslint\", \"Install ESLint configuration\", false)\n .option(\"--prettier\", \"Install Prettier configuration\", false)\n .option(\"--gh-action\", \"Install GitHub Actions\", false)\n .option(\"--commitlint\", \"Install Commitlint configuration\", false)\n .option(\"-a, --all\", \"Install all tools\", false);\n\nprogram.parse();\nconst options: CliOptions = program.opts();\n\n// Check if running in non-interactive mode (any CLI flags provided)\nconst isNonInteractive = process.argv.length > 2;\n\nasync function main() {\n if (!isNonInteractive) {\n p.intro(c.bold(c.bgBlue(\" @solvro/config \")));\n }\n\n const userAgent = getUserAgent();\n\n if (userAgent !== \"npm\") {\n const packageManager = userAgent ?? \"unknown\";\n const warningMessage = `\n${c.red(c.bold(`⚠️ OSTRZEŻENIE: ${packageManager} nie jest obsługiwany ⚠️`))}\n\nPróbujesz uruchomić ten skrypt z ${c.yellow(packageManager)}'em, ale @solvro/config działa tylko z ${c.yellow(\"npm'em\")}. \n\nSupport dla innych menedżerów pakietów nie jest planowany - chcemy jednolitego stacku technologicznego dla projektów w naszym kochanym kole Solvro.\n\nUżyj zamiast tego npm'a:\n${c.cyan(\"npx @solvro/config\")}`;\n\n if (isNonInteractive) {\n console.error(warningMessage);\n } else {\n p.cancel(warningMessage);\n }\n process.exit(1);\n }\n\n // Git clean check\n if (options.force !== true && !isGitClean()) {\n if (isNonInteractive) {\n console.error(\n \"Repozytorium Git ma niezatwierdzone zmiany. Użyj --force, aby pominąć to sprawdzenie.\",\n );\n process.exit(1);\n }\n\n const isConfirmed = await polishConfirm({\n message: `Masz niezapisane zmiany w Git. Czy chcesz kontynuować?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zapisz zmiany w Git i spróbuj ponownie.\");\n process.exit(1);\n }\n }\n\n const packageJson = new PackageJson();\n\n // Determine project type automatically\n const projectType = await packageJson.getProjectType();\n\n // Project type confirmation (interactive mode only)\n if (!isNonInteractive) {\n if (projectType === \"adonis\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Adonisa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"react\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Reacta. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n\n if (!isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"nestjs\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał NestJsa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n }\n\n if (projectType === \"node\") {\n p.cancel(\n \"Nie znaleziono ani Adonisa, Reacta, ani NestJsa. Musisz ręcznie konfigurować projekt.\",\n );\n process.exit(1);\n }\n }\n if (projectType === \"adonis\" || projectType === \"react\") {\n if (isNonInteractive) {\n await packageJson.ensureESM();\n } else {\n if (!(await packageJson.isESM())) {\n const isConfirmed = await polishConfirm({\n message: `Twój projekt nie używa ESM (brak type: \"module\" w package.json). Czy chcesz to dodać? (Wymagane by kontynuować)`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zmień projekt na ESM i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await packageJson.ensureESM();\n }\n }\n }\n\n // Determine which tools to install\n let toolsToInstall: string[] = [];\n\n if (options.all === true) {\n toolsToInstall = [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"];\n } else if (isNonInteractive) {\n // In non-interactive mode, only install explicitly requested tools\n if (options.eslint === true) {\n toolsToInstall.push(\"eslint\");\n }\n if (options.prettier === true) {\n toolsToInstall.push(\"prettier\");\n }\n if (options.ghAction === true) {\n toolsToInstall.push(\"gh-action\");\n }\n if (options.commitlint === true) {\n toolsToInstall.push(\"commitlint\");\n }\n\n if (toolsToInstall.length === 0) {\n console.error(\n \"Nie wybrano żadnych narzędzi. Użyj --eslint, --prettier, --gh-action, --commitlint, lub --all\",\n );\n process.exit(1);\n }\n } else {\n // Interactive mode\n const additionalTools = await p.multiselect({\n message: `Które rzeczy Cię interesują? ${c.gray(\"zaznacz spacją, potwierdź enterem\")}`,\n initialValues: [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"],\n options: [\n {\n value: \"eslint\",\n label: c.bold(c.blueBright(\"ESLint\")),\n hint: \"sprawdzanie jakości kodu\",\n },\n {\n value: \"prettier\",\n label: c.bold(c.yellowBright(\"Prettier\")),\n hint: \"formatowanie\",\n },\n {\n value: \"gh-action\",\n label: c.bold(\"GitHub Actions\"),\n hint: \"automatyczne testy na Githubie\",\n },\n {\n value: \"commitlint\",\n label: c.bold(\"Commitlint\"),\n hint: \"walidacja treści commitów\",\n },\n ],\n required: false,\n });\n\n if (p.isCancel(additionalTools) || additionalTools.length === 0) {\n p.cancel(\"Nie wybrano żadnych narzędzi.\");\n process.exit(1);\n }\n\n toolsToInstall = additionalTools;\n }\n\n // Install the base package\n await packageJson.install(\"@solvro/config\", {\n dev: true,\n alwaysUpdate: !isNonInteractive,\n });\n\n // Install selected tools\n if (toolsToInstall.includes(\"eslint\")) {\n await installEslint(isNonInteractive);\n }\n\n if (toolsToInstall.includes(\"prettier\")) {\n await installPrettier(isNonInteractive);\n await installLintStaged();\n }\n\n if (toolsToInstall.includes(\"commitlint\")) {\n await installCommitLint();\n }\n\n if (toolsToInstall.includes(\"gh-action\")) {\n await installGithubActions();\n }\n\n await packageJson.clearInstall();\n\n if (isNonInteractive) {\n console.log(\"✅ Konfiguracja zakończona pomyślnie!\");\n } else {\n p.outro(\"✅ Konfiguracja zakończona pomyślnie!\");\n }\n}\n\n// Run the main function\ntry {\n // eslint-disable-next-line unicorn/prefer-top-level-await\n void main();\n} catch (error: unknown) {\n console.error(\"Wystąpił błąd:\", error);\n process.exit(1);\n}\n","{\n \"name\": \"@solvro/config\",\n \"version\": \"2.0.7\",\n \"description\": \"Solvro's engineering style guide\",\n \"keywords\": [\n \"eslint\",\n \"prettier\",\n \"solvro\"\n ],\n \"homepage\": \"https://github.com/Solvro/lib-web-solvro-config#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/Solvro/lib-web-solvro-config/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/Solvro/lib-web-solvro-config.git\"\n },\n \"license\": \"MPL-2.0\",\n \"type\": \"module\",\n \"exports\": {\n \"./eslint\": {\n \"types\": \"./dist/eslint/index.d.ts\",\n \"import\": \"./dist/eslint/index.js\",\n \"require\": \"./dist/eslint/index.cjs\"\n },\n \"./prettier\": {\n \"types\": \"./dist/prettier/index.d.ts\",\n \"import\": \"./dist/prettier/index.js\",\n \"require\": \"./dist/prettier/index.cjs\"\n },\n \"./commitlint\": {\n \"types\": \"./dist/commitlint/index.d.ts\",\n \"import\": \"./dist/commitlint/index.js\",\n \"require\": \"./dist/commitlint/index.cjs\"\n }\n },\n \"bin\": \"./bin/index.js\",\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:watch\": \"tsup --watch\",\n \"cli\": \"tsx ./src/cli/index.ts\",\n \"dev\": \"npx @eslint/config-inspector\",\n \"format\": \"prettier --check .\",\n \"knip\": \"knip\",\n \"lint\": \"eslint .\",\n \"prepare\": \"husky || true\",\n \"prepublish\": \"npm run build\",\n \"release\": \"semantic-release\",\n \"test\": \"vitest run\",\n \"test:ui\": \"vitest --ui\",\n \"test:watch\": \"vitest\",\n \"typecheck\": \"tsgo --noEmit\"\n },\n \"lint-staged\": {\n \"*\": \"prettier -w --ignore-unknown\"\n },\n \"prettier\": \"./dist/prettier/index.js\",\n \"dependencies\": {\n \"@adonisjs/eslint-config\": \"^2.1.2\",\n \"@clack/prompts\": \"^0.11.0\",\n \"@commitlint/config-conventional\": \"^20.4.3\",\n \"@darraghor/eslint-plugin-nestjs-typed\": \"^6.18.0\",\n \"@eslint-community/eslint-plugin-eslint-comments\": \"^4.7.1\",\n \"@eslint/config-helpers\": \"^0.4.2\",\n \"@eslint/js\": \"^9.37.0\",\n \"@tanstack/eslint-plugin-query\": \"^5.91.4\",\n \"@trivago/prettier-plugin-sort-imports\": \"^5.2.2\",\n \"@typescript-eslint/eslint-plugin\": \"^8.46.0\",\n \"commander\": \"^14.0.3\",\n \"eslint-config-flat-gitignore\": \"^2.2.1\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-antfu\": \"^3.2.2\",\n \"eslint-plugin-import\": \"^2.32.0\",\n \"eslint-plugin-jsdoc\": \"^62.7.1\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.2\",\n \"eslint-plugin-n\": \"^17.24.0\",\n \"eslint-plugin-react\": \"^7.37.5\",\n \"eslint-plugin-react-hooks\": \"^7.0.1\",\n \"eslint-plugin-react-refresh\": \"^0.4.26\",\n \"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.6.1\",\n \"eslint-plugin-unicorn\": \"^61.0.2\",\n \"eslint-plugin-unused-imports\": \"^4.4.1\",\n \"execa\": \"^9.6.1\",\n \"find-up-simple\": \"^1.0.1\",\n \"globals\": \"^16.5.0\",\n \"is-interactive\": \"^2.0.0\",\n \"local-pkg\": \"^1.1.2\",\n \"package-manager-detector\": \"^1.6.0\",\n \"picocolors\": \"^1.1.1\",\n \"prettier-plugin-packagejson\": \"^2.5.22\",\n \"prettier-plugin-tailwindcss\": \"^0.7.2\",\n \"semver\": \"^7.7.4\",\n \"typescript-eslint\": \"^8.56.1\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"^20.4.3\",\n \"@commitlint/types\": \"^20.4.3\",\n \"@eslint/config-inspector\": \"^1.5.0\",\n \"@next/eslint-plugin-next\": \"^15.5.12\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@types/node\": \"^25.3.5\",\n \"@types/semver\": \"^7.7.1\",\n \"@typescript-eslint/utils\": \"^8.56.1\",\n \"@typescript/native-preview\": \"^7.0.0-dev.20251012.1\",\n \"@vitest/coverage-v8\": \"^3.2.4\",\n \"@vitest/ui\": \"^3.2.4\",\n \"eslint\": \"^9.39.4\",\n \"husky\": \"^9.1.7\",\n \"knip\": \"^5.86.0\",\n \"lint-staged\": \"^16.3.2\",\n \"pkg-pr-new\": \"^0.0.60\",\n \"prettier\": \"^3.8.1\",\n \"semantic-release\": \"^25.0.3\",\n \"tsup\": \"^8.5.1\",\n \"tsx\": \"^4.21.0\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^3.2.4\"\n },\n \"peerDependencies\": {\n \"@next/eslint-plugin-next\": \">=12.3.0\",\n \"eslint\": \">=9.0.0 <10.0.0\"\n },\n \"packageManager\": \"npm@11.11.0\",\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"volta\": {\n \"node\": \"22.17.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import { execSync } from \"node:child_process\";\n\nexport function isGitClean(): boolean {\n try {\n execSync(\"git diff-index --quiet HEAD --\");\n return true;\n } catch {\n return false;\n }\n}\n","import * as p from \"@clack/prompts\";\nimport { getPackageInfo, isPackageListed, loadPackageJSON } from \"local-pkg\";\nimport assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport semver from \"semver\";\n\nimport { $$ } from \"./$$\";\nimport { projectRoot } from \"./git-root\";\nimport { runIfInteractive } from \"./run-if-interactive\";\n\nexport class PackageJson {\n public json: Awaited<ReturnType<typeof loadPackageJSON>> = null;\n\n async load() {\n const json = await loadPackageJSON(projectRoot());\n\n if (json === null) {\n p.cancel(\n \"Nie znaleziono package.json. Upewnij się, że jesteś w katalogu projektu.\",\n );\n process.exit(1);\n }\n\n this.json = json;\n }\n\n hasPackage(package_: string) {\n return isPackageListed(package_);\n }\n\n async isNextJs() {\n return this.hasPackage(\"next\");\n }\n\n async doesSatisfies(package_: string, version: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n const packageInfo = await getPackageInfo(package_);\n\n if (packageInfo?.version === undefined) {\n return false;\n }\n\n return semver.satisfies(packageInfo.version, version);\n }\n\n async isESM() {\n await this.load();\n\n assert.ok(this.json !== null);\n\n return this.json.type === \"module\";\n }\n\n async ensureESM() {\n if (await this.isESM()) {\n return;\n }\n\n assert.ok(this.json !== null);\n\n this.json.type = \"module\";\n\n await this.save();\n }\n\n async getProjectType() {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isReact = await isPackageListed(\"react\");\n const isNestJs = await isPackageListed(\"@nestjs/core\");\n if (isReact && isAdonis) {\n throw new Error(\n \"You can't use both Adonis and React in the same project\",\n );\n }\n\n if (isNestJs) {\n return \"nestjs\";\n }\n\n if (isAdonis) {\n return \"adonis\";\n }\n\n if (isReact) {\n return \"react\";\n }\n\n return \"node\";\n }\n\n async save() {\n await writeFile(\n path.join(projectRoot(), \"package.json\"),\n `${JSON.stringify(this.json, null, 2)}\\n`,\n );\n }\n\n async addScriptIfNotExists(name: string, script: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n if (this.json.scripts?.[name] !== undefined) {\n return;\n }\n\n this.json.scripts = this.json.scripts ?? {};\n this.json.scripts[name] = script;\n\n await this.save();\n }\n\n async install(\n package_: string,\n options?: { minVersion?: string; dev?: boolean; alwaysUpdate?: boolean },\n ) {\n const isInstalled = await this.hasPackage(package_);\n\n if (!isInstalled) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Instalowanie ${package_}`);\n });\n\n await $$`npm i ${options?.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zainstalowany 😍`);\n });\n\n await this.load();\n\n return;\n }\n\n const info = await getPackageInfo(package_);\n\n if (\n (info?.version !== undefined &&\n options?.minVersion !== undefined &&\n !semver.satisfies(info.version, options.minVersion)) ||\n options?.alwaysUpdate === true\n ) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Aktualizowanie ${package_}`);\n });\n await $$`npm i ${options.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zaktualizowany 😍`);\n });\n\n await this.load();\n }\n }\n\n async clearInstall() {\n await $$`npm ci`;\n }\n}\n","import { findUpSync } from \"find-up-simple\";\nimport { execSync } from \"node:child_process\";\nimport path from \"node:path\";\n\nexport const projectRoot = () => {\n const packageJsonPath = findUpSync(\"package.json\");\n\n if (packageJsonPath !== undefined) {\n return path.dirname(packageJsonPath);\n }\n\n return process.cwd();\n};\n\nexport const gitRoot = () => {\n try {\n const rootDirectory = execSync(\"git rev-parse --show-toplevel\", {\n cwd: projectRoot(),\n });\n return rootDirectory.toString().trim();\n } catch {\n return projectRoot();\n }\n};\n","import type { ExecaScriptMethod } from \"execa\";\n\nimport { projectRoot } from \"./git-root\";\n\nlet cachedExeca: ExecaScriptMethod | null = null;\n\nexport const $$ = (async (...arguments_: Parameters<ExecaScriptMethod>) => {\n if (cachedExeca === null) {\n const { $ } = await import(\"execa\");\n cachedExeca = $({\n cwd: projectRoot(),\n });\n }\n return cachedExeca(...arguments_);\n}) as ExecaScriptMethod;\n","import isInteractive from \"is-interactive\";\n\nexport const runIfInteractive = <T>(function_: () => T): T | undefined => {\n if (isInteractive()) {\n return function_();\n }\n\n return undefined;\n};\n","import * as p from \"@clack/prompts\";\nimport isInteractive from \"is-interactive\";\n\nexport const polishConfirm = async (props: p.ConfirmOptions) => {\n if (!isInteractive()) {\n return true;\n }\n\n return p.confirm({\n active: \"Tak\",\n inactive: \"Nie\",\n ...props,\n });\n};\n","import { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\nimport { commitlint } from \"./templates/commitlint\";\n\nconst root = projectRoot();\n\nconst packageJson = new PackageJson();\n\nexport const installCommitLint = async () => {\n await installHusky();\n\n await packageJson.install(\"@commitlint/cli\", { dev: true });\n\n await writeFile(\n path.join(root, \".husky/commit-msg\"),\n 'npx commitlint --edit \"$1\"\\n',\n );\n\n await writeFile(path.join(root, \".commitlintrc.js\"), commitlint());\n};\n","import assert from \"node:assert\";\n\nimport { $$ } from \"../utils/$$\";\nimport { PackageJson } from \"../utils/package-json\";\n\nconst packageJson = new PackageJson();\n\nexport const installHusky = async () => {\n if (!(await packageJson.hasPackage(\"husky\"))) {\n await packageJson.install(\"husky\", { dev: true });\n await $$`npx husky init`;\n }\n\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n packageJson.json.scripts = packageJson.json.scripts ?? {};\n packageJson.json.scripts.prepare = `husky || true`;\n\n await packageJson.save();\n};\n","export const commitlint = () => `export default {\n extends: [\"@solvro/config/commitlint\"],\n};\n`;\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst eslintConfigNames = [\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\",\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installEslint = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n\n await packageJson.install(\"eslint\", { dev: true, minVersion: \">=9\" });\n\n const type = await packageJson.getProjectType();\n\n if (type === \"react\" && (await packageJson.isNextJs())) {\n const is15 = await packageJson.doesSatisfies(\"next\", \">=15\");\n\n if (!is15) {\n p.cancel(\n \"Next.js musi być w conajmniej wersji 15. Zaktualizuj Next.js i spróbuj ponownie.\\nWięcej informacji tutaj: https://nextjs.org/docs/app/building-your-application/upgrading/version-15\",\n );\n process.exit(1);\n }\n\n await packageJson.install(\"@next/eslint-plugin-next\", { dev: true });\n }\n\n const eslintConfig = eslintConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n if (eslintConfig !== undefined) {\n const eslintContent = await fs.readFile(\n path.join(root, eslintConfig),\n \"utf8\",\n );\n\n if (eslintContent.includes(\"export default solvro(\")) {\n p.note(\"Eslint jest już skonfigurowany. Pomijam.\");\n\n return;\n } else {\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n await fs.rm(path.join(root, eslintConfig));\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono plik konfiguracyjny Eslint. Czy chcesz go nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Nadpisz plik konfiguracyjny Eslint i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await fs.rm(path.join(root, eslintConfig));\n }\n }\n }\n\n const isESM = await packageJson.isESM();\n\n const eslintFilename = isESM ? \"eslint.config.js\" : \"eslint.config.mjs\";\n\n await fs.writeFile(\n path.join(root, eslintFilename),\n `import { solvro } from \"@solvro/config/eslint\";\n\nexport default solvro();\n`,\n );\n\n p.note(\"Plik konfiguracyjny Eslint został utworzony.\");\n};\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { gitRoot, projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { adonisCi } from \"./templates/adonis-ci\";\nimport { adonisMigrationsCi } from \"./templates/adonis-ci-migrations\";\nimport { dependabot } from \"./templates/dependabot\";\nimport { nestjsCi } from \"./templates/nestjs-ci\";\nimport { reactCi } from \"./templates/react-ci\";\n\nconst packageJson = new PackageJson();\n\nexport const installGithubActions = async () => {\n const gitDirectory = gitRoot();\n const projectDirectory = projectRoot();\n await packageJson.load();\n\n const ghWorkflowsDirectory = path.join(gitDirectory, \".github/workflows\");\n await fs.mkdir(ghWorkflowsDirectory, { recursive: true });\n\n const type = await packageJson.getProjectType();\n\n const withCommitlint = await packageJson.hasPackage(\"@commitlint/cli\");\n\n if (type === \"adonis\") {\n if (!existsSync(path.join(projectDirectory, \".env.example\"))) {\n p.cancel(\n \"Nie znaleziono pliku .env.example. Upewnij się, że jesteś w katalogu projektu Adonisa.\",\n );\n process.exit(1);\n }\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n adonisCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"db.yml\"),\n adonisMigrationsCi(),\n );\n }\n\n if (type === \"react\") {\n const usingNextJs = await packageJson.isNextJs();\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n reactCi({\n nodeVersion: \"22\",\n withCommitlint,\n usingNextJs,\n }),\n );\n\n if (usingNextJs) {\n await packageJson.addScriptIfNotExists(\"types:generate\", \"next typegen\");\n }\n }\n\n if (type === \"nestjs\") {\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n nestjsCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n }\n\n if (!existsSync(path.join(gitDirectory, \".github/dependabot.yml\"))) {\n await fs.writeFile(\n path.join(gitDirectory, \".github/dependabot.yml\"),\n dependabot(),\n );\n }\n\n await packageJson.addScriptIfNotExists(\"format:check\", \"prettier --check .\");\n await packageJson.addScriptIfNotExists(\"lint\", \"eslint . --max-warnings=0\");\n await packageJson.addScriptIfNotExists(\"format\", \"prettier --write .\");\n await packageJson.addScriptIfNotExists(\"types:check\", \"tsc --noEmit\");\n\n p.note(\"Dodano konfigurację CI i skrypty.\");\n};\n","export const commitLintCi = () => `\n - name: Check commit name\n if: github.event_name == 'pull_request'\n run: npx commitlint --from \\${{ github.event.pull_request.base.sha }} --to \\${{ github.event.pull_request.head.sha }} --verbose\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const adonisCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Check formatting\n run: npm run format:check\n if: always()\n\n - name: Lint code\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run types:check\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","export const adonisMigrationsCi = () => `name: Migration check\n\non:\n pull_request:\n branches: [\"*\"]\n push:\n branches: [\"main\"]\n\njobs:\n migration-check:\n runs-on: ubuntu-latest\n env:\n DB_HOST: 127.0.0.1\n DB_PORT: 5432\n DB_USER: postgres\n DB_PASSWORD: postgres\n DB_DATABASE: postgres\n\n services:\n postgres:\n image: postgres\n env:\n POSTGRES_PASSWORD: postgres\n options: >-\n --health-cmd pg_isready\n --health-interval 10s\n --health-timeout 5s\n --health-retries 5\n ports:\n - 5432:5432\n\n steps:\n - name: Check out repository code\n uses: actions/checkout@v4\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n\n - name: Run AdonisJS migrations\n run: node ace migration:run\n\n - name: Rollback and rerun AdonisJS migrations\n run: node ace migration:refresh\n`;\n","export const dependabot = () => `version: 2\nupdates:\n - package-ecosystem: \"npm\"\n directory: \"/\"\n schedule:\n interval: \"daily\"\n allow:\n - dependency-name: \"@solvro/config\"\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const nestjsCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Check formatting\n run: npm run format:check\n if: always()\n\n - name: Lint code\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run types:check\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Run e2e tests\n run: npm run test:e2e\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","export const nextJsCi = () => `\n - name: Setup build cache\n uses: actions/cache@v4\n with:\n path: \\${{ github.workspace }}/.next/cache\n key: \\${{ runner.os }}-nextjs-\\${{ hashFiles('**/package-lock.json') }}-\\${{ hashFiles('**/*.ts', '**/*.tsx') }}\n restore-keys: |\n \\${{ runner.os }}-nextjs-\\${{ hashFiles('**/package-lock.json') }}- \n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\nimport { nextJsCi } from \"./nextjs-ci\";\n\nexport const reactCi = ({\n nodeVersion,\n withCommitlint,\n usingNextJs,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n usingNextJs: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n${usingNextJs ? nextJsCi() : \"\"}\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Check formatting\n run: npm run format:check\n if: always()\n\n - name: Lint code\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run types:check\n if: always()\n\n - name: Build\n run: npm run build\n if: always()\n`;\n","import assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\n\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\n\nconst packageJson = new PackageJson();\n\nexport const installLintStaged = async () => {\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n await installHusky();\n\n await packageJson.install(\"lint-staged\", { dev: true });\n\n await writeFile(\".husky/pre-commit\", \"npx lint-staged\\n\");\n\n packageJson.json[\"lint-staged\"] = {\n \"*\": \"prettier -w --ignore-unknown\",\n };\n\n await packageJson.save();\n};\n","import * as p from \"@clack/prompts\";\nimport assert from \"node:assert\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst prettierConfigNames = [\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.yaml\",\n \".prettierrc.yml\",\n \".prettierrc.json\",\n \".prettierrc\",\n \"prettier.config.js\",\n \"prettier.config.mjs\",\n \"prettier.config.cjs\",\n \"prettier.config.ts\",\n \"prettier.config.mts\",\n \"prettier.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installPrettier = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n assert.ok(packageJson.json !== null);\n\n await packageJson.install(\"prettier\", { dev: true, minVersion: \">=3\" });\n\n const prettierConfig = prettierConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n const solvroPrettierPath = \"@solvro/config/prettier\";\n\n if (prettierConfig !== undefined || packageJson.json.prettier !== undefined) {\n if (packageJson.json.prettier === solvroPrettierPath) {\n p.note(\"Konfiguracja Prettiera jest już ustawiona. Pomijam.\");\n return;\n }\n\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono konfigurację Prettiera. Czy chcesz ją nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Usuń konfiguracje Prettiera i spróbuj ponownie.\");\n process.exit(1);\n }\n\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n }\n }\n\n packageJson.json.prettier = solvroPrettierPath;\n\n await packageJson.save();\n\n p.note(\"Konfiguracja Prettiera została dodana.\");\n};\n"],"mappings":"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","names":["p","import_node_path","import_node_child_process","path","isInteractive","assert","semver","path","options","spinner","p","import_is_interactive","isInteractive","import_promises","import_node_path","import_node_assert","assert","packageJson","path","p","import_node_path","packageJson","isNonInteractive","root","path","p","import_node_fs","fs","import_node_path","packageJson","path","import_node_assert","import_promises","packageJson","assert","p","import_node_assert","import_node_fs","fs","import_node_path","packageJson","isNonInteractive","root","assert","path","c","packageJson"]}