adamantite 0.34.4 → 0.36.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/CHANGELOG.md +1142 -0
  2. package/README.md +48 -16
  3. package/dist/index.js +32 -51
  4. package/dist/presets/analyze.d.ts +5 -3
  5. package/dist/presets/analyze.js +22 -24
  6. package/dist/presets/format.d.ts +3 -1
  7. package/dist/presets/format.js +73 -63
  8. package/dist/presets/lint/antislop/license.md +27 -0
  9. package/dist/presets/lint/antislop/plugin.d.mts +11 -0
  10. package/dist/presets/lint/antislop/plugin.mjs +1629 -0
  11. package/dist/presets/lint/antislop.d.ts +5 -0
  12. package/dist/presets/lint/antislop.js +28 -0
  13. package/dist/presets/lint/core.d.ts +17 -1
  14. package/dist/presets/lint/core.js +511 -481
  15. package/dist/presets/lint/jest.d.ts +3 -1
  16. package/dist/presets/lint/jest.js +66 -68
  17. package/dist/presets/lint/nextjs.d.ts +3 -1
  18. package/dist/presets/lint/nextjs.js +28 -30
  19. package/dist/presets/lint/node.d.ts +3 -1
  20. package/dist/presets/lint/node.js +12 -14
  21. package/dist/presets/lint/react.d.ts +3 -1
  22. package/dist/presets/lint/react.js +101 -105
  23. package/dist/presets/lint/vitest.d.ts +3 -1
  24. package/dist/presets/lint/vitest.js +71 -73
  25. package/dist/presets/lint/vue.d.ts +3 -1
  26. package/dist/presets/lint/vue.js +50 -52
  27. package/dist/presets/tsconfig.json +4 -0
  28. package/package.json +25 -23
  29. package/skills/adamantite/SKILL.md +8 -2
  30. package/presets/analyze.ts +0 -24
  31. package/presets/format.ts +0 -63
  32. package/presets/lint/core.ts +0 -481
  33. package/presets/lint/jest.ts +0 -68
  34. package/presets/lint/nextjs.ts +0 -30
  35. package/presets/lint/node.ts +0 -14
  36. package/presets/lint/react.ts +0 -105
  37. package/presets/lint/vitest.ts +0 -73
  38. package/presets/lint/vue.ts +0 -52
  39. package/presets/tsconfig.json +0 -24
