skyltmax_config 1.0.0 → 2.0.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.devcontainer/boot.sh +55 -16
- data/.devcontainer/devcontainer.json +7 -1
- data/.devcontainer/docker-compose.yml +1 -1
- data/.gitignore +2 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +1 -1
- data/README.md +12 -21
- data/fixture/package.json +3 -22
- data/fixture/pnpm-lock.yaml +432 -495
- data/fixture/pnpm-workspace.yaml +2 -0
- data/lib/skyltmax_config/version.rb +1 -1
- data/package.json +14 -17
- data/pnpm-lock.yaml +406 -214
- data/pnpm-workspace.yaml +3 -0
- data/prettier.js +3 -1
- data/tests/configs.test.js +47 -0
- metadata +4 -8
- data/AGENTS.md +0 -677
- data/scripts/peer-deps/audit.js +0 -132
- data/scripts/peer-deps/install.js +0 -206
- data/tests/check-peers.test.js +0 -76
- data/tests/fixtures/manifest-no-peers.json +0 -3
- data/tests/fixtures/manifest-with-peers.json +0 -6
- data/tests/install-peers.test.js +0 -115
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 789ece4527f6edeffb76dc49feaf146bc86968f55b2da30a5489080d91b4581a
|
|
4
|
+
data.tar.gz: e9996f2bb5ce81ab1a955d54e0ec68fa5bea41c1516241868b02e966910a5fde
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d05d8a229b7ddb5f753d81441b05aa0550052fb6d98919b2dd4ed117c5fb9f90198a54b113cb7e09d9696377b3949b78a836d468ff1b60cda128a84864b1ef5d
|
|
7
|
+
data.tar.gz: c454366e718d408f13de2df1b11d3f54fa66d70b4241c9fef6f5dc493076f7839821bd677519f59c7277737f458616feb1278b57592c89e349196aaee22af702
|
data/.devcontainer/boot.sh
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
|
-
set -
|
|
4
|
-
|
|
5
|
-
if [ -f "/home/$HOSTLOGNAME/.ssh/id_rsa.pub.sign" ]; then
|
|
6
|
-
ln -sf /home/$HOSTLOGNAME/.ssh/id_rsa.pub.sign /home/vscode/.ssh/id_rsa.pub.sign
|
|
7
|
-
fi
|
|
8
|
-
|
|
9
|
-
sudo chown -R vscode:vscode .ruby-lsp
|
|
10
|
-
sudo chown -R vscode:vscode /usr/local/bundle
|
|
11
|
-
|
|
12
|
-
git config --global --add safe.directory $DEVC_WORKSPACE
|
|
3
|
+
set -eo pipefail
|
|
13
4
|
|
|
14
5
|
function bootcmd() {
|
|
15
6
|
printf "\n"
|
|
@@ -23,25 +14,73 @@ if [ -f "${MARKER_FILE}" ]; then
|
|
|
23
14
|
source "${MARKER_FILE}"
|
|
24
15
|
fi
|
|
25
16
|
|
|
26
|
-
|
|
17
|
+
# Per-user shared volume (skyltmax-dc template), reachable at the same path as on the host.
|
|
18
|
+
if [ -d "/home/$HOSTLOGNAME/shared" ]; then
|
|
19
|
+
ln -sfn "/home/$HOSTLOGNAME/shared" /home/vscode/shared
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if [ -d "/home/$HOSTLOGNAME/.config" ]; then
|
|
23
|
+
sudo chown -R vscode:vscode /home/$HOSTLOGNAME/.config
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Commit signing config written by the Coder template on the workspace host (home.sh in
|
|
27
|
+
# skyltmax/infra); the key path inside it resolves in-container through the host-home bind.
|
|
28
|
+
# Inert when absent — git skips missing [include] paths (the dotfiles .gitconfig carries the include).
|
|
29
|
+
if [ -f "/home/$HOSTLOGNAME/.config/git/coder-signing" ]; then
|
|
30
|
+
mkdir -p /home/vscode/.config/git
|
|
31
|
+
cp "/home/$HOSTLOGNAME/.config/git/coder-signing" /home/vscode/.config/git/coder-signing
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
sudo chown -R vscode:vscode .ruby-lsp
|
|
35
|
+
sudo chown -R vscode:vscode /usr/local/bundle
|
|
36
|
+
|
|
37
|
+
git config --global --add safe.directory $DEVC_WORKSPACE
|
|
38
|
+
|
|
39
|
+
# npm credentials are written to the workspace host home by the Coder template (skyltmax-dc)
|
|
40
|
+
# and reach us through the host-home bind mount. Only needed for publishing here — every
|
|
41
|
+
# dependency resolves from the public registry.
|
|
42
|
+
if [ -f "/home/$HOSTLOGNAME/.npmrc" ]; then
|
|
43
|
+
cp "/home/$HOSTLOGNAME/.npmrc" "${DEVC_WORKSPACE}/.npmrc"
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Both halves of this repo get set up: the gem and the @signmax/config package.
|
|
47
|
+
if [ "${PNPM_ALREADY_INSTALLED_1}" != "true" ]; then
|
|
48
|
+
rm -rf $DEVC_WORKSPACE/node_modules
|
|
49
|
+
bootcmd "Installing NPM packages" "pnpm install"
|
|
50
|
+
pnpm install
|
|
51
|
+
|
|
52
|
+
PNPM_ALREADY_INSTALLED_1="true"
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# The bundle volume outlives the image, so gems built against the previous Ruby have to go.
|
|
56
|
+
if [ "${GEMS_ALREADY_RESET_1}" != "true" ]; then
|
|
57
|
+
rm -rf /usr/local/bundle/*
|
|
58
|
+
sudo chown -R vscode:vscode /usr/local/bundle
|
|
59
|
+
|
|
60
|
+
GEMS_ALREADY_RESET_1="true"
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
if [ "${BUNDLE_ALREADY_INSTALLED_2}" != "true" ]; then
|
|
27
64
|
bootcmd "Installing gems" "bundle install"
|
|
28
65
|
bundle install
|
|
29
|
-
|
|
66
|
+
BUNDLE_ALREADY_INSTALLED_2="true"
|
|
30
67
|
fi
|
|
31
68
|
|
|
32
|
-
if [ "${
|
|
69
|
+
if [ "${CHANGELOG_DISPLAYED_7}" != "true" ]; then
|
|
33
70
|
if [ -f "/var/lib/smdevc/changelog" ]; then
|
|
34
71
|
printf "\n"
|
|
35
72
|
toilet -f term -t -F border:metal "Latest Changes"
|
|
36
73
|
cat /var/lib/smdevc/changelog
|
|
37
74
|
fi
|
|
38
75
|
|
|
39
|
-
|
|
76
|
+
CHANGELOG_DISPLAYED_7="true"
|
|
40
77
|
fi
|
|
41
78
|
|
|
42
79
|
echo -e "\
|
|
43
|
-
|
|
44
|
-
|
|
80
|
+
GEMS_ALREADY_RESET_1=${GEMS_ALREADY_RESET_1}\n\
|
|
81
|
+
BUNDLE_ALREADY_INSTALLED_2=${BUNDLE_ALREADY_INSTALLED_2}\n\
|
|
82
|
+
PNPM_ALREADY_INSTALLED_1=${PNPM_ALREADY_INSTALLED_1}\n\
|
|
83
|
+
CHANGELOG_DISPLAYED_7=${CHANGELOG_DISPLAYED_7}" > "${MARKER_FILE}"
|
|
45
84
|
|
|
46
85
|
printf "\n\n\e[38;2;252;163;17m"
|
|
47
86
|
toilet -f standard "Config"
|
|
@@ -7,11 +7,17 @@
|
|
|
7
7
|
"RUBY_YJIT_ENABLE": "true",
|
|
8
8
|
"MALLOC_ARENA_MAX": "2",
|
|
9
9
|
"BUNDLE_JOBS": "8",
|
|
10
|
-
"DEVC_WORKSPACE": "${containerWorkspaceFolder}"
|
|
10
|
+
"DEVC_WORKSPACE": "${containerWorkspaceFolder}",
|
|
11
|
+
"PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN": "false"
|
|
11
12
|
},
|
|
12
13
|
"mounts": [
|
|
13
14
|
"source=bundle,target=/usr/local/bundle,type=volume",
|
|
14
15
|
"source=rubylsp,target=${containerWorkspaceFolder}/.ruby-lsp,type=volume"
|
|
15
16
|
],
|
|
17
|
+
"customizations": {
|
|
18
|
+
"coder": {
|
|
19
|
+
"autoStart": true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
16
22
|
"onCreateCommand": ".devcontainer/boot.sh"
|
|
17
23
|
}
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
### Unreleased
|
|
4
4
|
|
|
5
|
+
### [2.0.0] - 2026-08-12
|
|
6
|
+
|
|
7
|
+
- feat!: Move all eslint/prettier plugins (and `@total-typescript/ts-reset`) from `peerDependencies` to `dependencies`;
|
|
8
|
+
they now resolve from this package and consumers stop declaring them.
|
|
9
|
+
- feat!: Shrink `peerDependencies` to ranged CLIs: `eslint ^9.30.0`, `prettier ^3.6.0`, `typescript >=5.9 <6.1`.
|
|
10
|
+
- feat!: Drop support for eslint 10 (1.0.0 pinned `eslint 10.1.0`). The pinned `eslint-plugin-react-hooks`,
|
|
11
|
+
`eslint-plugin-jsx-a11y`, and `eslint-plugin-jest-dom` only declare support through eslint 9, so consumers on eslint
|
|
12
|
+
10 must move to `^9.30.0`. Support returns once those plugins ship eslint 10 peer ranges.
|
|
13
|
+
- feat!: Remove the `skyltmax-config-peers` bin and the peer install/audit scripts.
|
|
14
|
+
- fix: Resolve prettier plugins via `import.meta.resolve` instead of bare names, so resolution is anchored to this
|
|
15
|
+
package instead of the consumer's context.
|
|
16
|
+
|
|
5
17
|
### [1.0.0] - 2026-03-31
|
|
6
18
|
|
|
7
19
|
- chore: Release stable version.
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -11,24 +11,15 @@ Based on <a href="https://github.com/epicweb-dev/config">@epic-web/config</a>.
|
|
|
11
11
|
### JavaScript/TypeScript
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install --save-dev @
|
|
14
|
+
npm install --save-dev @signmax/config eslint prettier typescript
|
|
15
15
|
# or
|
|
16
|
-
pnpm add -D @
|
|
16
|
+
pnpm add -D @signmax/config eslint prettier typescript
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
npx skyltmax-config-peers
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
The helper installs the exact ESLint, Prettier, TypeScript, and plugin versions we dogfood with. It currently supports
|
|
27
|
-
`npm`, `pnpm`, and `bun`. If you prefer to manage things yourself, install each entry from
|
|
28
|
-
[`peerDependencies`](package.json) with the version locked there.
|
|
29
|
-
|
|
30
|
-
> After installation the package runs a lightweight audit and will warn if any peer is missing or pinned to a different
|
|
31
|
-
> version. When that happens, rerun `npx skyltmax-config-peers` to sync everything.
|
|
19
|
+
Every ESLint and Prettier plugin is a regular dependency of this package and resolves from here — consumers never
|
|
20
|
+
declare plugins. The three CLIs are peer dependencies with version ranges (see [`peerDependencies`](package.json)): they
|
|
21
|
+
must live in your project root so the `eslint`/`prettier`/`tsc` binaries and your editor's extensions can find them.
|
|
22
|
+
Plugin versions are owned and tested in this repo and arrive via ordinary `@signmax/config` releases.
|
|
32
23
|
|
|
33
24
|
### Ruby
|
|
34
25
|
|
|
@@ -56,7 +47,7 @@ inherit_gem:
|
|
|
56
47
|
The easiest way to use this config is in your `package.json`:
|
|
57
48
|
|
|
58
49
|
```json
|
|
59
|
-
"prettier": "@
|
|
50
|
+
"prettier": "@signmax/config/prettier"
|
|
60
51
|
```
|
|
61
52
|
|
|
62
53
|
<details>
|
|
@@ -68,7 +59,7 @@ can override it using regular JavaScript stuff.
|
|
|
68
59
|
Create a `.prettierrc.js` file in your project root with the following content:
|
|
69
60
|
|
|
70
61
|
```js
|
|
71
|
-
import defaultConfig from "
|
|
62
|
+
import defaultConfig from "@signmax/config/prettier"
|
|
72
63
|
|
|
73
64
|
/** @type {import("prettier").Options} */
|
|
74
65
|
export default {
|
|
@@ -85,7 +76,7 @@ Create a `tsconfig.json` file in your project root with the following content:
|
|
|
85
76
|
|
|
86
77
|
```json
|
|
87
78
|
{
|
|
88
|
-
"extends": ["@
|
|
79
|
+
"extends": ["@signmax/config/typescript"],
|
|
89
80
|
"include": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
|
|
90
81
|
"compilerOptions": {
|
|
91
82
|
"paths": {
|
|
@@ -99,7 +90,7 @@ Create a `tsconfig.json` file in your project root with the following content:
|
|
|
99
90
|
Create a `reset.d.ts` file in your project with these contents:
|
|
100
91
|
|
|
101
92
|
```typescript
|
|
102
|
-
import "@
|
|
93
|
+
import "@signmax/config/reset.d.ts"
|
|
103
94
|
```
|
|
104
95
|
|
|
105
96
|
<details>
|
|
@@ -114,7 +105,7 @@ Learn more from [the TypeScript docs here](https://www.typescriptlang.org/tsconf
|
|
|
114
105
|
Create a `eslint.config.js` file in your project root with the following content:
|
|
115
106
|
|
|
116
107
|
```js
|
|
117
|
-
import { config as defaultConfig } from "@
|
|
108
|
+
import { config as defaultConfig } from "@signmax/config/eslint"
|
|
118
109
|
|
|
119
110
|
/** @type {import("eslint").Linter.Config[]} */
|
|
120
111
|
export default [...defaultConfig]
|
|
@@ -134,7 +125,7 @@ positives.
|
|
|
134
125
|
|
|
135
126
|
## Publishing
|
|
136
127
|
|
|
137
|
-
This repo publishes a Ruby gem (skyltmax_config) and an npm package (@
|
|
128
|
+
This repo publishes a Ruby gem (skyltmax_config) and an npm package (@signmax/config) whenever a GitHub Release is
|
|
138
129
|
published. A manual run is also available.
|
|
139
130
|
|
|
140
131
|
Setup (one-time):
|
data/fixture/package.json
CHANGED
|
@@ -13,29 +13,10 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"@eslint/js": "9.39.1",
|
|
17
16
|
"@signmax/config": "file:..",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"@typescript-eslint/utils": "8.46.3",
|
|
22
|
-
"@vitest/eslint-plugin": "1.4.1",
|
|
23
|
-
"eslint": "9.39.1",
|
|
24
|
-
"eslint-config-prettier": "10.1.8",
|
|
25
|
-
"eslint-plugin-import-x": "4.16.1",
|
|
26
|
-
"eslint-plugin-jest-dom": "5.5.0",
|
|
27
|
-
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
28
|
-
"eslint-plugin-prettier": "5.5.4",
|
|
29
|
-
"eslint-plugin-react": "7.37.5",
|
|
30
|
-
"eslint-plugin-react-hooks": "7.0.1",
|
|
31
|
-
"eslint-plugin-testing-library": "7.13.3",
|
|
32
|
-
"globals": "16.5.0",
|
|
33
|
-
"prettier": "3.6.2",
|
|
34
|
-
"prettier-plugin-ignored": "1.0.0",
|
|
35
|
-
"prettier-plugin-tailwindcss": "0.7.1",
|
|
36
|
-
"tslib": "2.8.1",
|
|
37
|
-
"typescript": "5.9.3",
|
|
38
|
-
"typescript-eslint": "8.46.3"
|
|
17
|
+
"eslint": "9.39.4",
|
|
18
|
+
"prettier": "3.8.2",
|
|
19
|
+
"typescript": "6.0.2"
|
|
39
20
|
},
|
|
40
21
|
"prettier": "@signmax/config/prettier"
|
|
41
22
|
}
|