@bitmagic/cli 0.1.52-dev.1 → 0.1.52-dev.2
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/README.md +63 -0
- package/dist/assets/add.d.ts +66 -0
- package/dist/assets/add.js +274 -0
- package/dist/assets/add.js.map +1 -0
- package/dist/assets/entry.d.ts +44 -0
- package/dist/assets/entry.js +71 -0
- package/dist/assets/entry.js.map +1 -0
- package/dist/assets/file-kind.d.ts +53 -0
- package/dist/assets/file-kind.js +180 -0
- package/dist/assets/file-kind.js.map +1 -0
- package/dist/assets/list.d.ts +27 -0
- package/dist/assets/list.js +50 -0
- package/dist/assets/list.js.map +1 -0
- package/dist/assets/remove.d.ts +50 -0
- package/dist/assets/remove.js +91 -0
- package/dist/assets/remove.js.map +1 -0
- package/dist/assets/vxl-summary.d.ts +23 -0
- package/dist/assets/vxl-summary.js +103 -0
- package/dist/assets/vxl-summary.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/assets.d.ts +62 -0
- package/dist/commands/assets.js +359 -0
- package/dist/commands/assets.js.map +1 -0
- package/dist/commands/judge.js +24 -16
- package/dist/commands/judge.js.map +1 -1
- package/dist/editor/previews.d.ts +6 -0
- package/dist/editor/previews.js +16 -0
- package/dist/editor/previews.js.map +1 -1
- package/dist/editor/server.js +2 -2
- package/dist/editor/server.js.map +1 -1
- package/dist/forge/apply-modifications.d.ts +9 -1
- package/dist/forge/apply-modifications.js +3 -14
- package/dist/forge/apply-modifications.js.map +1 -1
- package/dist/forge/voxelize-session.d.ts +24 -0
- package/dist/forge/voxelize-session.js +137 -0
- package/dist/forge/voxelize-session.js.map +1 -0
- package/dist/generate/prop.js +9 -63
- package/dist/generate/prop.js.map +1 -1
- package/dist/generate/vehicle.js +5 -85
- package/dist/generate/vehicle.js.map +1 -1
- package/dist/http/signed-upload.d.ts +55 -0
- package/dist/http/signed-upload.js +168 -0
- package/dist/http/signed-upload.js.map +1 -0
- package/dist/judge/facts.js +72 -57
- package/dist/judge/facts.js.map +1 -1
- package/dist/project/jobs.d.ts +1 -1
- package/dist/project/jobs.js.map +1 -1
- package/dist/publish/client.js +13 -34
- package/dist/publish/client.js.map +1 -1
- package/dist/scaffold/project-files.js +21 -8
- package/dist/scaffold/project-files.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Environment } from '../config/environments.js';
|
|
2
|
+
import { type ApiDeps } from './client.js';
|
|
3
|
+
/** The api-server route; the same one `forge/upload-proxy.ts` forwards the engine to. */
|
|
4
|
+
export declare const SIGNED_UPLOAD_PATH = "/api/cli/v1/uploads/signed-url";
|
|
5
|
+
export interface SignedUploadRequest {
|
|
6
|
+
gameId: string;
|
|
7
|
+
/** A bare basename. api-server refuses (never rewrites) a path separator or `..`. */
|
|
8
|
+
filename: string;
|
|
9
|
+
contentType: string;
|
|
10
|
+
}
|
|
11
|
+
/** `cli-uploads.ts`'s `generateUploadSignedUrl` response, the fields a caller needs. */
|
|
12
|
+
export interface SignedUpload {
|
|
13
|
+
signedUrl: string;
|
|
14
|
+
/** Where the object is served from once the PUT lands — what goes into world.json. */
|
|
15
|
+
publicUrl: string;
|
|
16
|
+
cacheControl?: string;
|
|
17
|
+
/** `'gzip'` when the server bound that encoding into the signature; the PUT must then gzip. */
|
|
18
|
+
contentEncoding?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Ask api-server for a presigned PUT under `worlds/v3/<gameId>/`. Ownership is checked there
|
|
22
|
+
* before anything is minted, so a refusal here has cost nothing and changed nothing.
|
|
23
|
+
*/
|
|
24
|
+
export declare function mintSignedUpload(environment: Environment, accessToken: string, body: SignedUploadRequest, deps: ApiDeps): Promise<SignedUpload>;
|
|
25
|
+
export interface PutSignedUrlOptions {
|
|
26
|
+
/** Exit code for a failed PUT. `bitmagic publish` documents 6 for its upload step; default 1. */
|
|
27
|
+
exitCode?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Raw PUT of already-prepared bytes to a GCS V4 signed URL.
|
|
31
|
+
*
|
|
32
|
+
* `headers` must match exactly what the URL's signature bound (Content-Type, Cache-Control, and
|
|
33
|
+
* Content-Encoding when the server chose to gzip). A mismatch is a 403 from GCS, not a stale-cache
|
|
34
|
+
* symptom; see cli-publish.ts's and cli-uploads.ts's own doc comments for why.
|
|
35
|
+
*/
|
|
36
|
+
export declare function putSignedUrl(url: string, body: string | Uint8Array, headers: Record<string, string>, deps: ApiDeps, options?: PutSignedUrlOptions): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* PUT `bytes` to the URL `mintSignedUpload` returned, gzipping first when the server bound
|
|
39
|
+
* `Content-Encoding: gzip` into the signature. `contentType` is the SAME value the caller minted
|
|
40
|
+
* with (the server never echoes it back), while `cacheControl` and `contentEncoding` are read off
|
|
41
|
+
* the signed response, because the server — not the caller — decides both.
|
|
42
|
+
*
|
|
43
|
+
* Returns the byte count that actually went over the wire, which is also what is stored.
|
|
44
|
+
*/
|
|
45
|
+
export declare function putSignedUpload(signed: SignedUpload, bytes: Uint8Array, contentType: string, deps: ApiDeps, options?: PutSignedUrlOptions): Promise<{
|
|
46
|
+
storedBytes: number;
|
|
47
|
+
}>;
|
|
48
|
+
export interface UploadProjectFileInput extends SignedUploadRequest {
|
|
49
|
+
bytes: Uint8Array;
|
|
50
|
+
}
|
|
51
|
+
/** Mint and PUT in one call — the whole upload for a file the CLI holds in memory. */
|
|
52
|
+
export declare function uploadProjectFile(environment: Environment, accessToken: string, input: UploadProjectFileInput, deps: ApiDeps): Promise<{
|
|
53
|
+
url: string;
|
|
54
|
+
storedBytes: number;
|
|
55
|
+
}>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's own lane into Bitmagic's storage bucket: mint a presigned PUT from api-server, then
|
|
3
|
+
* PUT the bytes to it from THIS process.
|
|
4
|
+
*
|
|
5
|
+
* `forge/upload-proxy.ts` bridges the same api-server route for the ENGINE (a headless page that
|
|
6
|
+
* uploads its own `.vxl` bytes); this module is for bytes the CLI already holds — a creator's own
|
|
7
|
+
* `.glb`/`.vxl`/image/audio file (`bitmagic assets add`) or the publish thumbnail. One place for
|
|
8
|
+
* the two things every caller has to get right:
|
|
9
|
+
*
|
|
10
|
+
* - **The PUT's headers must match what the signature bound.** api-server signs `Content-Type`,
|
|
11
|
+
* `Cache-Control` and — for the content types it marks compressible (`application/octet-stream`,
|
|
12
|
+
* `application/json`, ...) — `Content-Encoding: gzip`. A header that differs is a 403 from GCS,
|
|
13
|
+
* which reads like an auth problem and is not one.
|
|
14
|
+
* - **`Content-Encoding: gzip` means the bytes are gzipped**, not merely labelled. The engine's
|
|
15
|
+
* `StorageUploadUtil` gzips before it PUTs; so does this. A creator's `.vxl` uploaded raw under a
|
|
16
|
+
* gzip label would be served with the wrong encoding and fail to load in every browser.
|
|
17
|
+
*
|
|
18
|
+
* Status mapping is this module's own rather than `http/client.ts`'s `request()`, because that one
|
|
19
|
+
* reads every 403 as a Bitmagic Pro refusal. Here a 403 is more often "you do not own this game"
|
|
20
|
+
* (api-server's `assertOwnsGame`, which answers `{ error }` with no `code`) — telling that creator
|
|
21
|
+
* to subscribe would send them somewhere that cannot help.
|
|
22
|
+
*/
|
|
23
|
+
import * as zlib from 'zlib';
|
|
24
|
+
import { CliError } from '../errors.js';
|
|
25
|
+
import { proRefusal } from './client.js';
|
|
26
|
+
import { isJsonObject } from '../project/world-json.js';
|
|
27
|
+
import { apiServerHeaders } from '../telemetry/request-headers.js';
|
|
28
|
+
/** The api-server route; the same one `forge/upload-proxy.ts` forwards the engine to. */
|
|
29
|
+
export const SIGNED_UPLOAD_PATH = '/api/cli/v1/uploads/signed-url';
|
|
30
|
+
async function readJsonBody(response) {
|
|
31
|
+
try {
|
|
32
|
+
const parsed = await response.json();
|
|
33
|
+
return isJsonObject(parsed) ? parsed : {};
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Ask api-server for a presigned PUT under `worlds/v3/<gameId>/`. Ownership is checked there
|
|
41
|
+
* before anything is minted, so a refusal here has cost nothing and changed nothing.
|
|
42
|
+
*/
|
|
43
|
+
export async function mintSignedUpload(environment, accessToken, body, deps) {
|
|
44
|
+
const url = `${environment.apiUrl}${SIGNED_UPLOAD_PATH}`;
|
|
45
|
+
let response;
|
|
46
|
+
try {
|
|
47
|
+
response = await deps.fetch(url, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: {
|
|
50
|
+
...apiServerHeaders(),
|
|
51
|
+
Authorization: `Bearer ${accessToken}`,
|
|
52
|
+
'Content-Type': 'application/json',
|
|
53
|
+
Accept: 'application/json',
|
|
54
|
+
},
|
|
55
|
+
body: JSON.stringify(body),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
throw new CliError(`Cannot reach api-server at ${environment.apiUrl}.`, 1, 'unreachable');
|
|
60
|
+
}
|
|
61
|
+
if (response.ok) {
|
|
62
|
+
const parsed = await readJsonBody(response);
|
|
63
|
+
if (typeof parsed.signedUrl !== 'string' || typeof parsed.publicUrl !== 'string') {
|
|
64
|
+
throw new CliError('api-server minted an upload URL this CLI cannot read — is it newer than this CLI?');
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
signedUrl: parsed.signedUrl,
|
|
68
|
+
publicUrl: parsed.publicUrl,
|
|
69
|
+
// Absent, not ''. The value is bound into the V4 signature, so sending an empty header the
|
|
70
|
+
// server never signed is a GCS 403 that reads like an auth failure.
|
|
71
|
+
...(typeof parsed.cacheControl === 'string' && parsed.cacheControl !== ''
|
|
72
|
+
? { cacheControl: parsed.cacheControl }
|
|
73
|
+
: {}),
|
|
74
|
+
...(typeof parsed.contentEncoding === 'string' && parsed.contentEncoding !== ''
|
|
75
|
+
? { contentEncoding: parsed.contentEncoding }
|
|
76
|
+
: {}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (response.status === 401) {
|
|
80
|
+
throw new CliError('Your session has expired. Run `bitmagic login`.', 1, 'session_expired');
|
|
81
|
+
}
|
|
82
|
+
if (response.status === 403) {
|
|
83
|
+
// Two different refusals share the status: the Pro gate on every /api/cli/v1 route (which
|
|
84
|
+
// carries a `code`), and this route's own ownership check (which carries only `error`).
|
|
85
|
+
const clone = response.clone();
|
|
86
|
+
const parsed = await readJsonBody(response);
|
|
87
|
+
if (parsed.code === 'pro_expired' || parsed.code === 'pro_required') {
|
|
88
|
+
const refusal = await proRefusal(clone);
|
|
89
|
+
throw new CliError(refusal.message, 1, refusal.code);
|
|
90
|
+
}
|
|
91
|
+
throw new CliError(`You do not own game "${body.gameId}", so nothing can be uploaded to it. `
|
|
92
|
+
+ 'Check the gameId in bitmagic.json.', 1, 'not_owner');
|
|
93
|
+
}
|
|
94
|
+
if (response.status === 400) {
|
|
95
|
+
const parsed = await readJsonBody(response);
|
|
96
|
+
const message = typeof parsed.error === 'string' ? parsed.error : 'api-server rejected the upload request.';
|
|
97
|
+
throw new CliError(`api-server refused to mint an upload URL: ${message}`);
|
|
98
|
+
}
|
|
99
|
+
if (response.status === 503) {
|
|
100
|
+
throw new CliError(`api-server reported uploads are unavailable in the "${environment.name}" environment.`, 1, 'unavailable');
|
|
101
|
+
}
|
|
102
|
+
throw new CliError(`api-server returned HTTP ${response.status} for ${SIGNED_UPLOAD_PATH}.`, 1, 'http_error');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Raw PUT of already-prepared bytes to a GCS V4 signed URL.
|
|
106
|
+
*
|
|
107
|
+
* `headers` must match exactly what the URL's signature bound (Content-Type, Cache-Control, and
|
|
108
|
+
* Content-Encoding when the server chose to gzip). A mismatch is a 403 from GCS, not a stale-cache
|
|
109
|
+
* symptom; see cli-publish.ts's and cli-uploads.ts's own doc comments for why.
|
|
110
|
+
*/
|
|
111
|
+
export async function putSignedUrl(url, body, headers, deps, options = {}) {
|
|
112
|
+
const exitCode = options.exitCode ?? 1;
|
|
113
|
+
let response;
|
|
114
|
+
try {
|
|
115
|
+
// `@types/node`'s ambient `Uint8Array` (generic over `ArrayBufferLike` since TS 5.7) does not
|
|
116
|
+
// structurally match this project's `BodyInit` (this tsconfig's `"DOM"` lib pulls in lib.dom's
|
|
117
|
+
// own copy, which `@types/node`'s conditional global-augmentation defers to whenever DOM
|
|
118
|
+
// globals are present — see node_modules/@types/node/web-globals/fetch.d.ts). Deriving the
|
|
119
|
+
// body type from `Parameters<typeof fetch>[1]` instead of naming `BodyInit` was tried and hits
|
|
120
|
+
// the identical mismatch, because it resolves to the same lib.dom type in THIS project. Both a
|
|
121
|
+
// `string` and a `Uint8Array` are valid `fetch` bodies at runtime regardless.
|
|
122
|
+
response = await deps.fetch(url, { method: 'PUT', headers, body: body });
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
126
|
+
throw new CliError(`Could not upload to storage: ${message}`, exitCode);
|
|
127
|
+
}
|
|
128
|
+
if (!response.ok) {
|
|
129
|
+
const text = await response.text().catch(() => '');
|
|
130
|
+
throw new CliError(`Upload to storage failed: HTTP ${response.status}${text ? ` — ${text.slice(0, 200)}` : ''}`, exitCode);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* PUT `bytes` to the URL `mintSignedUpload` returned, gzipping first when the server bound
|
|
135
|
+
* `Content-Encoding: gzip` into the signature. `contentType` is the SAME value the caller minted
|
|
136
|
+
* with (the server never echoes it back), while `cacheControl` and `contentEncoding` are read off
|
|
137
|
+
* the signed response, because the server — not the caller — decides both.
|
|
138
|
+
*
|
|
139
|
+
* Returns the byte count that actually went over the wire, which is also what is stored.
|
|
140
|
+
*/
|
|
141
|
+
export async function putSignedUpload(signed, bytes, contentType, deps, options = {}) {
|
|
142
|
+
const headers = { 'Content-Type': contentType };
|
|
143
|
+
if (signed.cacheControl !== undefined && signed.cacheControl !== '') {
|
|
144
|
+
headers['Cache-Control'] = signed.cacheControl;
|
|
145
|
+
}
|
|
146
|
+
let body = bytes;
|
|
147
|
+
if (signed.contentEncoding !== undefined && signed.contentEncoding !== '') {
|
|
148
|
+
// Only gzip is implemented, and an encoding this code cannot PRODUCE must not be advertised:
|
|
149
|
+
// labelling raw bytes `br` because the server started signing brotli would store an object no
|
|
150
|
+
// browser can decode. Refused loudly instead, before anything is written.
|
|
151
|
+
if (signed.contentEncoding !== 'gzip') {
|
|
152
|
+
throw new CliError(`api-server asked for Content-Encoding "${signed.contentEncoding}", which this CLI cannot produce. `
|
|
153
|
+
+ 'Run `bitmagic upgrade` or update the CLI.');
|
|
154
|
+
}
|
|
155
|
+
headers['Content-Encoding'] = signed.contentEncoding;
|
|
156
|
+
body = new Uint8Array(zlib.gzipSync(bytes));
|
|
157
|
+
}
|
|
158
|
+
await putSignedUrl(signed.signedUrl, body, headers, deps, options);
|
|
159
|
+
return { storedBytes: body.byteLength };
|
|
160
|
+
}
|
|
161
|
+
/** Mint and PUT in one call — the whole upload for a file the CLI holds in memory. */
|
|
162
|
+
export async function uploadProjectFile(environment, accessToken, input, deps) {
|
|
163
|
+
const { bytes, ...request } = input;
|
|
164
|
+
const signed = await mintSignedUpload(environment, accessToken, request, deps);
|
|
165
|
+
const { storedBytes } = await putSignedUpload(signed, bytes, request.contentType, deps);
|
|
166
|
+
return { url: signed.publicUrl, storedBytes };
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=signed-upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signed-upload.js","sourceRoot":"","sources":["../../src/http/signed-upload.ts"],"names":[],"mappings":"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"}
|
package/dist/judge/facts.js
CHANGED
|
@@ -14,20 +14,27 @@
|
|
|
14
14
|
* events, console tail. It rides in the request's `verifyContext` field.
|
|
15
15
|
*/
|
|
16
16
|
import { MAX_JUDGE_VERIFY_CHARS } from '@bitmagic/asset-core';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Scene facts from world.json
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
17
20
|
function isRecord(value) {
|
|
18
21
|
return typeof value === 'object' && value !== null;
|
|
19
22
|
}
|
|
20
|
-
|
|
23
|
+
/** The records inside an untrusted JSON array; empty when it is not an array at all. */
|
|
24
|
+
function toRecords(value) {
|
|
25
|
+
return Array.isArray(value) ? value.filter(isRecord) : [];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The `cap` most common keys, commonest first, as `name×n` — the `×n` dropped
|
|
29
|
+
* for a single occurrence. Items whose key is null are left out entirely.
|
|
30
|
+
*/
|
|
31
|
+
function formatCounts(items, key, cap) {
|
|
21
32
|
const totals = new Map();
|
|
22
33
|
for (const item of items) {
|
|
23
34
|
const k = key(item);
|
|
24
|
-
if (k
|
|
25
|
-
|
|
26
|
-
totals.set(k, (totals.get(k) ?? 0) + 1);
|
|
35
|
+
if (k !== null)
|
|
36
|
+
totals.set(k, (totals.get(k) ?? 0) + 1);
|
|
27
37
|
}
|
|
28
|
-
return totals;
|
|
29
|
-
}
|
|
30
|
-
function formatCounts(totals, cap) {
|
|
31
38
|
return [...totals.entries()]
|
|
32
39
|
.sort((a, b) => b[1] - a[1])
|
|
33
40
|
.slice(0, cap)
|
|
@@ -48,19 +55,17 @@ export function buildSceneFacts(world) {
|
|
|
48
55
|
if (!isRecord(world))
|
|
49
56
|
return null;
|
|
50
57
|
const lines = [];
|
|
51
|
-
const objects =
|
|
52
|
-
? world.environmentObjects.filter(isRecord)
|
|
53
|
-
: [];
|
|
58
|
+
const objects = toRecords(world.environmentObjects);
|
|
54
59
|
if (objects.length > 0) {
|
|
55
|
-
const byType =
|
|
56
|
-
lines.push(`Placed objects: ${objects.length} (${
|
|
60
|
+
const byType = formatCounts(objects, (o) => (typeof o.type === 'string' ? o.type : null), 12);
|
|
61
|
+
lines.push(`Placed objects: ${objects.length} (${byType}).`);
|
|
57
62
|
const xs = [];
|
|
58
63
|
const zs = [];
|
|
59
|
-
for (const
|
|
60
|
-
const
|
|
61
|
-
if (isRecord(
|
|
62
|
-
xs.push(
|
|
63
|
-
zs.push(
|
|
64
|
+
for (const object of objects) {
|
|
65
|
+
const position = object.position;
|
|
66
|
+
if (isRecord(position) && typeof position.x === 'number' && typeof position.z === 'number') {
|
|
67
|
+
xs.push(position.x);
|
|
68
|
+
zs.push(position.z);
|
|
64
69
|
}
|
|
65
70
|
}
|
|
66
71
|
if (xs.length > 0) {
|
|
@@ -71,51 +76,50 @@ export function buildSceneFacts(world) {
|
|
|
71
76
|
else {
|
|
72
77
|
lines.push('Placed objects: none.');
|
|
73
78
|
}
|
|
74
|
-
const assets =
|
|
79
|
+
const assets = toRecords(world.assets);
|
|
75
80
|
if (assets.length > 0) {
|
|
76
|
-
const byType =
|
|
81
|
+
const byType = formatCounts(assets, (a) => (typeof a.type === 'string' ? a.type : 'unknown'), 8);
|
|
77
82
|
const names = assets
|
|
78
|
-
.map((a) =>
|
|
79
|
-
.filter((n) => n
|
|
83
|
+
.map((a) => a.name)
|
|
84
|
+
.filter((n) => typeof n === 'string')
|
|
80
85
|
.slice(0, 15);
|
|
81
|
-
lines.push(`Assets: ${assets.length} (${
|
|
86
|
+
lines.push(`Assets: ${assets.length} (${byType})${names.length > 0 ? ` — ${names.join(', ')}` : ''}.`);
|
|
82
87
|
}
|
|
83
88
|
else {
|
|
84
89
|
lines.push('Assets: none.');
|
|
85
90
|
}
|
|
86
|
-
const profile = isRecord(world.worldProfileData) ? world.worldProfileData :
|
|
91
|
+
const profile = isRecord(world.worldProfileData) ? world.worldProfileData : null;
|
|
87
92
|
if (profile) {
|
|
88
|
-
const ground = typeof profile.groundWorldSizeX === 'number' && typeof profile.groundWorldSizeZ === 'number'
|
|
89
|
-
? `${profile.groundWorldSizeX}×${profile.groundWorldSizeZ}`
|
|
90
|
-
: null;
|
|
91
93
|
const spawn = isRecord(profile.playerSpawnPosition) ? profile.playerSpawnPosition : null;
|
|
92
94
|
const hud = isRecord(profile.hud) ? profile.hud : null;
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
+
const startScreen = hud && isRecord(hud.startScreen) ? hud.startScreen : null;
|
|
96
|
+
// Absence is stated as plainly as presence: "no custom skybox" is itself a
|
|
97
|
+
// finding the judge should be able to make without inspecting pixels.
|
|
95
98
|
const details = [
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
typeof profile.groundWorldSizeX === 'number' && typeof profile.groundWorldSizeZ === 'number'
|
|
100
|
+
? `ground ${profile.groundWorldSizeX}×${profile.groundWorldSizeZ}`
|
|
101
|
+
: null,
|
|
102
|
+
typeof profile.skyboxUrl === 'string' && profile.skyboxUrl ? 'custom skybox' : 'no custom skybox',
|
|
103
|
+
spawn && typeof spawn.x === 'number' ? `spawn at (${spawn.x}, ${spawn.y}, ${spawn.z})` : null,
|
|
104
|
+
typeof startScreen?.imageUrl === 'string' ? 'start-screen cover art set' : 'no start-screen cover art',
|
|
105
|
+
].filter((detail) => detail !== null);
|
|
106
|
+
lines.push(`World: ${details.join(', ')}.`);
|
|
103
107
|
}
|
|
104
|
-
return lines.
|
|
108
|
+
return lines.join('\n');
|
|
105
109
|
}
|
|
106
110
|
// ---------------------------------------------------------------------------
|
|
107
111
|
// Run facts from the verify record
|
|
108
112
|
// ---------------------------------------------------------------------------
|
|
109
|
-
/**
|
|
113
|
+
/** What to report when only engine `state` events fired — see verify/events.ts. */
|
|
110
114
|
const GAMEPLAY_EVENT_HINT = 'no gameplay events (deaths, pickups, score, match-end) fired during the run';
|
|
111
115
|
function describeEvents(record) {
|
|
112
116
|
const events = record.events;
|
|
113
117
|
if (!events)
|
|
114
118
|
return null;
|
|
115
|
-
const
|
|
116
|
-
if (
|
|
119
|
+
const gameplay = Object.entries(events.totalByType).filter(([type]) => type !== 'state');
|
|
120
|
+
if (gameplay.length === 0)
|
|
117
121
|
return `Gameplay events: ${GAMEPLAY_EVENT_HINT}.`;
|
|
118
|
-
const summary =
|
|
122
|
+
const summary = gameplay
|
|
119
123
|
.sort((a, b) => b[1] - a[1])
|
|
120
124
|
.map(([type, n]) => `${type}×${n}`)
|
|
121
125
|
.join(', ');
|
|
@@ -125,21 +129,32 @@ function describeEvents(record) {
|
|
|
125
129
|
return `Gameplay events: ${summary}${matchEnd}.`;
|
|
126
130
|
}
|
|
127
131
|
function describeRun(record) {
|
|
132
|
+
const parts = [`verify ${record.ok ? 'passed' : 'FAILED'}`];
|
|
133
|
+
if (record.failures.length > 0)
|
|
134
|
+
parts.push(`failures: ${record.failures.join('; ')}`);
|
|
135
|
+
if (record.warnings.length > 0)
|
|
136
|
+
parts.push(`warnings: ${record.warnings.join('; ')}`);
|
|
137
|
+
if (record.settle) {
|
|
138
|
+
parts.push(`settled in ${(record.settle.durationMs / 1000).toFixed(1)}s (${record.settle.reason})`);
|
|
139
|
+
}
|
|
128
140
|
const snapshot = record.snapshot;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
if (snapshot) {
|
|
142
|
+
const { fps, gameState, player, physics, scene, npcCount } = snapshot;
|
|
143
|
+
if (fps !== null)
|
|
144
|
+
parts.push(`${fps} fps`);
|
|
145
|
+
if (gameState)
|
|
146
|
+
parts.push(`state ${gameState}`);
|
|
147
|
+
if (player) {
|
|
148
|
+
const at = `(${Math.round(player.x)}, ${Math.round(player.y)}, ${Math.round(player.z)})`;
|
|
149
|
+
parts.push(`player at ${at}${player.isFalling ? ', FALLING' : ''}`);
|
|
150
|
+
}
|
|
151
|
+
if (physics)
|
|
152
|
+
parts.push(`${physics.rigidBodyCount} rigid bodies`);
|
|
153
|
+
if (scene)
|
|
154
|
+
parts.push(`scene: ${scene.objects} objects, ${scene.meshes} meshes, ${scene.lights} lights`);
|
|
155
|
+
if (npcCount !== null)
|
|
156
|
+
parts.push(`${npcCount} NPCs`);
|
|
157
|
+
}
|
|
143
158
|
return parts.join(' · ');
|
|
144
159
|
}
|
|
145
160
|
/**
|
|
@@ -155,9 +170,9 @@ export function buildVerifyContext(record, consoleTail) {
|
|
|
155
170
|
if (events)
|
|
156
171
|
parts.push(events);
|
|
157
172
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
173
|
+
const tail = consoleTail?.trim();
|
|
174
|
+
if (tail)
|
|
175
|
+
parts.push(`Console tail:\n${tail}`);
|
|
161
176
|
if (parts.length === 0)
|
|
162
177
|
return null;
|
|
163
178
|
return parts.join('\n\n').slice(0, MAX_JUDGE_VERIFY_CHARS);
|
package/dist/judge/facts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts.js","sourceRoot":"","sources":["../../src/judge/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"facts.js","sourceRoot":"","sources":["../../src/judge/facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,wFAAwF;AACxF,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAI,KAAU,EAAE,GAA+B,EAAE,GAAW;IAC/E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,KAAK,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;SACb,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC;QAE7D,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3F,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,MAAM,KAAK,GAAG,MAAM;aACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;aACjD,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzG,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACvD,MAAM,WAAW,GAAG,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,OAAO,GAAG;YACd,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ;gBAC1F,CAAC,CAAC,UAAU,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAClE,CAAC,CAAC,IAAI;YACR,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB;YACjG,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;YAC7F,OAAO,WAAW,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,2BAA2B;SACvG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,mFAAmF;AACnF,MAAM,mBAAmB,GAAG,6EAA6E,CAAC;AAE1G,SAAS,cAAc,CAAC,MAAuB;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACzF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAoB,mBAAmB,GAAG,CAAC;IAC7E,MAAM,OAAO,GAAG,QAAQ;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;SAClC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,KAAK,IAAI;QAChD,CAAC,CAAC,wBAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG;QACjE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,oBAAoB,OAAO,GAAG,QAAQ,GAAG,CAAC;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,MAAM,KAAK,GAAG,CAAC,UAAU,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACtE,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;QAC3C,IAAI,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,cAAc,eAAe,CAAC,CAAC;QAClE,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,aAAa,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;QACzG,IAAI,QAAQ,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA8B,EAAE,WAA0B;IAC3F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/project/jobs.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ForgeProgressSnapshot } from '../forge/progress.js';
|
|
2
2
|
import type { ForgeLayoutMap } from '@bitmagic/world-forger/pipeline/index.js';
|
|
3
3
|
/** Which command is running. Shown as-is in the dev view, so these are creator-facing words. */
|
|
4
|
-
export type JobKind = 'skybox' | 'sound' | 'image' | 'character' | 'animation' | 'prop' | 'vehicle' | 'forge' | 'cover' | 'hq' | 'judge';
|
|
4
|
+
export type JobKind = 'skybox' | 'sound' | 'image' | 'character' | 'animation' | 'prop' | 'vehicle' | 'forge' | 'cover' | 'hq' | 'judge' | 'upload';
|
|
5
5
|
export interface JobRecord {
|
|
6
6
|
jobId: string;
|
|
7
7
|
kind: JobKind;
|
package/dist/project/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/project/jobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/project/jobs.ts"],"names":[],"mappings":"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"}
|
package/dist/publish/client.js
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The HTTP client for `bitmagic publish`: the two authorizing calls to api-server
|
|
3
3
|
* (`publish/begin`, `publish/complete`), the thumbnail's signed-upload lane
|
|
4
|
-
* (`uploads/signed-url`, the same route `forge/upload-proxy.ts` bridges for the browser
|
|
5
|
-
*
|
|
4
|
+
* (`uploads/signed-url`, the same route `forge/upload-proxy.ts` bridges for the browser and
|
|
5
|
+
* `bitmagic assets add` uploads through), and the raw PUTs against the signed GCS URLs those calls
|
|
6
|
+
* mint — which go through `http/signed-upload.ts`, pinned to this lane's exit code.
|
|
6
7
|
*
|
|
7
8
|
* `publishExitCode` is the one status→exit-code mapping every call above shares, so `publish.ts`
|
|
8
9
|
* never has to duplicate the 401/403/409 distinctions per call site.
|
|
9
10
|
*/
|
|
10
11
|
import { CliError } from '../errors.js';
|
|
11
12
|
import { apiServerHeaders } from '../telemetry/request-headers.js';
|
|
13
|
+
import { putSignedUrl as putSignedUrlShared, putSignedUpload } from '../http/signed-upload.js';
|
|
14
|
+
/**
|
|
15
|
+
* The publish lane's exit code for a failed PUT is 6 (README "Exit codes": upload or finalize
|
|
16
|
+
* failed, usually transient), so every raw PUT here goes through the shared helper with it pinned.
|
|
17
|
+
*/
|
|
18
|
+
const PUBLISH_UPLOAD_EXIT_CODE = 6;
|
|
19
|
+
function putSignedUrl(url, body, headers, deps) {
|
|
20
|
+
return putSignedUrlShared(url, body, headers, deps, { exitCode: PUBLISH_UPLOAD_EXIT_CODE });
|
|
21
|
+
}
|
|
12
22
|
function isRecord(value) {
|
|
13
23
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
14
24
|
}
|
|
@@ -95,34 +105,6 @@ async function postJson(url, accessToken, body, deps) {
|
|
|
95
105
|
const message = stringField(parsedError.error) ?? `api-server returned HTTP ${response.status} for ${url}.`;
|
|
96
106
|
throw new CliError(message, publishExitCode(response.status, { code }));
|
|
97
107
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Raw PUT of already-prepared bytes to a GCS V4 signed URL.
|
|
100
|
-
*
|
|
101
|
-
* `headers` must match exactly what the URL's signature bound (Cache-Control, and — for the
|
|
102
|
-
* thumbnail lane — Content-Encoding when the server chose to gzip). A mismatch is a 403 from GCS,
|
|
103
|
-
* not a stale-cache symptom; see cli-publish.ts's and cli-uploads.ts's own doc comments for why.
|
|
104
|
-
*/
|
|
105
|
-
async function putSignedUrl(url, body, headers, deps) {
|
|
106
|
-
let response;
|
|
107
|
-
try {
|
|
108
|
-
// `@types/node`'s ambient `Uint8Array` (generic over `ArrayBufferLike` since TS 5.7) does not
|
|
109
|
-
// structurally match this project's `BodyInit` (this tsconfig's `"DOM"` lib pulls in lib.dom's
|
|
110
|
-
// own copy, which `@types/node`'s conditional global-augmentation defers to whenever DOM
|
|
111
|
-
// globals are present — see node_modules/@types/node/web-globals/fetch.d.ts). Deriving the
|
|
112
|
-
// body type from `Parameters<typeof fetch>[1]` instead of naming `BodyInit` was tried and hits
|
|
113
|
-
// the identical mismatch, because it resolves to the same lib.dom type in THIS project. Both a
|
|
114
|
-
// `string` and a `Uint8Array` are valid `fetch` bodies at runtime regardless.
|
|
115
|
-
response = await deps.fetch(url, { method: 'PUT', headers, body: body });
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
119
|
-
throw new CliError(`Could not upload to storage: ${message}`, 6);
|
|
120
|
-
}
|
|
121
|
-
if (!response.ok) {
|
|
122
|
-
const text = await response.text().catch(() => '');
|
|
123
|
-
throw new CliError(`Upload to storage failed: HTTP ${response.status}${text ? ` — ${text.slice(0, 200)}` : ''}`, 6);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
108
|
export async function beginPublish(environment, accessToken, body, deps) {
|
|
127
109
|
return postJson(`${environment.apiUrl}/api/cli/v1/publish/begin`, accessToken, body, deps);
|
|
128
110
|
}
|
|
@@ -160,9 +142,6 @@ export async function requestThumbnailUploadUrl(environment, accessToken, body,
|
|
|
160
142
|
* the server — not this lane — decides both.
|
|
161
143
|
*/
|
|
162
144
|
export async function putThumbnail(signed, bytes, contentType, deps) {
|
|
163
|
-
|
|
164
|
-
if (signed.contentEncoding)
|
|
165
|
-
headers['Content-Encoding'] = signed.contentEncoding;
|
|
166
|
-
await putSignedUrl(signed.signedUrl, bytes, headers, deps);
|
|
145
|
+
await putSignedUpload(signed, bytes, contentType, deps, { exitCode: PUBLISH_UPLOAD_EXIT_CODE });
|
|
167
146
|
}
|
|
168
147
|
//# sourceMappingURL=client.js.map
|