@@ -1,74 +1,72 @@
1
- // presets/lint/vitest.ts
2
- var config = {
3
- plugins: ["vitest"],
4
- rules: {
5
- "vitest/consistent-each-for": "error",
6
- "vitest/consistent-test-it": "error",
7
- "vitest/hoisted-apis-on-top": "error",
8
- "vitest/max-expects": "error",
9
- "vitest/max-nested-describe": "error",
10
- "vitest/no-alias-methods": "error",
11
- "vitest/no-commented-out-tests": "error",
12
- "vitest/no-conditional-expect": "error",
13
- "vitest/no-conditional-in-test": "error",
14
- "vitest/no-conditional-tests": "error",
15
- "vitest/no-disabled-tests": "error",
16
- "vitest/no-duplicate-hooks": "error",
17
- "vitest/no-focused-tests": "error",
18
- "vitest/no-hooks": "error",
19
- "vitest/no-identical-title": "error",
20
- "vitest/no-import-node-test": "error",
21
- "vitest/no-importing-vitest-globals": "error",
22
- "vitest/no-interpolation-in-snapshots": "error",
23
- "vitest/no-large-snapshots": "error",
24
- "vitest/no-mocks-import": "error",
25
- "vitest/no-restricted-matchers": "error",
26
- "vitest/no-standalone-expect": "error",
27
- "vitest/no-test-prefixes": "error",
28
- "vitest/no-test-return-statement": "error",
29
- "vitest/no-unneeded-async-expect-function": "error",
30
- "vitest/padding-around-test-blocks": "error",
31
- "vitest/prefer-called-exactly-once-with": "error",
32
- "vitest/prefer-called-once": "error",
33
- "vitest/prefer-called-times": "error",
34
- "vitest/prefer-called-with": "error",
35
- "vitest/prefer-comparison-matcher": "error",
36
- "vitest/prefer-describe-function-title": "error",
37
- "vitest/prefer-each": "error",
38
- "vitest/prefer-equality-matcher": "error",
39
- "vitest/prefer-expect-assertions": "error",
40
- "vitest/prefer-expect-resolves": "error",
41
- "vitest/prefer-expect-type-of": "error",
42
- "vitest/prefer-hooks-in-order": "error",
43
- "vitest/prefer-hooks-on-top": "error",
44
- "vitest/prefer-import-in-mock": "error",
45
- "vitest/prefer-importing-vitest-globals": "error",
46
- "vitest/prefer-lowercase-title": "error",
47
- "vitest/prefer-mock-promise-shorthand": "error",
48
- "vitest/prefer-mock-return-shorthand": "error",
49
- "vitest/prefer-snapshot-hint": "error",
50
- "vitest/prefer-spy-on": "error",
51
- "vitest/prefer-strict-boolean-matchers": "error",
52
- "vitest/prefer-strict-equal": "error",
53
- "vitest/prefer-to-be": "error",
54
- "vitest/prefer-to-be-object": "error",
55
- "vitest/prefer-to-contain": "error",
56
- "vitest/prefer-to-have-been-called-times": "error",
57
- "vitest/prefer-to-have-length": "error",
58
- "vitest/prefer-todo": "error",
59
- "vitest/require-awaited-expect-poll": "error",
60
- "vitest/require-hook": "error",
61
- "vitest/require-local-test-context-for-concurrent-snapshots": "error",
62
- "vitest/require-mock-type-parameters": "error",
63
- "vitest/require-to-throw-message": "error",
64
- "vitest/require-top-level-describe": "error",
65
- "vitest/valid-describe-callback": "error",
66
- "vitest/valid-expect": "error",
67
- "vitest/valid-expect-in-promise": "error",
68
- "vitest/valid-title": "error"
69
- }
70
- };
71
- var vitest_default = config;
72
- export {
73
- vitest_default as default
1
+ //#region presets/lint/vitest.ts
2
+ const config = {
3
+ plugins: ["vitest"],
4
+ rules: {
5
+ "vitest/consistent-each-for": "error",
6
+ "vitest/consistent-test-it": "error",
7
+ "vitest/hoisted-apis-on-top": "error",
8
+ "vitest/max-expects": "error",
9
+ "vitest/max-nested-describe": "error",
10
+ "vitest/no-alias-methods": "error",
11
+ "vitest/no-commented-out-tests": "error",
12
+ "vitest/no-conditional-expect": "error",
13
+ "vitest/no-conditional-in-test": "error",
14
+ "vitest/no-conditional-tests": "error",
15
+ "vitest/no-disabled-tests": "error",
16
+ "vitest/no-duplicate-hooks": "error",
17
+ "vitest/no-focused-tests": "error",
18
+ "vitest/no-hooks": "error",
19
+ "vitest/no-identical-title": "error",
20
+ "vitest/no-import-node-test": "error",
21
+ "vitest/no-importing-vitest-globals": "error",
22
+ "vitest/no-interpolation-in-snapshots": "error",
23
+ "vitest/no-large-snapshots": "error",
24
+ "vitest/no-mocks-import": "error",
25
+ "vitest/no-restricted-matchers": "error",
26
+ "vitest/no-standalone-expect": "error",
27
+ "vitest/no-test-prefixes": "error",
28
+ "vitest/no-test-return-statement": "error",
29
+ "vitest/no-unneeded-async-expect-function": "error",
30
+ "vitest/padding-around-test-blocks": "error",
31
+ "vitest/prefer-called-exactly-once-with": "error",
32
+ "vitest/prefer-called-once": "error",
33
+ "vitest/prefer-called-times": "error",
34
+ "vitest/prefer-called-with": "error",
35
+ "vitest/prefer-comparison-matcher": "error",
36
+ "vitest/prefer-describe-function-title": "error",
37
+ "vitest/prefer-each": "error",
38
+ "vitest/prefer-equality-matcher": "error",
39
+ "vitest/prefer-expect-assertions": "error",
40
+ "vitest/prefer-expect-resolves": "error",
41
+ "vitest/prefer-expect-type-of": "error",
42
+ "vitest/prefer-hooks-in-order": "error",
43
+ "vitest/prefer-hooks-on-top": "error",
44
+ "vitest/prefer-import-in-mock": "error",
45
+ "vitest/prefer-importing-vitest-globals": "error",
46
+ "vitest/prefer-lowercase-title": "error",
47
+ "vitest/prefer-mock-promise-shorthand": "error",
48
+ "vitest/prefer-mock-return-shorthand": "error",
49
+ "vitest/prefer-snapshot-hint": "error",
50
+ "vitest/prefer-spy-on": "error",
51
+ "vitest/prefer-strict-boolean-matchers": "error",
52
+ "vitest/prefer-strict-equal": "error",
53
+ "vitest/prefer-to-be": "error",
54
+ "vitest/prefer-to-be-object": "error",
55
+ "vitest/prefer-to-contain": "error",
56
+ "vitest/prefer-to-have-been-called-times": "error",
57
+ "vitest/prefer-to-have-length": "error",
58
+ "vitest/prefer-todo": "error",
59
+ "vitest/require-awaited-expect-poll": "error",
60
+ "vitest/require-hook": "error",
61
+ "vitest/require-local-test-context-for-concurrent-snapshots": "error",
62
+ "vitest/require-mock-type-parameters": "error",
63
+ "vitest/require-to-throw-message": "error",
64
+ "vitest/require-top-level-describe": "error",
65
+ "vitest/valid-describe-callback": "error",
66
+ "vitest/valid-expect": "error",
67
+ "vitest/valid-expect-in-promise": "error",
68
+ "vitest/valid-title": "error"
69
+ }
74
70
  };
71
+ //#endregion
72
+ export { config as default };
@@ -1,3 +1,5 @@
1
1
  import { OxlintConfig } from "oxlint";
2
+ //#region presets/lint/vue.d.ts
2
3
  declare const config: OxlintConfig;
3
- export { config as default };
4
+ //#endregion
5
+ export { config as default };
@@ -1,53 +1,51 @@
1
- // presets/lint/vue.ts
2
- var config = {
3
- plugins: ["vue"],
4
- rules: {
5
- "vue/define-emits-declaration": "error",
6
- "vue/define-props-declaration": "error",
7
- "vue/define-props-destructuring": "error",
8
- "vue/max-props": "error",
9
- "vue/no-arrow-functions-in-watch": "error",
10
- "vue/no-async-in-computed-properties": "error",
11
- "vue/no-computed-properties-in-data": "error",
12
- "vue/no-deprecated-data-object-declaration": "error",
13
- "vue/no-deprecated-delete-set": "error",
14
- "vue/no-deprecated-destroyed-lifecycle": "error",
15
- "vue/no-deprecated-events-api": "error",
16
- "vue/no-deprecated-model-definition": "error",
17
- "vue/no-deprecated-props-default-this": "error",
18
- "vue/no-deprecated-vue-config-keycodes": "error",
19
- "vue/no-dupe-keys": "error",
20
- "vue/no-export-in-script-setup": "error",
21
- "vue/no-expose-after-await": "error",
22
- "vue/no-import-compiler-macros": "error",
23
- "vue/no-lifecycle-after-await": "error",
24
- "vue/no-multiple-slot-args": "error",
25
- "vue/no-required-prop-with-default": "error",
26
- "vue/no-reserved-component-names": "error",
27
- "vue/no-reserved-keys": "error",
28
- "vue/no-reserved-props": "error",
29
- "vue/no-shared-component-data": "error",
30
- "vue/no-side-effects-in-computed-properties": "error",
31
- "vue/no-this-in-before-route-enter": "error",
32
- "vue/no-watch-after-await": "error",
33
- "vue/prefer-import-from-vue": "error",
34
- "vue/require-default-export": "error",
35
- "vue/require-default-prop": "error",
36
- "vue/require-direct-export": "error",
37
- "vue/require-prop-type-constructor": "error",
38
- "vue/require-prop-types": "error",
39
- "vue/require-render-return": "error",
40
- "vue/require-slots-as-functions": "error",
41
- "vue/require-typed-ref": "error",
42
- "vue/return-in-computed-property": "error",
43
- "vue/return-in-emits-validator": "error",
44
- "vue/valid-define-emits": "error",
45
- "vue/valid-define-options": "error",
46
- "vue/valid-define-props": "error",
47
- "vue/valid-next-tick": "error"
48
- }
49
- };
50
- var vue_default = config;
51
- export {
52
- vue_default as default
1
+ //#region presets/lint/vue.ts
2
+ const config = {
3
+ plugins: ["vue"],
4
+ rules: {
5
+ "vue/define-emits-declaration": "error",
6
+ "vue/define-props-declaration": "error",
7
+ "vue/define-props-destructuring": "error",
8
+ "vue/max-props": "error",
9
+ "vue/no-arrow-functions-in-watch": "error",
10
+ "vue/no-async-in-computed-properties": "error",
11
+ "vue/no-computed-properties-in-data": "error",
12
+ "vue/no-deprecated-data-object-declaration": "error",
13
+ "vue/no-deprecated-delete-set": "error",
14
+ "vue/no-deprecated-destroyed-lifecycle": "error",
15
+ "vue/no-deprecated-events-api": "error",
16
+ "vue/no-deprecated-model-definition": "error",
17
+ "vue/no-deprecated-props-default-this": "error",
18
+ "vue/no-deprecated-vue-config-keycodes": "error",
19
+ "vue/no-dupe-keys": "error",
20
+ "vue/no-export-in-script-setup": "error",
21
+ "vue/no-expose-after-await": "error",
22
+ "vue/no-import-compiler-macros": "error",
23
+ "vue/no-lifecycle-after-await": "error",
24
+ "vue/no-multiple-slot-args": "error",
25
+ "vue/no-required-prop-with-default": "error",
26
+ "vue/no-reserved-component-names": "error",
27
+ "vue/no-reserved-keys": "error",
28
+ "vue/no-reserved-props": "error",
29
+ "vue/no-shared-component-data": "error",
30
+ "vue/no-side-effects-in-computed-properties": "error",
31
+ "vue/no-this-in-before-route-enter": "error",
32
+ "vue/no-watch-after-await": "error",
33
+ "vue/prefer-import-from-vue": "error",
34
+ "vue/require-default-export": "error",
35
+ "vue/require-default-prop": "error",
36
+ "vue/require-direct-export": "error",
37
+ "vue/require-prop-type-constructor": "error",
38
+ "vue/require-prop-types": "error",
39
+ "vue/require-render-return": "error",
40
+ "vue/require-slots-as-functions": "error",
41
+ "vue/require-typed-ref": "error",
42
+ "vue/return-in-computed-property": "error",
43
+ "vue/return-in-emits-validator": "error",
44
+ "vue/valid-define-emits": "error",
45
+ "vue/valid-define-options": "error",
46
+ "vue/valid-define-props": "error",
47
+ "vue/valid-next-tick": "error"
48
+ }
53
49
  };
50
+ //#endregion
51
+ export { config as default };
@@ -8,6 +8,10 @@
8
8
  "resolveJsonModule": true,
9
9
  "moduleDetection": "force",
10
10
 
11
+ // The preset is a type-checking base. Set "noEmit": false in your project
12
+ // if you emit output with tsc.
13
+ "noEmit": true,
14
+
11
15
  // Strictness and best practices. We only recommend settings that are not
12
16
  // covered by linting rules.
13
17
  "strict": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "adamantite",
3
- "version": "0.34.4",
3
+ "version": "0.36.0",
4
4
  "description": "An strict and opinionated set of presets for modern TypeScript applications",
5
5
  "keywords": [
6
6
  "adamantite",
@@ -28,7 +28,6 @@
28
28
  "files": [
29
29
  "bin",
30
30
  "dist",
31
- "presets",
32
31
  "skills",
33
32
  "!skills/_artifacts"
34
33
  ],
@@ -57,20 +56,6 @@
57
56
  },
58
57
  "./typescript": "./dist/presets/tsconfig.json"
59
58
  },
60
- "scripts": {
61
- "analyze": "bun run src/index.ts analyze",
62
- "build": "bunup && cp presets/tsconfig.json dist/presets/",
63
- "bump:deps": "bun update --interactive",
64
- "check": "bun run src/index.ts check",
65
- "dev": "bunup --watch",
66
- "fix": "bun run src/index.ts fix",
67
- "format": "bun run src/index.ts format",
68
- "release": "changeset publish",
69
- "test": "bun test",
70
- "test:coverage": "bun test --coverage",
71
- "test:watch": "bun --watch test",
72
- "version": "changeset version"
73
- },
74
59
  "dependencies": {
75
60
  "@clack/prompts": "1.7.0",
76
61
  "@effect/platform-node": "4.0.0-rc.108",
@@ -84,25 +69,42 @@
84
69
  "devDependencies": {
85
70
  "@changesets/changelog-github": "1.0.0",
86
71
  "@changesets/cli": "3.0.0",
72
+ "@effect/vitest": "4.0.0-rc.108",
87
73
  "@tanstack/intent": "0.3.6",
88
- "@types/bun": "1.3.14",
89
74
  "@types/figlet": "1.7.0",
90
- "bunup": "0.16.32",
75
+ "@types/node": "22.20.1",
76
+ "@vitest/coverage-v8": "4.1.10",
91
77
  "figlet": "1.11.4",
92
78
  "knip": "6.32.2",
93
79
  "oxfmt": "0.63.0",
94
80
  "oxlint": "1.78.0",
95
81
  "oxlint-tsgolint": "7.0.2001",
96
82
  "sherif": "1.13.0",
83
+ "tsdown": "0.22.14",
97
84
  "type-fest": "5.8.0",
98
- "typescript": "7.0.2"
85
+ "typescript": "7.0.2",
86
+ "unplugin-macros": "0.23.2",
87
+ "vitest": "4.1.10"
99
88
  },
100
89
  "peerDependencies": {
101
90
  "typescript": ">=7"
102
91
  },
103
92
  "engines": {
104
- "bun": ">=1.3.14",
105
- "node": ">=24"
93
+ "bun": ">=1.0.0",
94
+ "node": ">=22.19.0"
106
95
  },
107
- "packageManager": "bun@1.3.14"
108
- }
96
+ "scripts": {
97
+ "analyze": "knip",
98
+ "build": "tsdown",
99
+ "bump:deps": "pnpm update --interactive",
100
+ "check": "oxlint",
101
+ "dev": "tsdown --watch",
102
+ "fix": "oxlint --fix",
103
+ "format": "oxfmt",
104
+ "release": "changeset publish",
105
+ "test": "vitest run",
106
+ "test:coverage": "vitest run --coverage",
107
+ "test:watch": "vitest",
108
+ "version": "changeset version"
109
+ }
110
+ }
@@ -28,14 +28,20 @@ npx adamantite init --non-interactive --script check --script fix --script forma
28
28
  Repeat `--script`, `--preset`, and `--editor` for multiple values. Available values are:
