@prisma/cli 2.20.1 → 3.0.0-alpha.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/LICENSE +158 -0
- package/README.md +29 -28
- package/dist/adapters/config.js +74 -0
- package/dist/adapters/local-state.js +98 -0
- package/dist/adapters/mock-api.js +57 -0
- package/dist/adapters/token-storage.js +43 -0
- package/dist/cli.js +9 -0
- package/dist/cli2.js +59 -0
- package/dist/commands/app/index.js +223 -0
- package/dist/commands/auth/index.js +42 -0
- package/dist/commands/branch/index.js +51 -0
- package/dist/commands/project/index.js +45 -0
- package/dist/controllers/app.js +813 -0
- package/dist/controllers/auth.js +107 -0
- package/dist/controllers/branch.js +73 -0
- package/dist/controllers/project.js +214 -0
- package/dist/controllers/select-prompt-port.js +12 -0
- package/dist/lib/app/bun-project.js +39 -0
- package/dist/lib/app/env-vars.js +24 -0
- package/dist/lib/app/local-dev.js +149 -0
- package/dist/lib/app/preview-build.js +283 -0
- package/dist/lib/app/preview-interaction.js +38 -0
- package/dist/lib/app/preview-progress.js +139 -0
- package/dist/lib/app/preview-provider.js +232 -0
- package/dist/lib/auth/auth-ops.js +57 -0
- package/dist/lib/auth/client.js +22 -0
- package/dist/lib/auth/guard.js +34 -0
- package/dist/lib/auth/login.js +117 -0
- package/dist/output/patterns.js +93 -0
- package/dist/presenters/app.js +405 -0
- package/dist/presenters/auth.js +73 -0
- package/dist/presenters/branch.js +111 -0
- package/dist/presenters/project.js +84 -0
- package/dist/shell/command-meta.js +320 -0
- package/dist/shell/command-runner.js +33 -0
- package/dist/shell/errors.js +66 -0
- package/dist/shell/global-flags.js +25 -0
- package/dist/shell/help.js +78 -0
- package/dist/shell/output.js +54 -0
- package/dist/shell/prompt.js +31 -0
- package/dist/shell/runtime.js +51 -0
- package/dist/shell/ui.js +59 -0
- package/dist/use-cases/auth.js +70 -0
- package/dist/use-cases/branch.js +95 -0
- package/dist/use-cases/create-cli-gateways.js +93 -0
- package/dist/use-cases/project.js +75 -0
- package/package.json +49 -137
- package/build/child.js +0 -4110
- package/build/index.js +0 -104447
- package/build/public/.DS_Store +0 -0
- package/build/public/assets/alert.60ea9f84.svg +0 -5
- package/build/public/assets/array.1a36c222.svg +0 -4
- package/build/public/assets/boolean.9188b434.svg +0 -4
- package/build/public/assets/browser.21a575be.js +0 -1
- package/build/public/assets/browser.38b7fdb1.js +0 -1
- package/build/public/assets/browser.cdd2249a.js +0 -1
- package/build/public/assets/chevron-down.24f76e3c.svg +0 -3
- package/build/public/assets/cross.c2610cf5.svg +0 -11
- package/build/public/assets/datetime.a3bf710a.svg +0 -4
- package/build/public/assets/download.8d34b65a.svg +0 -4
- package/build/public/assets/ellipsis.a8c5a34a.svg +0 -10
- package/build/public/assets/enum.7ec0b64c.svg +0 -6
- package/build/public/assets/folder.d77b8eaf.svg +0 -6
- package/build/public/assets/hamburger.5fdadeac.svg +0 -4
- package/build/public/assets/logotype.a960b169.svg +0 -4
- package/build/public/assets/number.85ddf96b.svg +0 -7
- package/build/public/assets/object.0ba944a6.svg +0 -5
- package/build/public/assets/play.8811691e.svg +0 -6
- package/build/public/assets/plus.8fbf7ad3.svg +0 -4
- package/build/public/assets/read.79154521.svg +0 -1
- package/build/public/assets/refresh.d5448ccc.svg +0 -4
- package/build/public/assets/search.2ed766ce.svg +0 -7
- package/build/public/assets/settings.5ad25af2.svg +0 -8
- package/build/public/assets/string.ea615a24.svg +0 -4
- package/build/public/assets/tick-indeterminate.aec8a44d.svg +0 -3
- package/build/public/assets/tick.8cbb6a93.svg +0 -4
- package/build/public/assets/vendor.c4d0f081.js +0 -354
- package/build/public/demo.html +0 -17
- package/build/public/demoChunk.js +0 -2
- package/build/public/electron-darwin.html +0 -19
- package/build/public/electron-linux.html +0 -18
- package/build/public/electron-mac.html +0 -18
- package/build/public/electron-win.html +0 -17
- package/build/public/electron-win32.html +0 -18
- package/build/public/electron.html +0 -17
- package/build/public/electronBus.js +0 -2
- package/build/public/electronChunk.js +0 -2
- package/build/public/favicon/apple-touch-icon.png +0 -0
- package/build/public/favicon/favicon-16x16.png +0 -0
- package/build/public/favicon/favicon-32x32.png +0 -0
- package/build/public/favicon/prisma.png +0 -0
- package/build/public/favicon.svg +0 -5
- package/build/public/fonts/.DS_Store +0 -0
- package/build/public/fonts/Inter.ttf +0 -0
- package/build/public/fonts/RobotoMono.ttf +0 -0
- package/build/public/icons/.DS_Store +0 -0
- package/build/public/icons/alert.svg +0 -5
- package/build/public/icons/array.svg +0 -4
- package/build/public/icons/bin.svg +0 -37
- package/build/public/icons/boolean.svg +0 -4
- package/build/public/icons/check.svg +0 -3
- package/build/public/icons/chevron-down.svg +0 -3
- package/build/public/icons/code.svg +0 -4
- package/build/public/icons/cross.svg +0 -11
- package/build/public/icons/data-tool.svg +0 -5
- package/build/public/icons/database.svg +0 -4
- package/build/public/icons/datetime.svg +0 -4
- package/build/public/icons/double-arrow-right.svg +0 -4
- package/build/public/icons/download.svg +0 -4
- package/build/public/icons/ellipsis.svg +0 -10
- package/build/public/icons/enum.svg +0 -6
- package/build/public/icons/expand.svg +0 -4
- package/build/public/icons/eye.svg +0 -20
- package/build/public/icons/filters.svg +0 -5
- package/build/public/icons/folder.svg +0 -6
- package/build/public/icons/hamburger.svg +0 -4
- package/build/public/icons/icon.svg +0 -199
- package/build/public/icons/logo.svg +0 -199
- package/build/public/icons/logotype.svg +0 -4
- package/build/public/icons/number.svg +0 -7
- package/build/public/icons/object.svg +0 -5
- package/build/public/icons/play.svg +0 -6
- package/build/public/icons/plus.svg +0 -4
- package/build/public/icons/refresh.svg +0 -4
- package/build/public/icons/search.svg +0 -7
- package/build/public/icons/settings.svg +0 -8
- package/build/public/icons/string.svg +0 -4
- package/build/public/icons/tick-indeterminate.svg +0 -3
- package/build/public/icons/tick.svg +0 -4
- package/build/public/illustrations/.DS_Store +0 -0
- package/build/public/illustrations/empty.svg +0 -1
- package/build/public/illustrations/read.svg +0 -1
- package/build/public/illustrations/searching.svg +0 -1
- package/build/public/images/.DS_Store +0 -0
- package/build/public/images/icon-1024.png +0 -0
- package/build/public/index.css +0 -1
- package/build/public/index.html +0 -49
- package/build/public/index.js +0 -1
- package/build/public/main.31f688a6254e294d9128.css +0 -118
- package/build/public/main.31f688a6254e294d9128.css.map +0 -1
- package/build/public/main.364c712f32662ff0e43d.css +0 -116
- package/build/public/main.364c712f32662ff0e43d.css.map +0 -1
- package/build/public/main.42ef3fe7e97347765c91.css +0 -118
- package/build/public/main.42ef3fe7e97347765c91.css.map +0 -1
- package/build/public/main.503446defafe7aeca2f3.css +0 -116
- package/build/public/main.503446defafe7aeca2f3.css.map +0 -1
- package/build/public/main.c50a3b5980fe26f78b65.css +0 -118
- package/build/public/main.c50a3b5980fe26f78b65.css.map +0 -1
- package/build/public/main.cda25e5813776c2af295.css +0 -116
- package/build/public/main.cda25e5813776c2af295.css.map +0 -1
- package/build/public/main.dbac3b290f78404ff579.css +0 -116
- package/build/public/main.dbac3b290f78404ff579.css.map +0 -1
- package/build/public/main.f8ce44e122e5e2b8f778.css +0 -118
- package/build/public/main.f8ce44e122e5e2b8f778.css.map +0 -1
- package/build/public/main.fc9ea7521a4aecce1a77.css +0 -118
- package/build/public/main.fc9ea7521a4aecce1a77.css.map +0 -1
- package/build/public/main.js +0 -403
- package/build/public/main.js.map +0 -1
- package/build/public/mainChunk.0a84f3ba4d2ab481e877.css +0 -116
- package/build/public/mainChunk.1b327d58afbddc917bce.css +0 -118
- package/build/public/mainChunk.2cdf583b2bd51aa67587.css +0 -118
- package/build/public/mainChunk.544af00f7e9ffcbe782c.css +0 -118
- package/build/public/mainChunk.56f96a13868b2b4a53be.css +0 -118
- package/build/public/mainChunk.5cee429bfbf06e7ecb39.css +0 -118
- package/build/public/mainChunk.a862474ed4cdb421ffa2.css +0 -118
- package/build/public/mainChunk.ada34153c4911b5ac22b.css +0 -118
- package/build/public/mainChunk.c16a8d01b2c49b2f2751.css +0 -118
- package/build/public/mainChunk.ca4a878d5478b9320be8.css +0 -116
- package/build/public/mainChunk.e3adc8758b4395546cef.css +0 -116
- package/build/public/mainChunk.f2c59fcbfc455d8b9de5.css +0 -118
- package/build/public/mainChunk.js +0 -396
- package/build/public/manifest.json +0 -34
- package/build/public/preview.html +0 -16
- package/build/public/previewBus.js +0 -2
- package/build/public/previewChunk.js +0 -2
- package/build/public/projects.html +0 -86
- package/build/public/server.html +0 -16
- package/build/public/serverBus.js +0 -2
- package/build/public/serverChunk.js +0 -2
- package/build/public/splash.html +0 -17
- package/build/public/studioBundle.828f34b1781061528841.css +0 -118
- package/build/public/studioBundle.bfe9138b2e0293fcb7da.css +0 -118
- package/build/public/studioBundle.c5b256eede880e502aac.css +0 -118
- package/build/public/studioBundle.e43df511c8e2e368900a.css +0 -118
- package/build/public/studioBundle.e69382554c2a2942ae32.css +0 -118
- package/build/public/studioBundle.ee21aa56a3999a2b380b.css +0 -118
- package/build/public/studioBundle.js +0 -396
- package/build/public/vercel.html +0 -16
- package/build/public/vercelChunk.js +0 -2
- package/build/public/views/index.pug +0 -89
- package/build/xdg-open +0 -1066
- package/install/index.js +0 -5
- package/preinstall/index.js +0 -46
- package/prisma-client/README.md +0 -27
- package/prisma-client/generator-build/.DS_Store +0 -0
- package/prisma-client/generator-build/index.js +0 -79697
- package/prisma-client/index-browser.js +0 -3
- package/prisma-client/index.d.ts +0 -1
- package/prisma-client/index.js +0 -11
- package/prisma-client/package.json +0 -138
- package/prisma-client/runtime/index-browser.d.ts +0 -267
- package/prisma-client/runtime/index-browser.js +0 -2273
- package/prisma-client/runtime/index.d.ts +0 -1018
- package/prisma-client/runtime/index.js +0 -35028
- package/prisma-client/scripts/backup-index-browser.js +0 -3
- package/prisma-client/scripts/backup-index.d.ts +0 -1
- package/prisma-client/scripts/backup-index.js +0 -11
- package/prisma-client/scripts/colors.js +0 -180
- package/prisma-client/scripts/default-index-browser.js +0 -12
- package/prisma-client/scripts/default-index.d.ts +0 -47
- package/prisma-client/scripts/default-index.js +0 -12
- package/prisma-client/scripts/get-packed-client.js +0 -12
- package/prisma-client/scripts/mock-fs.js +0 -14
- package/prisma-client/scripts/postinstall.d.ts +0 -5
- package/prisma-client/scripts/postinstall.js +0 -398
- package/scripts/install-entry.js +0 -8
- package/scripts/preinstall-entry.js +0 -9
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { renderList, renderShow, serializeList } from "../output/patterns.js";
|
|
2
|
+
//#region src/presenters/app.ts
|
|
3
|
+
function renderAppBuild(context, descriptor, result) {
|
|
4
|
+
return renderShow({
|
|
5
|
+
title: "Building the local app artifact.",
|
|
6
|
+
descriptor,
|
|
7
|
+
fields: [
|
|
8
|
+
{
|
|
9
|
+
key: "build type",
|
|
10
|
+
value: result.buildType
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
key: "entrypoint",
|
|
14
|
+
value: result.entrypoint ?? "none",
|
|
15
|
+
tone: result.entrypoint ? "default" : "dim"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
key: "directory",
|
|
19
|
+
value: result.directory
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}, context.ui);
|
|
23
|
+
}
|
|
24
|
+
function serializeAppBuild(result) {
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
function renderAppDeploy(context, descriptor, result) {
|
|
28
|
+
return renderShow({
|
|
29
|
+
title: "Deploying the selected app.",
|
|
30
|
+
descriptor,
|
|
31
|
+
fields: [
|
|
32
|
+
{
|
|
33
|
+
key: "project",
|
|
34
|
+
value: result.projectId
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
key: "app",
|
|
38
|
+
value: result.app.name
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "deployment",
|
|
42
|
+
value: result.deployment.id
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: "status",
|
|
46
|
+
value: result.deployment.status,
|
|
47
|
+
tone: toneForStatus(result.deployment.status)
|
|
48
|
+
},
|
|
49
|
+
...result.deployment.url ? [{
|
|
50
|
+
key: "url",
|
|
51
|
+
value: result.deployment.url,
|
|
52
|
+
tone: "link"
|
|
53
|
+
}] : []
|
|
54
|
+
]
|
|
55
|
+
}, context.ui);
|
|
56
|
+
}
|
|
57
|
+
function serializeAppDeploy(result) {
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
function renderAppUpdateEnv(context, descriptor, result) {
|
|
61
|
+
return renderShow({
|
|
62
|
+
title: "Updating environment variables for the selected app.",
|
|
63
|
+
descriptor,
|
|
64
|
+
fields: [
|
|
65
|
+
{
|
|
66
|
+
key: "project",
|
|
67
|
+
value: result.projectId
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
key: "app",
|
|
71
|
+
value: result.app.name
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
key: "deployment",
|
|
75
|
+
value: result.deployment.id
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: "status",
|
|
79
|
+
value: result.deployment.status,
|
|
80
|
+
tone: toneForStatus(result.deployment.status)
|
|
81
|
+
},
|
|
82
|
+
...result.deployment.url ? [{
|
|
83
|
+
key: "url",
|
|
84
|
+
value: result.deployment.url,
|
|
85
|
+
tone: "link"
|
|
86
|
+
}] : [],
|
|
87
|
+
{
|
|
88
|
+
key: "variables",
|
|
89
|
+
value: formatVariableNames(result.variables),
|
|
90
|
+
tone: result.variables.length > 0 ? "default" : "dim"
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}, context.ui);
|
|
94
|
+
}
|
|
95
|
+
function serializeAppUpdateEnv(result) {
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
function renderAppListEnv(context, descriptor, result) {
|
|
99
|
+
return renderShow({
|
|
100
|
+
title: "Listing environment variables for the selected app.",
|
|
101
|
+
descriptor,
|
|
102
|
+
fields: [
|
|
103
|
+
{
|
|
104
|
+
key: "project",
|
|
105
|
+
value: result.projectId
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
key: "app",
|
|
109
|
+
value: result.app?.name ?? "not selected",
|
|
110
|
+
tone: result.app ? "default" : "dim"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
key: "deployment",
|
|
114
|
+
value: result.deployment?.id ?? "none",
|
|
115
|
+
tone: result.deployment ? toneForStatus(result.deployment.status) : "dim"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
key: "variables",
|
|
119
|
+
value: formatVariableNames(result.variables),
|
|
120
|
+
tone: result.variables.length > 0 ? "default" : "dim"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}, context.ui);
|
|
124
|
+
}
|
|
125
|
+
function serializeAppListEnv(result) {
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
function renderAppListDeploys(context, descriptor, result) {
|
|
129
|
+
return renderList({
|
|
130
|
+
title: "Listing deployments for the selected app.",
|
|
131
|
+
descriptor,
|
|
132
|
+
parentContext: {
|
|
133
|
+
key: "app",
|
|
134
|
+
value: result.app?.name ?? "not selected"
|
|
135
|
+
},
|
|
136
|
+
items: result.deployments.map((deployment) => ({
|
|
137
|
+
noun: "deployment",
|
|
138
|
+
label: deployment.id,
|
|
139
|
+
id: deployment.id,
|
|
140
|
+
status: deployment.live ? "active" : null
|
|
141
|
+
})),
|
|
142
|
+
emptyMessage: result.app ? "No deployments found." : "No apps found."
|
|
143
|
+
}, context.ui);
|
|
144
|
+
}
|
|
145
|
+
function serializeAppListDeploys(result) {
|
|
146
|
+
if (!result.app) return {
|
|
147
|
+
projectId: result.projectId,
|
|
148
|
+
app: null,
|
|
149
|
+
items: [],
|
|
150
|
+
count: 0
|
|
151
|
+
};
|
|
152
|
+
return {
|
|
153
|
+
projectId: result.projectId,
|
|
154
|
+
app: result.app,
|
|
155
|
+
...serializeList({
|
|
156
|
+
context: { app: result.app.name },
|
|
157
|
+
items: result.deployments.map((deployment) => ({
|
|
158
|
+
noun: "deployment",
|
|
159
|
+
label: deployment.id,
|
|
160
|
+
id: deployment.id,
|
|
161
|
+
status: deployment.live ? "active" : null
|
|
162
|
+
}))
|
|
163
|
+
})
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function renderAppShow(context, descriptor, result) {
|
|
167
|
+
return renderShow({
|
|
168
|
+
title: "Showing the selected app state.",
|
|
169
|
+
descriptor,
|
|
170
|
+
fields: [
|
|
171
|
+
{
|
|
172
|
+
key: "project",
|
|
173
|
+
value: result.projectId
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
key: "app",
|
|
177
|
+
value: result.app?.name ?? "not selected",
|
|
178
|
+
tone: result.app ? "default" : "dim"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
key: "live deployment",
|
|
182
|
+
value: result.liveDeployment?.id ?? "none",
|
|
183
|
+
tone: result.liveDeployment ? toneForStatus(result.liveDeployment.status) : "dim"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
key: "live url",
|
|
187
|
+
value: result.liveUrl ?? "unavailable",
|
|
188
|
+
tone: result.liveUrl ? "link" : "dim"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
key: "recent deployments",
|
|
192
|
+
value: formatRecentDeployments(result.recentDeployments),
|
|
193
|
+
tone: result.recentDeployments.length > 0 ? "default" : "dim"
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
}, context.ui);
|
|
197
|
+
}
|
|
198
|
+
function serializeAppShow(result) {
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
function renderAppShowDeploy(context, descriptor, result) {
|
|
202
|
+
return renderShow({
|
|
203
|
+
title: "Showing deployment details.",
|
|
204
|
+
descriptor,
|
|
205
|
+
fields: [
|
|
206
|
+
...result.app ? [{
|
|
207
|
+
key: "app",
|
|
208
|
+
value: result.app.name
|
|
209
|
+
}] : [],
|
|
210
|
+
{
|
|
211
|
+
key: "deployment",
|
|
212
|
+
value: result.deployment.id
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
key: "status",
|
|
216
|
+
value: result.deployment.status,
|
|
217
|
+
tone: toneForStatus(result.deployment.status)
|
|
218
|
+
},
|
|
219
|
+
...result.deployment.url ? [{
|
|
220
|
+
key: "url",
|
|
221
|
+
value: result.deployment.url,
|
|
222
|
+
tone: "link"
|
|
223
|
+
}] : [],
|
|
224
|
+
...result.deployment.live === null ? [] : [{
|
|
225
|
+
key: "live",
|
|
226
|
+
value: result.deployment.live ? "yes" : "no",
|
|
227
|
+
tone: result.deployment.live ? "success" : "dim"
|
|
228
|
+
}],
|
|
229
|
+
{
|
|
230
|
+
key: "created",
|
|
231
|
+
value: result.deployment.createdAt,
|
|
232
|
+
tone: "dim"
|
|
233
|
+
}
|
|
234
|
+
]
|
|
235
|
+
}, context.ui);
|
|
236
|
+
}
|
|
237
|
+
function serializeAppShowDeploy(result) {
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
function renderAppOpen(context, descriptor, result) {
|
|
241
|
+
return renderShow({
|
|
242
|
+
title: result.opened ? "Opening the live URL for the selected app." : "Resolving the live URL for the selected app.",
|
|
243
|
+
descriptor,
|
|
244
|
+
fields: [
|
|
245
|
+
{
|
|
246
|
+
key: "project",
|
|
247
|
+
value: result.projectId
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
key: "app",
|
|
251
|
+
value: result.app.name
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
key: "url",
|
|
255
|
+
value: result.url,
|
|
256
|
+
tone: "link"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
key: "opened",
|
|
260
|
+
value: result.opened ? "yes" : "no",
|
|
261
|
+
tone: result.opened ? "success" : "dim"
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
}, context.ui);
|
|
265
|
+
}
|
|
266
|
+
function serializeAppOpen(result) {
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
function renderAppPromote(context, descriptor, result) {
|
|
270
|
+
return renderShow({
|
|
271
|
+
title: "Switching the live deployment for the selected app.",
|
|
272
|
+
descriptor,
|
|
273
|
+
fields: [
|
|
274
|
+
{
|
|
275
|
+
key: "project",
|
|
276
|
+
value: result.projectId
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
key: "app",
|
|
280
|
+
value: result.app.name
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
key: "deployment",
|
|
284
|
+
value: result.deployment.id
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
key: "status",
|
|
288
|
+
value: result.deployment.status,
|
|
289
|
+
tone: toneForStatus(result.deployment.status)
|
|
290
|
+
},
|
|
291
|
+
...result.deployment.url ? [{
|
|
292
|
+
key: "url",
|
|
293
|
+
value: result.deployment.url,
|
|
294
|
+
tone: "link"
|
|
295
|
+
}] : [],
|
|
296
|
+
{
|
|
297
|
+
key: "live",
|
|
298
|
+
value: result.deployment.live ? "yes" : "no",
|
|
299
|
+
tone: result.deployment.live ? "success" : "dim"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
key: "created",
|
|
303
|
+
value: result.deployment.createdAt,
|
|
304
|
+
tone: "dim"
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
}, context.ui);
|
|
308
|
+
}
|
|
309
|
+
function serializeAppPromote(result) {
|
|
310
|
+
return result;
|
|
311
|
+
}
|
|
312
|
+
function renderAppRollback(context, descriptor, result) {
|
|
313
|
+
return renderShow({
|
|
314
|
+
title: "Restoring the selected app to an earlier deployment.",
|
|
315
|
+
descriptor,
|
|
316
|
+
fields: [
|
|
317
|
+
{
|
|
318
|
+
key: "project",
|
|
319
|
+
value: result.projectId
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
key: "app",
|
|
323
|
+
value: result.app.name
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
key: "deployment",
|
|
327
|
+
value: result.deployment.id
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
key: "status",
|
|
331
|
+
value: result.deployment.status,
|
|
332
|
+
tone: toneForStatus(result.deployment.status)
|
|
333
|
+
},
|
|
334
|
+
...result.deployment.url ? [{
|
|
335
|
+
key: "url",
|
|
336
|
+
value: result.deployment.url,
|
|
337
|
+
tone: "link"
|
|
338
|
+
}] : [],
|
|
339
|
+
{
|
|
340
|
+
key: "live",
|
|
341
|
+
value: result.deployment.live ? "yes" : "no",
|
|
342
|
+
tone: result.deployment.live ? "success" : "dim"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
key: "created",
|
|
346
|
+
value: result.deployment.createdAt,
|
|
347
|
+
tone: "dim"
|
|
348
|
+
},
|
|
349
|
+
...result.previousLiveDeploymentId ? [{
|
|
350
|
+
key: "replaced",
|
|
351
|
+
value: result.previousLiveDeploymentId,
|
|
352
|
+
tone: "dim"
|
|
353
|
+
}] : []
|
|
354
|
+
]
|
|
355
|
+
}, context.ui);
|
|
356
|
+
}
|
|
357
|
+
function serializeAppRollback(result) {
|
|
358
|
+
return result;
|
|
359
|
+
}
|
|
360
|
+
function renderAppRun(_context, _descriptor, _result) {
|
|
361
|
+
return [];
|
|
362
|
+
}
|
|
363
|
+
function serializeAppRun(result) {
|
|
364
|
+
return result;
|
|
365
|
+
}
|
|
366
|
+
function renderAppRemove(context, descriptor, result) {
|
|
367
|
+
return renderShow({
|
|
368
|
+
title: "Removing the selected app.",
|
|
369
|
+
descriptor,
|
|
370
|
+
fields: [
|
|
371
|
+
{
|
|
372
|
+
key: "project",
|
|
373
|
+
value: result.projectId
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
key: "app",
|
|
377
|
+
value: result.app.name
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
key: "removed",
|
|
381
|
+
value: result.removed ? "yes" : "no",
|
|
382
|
+
tone: result.removed ? "success" : "dim"
|
|
383
|
+
}
|
|
384
|
+
]
|
|
385
|
+
}, context.ui);
|
|
386
|
+
}
|
|
387
|
+
function serializeAppRemove(result) {
|
|
388
|
+
return result;
|
|
389
|
+
}
|
|
390
|
+
function toneForStatus(status) {
|
|
391
|
+
if (status === "running" || status === "ready" || status === "healthy") return "success";
|
|
392
|
+
if (status === "provisioning" || status === "building" || status === "starting") return "warning";
|
|
393
|
+
if (status === "failed" || status === "error") return "error";
|
|
394
|
+
return "default";
|
|
395
|
+
}
|
|
396
|
+
function formatRecentDeployments(deployments) {
|
|
397
|
+
if (deployments.length === 0) return "none";
|
|
398
|
+
return deployments.map((deployment) => `${deployment.id}${deployment.live ? " (live)" : ""}`).join(", ");
|
|
399
|
+
}
|
|
400
|
+
function formatVariableNames(variables) {
|
|
401
|
+
if (variables.length === 0) return "none";
|
|
402
|
+
return variables.join(", ");
|
|
403
|
+
}
|
|
404
|
+
//#endregion
|
|
405
|
+
export { renderAppBuild, renderAppDeploy, renderAppListDeploys, renderAppListEnv, renderAppOpen, renderAppPromote, renderAppRemove, renderAppRollback, renderAppRun, renderAppShow, renderAppShowDeploy, renderAppUpdateEnv, serializeAppBuild, serializeAppDeploy, serializeAppListDeploys, serializeAppListEnv, serializeAppOpen, serializeAppPromote, serializeAppRemove, serializeAppRollback, serializeAppRun, serializeAppShow, serializeAppShowDeploy, serializeAppUpdateEnv };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { renderMutate, renderShow } from "../output/patterns.js";
|
|
2
|
+
//#region src/presenters/auth.ts
|
|
3
|
+
function renderAuthSuccess(context, descriptor, command, result) {
|
|
4
|
+
if (command === "auth.login") {
|
|
5
|
+
const rows = [];
|
|
6
|
+
if (result.provider) rows.push({
|
|
7
|
+
key: "provider",
|
|
8
|
+
value: providerLabel(result.provider)
|
|
9
|
+
});
|
|
10
|
+
if (result.user) rows.push({
|
|
11
|
+
key: "user",
|
|
12
|
+
value: `${result.user.name} <${result.user.email}>`
|
|
13
|
+
});
|
|
14
|
+
if (result.workspace?.name) rows.push({
|
|
15
|
+
key: "workspace",
|
|
16
|
+
value: result.workspace.name
|
|
17
|
+
});
|
|
18
|
+
return renderMutate({
|
|
19
|
+
title: "Starting an authenticated CLI session.",
|
|
20
|
+
descriptor,
|
|
21
|
+
context: rows,
|
|
22
|
+
operationDescription: "Applying authentication session changes",
|
|
23
|
+
operationCount: 1,
|
|
24
|
+
details: ["Session stored in local CLI state."]
|
|
25
|
+
}, context.ui);
|
|
26
|
+
}
|
|
27
|
+
if (command === "auth.logout") return renderMutate({
|
|
28
|
+
title: "Clearing the current CLI session.",
|
|
29
|
+
descriptor,
|
|
30
|
+
context: [{
|
|
31
|
+
key: "session",
|
|
32
|
+
value: "local CLI state",
|
|
33
|
+
tone: "dim"
|
|
34
|
+
}],
|
|
35
|
+
operationDescription: "Applying authentication session changes",
|
|
36
|
+
operationCount: 1,
|
|
37
|
+
details: ["Session removed from local CLI state."]
|
|
38
|
+
}, context.ui);
|
|
39
|
+
return renderShow({
|
|
40
|
+
title: "Showing the current authenticated identity.",
|
|
41
|
+
descriptor,
|
|
42
|
+
fields: result.authenticated ? [
|
|
43
|
+
{
|
|
44
|
+
key: "status",
|
|
45
|
+
value: "signed in",
|
|
46
|
+
tone: "success"
|
|
47
|
+
},
|
|
48
|
+
...result.user ? [{
|
|
49
|
+
key: "user",
|
|
50
|
+
value: `${result.user.name} <${result.user.email}>`
|
|
51
|
+
}] : [],
|
|
52
|
+
...result.provider ? [{
|
|
53
|
+
key: "provider",
|
|
54
|
+
value: providerLabel(result.provider)
|
|
55
|
+
}] : [],
|
|
56
|
+
...result.workspace?.name ? [{
|
|
57
|
+
key: "workspace",
|
|
58
|
+
value: result.workspace.name
|
|
59
|
+
}] : []
|
|
60
|
+
] : [{
|
|
61
|
+
key: "status",
|
|
62
|
+
value: "signed out",
|
|
63
|
+
tone: "dim"
|
|
64
|
+
}]
|
|
65
|
+
}, context.ui);
|
|
66
|
+
}
|
|
67
|
+
function providerLabel(provider) {
|
|
68
|
+
if (provider === "github") return "GitHub";
|
|
69
|
+
if (provider === "google") return "Google";
|
|
70
|
+
return "";
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { renderAuthSuccess };
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { renderList, renderMutate, renderShow, serializeList } from "../output/patterns.js";
|
|
2
|
+
//#region src/presenters/branch.ts
|
|
3
|
+
function renderBranchList(context, descriptor, result) {
|
|
4
|
+
return renderList({
|
|
5
|
+
title: "Listing branches for the linked project.",
|
|
6
|
+
descriptor,
|
|
7
|
+
parentContext: {
|
|
8
|
+
key: "project",
|
|
9
|
+
value: result.projectName ?? "not linked"
|
|
10
|
+
},
|
|
11
|
+
items: result.branches.map((branch) => ({
|
|
12
|
+
noun: "branch",
|
|
13
|
+
label: branch.name,
|
|
14
|
+
id: branch.id,
|
|
15
|
+
status: branch.active ? "active" : null
|
|
16
|
+
})),
|
|
17
|
+
emptyMessage: "No branches found."
|
|
18
|
+
}, context.ui);
|
|
19
|
+
}
|
|
20
|
+
function serializeBranchList(result) {
|
|
21
|
+
return serializeList({
|
|
22
|
+
context: { project: result.projectName ?? "not linked" },
|
|
23
|
+
items: result.branches.map((branch) => ({
|
|
24
|
+
noun: "branch",
|
|
25
|
+
label: branch.name,
|
|
26
|
+
id: branch.id,
|
|
27
|
+
status: branch.active ? "active" : null
|
|
28
|
+
}))
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function serializeBranchShow(result) {
|
|
32
|
+
return {
|
|
33
|
+
linkedProjectId: result.linkedProjectId,
|
|
34
|
+
projectName: result.projectName,
|
|
35
|
+
branch: {
|
|
36
|
+
name: result.branch.name,
|
|
37
|
+
kind: result.branch.kind,
|
|
38
|
+
active: result.branch.active,
|
|
39
|
+
remoteState: result.branch.remoteState,
|
|
40
|
+
liveDeployment: result.branch.liveDeployment
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function renderBranchShow(context, descriptor, result) {
|
|
45
|
+
const fields = [
|
|
46
|
+
{
|
|
47
|
+
key: "project",
|
|
48
|
+
value: result.projectName ?? "not linked",
|
|
49
|
+
tone: result.projectName ? "default" : "dim"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: "branch",
|
|
53
|
+
value: result.branch.name,
|
|
54
|
+
tone: result.branch.active ? "success" : "default"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "kind",
|
|
58
|
+
value: result.branch.kind
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
if (result.branch.liveDeployment) {
|
|
62
|
+
fields.push({
|
|
63
|
+
key: "status",
|
|
64
|
+
value: result.branch.liveDeployment.status,
|
|
65
|
+
tone: toneForDeploymentStatus(result.branch.liveDeployment.status)
|
|
66
|
+
});
|
|
67
|
+
if (result.branch.liveDeployment.url) fields.push({
|
|
68
|
+
key: "url",
|
|
69
|
+
value: result.branch.liveDeployment.url,
|
|
70
|
+
tone: "link"
|
|
71
|
+
});
|
|
72
|
+
} else if (!result.branch.remoteState) fields.push({
|
|
73
|
+
key: "remote state",
|
|
74
|
+
value: "not created yet",
|
|
75
|
+
tone: "dim"
|
|
76
|
+
});
|
|
77
|
+
return renderShow({
|
|
78
|
+
title: "Showing the current active branch context.",
|
|
79
|
+
descriptor,
|
|
80
|
+
fields
|
|
81
|
+
}, context.ui);
|
|
82
|
+
}
|
|
83
|
+
function toneForDeploymentStatus(status) {
|
|
84
|
+
if (status === "ready" || status === "active" || status === "healthy") return "success";
|
|
85
|
+
if (status === "pending" || status === "building" || status === "starting") return "warning";
|
|
86
|
+
if (status === "failed" || status === "error") return "error";
|
|
87
|
+
return "default";
|
|
88
|
+
}
|
|
89
|
+
function renderBranchUse(context, descriptor, result) {
|
|
90
|
+
return renderMutate({
|
|
91
|
+
title: "Changing the local default branch context.",
|
|
92
|
+
descriptor,
|
|
93
|
+
context: [{
|
|
94
|
+
key: "project",
|
|
95
|
+
value: result.projectName ?? "not linked",
|
|
96
|
+
tone: result.projectName ? "default" : "dim"
|
|
97
|
+
}, {
|
|
98
|
+
key: "branch",
|
|
99
|
+
value: result.branch.name
|
|
100
|
+
}],
|
|
101
|
+
operationDescription: "Applying active branch change",
|
|
102
|
+
operationCount: 1,
|
|
103
|
+
details: ["Active branch updated in local CLI state for this repo."],
|
|
104
|
+
alerts: result.branch.kind === "production" ? [{
|
|
105
|
+
tone: "warning",
|
|
106
|
+
text: "Production is protected and durable. Use with care"
|
|
107
|
+
}] : void 0
|
|
108
|
+
}, context.ui);
|
|
109
|
+
}
|
|
110
|
+
//#endregion
|
|
111
|
+
export { renderBranchList, renderBranchShow, renderBranchUse, serializeBranchList, serializeBranchShow };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { renderList, renderMutate, renderShow, serializeList } from "../output/patterns.js";
|
|
2
|
+
//#region src/presenters/project.ts
|
|
3
|
+
function renderProjectList(context, descriptor, result) {
|
|
4
|
+
return renderList({
|
|
5
|
+
title: "Listing projects for the authenticated workspace.",
|
|
6
|
+
descriptor,
|
|
7
|
+
parentContext: {
|
|
8
|
+
key: "workspace",
|
|
9
|
+
value: result.workspace.name
|
|
10
|
+
},
|
|
11
|
+
items: result.projects.map((project) => ({
|
|
12
|
+
noun: "project",
|
|
13
|
+
label: project.name,
|
|
14
|
+
id: project.id,
|
|
15
|
+
status: result.linkedProjectId === project.id ? "linked" : null
|
|
16
|
+
})),
|
|
17
|
+
emptyMessage: "No projects found."
|
|
18
|
+
}, context.ui);
|
|
19
|
+
}
|
|
20
|
+
function serializeProjectList(result) {
|
|
21
|
+
return serializeList({
|
|
22
|
+
context: { workspace: result.workspace.name },
|
|
23
|
+
items: result.projects.map((project) => ({
|
|
24
|
+
noun: "project",
|
|
25
|
+
label: project.name,
|
|
26
|
+
id: project.id,
|
|
27
|
+
status: result.linkedProjectId === project.id ? "linked" : null
|
|
28
|
+
}))
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function renderProjectShow(context, descriptor, result) {
|
|
32
|
+
if (!result.linkedProjectId) return renderShow({
|
|
33
|
+
title: "Showing the linked project for the current repo.",
|
|
34
|
+
descriptor,
|
|
35
|
+
fields: [{
|
|
36
|
+
key: "project",
|
|
37
|
+
value: "not linked",
|
|
38
|
+
tone: "dim"
|
|
39
|
+
}]
|
|
40
|
+
}, context.ui);
|
|
41
|
+
if (!result.project || !result.workspace) return renderShow({
|
|
42
|
+
title: "Showing the linked project for the current repo.",
|
|
43
|
+
descriptor,
|
|
44
|
+
fields: [{
|
|
45
|
+
key: "project",
|
|
46
|
+
value: "linked",
|
|
47
|
+
tone: "success"
|
|
48
|
+
}, {
|
|
49
|
+
key: "remote details",
|
|
50
|
+
value: "unavailable until you sign in",
|
|
51
|
+
tone: "dim"
|
|
52
|
+
}]
|
|
53
|
+
}, context.ui);
|
|
54
|
+
return renderShow({
|
|
55
|
+
title: "Showing the linked project for the current repo.",
|
|
56
|
+
descriptor,
|
|
57
|
+
fields: [{
|
|
58
|
+
key: "project",
|
|
59
|
+
value: result.project.name
|
|
60
|
+
}, {
|
|
61
|
+
key: "workspace",
|
|
62
|
+
value: result.workspace.name
|
|
63
|
+
}]
|
|
64
|
+
}, context.ui);
|
|
65
|
+
}
|
|
66
|
+
function renderProjectLink(context, descriptor, result) {
|
|
67
|
+
if (!result.project || !result.workspace) throw new Error("Linked project result must be enriched for human output.");
|
|
68
|
+
return renderMutate({
|
|
69
|
+
title: "Linking the current repo to an existing project.",
|
|
70
|
+
descriptor,
|
|
71
|
+
context: [{
|
|
72
|
+
key: "project",
|
|
73
|
+
value: result.project.name
|
|
74
|
+
}, {
|
|
75
|
+
key: "workspace",
|
|
76
|
+
value: result.workspace.name
|
|
77
|
+
}],
|
|
78
|
+
operationDescription: "Applying local project link",
|
|
79
|
+
operationCount: 1,
|
|
80
|
+
details: ["Project link written to local repo config."]
|
|
81
|
+
}, context.ui);
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { renderProjectLink, renderProjectList, renderProjectShow, serializeProjectList };
|