Files
wehub-resource-sync 6ede33ccdb
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, cpu, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64, , runner, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / compute_version (push) Waiting to run
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu126, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda126, production, true, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / verify_digests (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cpu, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64, , production, false, cpu) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, cu128, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64, -cuda, production, true, cuda) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda, cuda) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend, -cuda126, cuda126) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web, , cpu) (push) Blocked by required conditions
Build and Push Docker Images / finalize_release (push) Blocked by required conditions
Obsidian Plugin Lint / lint (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:33:44 +08:00

51 lines
2.0 KiB
TypeScript

/**
* Runnable self-check for the API-reference snippet generator. No test
* framework — run with: ``npx tsx lib/playground/code-snippets.selfcheck.ts``
* Exits non-zero on the first failed assertion.
*/
import assert from "node:assert/strict";
import { buildExamplePayload, buildSnippets } from "./code-snippets";
import type { FormField } from "./json-schema";
const fields: FormField[] = [
{ name: "urls", title: "Urls", kind: "string_array", required: true },
{ name: "sort", title: "Sort", kind: "enum", required: false, default: "new" },
{ name: "limit", title: "Limit", kind: "integer", required: false },
{ name: "query", title: "Query", kind: "string", required: true },
];
// Required fields get placeholders, optional-with-default keeps the default,
// optional-without-default is omitted.
const payload = buildExamplePayload(fields);
assert.deepEqual(payload, {
urls: ["<urls>"],
sort: "new",
query: "<query>",
});
const snippets = buildSnippets("https://api.example.com", "/api/v1/workspaces/1/scrapers/x/y", payload);
// Every popular language is present.
assert.deepEqual(
snippets.map((s) => s.id),
["curl", "python", "javascript", "typescript", "go", "java", "csharp", "php", "ruby"]
);
for (const snippet of snippets) {
// Each snippet targets the right endpoint and authenticates with the env key.
assert.ok(
snippet.code.includes("https://api.example.com/api/v1/workspaces/1/scrapers/x/y"),
`${snippet.id}: missing url`
);
assert.ok(snippet.code.includes("SURFSENSE_API_KEY"), `${snippet.id}: missing auth env var`);
// The payload made it into the body (PHP re-renders it as an array literal).
const marker = snippet.id === "php" ? '"urls" =>' : '"urls"';
assert.ok(snippet.code.includes(marker), `${snippet.id}: missing payload`);
}
// PHP array rendering handles nesting.
const php = snippets.find((s) => s.id === "php");
assert.ok(php?.code.includes('"sort" => "new"'), "php: enum default not rendered");
console.log("code-snippets.selfcheck: all assertions passed");