@supatype/cli 0.1.0-alpha.12 → 0.1.0-alpha.14
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +207 -89
- package/.turbo/turbo-typecheck.log +1 -1
- package/dist/app-config.d.ts +10 -0
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +72 -0
- package/dist/app-config.js.map +1 -1
- package/dist/binary-cache.d.ts +11 -3
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +62 -39
- package/dist/binary-cache.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +83 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/app.js +2 -2
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/init.d.ts +29 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +569 -90
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts +15 -1
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +39 -4
- package/dist/commands/keys.js.map +1 -1
- package/dist/engine-client.d.ts.map +1 -1
- package/dist/engine-client.js +12 -4
- package/dist/engine-client.js.map +1 -1
- package/dist/kong-config.d.ts +9 -0
- package/dist/kong-config.d.ts.map +1 -1
- package/dist/kong-config.js +18 -1
- package/dist/kong-config.js.map +1 -1
- package/dist/project-config.d.ts +16 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +34 -0
- package/dist/project-config.js.map +1 -1
- package/dist/prompts.d.ts +8 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +20 -0
- package/dist/prompts.js.map +1 -0
- package/dist/scripts/postinstall.js +5 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +61 -17
- package/dist/self-host-compose.js.map +1 -1
- package/package.json +2 -1
- package/src/app-config.ts +80 -0
- package/src/binary-cache.ts +64 -42
- package/src/cli.ts +2 -0
- package/src/commands/add.ts +94 -0
- package/src/commands/app.ts +2 -2
- package/src/commands/init.ts +738 -88
- package/src/commands/keys.ts +49 -4
- package/src/engine-client.ts +11 -4
- package/src/kong-config.ts +24 -1
- package/src/project-config.ts +45 -0
- package/src/prompts.ts +21 -0
- package/src/scripts/postinstall.ts +7 -1
- package/src/self-host-compose.ts +61 -17
- package/tests/config.test.ts +26 -0
- package/tests/init.test.ts +128 -15
- package/tests/minisign.test.ts +102 -0
- package/tests/runtime-contract.test.ts +111 -1
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.0-alpha.
|
|
2
|
+
> @supatype/cli@0.1.0-alpha.14 build /home/runner/work/supatype/supatype/packages/cli
|
|
3
3
|
> tsc --project tsconfig.json && node --input-type=module -e "import{cpSync,mkdirSync}from'node:fs';const a='dist/assets';mkdirSync(a,{recursive:true});cpSync('assets/supatype-logo-wordmark.ascii.txt',a+'/supatype-logo-wordmark.ascii.txt')"
|
|
4
4
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,37 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.0-alpha.
|
|
2
|
+
> @supatype/cli@0.1.0-alpha.14 test /home/runner/work/supatype/supatype/packages/cli
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv4.0.18 [39m[90m/home/runner/work/supatype/supatype/packages/cli[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 153[2mms[22m[39m
|
|
9
|
-
[32m✓[39m tests/type-extractor.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 154[2mms[22m[39m
|
|
10
|
-
[32m✓[39m tests/config.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 4226[2mms[22m[39m
|
|
11
|
-
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m 545[2mms[22m[39m
|
|
12
|
-
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m 495[2mms[22m[39m
|
|
13
|
-
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m 454[2mms[22m[39m
|
|
14
|
-
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m 546[2mms[22m[39m
|
|
15
|
-
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m 539[2mms[22m[39m
|
|
16
|
-
[33m[2m✓[22m[39m supports optional output field in config [33m 575[2mms[22m[39m
|
|
17
|
-
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m 1058[2mms[22m[39m
|
|
18
|
-
[90mstdout[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
19
|
-
[22m[39m created package.json
|
|
20
|
-
created supatype.config.ts
|
|
21
|
-
created schema/index.ts
|
|
22
|
-
created .env
|
|
23
|
-
created seed.ts
|
|
24
|
-
created seeds/.gitkeep
|
|
25
|
-
created public/.gitkeep
|
|
26
|
-
created .gitignore
|
|
27
|
-
|
|
28
|
-
[90mstderr[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
29
|
-
[22m[39mMigrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
30
|
-
|
|
31
|
-
[32m✓[39m tests/link.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2837[2mms[22m[39m
|
|
32
|
-
[33m[2m✓[22m[39m resolveTarget returns cloud mode with /api/v1 prefix [33m 929[2mms[22m[39m
|
|
33
|
-
[33m[2m✓[22m[39m resolveTarget returns self-host mode with /platform/v1 prefix [33m 922[2mms[22m[39m
|
|
34
|
-
[33m[2m✓[22m[39m targetSchemaRollback posts to /platform/v1 when linked [33m 973[2mms[22m[39m
|
|
35
8
|
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcreates all expected files
|
|
36
9
|
[22m[39m created package.json
|
|
37
10
|
created supatype.config.ts
|
|
@@ -102,7 +75,7 @@
|
|
|
102
75
|
created public/.gitkeep
|
|
103
76
|
created .gitignore
|
|
104
77
|
|
|
105
|
-
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mschema/index.ts exports a
|
|
78
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mschema/index.ts exports a Profile model using RFC v2 Model<>
|
|
106
79
|
[22m[39m created package.json
|
|
107
80
|
created supatype.config.ts
|
|
108
81
|
created schema/index.ts
|
|
@@ -150,46 +123,191 @@
|
|
|
150
123
|
created public/.gitkeep
|
|
151
124
|
created .gitignore
|
|
152
125
|
|
|
153
|
-
|
|
126
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host target emits standalone mode + domain and a local override
|
|
127
|
+
[22m[39m created package.json
|
|
128
|
+
created supatype.config.ts
|
|
129
|
+
created supatype.local.config.ts
|
|
130
|
+
created schema/index.ts
|
|
131
|
+
created .env
|
|
132
|
+
created seed.ts
|
|
133
|
+
created seeds/.gitkeep
|
|
134
|
+
created public/.gitkeep
|
|
135
|
+
created .gitignore
|
|
136
|
+
|
|
137
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host with a TLS email emits an active tls block
|
|
138
|
+
[22m[39m created package.json
|
|
139
|
+
created supatype.config.ts
|
|
140
|
+
created supatype.local.config.ts
|
|
141
|
+
created schema/index.ts
|
|
142
|
+
created .env
|
|
143
|
+
created seed.ts
|
|
144
|
+
created seeds/.gitkeep
|
|
145
|
+
created public/.gitkeep
|
|
146
|
+
created .gitignore
|
|
147
|
+
|
|
148
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host without a TLS email emits a commented tls hint
|
|
149
|
+
[22m[39m created package.json
|
|
150
|
+
created supatype.config.ts
|
|
151
|
+
created supatype.local.config.ts
|
|
152
|
+
created schema/index.ts
|
|
153
|
+
created .env
|
|
154
|
+
created seed.ts
|
|
155
|
+
created seeds/.gitkeep
|
|
156
|
+
created public/.gitkeep
|
|
157
|
+
created .gitignore
|
|
158
|
+
|
|
159
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcloud target emits managed mode + environments and a local override
|
|
160
|
+
[22m[39m created package.json
|
|
161
|
+
created supatype.config.ts
|
|
162
|
+
created supatype.local.config.ts
|
|
163
|
+
created schema/index.ts
|
|
164
|
+
created .env
|
|
165
|
+
created seed.ts
|
|
166
|
+
created seeds/.gitkeep
|
|
167
|
+
created public/.gitkeep
|
|
168
|
+
created .gitignore
|
|
169
|
+
|
|
170
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mlater target stays in dev mode with no local override
|
|
171
|
+
[22m[39m created package.json
|
|
172
|
+
created supatype.config.ts
|
|
173
|
+
created schema/index.ts
|
|
174
|
+
created .env
|
|
175
|
+
created seed.ts
|
|
176
|
+
created seeds/.gitkeep
|
|
177
|
+
created public/.gitkeep
|
|
178
|
+
created .gitignore
|
|
179
|
+
|
|
180
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mstatic app mode writes the static dir and config block
|
|
181
|
+
[22m[39m created package.json
|
|
182
|
+
created supatype.config.ts
|
|
183
|
+
created schema/index.ts
|
|
184
|
+
created .env
|
|
185
|
+
created seed.ts
|
|
186
|
+
created seeds/.gitkeep
|
|
187
|
+
created dist/.gitkeep
|
|
188
|
+
created .gitignore
|
|
189
|
+
|
|
190
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mproxy app mode writes upstream and start in the config
|
|
191
|
+
[22m[39m created package.json
|
|
192
|
+
created supatype.config.ts
|
|
193
|
+
created schema/index.ts
|
|
194
|
+
created .env
|
|
195
|
+
created seed.ts
|
|
196
|
+
created seeds/.gitkeep
|
|
197
|
+
created public/.gitkeep
|
|
198
|
+
created .gitignore
|
|
199
|
+
|
|
200
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mhello-world function scaffolds function files and a functions script
|
|
201
|
+
[22m[39m created package.json
|
|
202
|
+
created supatype.config.ts
|
|
203
|
+
created schema/index.ts
|
|
204
|
+
created .env
|
|
205
|
+
created seed.ts
|
|
206
|
+
created seeds/.gitkeep
|
|
207
|
+
created public/.gitkeep
|
|
208
|
+
created functions/hello/index.ts
|
|
209
|
+
created functions/_shared/README.md
|
|
210
|
+
created functions/.env.local
|
|
211
|
+
created .gitignore
|
|
212
|
+
|
|
213
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcustom schema path is honored
|
|
214
|
+
[22m[39m created package.json
|
|
215
|
+
created supatype.config.ts
|
|
216
|
+
created db/schema.ts
|
|
217
|
+
created .env
|
|
218
|
+
created seed.ts
|
|
219
|
+
created seeds/.gitkeep
|
|
220
|
+
created public/.gitkeep
|
|
221
|
+
created .gitignore
|
|
222
|
+
|
|
223
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2ms3 storage and resend email reflect in config and .env
|
|
224
|
+
[22m[39m created package.json
|
|
225
|
+
created supatype.config.ts
|
|
226
|
+
created schema/index.ts
|
|
227
|
+
created .env
|
|
228
|
+
created seed.ts
|
|
229
|
+
created seeds/.gitkeep
|
|
230
|
+
created public/.gitkeep
|
|
231
|
+
created .gitignore
|
|
232
|
+
|
|
233
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mmixed local dev and s3 production writes both storage sections
|
|
234
|
+
[22m[39m created package.json
|
|
235
|
+
created supatype.config.ts
|
|
236
|
+
created schema/index.ts
|
|
237
|
+
created .env
|
|
238
|
+
created seed.ts
|
|
239
|
+
created seeds/.gitkeep
|
|
240
|
+
created public/.gitkeep
|
|
241
|
+
created .gitignore
|
|
242
|
+
|
|
243
|
+
[32m✓[39m tests/init.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 153[2mms[22m[39m
|
|
244
|
+
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m39 tests[22m[2m)[22m[33m 323[2mms[22m[39m
|
|
245
|
+
[32m✓[39m tests/type-extractor.test.ts [2m([22m[2m34 tests[22m[2m)[22m[33m 311[2mms[22m[39m
|
|
246
|
+
[32m✓[39m tests/config.test.ts [2m([22m[2m18 tests[22m[2m)[22m[33m 4514[2mms[22m[39m
|
|
247
|
+
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m 857[2mms[22m[39m
|
|
248
|
+
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m 495[2mms[22m[39m
|
|
249
|
+
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m 500[2mms[22m[39m
|
|
250
|
+
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m 529[2mms[22m[39m
|
|
251
|
+
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m 542[2mms[22m[39m
|
|
252
|
+
[33m[2m✓[22m[39m supports optional output field in config [33m 520[2mms[22m[39m
|
|
253
|
+
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m 1059[2mms[22m[39m
|
|
254
|
+
[90mstdout[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
255
|
+
[22m[39m created package.json
|
|
256
|
+
created supatype.config.ts
|
|
257
|
+
created schema/index.ts
|
|
258
|
+
created .env
|
|
259
|
+
created seed.ts
|
|
260
|
+
created seeds/.gitkeep
|
|
261
|
+
created public/.gitkeep
|
|
262
|
+
created .gitignore
|
|
263
|
+
|
|
264
|
+
[90mstderr[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
265
|
+
[22m[39mMigrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
266
|
+
|
|
267
|
+
[32m✓[39m tests/link.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2782[2mms[22m[39m
|
|
268
|
+
[33m[2m✓[22m[39m resolveTarget returns cloud mode with /api/v1 prefix [33m 897[2mms[22m[39m
|
|
269
|
+
[33m[2m✓[22m[39m resolveTarget returns self-host mode with /platform/v1 prefix [33m 909[2mms[22m[39m
|
|
270
|
+
[33m[2m✓[22m[39m targetSchemaRollback posts to /platform/v1 when linked [33m 965[2mms[22m[39m
|
|
154
271
|
|
|
155
272
|
|
|
156
273
|
|
|
157
274
|
|
|
158
|
-
[32m✓[39m tests/dev-ui.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m
|
|
275
|
+
[32m✓[39m tests/dev-ui.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 71[2mms[22m[39m
|
|
159
276
|
|
|
160
|
-
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m
|
|
161
|
-
[32m✓[39m tests/schema-sources.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m
|
|
162
|
-
[33m[2m✓[22m[39m buildSchemaSourcesPayload includes manifest metadata [33m
|
|
163
|
-
[33m[2m✓[22m[39m restore overwrites modified local files [33m
|
|
277
|
+
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
278
|
+
[32m✓[39m tests/schema-sources.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m 1101[2mms[22m[39m
|
|
279
|
+
[33m[2m✓[22m[39m buildSchemaSourcesPayload includes manifest metadata [33m 521[2mms[22m[39m
|
|
280
|
+
[33m[2m✓[22m[39m restore overwrites modified local files [33m 535[2mms[22m[39m
|
|
164
281
|
[90mstderr[2m | tests/binary-cache-cloud-overrides.test.ts[2m > [22m[2misLinkedToCloudProject[2m > [22m[2mis true when .supatype/cloud.json has projectSlug
|
|
165
282
|
[22m[39mMigrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
166
283
|
|
|
167
284
|
[32m✓[39m tests/binary-cache-cloud-overrides.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 19[2mms[22m[39m
|
|
285
|
+
[32m✓[39m tests/minisign.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 19[2mms[22m[39m
|
|
168
286
|
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
169
287
|
[22m[39m[supatype] Storage bucket "photos" ready.
|
|
170
288
|
|
|
171
289
|
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
172
290
|
[22m[39m[supatype] Storage bucket "avatars" ready.
|
|
173
291
|
|
|
174
|
-
[32m✓[39m tests/storage-provision.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
175
|
-
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
176
|
-
[32m✓[39m tests/proxy-dev-app.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
177
|
-
[32m✓[39m tests/keys.test.ts [2m([22m[2m11 tests[22m[2m)[22m[33m
|
|
178
|
-
[33m[2m✓[22m[39m exits 0 with --secret [33m
|
|
179
|
-
[33m[2m✓[22m[39m outputs ANON_KEY= line [33m
|
|
180
|
-
[33m[2m✓[22m[39m outputs SERVICE_ROLE_KEY= line [33m
|
|
181
|
-
[33m[2m✓[22m[39m ANON_KEY is a valid three-part JWT [33m
|
|
182
|
-
[33m[2m✓[22m[39m SERVICE_ROLE_KEY payload has role: service_role [33m
|
|
183
|
-
[33m[2m✓[22m[39m JWT has exp in the future [33m
|
|
184
|
-
[33m[2m✓[22m[39m --exp-years changes the expiry window [33m
|
|
185
|
-
[33m[2m✓[22m[39m reads JWT_SECRET from environment variable [33m
|
|
186
|
-
[33m[2m✓[22m[39m reads JWT_SECRET from .env file [33m
|
|
187
|
-
[33m[2m✓[22m[39m exits non-zero when no secret is available [33m
|
|
188
|
-
[33m[2m✓[22m[39m keys --help shows --secret and --exp-years options [33m
|
|
189
|
-
[32m✓[39m tests/augmentation-generator.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m
|
|
190
|
-
[32m✓[39m tests/type-resolver.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
191
|
-
[32m✓[39m tests/engine-push-output.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
192
|
-
[32m✓[39m tests/ensure-binary.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m
|
|
292
|
+
[32m✓[39m tests/storage-provision.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
293
|
+
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
294
|
+
[32m✓[39m tests/proxy-dev-app.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
295
|
+
[32m✓[39m tests/keys.test.ts [2m([22m[2m11 tests[22m[2m)[22m[33m 12701[2mms[22m[39m
|
|
296
|
+
[33m[2m✓[22m[39m exits 0 with --secret [33m 1459[2mms[22m[39m
|
|
297
|
+
[33m[2m✓[22m[39m outputs ANON_KEY= line [33m 1045[2mms[22m[39m
|
|
298
|
+
[33m[2m✓[22m[39m outputs SERVICE_ROLE_KEY= line [33m 1007[2mms[22m[39m
|
|
299
|
+
[33m[2m✓[22m[39m ANON_KEY is a valid three-part JWT [33m 1025[2mms[22m[39m
|
|
300
|
+
[33m[2m✓[22m[39m SERVICE_ROLE_KEY payload has role: service_role [33m 1032[2mms[22m[39m
|
|
301
|
+
[33m[2m✓[22m[39m JWT has exp in the future [33m 1010[2mms[22m[39m
|
|
302
|
+
[33m[2m✓[22m[39m --exp-years changes the expiry window [33m 2011[2mms[22m[39m
|
|
303
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from environment variable [33m 1018[2mms[22m[39m
|
|
304
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from .env file [33m 1065[2mms[22m[39m
|
|
305
|
+
[33m[2m✓[22m[39m exits non-zero when no secret is available [33m 950[2mms[22m[39m
|
|
306
|
+
[33m[2m✓[22m[39m keys --help shows --secret and --exp-years options [33m 1072[2mms[22m[39m
|
|
307
|
+
[32m✓[39m tests/augmentation-generator.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 16[2mms[22m[39m
|
|
308
|
+
[32m✓[39m tests/type-resolver.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
309
|
+
[32m✓[39m tests/engine-push-output.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
310
|
+
[32m✓[39m tests/ensure-binary.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
193
311
|
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2msets app.mode=static and static_dir in supatype.config.ts
|
|
194
312
|
[22m[39m created package.json
|
|
195
313
|
created supatype.config.ts
|
|
@@ -200,15 +318,15 @@
|
|
|
200
318
|
created public/.gitkeep
|
|
201
319
|
created .gitignore
|
|
202
320
|
|
|
203
|
-
[32m✓[39m tests/tsx-runner.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m
|
|
204
|
-
[33m[2m✓[22m[39m evaluates a simple expression and returns stdout [33m
|
|
205
|
-
[33m[2m✓[22m[39m evaluates TypeScript syntax (type annotations) [33m
|
|
206
|
-
[33m[2m✓[22m[39m can serialize a JSON object to stdout [33m
|
|
207
|
-
[33m[2m✓[22m[39m returns non-zero exit code on syntax error [33m
|
|
208
|
-
[33m[2m✓[22m[39m returns non-zero exit code on runtime error [33m
|
|
209
|
-
[33m[2m✓[22m[39m captures stderr separately from stdout [33m
|
|
210
|
-
[33m[2m✓[22m[39m runs a .ts file and returns its stdout [33m
|
|
211
|
-
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
321
|
+
[32m✓[39m tests/tsx-runner.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 2758[2mms[22m[39m
|
|
322
|
+
[33m[2m✓[22m[39m evaluates a simple expression and returns stdout [33m 432[2mms[22m[39m
|
|
323
|
+
[33m[2m✓[22m[39m evaluates TypeScript syntax (type annotations) [33m 367[2mms[22m[39m
|
|
324
|
+
[33m[2m✓[22m[39m can serialize a JSON object to stdout [33m 354[2mms[22m[39m
|
|
325
|
+
[33m[2m✓[22m[39m returns non-zero exit code on syntax error [33m 334[2mms[22m[39m
|
|
326
|
+
[33m[2m✓[22m[39m returns non-zero exit code on runtime error [33m 354[2mms[22m[39m
|
|
327
|
+
[33m[2m✓[22m[39m captures stderr separately from stdout [33m 390[2mms[22m[39m
|
|
328
|
+
[33m[2m✓[22m[39m runs a .ts file and returns its stdout [33m 521[2mms[22m[39m
|
|
329
|
+
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
212
330
|
[32m✓[39m tests/docker-postgres.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
213
331
|
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2mcreates the static directory when missing
|
|
214
332
|
[22m[39m created package.json
|
|
@@ -222,33 +340,33 @@
|
|
|
222
340
|
|
|
223
341
|
[32m✓[39m tests/seed-discover.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 15[2mms[22m[39m
|
|
224
342
|
[32m✓[39m tests/studio-admin-roles.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
225
|
-
[32m✓[39m tests/
|
|
226
|
-
|
|
227
|
-
[33m[2m✓[22m[39m
|
|
228
|
-
|
|
229
|
-
[32m✓[39m tests/
|
|
343
|
+
[32m✓[39m tests/release-pins.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
344
|
+
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2146[2mms[22m[39m
|
|
345
|
+
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1054[2mms[22m[39m
|
|
346
|
+
[33m[2m✓[22m[39m creates the static directory when missing [33m 1090[2mms[22m[39m
|
|
347
|
+
[32m✓[39m tests/cli-help.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 16484[2mms[22m[39m
|
|
348
|
+
[33m[2m✓[22m[39m --help lists all top-level commands [33m 1346[2mms[22m[39m
|
|
349
|
+
[33m[2m✓[22m[39m --version prints a semver string [33m 1002[2mms[22m[39m
|
|
350
|
+
[33m[2m✓[22m[39m self-update --help describes the command [33m 1013[2mms[22m[39m
|
|
351
|
+
[33m[2m✓[22m[39m init --help describes the init command [33m 983[2mms[22m[39m
|
|
352
|
+
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 1060[2mms[22m[39m
|
|
353
|
+
[33m[2m✓[22m[39m diff --help describes the diff command [33m 1035[2mms[22m[39m
|
|
354
|
+
[33m[2m✓[22m[39m pull --help describes scaffold pull command [33m 1017[2mms[22m[39m
|
|
355
|
+
[33m[2m✓[22m[39m doctor --help describes drift report command [33m 1010[2mms[22m[39m
|
|
356
|
+
[33m[2m✓[22m[39m introspect --help describes database introspection command [33m 930[2mms[22m[39m
|
|
357
|
+
[33m[2m✓[22m[39m adopt --help describes adoption ceremony command [33m 1000[2mms[22m[39m
|
|
358
|
+
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 1004[2mms[22m[39m
|
|
359
|
+
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 1001[2mms[22m[39m
|
|
360
|
+
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 1059[2mms[22m[39m
|
|
361
|
+
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 1014[2mms[22m[39m
|
|
362
|
+
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 969[2mms[22m[39m
|
|
363
|
+
[33m[2m✓[22m[39m unknown command exits non-zero [33m 1036[2mms[22m[39m
|
|
364
|
+
[32m✓[39m tests/pg-spawn-env.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
230
365
|
[32m✓[39m tests/postgres-archive-tag.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
231
|
-
[32m✓[39m tests/cli-help.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 16035[2mms[22m[39m
|
|
232
|
-
[33m[2m✓[22m[39m --help lists all top-level commands [33m 1018[2mms[22m[39m
|
|
233
|
-
[33m[2m✓[22m[39m --version prints a semver string [33m 969[2mms[22m[39m
|
|
234
|
-
[33m[2m✓[22m[39m self-update --help describes the command [33m 981[2mms[22m[39m
|
|
235
|
-
[33m[2m✓[22m[39m init --help describes the init command [33m 1105[2mms[22m[39m
|
|
236
|
-
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 977[2mms[22m[39m
|
|
237
|
-
[33m[2m✓[22m[39m diff --help describes the diff command [33m 1007[2mms[22m[39m
|
|
238
|
-
[33m[2m✓[22m[39m pull --help describes scaffold pull command [33m 978[2mms[22m[39m
|
|
239
|
-
[33m[2m✓[22m[39m doctor --help describes drift report command [33m 1020[2mms[22m[39m
|
|
240
|
-
[33m[2m✓[22m[39m introspect --help describes database introspection command [33m 915[2mms[22m[39m
|
|
241
|
-
[33m[2m✓[22m[39m adopt --help describes adoption ceremony command [33m 966[2mms[22m[39m
|
|
242
|
-
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 974[2mms[22m[39m
|
|
243
|
-
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 1080[2mms[22m[39m
|
|
244
|
-
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 998[2mms[22m[39m
|
|
245
|
-
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 1033[2mms[22m[39m
|
|
246
|
-
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 1038[2mms[22m[39m
|
|
247
|
-
[33m[2m✓[22m[39m unknown command exits non-zero [33m 970[2mms[22m[39m
|
|
248
366
|
[32m✓[39m tests/migrate-from-v1.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
249
367
|
|
|
250
|
-
[2m Test Files [22m [1m[
|
|
251
|
-
[2m Tests [22m [1m[
|
|
252
|
-
[2m Start at [22m
|
|
253
|
-
[2m Duration [22m
|
|
368
|
+
[2m Test Files [22m [1m[32m29 passed[39m[22m[90m (29)[39m
|
|
369
|
+
[2m Tests [22m [1m[32m289 passed[39m[22m[90m (289)[39m
|
|
370
|
+
[2m Start at [22m 21:04:37
|
|
371
|
+
[2m Duration [22m 20.06s[2m (transform 2.99s, setup 0ms, import 10.13s, tests 43.53s, environment 19ms)[22m
|
|
254
372
|
|
package/dist/app-config.d.ts
CHANGED
|
@@ -4,4 +4,14 @@ export interface UpdateAppConfigInput {
|
|
|
4
4
|
upstream?: string;
|
|
5
5
|
}
|
|
6
6
|
export declare function updateAppConfigInProject(cwd: string, input: UpdateAppConfigInput): string;
|
|
7
|
+
export interface UpdateServerConfigInput {
|
|
8
|
+
domain: string;
|
|
9
|
+
tlsEmail: string;
|
|
10
|
+
provider?: "kong" | "none";
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Set `server.mode = "standalone"` plus `domain` and `tls` in supatype.config.ts,
|
|
14
|
+
* enabling self-host HTTPS. Preserves other `server` keys (port, etc).
|
|
15
|
+
*/
|
|
16
|
+
export declare function updateServerConfigInProject(cwd: string, input: UpdateServerConfigInput): string;
|
|
7
17
|
//# sourceMappingURL=app-config.d.ts.map
|
package/dist/app-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAQzF"}
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAQzF;AAuCD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAQ/F"}
|
package/dist/app-config.js
CHANGED
|
@@ -46,6 +46,78 @@ function updateAppConfigAst(configPath, input) {
|
|
|
46
46
|
}
|
|
47
47
|
return sourceFile.getFullText();
|
|
48
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Set `server.mode = "standalone"` plus `domain` and `tls` in supatype.config.ts,
|
|
51
|
+
* enabling self-host HTTPS. Preserves other `server` keys (port, etc).
|
|
52
|
+
*/
|
|
53
|
+
export function updateServerConfigInProject(cwd, input) {
|
|
54
|
+
const configPath = resolve(cwd, "supatype.config.ts");
|
|
55
|
+
if (!existsSync(configPath)) {
|
|
56
|
+
throw new Error("supatype.config.ts not found. Run: supatype init");
|
|
57
|
+
}
|
|
58
|
+
const next = updateServerConfigAst(configPath, input);
|
|
59
|
+
writeFileSync(configPath, next, "utf8");
|
|
60
|
+
return configPath;
|
|
61
|
+
}
|
|
62
|
+
function updateServerConfigAst(configPath, input) {
|
|
63
|
+
const project = new Project({
|
|
64
|
+
useInMemoryFileSystem: false,
|
|
65
|
+
skipAddingFilesFromTsConfig: true,
|
|
66
|
+
manipulationSettings: {
|
|
67
|
+
quoteKind: QuoteKind.Double,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
const srcText = readFileSync(configPath, "utf8");
|
|
71
|
+
const sourceFile = project.createSourceFile(configPath, srcText, { overwrite: true });
|
|
72
|
+
const rootObject = getRootConfigObject(sourceFile);
|
|
73
|
+
const serverProperty = rootObject.getProperty("server");
|
|
74
|
+
if (serverProperty === undefined) {
|
|
75
|
+
rootObject.addPropertyAssignment({
|
|
76
|
+
name: "server",
|
|
77
|
+
initializer: renderServerInitializer(input),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
else if (Node.isPropertyAssignment(serverProperty)) {
|
|
81
|
+
const init = serverProperty.getInitializer();
|
|
82
|
+
if (init && Node.isObjectLiteralExpression(init)) {
|
|
83
|
+
patchServerObject(init, input);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
serverProperty.setInitializer(renderServerInitializer(input));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
serverProperty.remove();
|
|
91
|
+
rootObject.addPropertyAssignment({
|
|
92
|
+
name: "server",
|
|
93
|
+
initializer: renderServerInitializer(input),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return sourceFile.getFullText();
|
|
97
|
+
}
|
|
98
|
+
function renderServerInitializer(input) {
|
|
99
|
+
const provider = input.provider ?? "kong";
|
|
100
|
+
return `{
|
|
101
|
+
mode: "standalone",
|
|
102
|
+
domain: "${input.domain}",
|
|
103
|
+
tls: { email: "${input.tlsEmail}", provider: "${provider}" },
|
|
104
|
+
}`;
|
|
105
|
+
}
|
|
106
|
+
function patchServerObject(serverObj, input) {
|
|
107
|
+
upsertStringProperty(serverObj, "mode", "standalone");
|
|
108
|
+
upsertStringProperty(serverObj, "domain", input.domain);
|
|
109
|
+
const provider = input.provider ?? "kong";
|
|
110
|
+
const tlsInitializer = `{ email: "${input.tlsEmail}", provider: "${provider}" }`;
|
|
111
|
+
const existing = serverObj.getProperty("tls");
|
|
112
|
+
if (existing && Node.isPropertyAssignment(existing)) {
|
|
113
|
+
existing.setInitializer(tlsInitializer);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
if (existing)
|
|
117
|
+
existing.remove();
|
|
118
|
+
serverObj.addPropertyAssignment({ name: "tls", initializer: tlsInitializer });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
49
121
|
function getRootConfigObject(sourceFile) {
|
|
50
122
|
const exportAssignment = sourceFile.getFirstDescendantByKind(SyntaxKind.ExportAssignment);
|
|
51
123
|
if (!exportAssignment) {
|
package/dist/app-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
|
package/dist/binary-cache.d.ts
CHANGED
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Security model:
|
|
9
9
|
* 1. Download checksums.sha256 + checksums.sha256.minisig from CDN.
|
|
10
|
-
* 2. Verify Ed25519 minisign signature on the checksum file using the
|
|
11
|
-
*
|
|
10
|
+
* 2. Verify the Ed25519 minisign signature on the checksum file using the
|
|
11
|
+
* release public key (embedded at publish, overridable via
|
|
12
|
+
* SUPATYPE_RELEASE_PUBLIC_KEY).
|
|
12
13
|
* 3. Verify SHA256 of the downloaded binary against the signed checksum.
|
|
13
|
-
*
|
|
14
|
+
* Verification is mandatory and fails closed: if no public key is configured,
|
|
15
|
+
* the download errors out rather than silently degrading to SHA256-only.
|
|
16
|
+
* The only escape hatch is the explicit SUPATYPE_ALLOW_UNVERIFIED_DOWNLOADS=1.
|
|
14
17
|
*/
|
|
15
18
|
import type { SupatypeProjectConfig } from "./project-config.js";
|
|
16
19
|
/**
|
|
@@ -66,6 +69,11 @@ export declare function resolveBinary(component: Component, config: SupatypeProj
|
|
|
66
69
|
/** Download if missing or invalid; return cached path for the given platform. */
|
|
67
70
|
export declare function ensureCachedBinary(component: Component, version: string, platform: PlatformId): Promise<string>;
|
|
68
71
|
export declare function download(component: Component, version: string, platform: PlatformId): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Verify a minisign signature. Supports both Ed25519 legacy mode ("Ed", over the
|
|
74
|
+
* raw file) and prehashed mode ("ED", over BLAKE2b-512(file)). Throws if invalid.
|
|
75
|
+
*/
|
|
76
|
+
export declare function verifyMinisign(fileBytes: Buffer, sigFileContent: string, pubKeyStr: string): void;
|
|
69
77
|
/** Confirm a downloaded/cached artifact matches the expected CDN format (tests, CI). */
|
|
70
78
|
export declare function validateArtifactFormat(component: Component, filePath: string, platform: PlatformId): void;
|
|
71
79
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"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"}
|