procdeck 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +277 -0
- package/bin/procdeck.js +50 -0
- package/package.json +13 -46
- package/readme.md +40 -25
- package/schema.json +38 -73
- package/dist/chunk-SIAA4J6H.js +0 -21
- package/dist/cli.js +0 -48488
- package/dist/public.d.ts +0 -82
- package/dist/public.js +0 -7
- package/ui/dist/apple-touch-icon.png +0 -0
- package/ui/dist/assets/index-BkSDVPyT.css +0 -32
- package/ui/dist/assets/index-Co81BEum.js +0 -95
- package/ui/dist/icon-192.png +0 -0
- package/ui/dist/icon-512.png +0 -0
- package/ui/dist/icon-alert.svg +0 -25
- package/ui/dist/icon.svg +0 -22
- package/ui/dist/index.html +0 -33
package/schema.json
CHANGED
|
@@ -7,22 +7,16 @@
|
|
|
7
7
|
"$schema": {
|
|
8
8
|
"type": "string",
|
|
9
9
|
"description": "URL of the procdeck JSON schema, for editor completion and validation.",
|
|
10
|
-
"examples": [
|
|
11
|
-
"https://unpkg.com/procdeck/schema.json"
|
|
12
|
-
]
|
|
10
|
+
"examples": ["https://unpkg.com/procdeck/schema.json"]
|
|
13
11
|
},
|
|
14
12
|
"name": {
|
|
15
13
|
"type": "string",
|
|
16
14
|
"description": "Deck name — the tab title and the name of the installed web app. Defaults to the config directory's basename.",
|
|
17
|
-
"examples": [
|
|
18
|
-
"my-app"
|
|
19
|
-
]
|
|
15
|
+
"examples": ["my-app"]
|
|
20
16
|
},
|
|
21
17
|
"port": {
|
|
22
18
|
"description": "Port for the web UI and the `*.localhost` proxy. Defaults to 4820.",
|
|
23
|
-
"examples": [
|
|
24
|
-
4820
|
|
25
|
-
],
|
|
19
|
+
"examples": [4820],
|
|
26
20
|
"type": "integer",
|
|
27
21
|
"allOf": [
|
|
28
22
|
{
|
|
@@ -34,16 +28,30 @@
|
|
|
34
28
|
"host": {
|
|
35
29
|
"type": "string",
|
|
36
30
|
"description": "Interface the UI and proxy bind to. Defaults to \"127.0.0.1\" — loopback only, because the UI types into real terminals. Set \"0.0.0.0\" to reach the deck from another machine or from a container's host.",
|
|
37
|
-
"examples": [
|
|
38
|
-
"127.0.0.1",
|
|
39
|
-
"0.0.0.0"
|
|
40
|
-
],
|
|
31
|
+
"examples": ["127.0.0.1", "0.0.0.0"],
|
|
41
32
|
"allOf": [
|
|
42
33
|
{
|
|
43
34
|
"minLength": 1
|
|
44
35
|
}
|
|
45
36
|
]
|
|
46
37
|
},
|
|
38
|
+
"envFile": {
|
|
39
|
+
"description": "Dotenv file(s), relative to the config file's directory, whose variables every proc and preflight sees — on top of the inherited environment, below each proc's own `env`. Read at every spawn, so a refreshed file reaches a proc on its next restart; a missing file is skipped with a note in the pane.",
|
|
40
|
+
"examples": [".env", [".env", ".env.local"]],
|
|
41
|
+
"anyOf": [
|
|
42
|
+
{
|
|
43
|
+
"type": "string",
|
|
44
|
+
"minLength": 1
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
47
55
|
"procs": {
|
|
48
56
|
"type": "array",
|
|
49
57
|
"items": {
|
|
@@ -52,10 +60,7 @@
|
|
|
52
60
|
"id": {
|
|
53
61
|
"type": "string",
|
|
54
62
|
"description": "Stable identifier: the pane label, and the proxy subdomain (`api` → http://api.localhost:4820).",
|
|
55
|
-
"examples": [
|
|
56
|
-
"api",
|
|
57
|
-
"web"
|
|
58
|
-
],
|
|
63
|
+
"examples": ["api", "web"],
|
|
59
64
|
"allOf": [
|
|
60
65
|
{
|
|
61
66
|
"minLength": 1
|
|
@@ -65,9 +70,7 @@
|
|
|
65
70
|
"shell": {
|
|
66
71
|
"type": "string",
|
|
67
72
|
"description": "Command line handed to `$SHELL -c` — pipes, `&&` and globs work. Exactly one of `shell` or `cmd` must be set.",
|
|
68
|
-
"examples": [
|
|
69
|
-
"pnpm --filter api dev"
|
|
70
|
-
]
|
|
73
|
+
"examples": ["pnpm --filter api dev"]
|
|
71
74
|
},
|
|
72
75
|
"cmd": {
|
|
73
76
|
"type": "array",
|
|
@@ -75,12 +78,7 @@
|
|
|
75
78
|
"type": "string"
|
|
76
79
|
},
|
|
77
80
|
"description": "argv, executed directly without a shell. Exactly one of `shell` or `cmd` must be set.",
|
|
78
|
-
"examples": [
|
|
79
|
-
[
|
|
80
|
-
"node",
|
|
81
|
-
"server.js"
|
|
82
|
-
]
|
|
83
|
-
],
|
|
81
|
+
"examples": [["node", "server.js"]],
|
|
84
82
|
"allOf": [
|
|
85
83
|
{
|
|
86
84
|
"minItems": 1
|
|
@@ -90,9 +88,7 @@
|
|
|
90
88
|
"cwd": {
|
|
91
89
|
"type": "string",
|
|
92
90
|
"description": "Working directory; defaults to the config file's directory.",
|
|
93
|
-
"examples": [
|
|
94
|
-
"packages/api"
|
|
95
|
-
]
|
|
91
|
+
"examples": ["packages/api"]
|
|
96
92
|
},
|
|
97
93
|
"env": {
|
|
98
94
|
"type": "object",
|
|
@@ -114,15 +110,11 @@
|
|
|
114
110
|
"url": {
|
|
115
111
|
"type": "string",
|
|
116
112
|
"description": "URL this process serves, shown in the UI as a link. Also pins readiness to that URL's port.",
|
|
117
|
-
"examples": [
|
|
118
|
-
"http://localhost:${port}"
|
|
119
|
-
]
|
|
113
|
+
"examples": ["http://localhost:${port}"]
|
|
120
114
|
},
|
|
121
115
|
"port": {
|
|
122
116
|
"description": "Pin this proc's assigned `${port}` to a fixed public number instead of a random free one — dependents outside the deck (dotenv files, mobile simulators, teammates' scripts) keep their hardcoded addresses, and an observed proc still binds a hidden internal port behind the HTTP observer. Requires `${port}` somewhere in the spec.",
|
|
123
|
-
"examples": [
|
|
124
|
-
8787
|
|
125
|
-
],
|
|
117
|
+
"examples": [8787],
|
|
126
118
|
"type": "integer",
|
|
127
119
|
"allOf": [
|
|
128
120
|
{
|
|
@@ -137,18 +129,11 @@
|
|
|
137
129
|
"type": "string"
|
|
138
130
|
},
|
|
139
131
|
"description": "Ids of procs that must be ready before this one spawns. Declarative: readiness is auto-detected, no port numbers in the config.",
|
|
140
|
-
"examples": [
|
|
141
|
-
[
|
|
142
|
-
"api"
|
|
143
|
-
]
|
|
144
|
-
]
|
|
132
|
+
"examples": [["api"]]
|
|
145
133
|
},
|
|
146
134
|
"readyWhen": {
|
|
147
135
|
"type": "string",
|
|
148
|
-
"enum": [
|
|
149
|
-
"listening",
|
|
150
|
-
"started"
|
|
151
|
-
],
|
|
136
|
+
"enum": ["listening", "started"],
|
|
152
137
|
"description": "What \"ready\" means for dependents: \"listening\" (default) — the process tree opened a TCP port; \"started\" — it merely spawned, for procs that never listen."
|
|
153
138
|
},
|
|
154
139
|
"observe": {
|
|
@@ -161,9 +146,7 @@
|
|
|
161
146
|
"shell": {
|
|
162
147
|
"type": "string",
|
|
163
148
|
"description": "Shell command; exit 0 lets the proc spawn.",
|
|
164
|
-
"examples": [
|
|
165
|
-
"wrangler whoami"
|
|
166
|
-
],
|
|
149
|
+
"examples": ["wrangler whoami"],
|
|
167
150
|
"allOf": [
|
|
168
151
|
{
|
|
169
152
|
"minLength": 1
|
|
@@ -173,21 +156,15 @@
|
|
|
173
156
|
"expect": {
|
|
174
157
|
"type": "string",
|
|
175
158
|
"description": "Regex the check's output must also match. For checks that exit 0 either way — `wrangler whoami` reports \"not authenticated\" with exit 0 — so the config needs no `| grep` pipelines.",
|
|
176
|
-
"examples": [
|
|
177
|
-
"You are logged in"
|
|
178
|
-
]
|
|
159
|
+
"examples": ["You are logged in"]
|
|
179
160
|
},
|
|
180
161
|
"hint": {
|
|
181
162
|
"type": "string",
|
|
182
163
|
"description": "What the human should do when the check fails; shown on the blocked pane.",
|
|
183
|
-
"examples": [
|
|
184
|
-
"run `wrangler login`, then Start"
|
|
185
|
-
]
|
|
164
|
+
"examples": ["run `wrangler login`, then Start"]
|
|
186
165
|
}
|
|
187
166
|
},
|
|
188
|
-
"required": [
|
|
189
|
-
"shell"
|
|
190
|
-
],
|
|
167
|
+
"required": ["shell"],
|
|
191
168
|
"additionalProperties": false,
|
|
192
169
|
"description": "A gate that must pass before the process spawns — e.g. `wrangler whoami` before a proc whose tree needs a Cloudflare token. Keeps interactive auth flows out of supervised panes, where a restart would kill their callback servers mid-handshake."
|
|
193
170
|
},
|
|
@@ -199,17 +176,12 @@
|
|
|
199
176
|
"pattern": {
|
|
200
177
|
"type": "string",
|
|
201
178
|
"description": "Regex matched against a rolling tail of the pane's output.",
|
|
202
|
-
"examples": [
|
|
203
|
-
"ERROR",
|
|
204
|
-
"not authenticated"
|
|
205
|
-
]
|
|
179
|
+
"examples": ["ERROR", "not authenticated"]
|
|
206
180
|
},
|
|
207
181
|
"label": {
|
|
208
182
|
"type": "string",
|
|
209
183
|
"description": "Badge text shown in the UI when the pattern matches.",
|
|
210
|
-
"examples": [
|
|
211
|
-
"needs login"
|
|
212
|
-
],
|
|
184
|
+
"examples": ["needs login"],
|
|
213
185
|
"allOf": [
|
|
214
186
|
{
|
|
215
187
|
"minLength": 1
|
|
@@ -217,26 +189,19 @@
|
|
|
217
189
|
]
|
|
218
190
|
}
|
|
219
191
|
},
|
|
220
|
-
"required": [
|
|
221
|
-
"pattern",
|
|
222
|
-
"label"
|
|
223
|
-
],
|
|
192
|
+
"required": ["pattern", "label"],
|
|
224
193
|
"additionalProperties": false,
|
|
225
194
|
"description": "A regex watched in the pane output; a match raises a badge in the UI."
|
|
226
195
|
},
|
|
227
196
|
"description": "Output patterns that raise a badge when they appear in the pane."
|
|
228
197
|
}
|
|
229
198
|
},
|
|
230
|
-
"required": [
|
|
231
|
-
"id"
|
|
232
|
-
],
|
|
199
|
+
"required": ["id"],
|
|
233
200
|
"additionalProperties": false
|
|
234
201
|
},
|
|
235
202
|
"description": "The processes this deck supervises."
|
|
236
203
|
}
|
|
237
204
|
},
|
|
238
|
-
"required": [
|
|
239
|
-
"procs"
|
|
240
|
-
],
|
|
205
|
+
"required": ["procs"],
|
|
241
206
|
"additionalProperties": false
|
|
242
207
|
}
|
package/dist/chunk-SIAA4J6H.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
4
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
5
|
-
}) : x)(function(x) {
|
|
6
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
7
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
|
-
});
|
|
9
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
10
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
|
-
};
|
|
12
|
-
var __export = (target, all) => {
|
|
13
|
-
for (var name in all)
|
|
14
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export {
|
|
18
|
-
__require,
|
|
19
|
-
__commonJS,
|
|
20
|
-
__export
|
|
21
|
-
};
|