29
29
 
30
30
  - Scripts: `check`, `fix`, `format`, `analyze`, `check:monorepo`, `fix:monorepo`
31
- - Presets: `react`, `nextjs`, `vue`, `jest`, `vitest`, `node`; editors: `vscode`, `zed`
32
- - Optional flags: `--typescript`, `--install-extensions`, `--github-actions`, `--agents`
31
+ - Presets: `react`, `nextjs`, `vue`, `jest`, `vitest`, `node`, `antislop`; editors:
32
+ `vscode`, `zed`
33
+ - Optional flags: `--typescript`, `--install-extensions`, `--github-actions`, `--agents`,
34
+ `--overwrite-scripts`
33
35
 
34
36
  Only select options supported by the project. Presets and TypeScript require `check` or
35
37
  `fix`; extension installation requires an editor; monorepo scripts require a detected
36
38
  monorepo; `--github-actions` requires a CI-compatible script and a supported package
37
39
  manager (bun, deno, npm, pnpm, or yarn). Omitted boolean flags are disabled.
38
40
 
41
+ Existing package scripts whose commands differ from Adamantite's are kept and reported,
42
+ not replaced; pass `--overwrite-scripts` to replace them. Custom flags can be forwarded
43
+ to the Adamantite command after `--`, e.g. `adamantite monorepo -- --ignore-dependency tailwindcss`.
44
+
39
45
  ## Daily workflow
40
46
 
41
47
  Use the scripts written by `init` when available. Otherwise invoke the CLI directly:
@@ -1,24 +0,0 @@
1
- import type { KnipConfiguration } from "knip"
2
-
3
- const config: KnipConfiguration = {
4
- ignoreExportsUsedInFile: true,
5
- rules: {
6
- binaries: "error",
7
- catalog: "error",
8
- dependencies: "error",
9
- devDependencies: "error",
10
- duplicates: "warn",
11
- enumMembers: "off",
12
- exports: "warn",
13
- files: "error",
14
- namespaceMembers: "warn",
15
- nsExports: "warn",
16
- nsTypes: "warn",
17
- optionalPeerDependencies: "warn",
18
- types: "warn",
19
- unlisted: "error",
20
- unresolved: "error",
21
- },
22
- }
23
-
24
- export default config
package/presets/format.ts DELETED
@@ -1,63 +0,0 @@
1
- import type { FormatConfig } from "oxfmt"
2
-
3
- const config: FormatConfig = {
4
- arrowParens: "always",
5
- bracketSameLine: false,
6
- bracketSpacing: true,
7
- embeddedLanguageFormatting: "auto",
8
- endOfLine: "lf",
9
- htmlWhitespaceSensitivity: "css",
10
- insertFinalNewline: true,
11
- jsdoc: {
12
- addDefaultToDescription: true,
13
- bracketSpacing: false,
14
- capitalizeDescriptions: true,
15
- commentLineStrategy: "multiline",
16
- descriptionTag: false,
17
- descriptionWithDot: false,
18
- keepUnparsableExampleIndent: false,
19
- lineWrappingStyle: "greedy",
20
- preferCodeFences: false,
21
- separateReturnsFromParam: true,
22
- },
23
- jsxSingleQuote: false,
24
- objectWrap: "preserve",
25
- printWidth: 100,
26
- quoteProps: "as-needed",
27
- semi: false,
28
- singleAttributePerLine: false,
29
- singleQuote: false,
30
- sortImports: {
31
- groups: [
32
- ["value-builtin", "type-import"],
33
- ["value-external"],
34
- ["type-internal"],
35
- ["value-internal"],
36
- ["type-subpath"],
37
- ["value-subpath"],
38
- ["type-parent", "type-sibling", "type-index"],
39
- ["value-parent", "value-sibling", "value-index"],
40
- ["unknown"],
41
- ],
42
- ignoreCase: true,
43
- newlinesBetween: false,
44
- order: "asc",
45
- partitionByComment: true,
46
- partitionByNewline: true,
47
- sortSideEffects: false,
48
- },
49
- sortPackageJson: {
50
- sortScripts: true,
51
- },
52
- sortTailwindcss: {
53
- attributes: ["className", "class"],
54
- functions: ["clsx", "cn", "cva", "tw", "twMerge"],
55
- preserveDuplicates: false,
56
- preserveWhitespace: false,
57
- },
58
- tabWidth: 2,
59
- trailingComma: "es5",
60
- useTabs: false,
61
- }
62
-
63
- export default config