@malloy-publisher/server 0.0.235 → 0.0.236
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/dist/app/api-doc.yaml +47 -17
- package/dist/package_load_worker.mjs +8 -1
- package/dist/server.mjs +471 -54
- package/package.json +5 -2
- package/.eslintrc.json +0 -44
- package/.prettierignore +0 -1
- package/.prettierrc +0 -4
- package/build.ts +0 -97
- package/eslint.config.mjs +0 -76
- package/k6-tests/README.md +0 -144
- package/k6-tests/bun.lock +0 -797
- package/k6-tests/load-test/load-test-crud-connections.ts +0 -263
- package/k6-tests/load-test/load-test-crud-packages.ts +0 -461
- package/k6-tests/load-test/load-test-crud-projects.ts +0 -160
- package/k6-tests/load-test/load-test-crud.ts +0 -142
- package/k6-tests/load-test/load-test.ts +0 -784
- package/k6-tests/package.json +0 -27
- package/k6-tests/scripts/run-with-otel.sh +0 -50
- package/k6-tests/smoke-test/smoke-test.ts +0 -158
- package/k6-tests/tsconfig.json +0 -29
- package/k6-tests/utils/client_factory.ts +0 -128
- package/k6-tests/utils/common.ts +0 -489
- package/k6-tests/utils/logger.ts +0 -62
- package/k6-tests/utils/types.d.ts +0 -35
- package/malloy_mcp.dxt +0 -0
- package/publisher.config.example.bigquery.json +0 -33
- package/publisher.config.example.duckdb.json +0 -23
- package/publisher.config.json +0 -23
- package/scripts/bake-duckdb-extensions.js +0 -110
- package/src/config.spec.ts +0 -1535
- package/src/config.theme.spec.ts +0 -178
- package/src/config.ts +0 -1142
- package/src/constants.ts +0 -105
- package/src/controller/compile.controller.ts +0 -40
- package/src/controller/connection.controller.spec.ts +0 -849
- package/src/controller/connection.controller.ts +0 -901
- package/src/controller/database.controller.ts +0 -24
- package/src/controller/materialization.controller.spec.ts +0 -293
- package/src/controller/materialization.controller.ts +0 -319
- package/src/controller/model.controller.ts +0 -164
- package/src/controller/package.controller.spec.ts +0 -273
- package/src/controller/package.controller.ts +0 -306
- package/src/controller/query.controller.ts +0 -152
- package/src/controller/theme.controller.ts +0 -83
- package/src/controller/watch-mode.controller.ts +0 -243
- package/src/data_styles.ts +0 -71
- package/src/default-publisher.config.json +0 -23
- package/src/ducklake_version.spec.ts +0 -163
- package/src/ducklake_version.ts +0 -153
- package/src/errors.spec.ts +0 -119
- package/src/errors.ts +0 -237
- package/src/filter_deprecation.spec.ts +0 -64
- package/src/filter_deprecation.ts +0 -42
- package/src/health.spec.ts +0 -123
- package/src/health.ts +0 -233
- package/src/heap_check.spec.ts +0 -144
- package/src/heap_check.ts +0 -144
- package/src/instrumentation.ts +0 -214
- package/src/json_utils.spec.ts +0 -51
- package/src/json_utils.ts +0 -33
- package/src/logger.spec.ts +0 -210
- package/src/logger.ts +0 -251
- package/src/malloy_pin_prereqs.spec.ts +0 -25
- package/src/materialization_metrics.spec.ts +0 -169
- package/src/materialization_metrics.ts +0 -346
- package/src/mcp/error_messages.spec.ts +0 -35
- package/src/mcp/error_messages.ts +0 -183
- package/src/mcp/handler_utils.spec.ts +0 -108
- package/src/mcp/handler_utils.ts +0 -251
- package/src/mcp/mcp_constants.ts +0 -6
- package/src/mcp/query_envelope.spec.ts +0 -229
- package/src/mcp/query_envelope.ts +0 -240
- package/src/mcp/server.protocol.spec.ts +0 -250
- package/src/mcp/server.ts +0 -87
- package/src/mcp/skills/build_skills_bundle.spec.ts +0 -51
- package/src/mcp/skills/build_skills_bundle.ts +0 -176
- package/src/mcp/skills/skills_bundle.json +0 -1
- package/src/mcp/skills/skills_bundle.spec.ts +0 -171
- package/src/mcp/tool_response.spec.ts +0 -108
- package/src/mcp/tool_response.ts +0 -138
- package/src/mcp/tools/compile_tool.spec.ts +0 -315
- package/src/mcp/tools/compile_tool.ts +0 -208
- package/src/mcp/tools/docs_search/build_docs_index.ts +0 -132
- package/src/mcp/tools/docs_search/malloy_docs_index.json +0 -1
- package/src/mcp/tools/docs_search_tool.spec.ts +0 -32
- package/src/mcp/tools/docs_search_tool.ts +0 -128
- package/src/mcp/tools/embedding_index.spec.ts +0 -1236
- package/src/mcp/tools/embedding_index.ts +0 -808
- package/src/mcp/tools/execute_query_tool.spec.ts +0 -294
- package/src/mcp/tools/execute_query_tool.ts +0 -316
- package/src/mcp/tools/get_context_eval.ts +0 -275
- package/src/mcp/tools/get_context_tool.spec.ts +0 -592
- package/src/mcp/tools/get_context_tool.ts +0 -585
- package/src/mcp/tools/reload_package_tool.spec.ts +0 -232
- package/src/mcp/tools/reload_package_tool.ts +0 -132
- package/src/mcp_config.spec.ts +0 -919
- package/src/mcp_config.ts +0 -425
- package/src/oom_guards.integration.spec.ts +0 -269
- package/src/package_load/package_load_pool.spec.ts +0 -252
- package/src/package_load/package_load_pool.ts +0 -931
- package/src/package_load/package_load_worker.ts +0 -1034
- package/src/package_load/protocol.ts +0 -364
- package/src/package_load/rpc_wait_accountant.spec.ts +0 -109
- package/src/package_load/rpc_wait_accountant.ts +0 -76
- package/src/package_load_metrics.spec.ts +0 -114
- package/src/package_load_metrics.ts +0 -127
- package/src/path_safety.spec.ts +0 -158
- package/src/path_safety.ts +0 -146
- package/src/pg_helpers.spec.ts +0 -223
- package/src/pg_helpers.ts +0 -52
- package/src/query_cap_metrics.spec.ts +0 -89
- package/src/query_cap_metrics.ts +0 -116
- package/src/query_concurrency.spec.ts +0 -247
- package/src/query_concurrency.ts +0 -237
- package/src/query_metadata_metrics.ts +0 -49
- package/src/query_param_utils.ts +0 -29
- package/src/query_timeout.spec.ts +0 -224
- package/src/query_timeout.ts +0 -179
- package/src/runtime/publisher.js +0 -328
- package/src/server-old.ts +0 -988
- package/src/server.ts +0 -2059
- package/src/service/annotations.spec.ts +0 -118
- package/src/service/annotations.ts +0 -91
- package/src/service/authorize.spec.ts +0 -154
- package/src/service/authorize.ts +0 -498
- package/src/service/authorize_integration.spec.ts +0 -2041
- package/src/service/build_plan.spec.ts +0 -685
- package/src/service/build_plan.ts +0 -797
- package/src/service/compile_authorize.spec.ts +0 -85
- package/src/service/compile_fragment_techniques.spec.ts +0 -156
- package/src/service/connection.spec.ts +0 -2360
- package/src/service/connection.ts +0 -2187
- package/src/service/connection_config.spec.ts +0 -734
- package/src/service/connection_config.ts +0 -899
- package/src/service/connection_federation.spec.ts +0 -184
- package/src/service/connection_fingerprint.spec.ts +0 -102
- package/src/service/connection_service.spec.ts +0 -711
- package/src/service/connection_service.ts +0 -291
- package/src/service/cron_evaluator.spec.ts +0 -79
- package/src/service/cron_evaluator.ts +0 -105
- package/src/service/db_utils.spec.ts +0 -1085
- package/src/service/db_utils.ts +0 -1502
- package/src/service/duckdb_instance_isolation.spec.ts +0 -137
- package/src/service/ducklake_lazy_attach.spec.ts +0 -110
- package/src/service/embedding_provider.spec.ts +0 -329
- package/src/service/embedding_provider.ts +0 -236
- package/src/service/environment.ts +0 -2191
- package/src/service/environment_admission.spec.ts +0 -344
- package/src/service/environment_compile.spec.ts +0 -197
- package/src/service/environment_store.spec.ts +0 -2274
- package/src/service/environment_store.ts +0 -2434
- package/src/service/environment_store_anchoring.spec.ts +0 -107
- package/src/service/environment_store_clone.spec.ts +0 -350
- package/src/service/explore_visibility.spec.ts +0 -434
- package/src/service/exports_probe.spec.ts +0 -107
- package/src/service/extension_fetch_policy.spec.ts +0 -256
- package/src/service/filter.spec.ts +0 -458
- package/src/service/filter.ts +0 -341
- package/src/service/filter_bypass.spec.ts +0 -418
- package/src/service/filter_integration.spec.ts +0 -1004
- package/src/service/freshness.spec.ts +0 -183
- package/src/service/freshness.ts +0 -112
- package/src/service/gcs_s3_utils.ts +0 -427
- package/src/service/given.ts +0 -105
- package/src/service/givens_integration.spec.ts +0 -219
- package/src/service/manifest_loader.spec.ts +0 -189
- package/src/service/manifest_loader.ts +0 -156
- package/src/service/materialization_build_session.spec.ts +0 -435
- package/src/service/materialization_build_session.ts +0 -681
- package/src/service/materialization_config_validation.spec.ts +0 -99
- package/src/service/materialization_config_validation.ts +0 -120
- package/src/service/materialization_eligibility.spec.ts +0 -158
- package/src/service/materialization_eligibility.ts +0 -305
- package/src/service/materialization_schedule_surface.spec.ts +0 -256
- package/src/service/materialization_scheduler.spec.ts +0 -289
- package/src/service/materialization_scheduler.ts +0 -304
- package/src/service/materialization_serve_transform.spec.ts +0 -1003
- package/src/service/materialization_serve_transform.ts +0 -779
- package/src/service/materialization_service.spec.ts +0 -2373
- package/src/service/materialization_service.ts +0 -2342
- package/src/service/materialization_test_fixtures.ts +0 -249
- package/src/service/model.spec.ts +0 -1157
- package/src/service/model.ts +0 -3370
- package/src/service/model_limits.spec.ts +0 -209
- package/src/service/model_limits.ts +0 -131
- package/src/service/model_storage_serve.spec.ts +0 -193
- package/src/service/model_storage_serve_joins.spec.ts +0 -193
- package/src/service/package.spec.ts +0 -612
- package/src/service/package.ts +0 -1799
- package/src/service/package_manifest.spec.ts +0 -230
- package/src/service/package_manifest.ts +0 -241
- package/src/service/package_memory_governor.spec.ts +0 -173
- package/src/service/package_memory_governor.ts +0 -233
- package/src/service/package_quote_bound_tables.spec.ts +0 -171
- package/src/service/package_race.spec.ts +0 -208
- package/src/service/package_reload_safety.spec.ts +0 -193
- package/src/service/package_rollback.spec.ts +0 -190
- package/src/service/package_worker_path.spec.ts +0 -645
- package/src/service/path_injection.spec.ts +0 -39
- package/src/service/persist_annotation_validation.spec.ts +0 -89
- package/src/service/persist_annotation_validation.ts +0 -59
- package/src/service/persistence_policy.spec.ts +0 -374
- package/src/service/proxy.spec.ts +0 -414
- package/src/service/proxy.ts +0 -248
- package/src/service/query_boundary.spec.ts +0 -470
- package/src/service/query_metadata.spec.ts +0 -408
- package/src/service/query_metadata.ts +0 -492
- package/src/service/query_metadata_identity.spec.ts +0 -149
- package/src/service/query_text.spec.ts +0 -79
- package/src/service/query_text.ts +0 -43
- package/src/service/quoting.spec.ts +0 -135
- package/src/service/quoting.ts +0 -78
- package/src/service/resolve_environment.ts +0 -15
- package/src/service/restricted_mode.spec.ts +0 -299
- package/src/service/source_extraction.ts +0 -225
- package/src/service/theme_store.ts +0 -199
- package/src/storage/DatabaseInterface.ts +0 -198
- package/src/storage/StorageManager.ts +0 -113
- package/src/storage/duckdb/ConnectionRepository.ts +0 -143
- package/src/storage/duckdb/DuckDBConnection.ts +0 -123
- package/src/storage/duckdb/DuckDBRepository.ts +0 -208
- package/src/storage/duckdb/EnvironmentRepository.ts +0 -148
- package/src/storage/duckdb/MaterializationRepository.spec.ts +0 -191
- package/src/storage/duckdb/MaterializationRepository.ts +0 -336
- package/src/storage/duckdb/PackageRepository.ts +0 -135
- package/src/storage/duckdb/schema.ts +0 -229
- package/src/stream_helpers.spec.ts +0 -280
- package/src/stream_helpers.ts +0 -162
- package/src/telemetry.ts +0 -20
- package/src/test_helpers/metrics_harness.ts +0 -166
- package/src/theme_key_parity.spec.ts +0 -57
- package/src/utils.ts +0 -29
- package/tests/fixtures/authorize-compile/model.malloy +0 -9
- package/tests/fixtures/authorize-compile/publisher.json +0 -4
- package/tests/fixtures/html-pages-nopublic/model.malloy +0 -1
- package/tests/fixtures/html-pages-nopublic/publisher.json +0 -5
- package/tests/fixtures/html-pages-test/data.csv +0 -3
- package/tests/fixtures/html-pages-test/public/assets/app.css +0 -3
- package/tests/fixtures/html-pages-test/public/barehtml.html +0 -4
- package/tests/fixtures/html-pages-test/public/bodymeta.html +0 -8
- package/tests/fixtures/html-pages-test/public/data.json +0 -1
- package/tests/fixtures/html-pages-test/public/fitcomment.html +0 -11
- package/tests/fixtures/html-pages-test/public/index.html +0 -9
- package/tests/fixtures/html-pages-test/public/nohead.html +0 -8
- package/tests/fixtures/html-pages-test/public/notfit.html +0 -13
- package/tests/fixtures/html-pages-test/public/slides.html +0 -12
- package/tests/fixtures/html-pages-test/public/sub/page2.html +0 -9
- package/tests/fixtures/html-pages-test/public/unterminated.html +0 -10
- package/tests/fixtures/html-pages-test/publisher.json +0 -5
- package/tests/fixtures/html-pages-test/report.malloy +0 -1
- package/tests/fixtures/persist-multi-level/data/orders.csv +0 -5
- package/tests/fixtures/persist-multi-level/multi_level.malloy +0 -18
- package/tests/fixtures/persist-multi-level/publisher.json +0 -5
- package/tests/fixtures/persist-schedule-test/data/orders.csv +0 -5
- package/tests/fixtures/persist-schedule-test/persist_schedule_test.malloy +0 -11
- package/tests/fixtures/persist-schedule-test/publisher.json +0 -7
- package/tests/fixtures/persist-schedule-warn-test/data/orders.csv +0 -5
- package/tests/fixtures/persist-schedule-warn-test/persist_warn_test.malloy +0 -11
- package/tests/fixtures/persist-schedule-warn-test/publisher.json +0 -6
- package/tests/fixtures/persist-test/data/orders.csv +0 -5
- package/tests/fixtures/persist-test/persist_test.malloy +0 -11
- package/tests/fixtures/persist-test/publisher.json +0 -5
- package/tests/fixtures/publisher.config.json +0 -15
- package/tests/fixtures/query-givens/data/orders.csv +0 -7
- package/tests/fixtures/query-givens/model.malloy +0 -34
- package/tests/fixtures/query-givens/publisher.json +0 -5
- package/tests/fixtures/xlsx/database.xlsx +0 -0
- package/tests/harness/mcp_test_setup.ts +0 -332
- package/tests/harness/rest_e2e.ts +0 -68
- package/tests/integration/authorize/compile_authorize_http.integration.spec.ts +0 -92
- package/tests/integration/concurrent_package/concurrent_package.integration.spec.ts +0 -280
- package/tests/integration/duckdb_storage/duckdb_storage.integration.spec.ts +0 -138
- package/tests/integration/first_boot/readiness_line.integration.spec.ts +0 -177
- package/tests/integration/html_pages/html_pages.integration.spec.ts +0 -440
- package/tests/integration/legacy_routes/legacy_routes.integration.spec.ts +0 -259
- package/tests/integration/materialization/environment_list.integration.spec.ts +0 -133
- package/tests/integration/materialization/freshness_gate.integration.spec.ts +0 -292
- package/tests/integration/materialization/manifest_binding.integration.spec.ts +0 -430
- package/tests/integration/materialization/materialization_lifecycle.integration.spec.ts +0 -441
- package/tests/integration/materialization/orchestrated_rebind.integration.spec.ts +0 -150
- package/tests/integration/materialization/reference_manifest.integration.spec.ts +0 -251
- package/tests/integration/materialization/schedule_edit.integration.spec.ts +0 -126
- package/tests/integration/materialization/scheduler.integration.spec.ts +0 -200
- package/tests/integration/materialization/scheduler_recovery.integration.spec.ts +0 -172
- package/tests/integration/materialization/scheduler_transitions.integration.spec.ts +0 -256
- package/tests/integration/materialization/scheduler_wiring.integration.spec.ts +0 -143
- package/tests/integration/mcp/mcp_execute_query_tool.integration.spec.ts +0 -438
- package/tests/integration/mcp/mcp_get_context_semantic.integration.spec.ts +0 -235
- package/tests/integration/mcp/mcp_transport.integration.spec.ts +0 -98
- package/tests/integration/query_givens/query_givens.integration.spec.ts +0 -146
- package/tests/integration/query_givens/query_givens_authorize.integration.spec.ts +0 -121
- package/tests/integration/sdk_givens/sdk_givens.integration.spec.ts +0 -110
- package/tests/integration/watch-mode/watch_mode.integration.spec.ts +0 -421
- package/tests/unit/controller/theme.controller.spec.ts +0 -141
- package/tests/unit/duckdb/attached_databases.test.ts +0 -1243
- package/tests/unit/duckdb/duckdb_connection.test.ts +0 -181
- package/tests/unit/duckdb/legacy_schema_migration.test.ts +0 -197
- package/tests/unit/duckdb/repositories.test.ts +0 -208
- package/tests/unit/ducklake/ducklake.test.ts +0 -952
- package/tests/unit/service/theme_store.spec.ts +0 -139
- package/tsconfig.json +0 -32
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
// Lives under `tests/unit/` (not `src/`) on purpose: a sibling spec
|
|
2
|
-
// (environment_store.spec.ts) calls
|
|
3
|
-
// `mock.module("../storage/StorageManager", ...)`. Bun's module mocks
|
|
4
|
-
// persist process-wide across spec files, so a spec under `src/` that
|
|
5
|
-
// imports the real StorageManager would silently get the mock (which
|
|
6
|
-
// doesn't expose `getDuckDbConnection`). The integration runner gives
|
|
7
|
-
// us a clean module cache.
|
|
8
|
-
import { afterEach, beforeEach, describe, expect, it } from "bun:test";
|
|
9
|
-
import fs from "fs";
|
|
10
|
-
import path from "path";
|
|
11
|
-
import { PUBLISHER_CONFIG_NAME } from "../../../src/constants";
|
|
12
|
-
import { ThemeStore } from "../../../src/service/theme_store";
|
|
13
|
-
import { StorageManager } from "../../../src/storage/StorageManager";
|
|
14
|
-
|
|
15
|
-
const TEST_ROOT = path.join(process.cwd(), "test-temp-theme-store");
|
|
16
|
-
|
|
17
|
-
function writeConfig(json: object) {
|
|
18
|
-
if (!fs.existsSync(TEST_ROOT)) fs.mkdirSync(TEST_ROOT, { recursive: true });
|
|
19
|
-
fs.writeFileSync(
|
|
20
|
-
path.join(TEST_ROOT, PUBLISHER_CONFIG_NAME),
|
|
21
|
-
JSON.stringify(json),
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async function makeStorage(): Promise<StorageManager> {
|
|
26
|
-
const sm = new StorageManager({
|
|
27
|
-
type: "duckdb",
|
|
28
|
-
duckdb: { path: ":memory:" },
|
|
29
|
-
});
|
|
30
|
-
await sm.initialize(true);
|
|
31
|
-
return sm;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
describe("ThemeStore", () => {
|
|
35
|
-
beforeEach(() => {
|
|
36
|
-
if (fs.existsSync(TEST_ROOT)) {
|
|
37
|
-
fs.rmSync(TEST_ROOT, { recursive: true, force: true });
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
afterEach(() => {
|
|
41
|
-
if (fs.existsSync(TEST_ROOT)) {
|
|
42
|
-
fs.rmSync(TEST_ROOT, { recursive: true, force: true });
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("returns undefined when no theme is set and no boot seed exists", async () => {
|
|
47
|
-
const sm = await makeStorage();
|
|
48
|
-
writeConfig({ frozenConfig: false, environments: [] });
|
|
49
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
50
|
-
expect(await store.get()).toBeUndefined();
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it("seeds from publisher.config.json on first read", async () => {
|
|
54
|
-
const sm = await makeStorage();
|
|
55
|
-
writeConfig({
|
|
56
|
-
frozenConfig: false,
|
|
57
|
-
theme: { palette: { series: ["#abc"] } },
|
|
58
|
-
environments: [],
|
|
59
|
-
});
|
|
60
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
61
|
-
const seeded = await store.get();
|
|
62
|
-
expect(seeded?.palette?.series).toEqual(["#abc"]);
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
it("set then get round-trips", async () => {
|
|
66
|
-
const sm = await makeStorage();
|
|
67
|
-
writeConfig({ frozenConfig: false, environments: [] });
|
|
68
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
69
|
-
const next = { palette: { series: ["#ff0080", "#00d4ff"] } };
|
|
70
|
-
await store.set(next);
|
|
71
|
-
const after = await store.get();
|
|
72
|
-
expect(after?.palette?.series).toEqual(["#ff0080", "#00d4ff"]);
|
|
73
|
-
});
|
|
74
|
-
|
|
75
|
-
it("second set overwrites the first", async () => {
|
|
76
|
-
const sm = await makeStorage();
|
|
77
|
-
writeConfig({ frozenConfig: false, environments: [] });
|
|
78
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
79
|
-
await store.set({ palette: { series: ["#111"] } });
|
|
80
|
-
await store.set({ palette: { series: ["#222"] } });
|
|
81
|
-
expect((await store.get())?.palette?.series).toEqual(["#222"]);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("reset falls back to the boot seed", async () => {
|
|
85
|
-
const sm = await makeStorage();
|
|
86
|
-
writeConfig({
|
|
87
|
-
frozenConfig: false,
|
|
88
|
-
theme: { palette: { series: ["#seed"] } },
|
|
89
|
-
environments: [],
|
|
90
|
-
});
|
|
91
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
92
|
-
await store.set({ palette: { series: ["#edited"] } });
|
|
93
|
-
const reseeded = await store.reset();
|
|
94
|
-
expect(reseeded?.palette?.series).toEqual(["#seed"]);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
it("reset clears completely when no boot seed exists", async () => {
|
|
98
|
-
const sm = await makeStorage();
|
|
99
|
-
writeConfig({ frozenConfig: false, environments: [] });
|
|
100
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
101
|
-
await store.set({ palette: { series: ["#edited"] } });
|
|
102
|
-
const reseeded = await store.reset();
|
|
103
|
-
expect(reseeded).toBeUndefined();
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("sanitises stale schema shapes on read", async () => {
|
|
107
|
-
// Simulates an upgraded install where the persisted payload
|
|
108
|
-
// still uses the old per-mode `series` object plus a per-mode
|
|
109
|
-
// font block. Both are dropped by the sanitiser; the per-mode
|
|
110
|
-
// colour keys (background) survive.
|
|
111
|
-
const sm = await makeStorage();
|
|
112
|
-
writeConfig({ frozenConfig: false, environments: [] });
|
|
113
|
-
const now = new Date().toISOString();
|
|
114
|
-
const stalePayload = JSON.stringify({
|
|
115
|
-
palette: {
|
|
116
|
-
// Old shape — must be dropped on read.
|
|
117
|
-
series: { light: ["#stale"], dark: ["#stale-dark"] },
|
|
118
|
-
// Current shape — must survive.
|
|
119
|
-
background: { light: "#aabbcc" },
|
|
120
|
-
},
|
|
121
|
-
font: {
|
|
122
|
-
// Old shape — must be dropped.
|
|
123
|
-
family: { light: "Inter", dark: "Inter" },
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
await sm.getDuckDbConnection().run(
|
|
127
|
-
`INSERT INTO themes (id, payload, created_at, updated_at)
|
|
128
|
-
VALUES (?, ?, ?, ?)`,
|
|
129
|
-
["default", stalePayload, now, now],
|
|
130
|
-
);
|
|
131
|
-
const store = new ThemeStore(sm, TEST_ROOT);
|
|
132
|
-
const loaded = await store.get();
|
|
133
|
-
// Stale keys gone.
|
|
134
|
-
expect(loaded?.palette?.series).toBeUndefined();
|
|
135
|
-
expect(loaded?.font).toBeUndefined();
|
|
136
|
-
// Current-shape key carried over.
|
|
137
|
-
expect(loaded?.palette?.background?.light).toBe("#aabbcc");
|
|
138
|
-
});
|
|
139
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ESNext", // Specifies the JavaScript version to target when transpiling code.
|
|
4
|
-
"lib": ["ESNext", "DOM", "DOM.Iterable"], // Specifies the libraries available for the code.
|
|
5
|
-
"module": "ESNext", // Emits ESM syntax; Bun bundler handles final module format.
|
|
6
|
-
"skipLibCheck": true, // Skips type checking of declaration files.
|
|
7
|
-
"useDefineForClassFields": true, // Enables the use of 'define' for class fields.
|
|
8
|
-
"experimentalDecorators": true,
|
|
9
|
-
"emitDecoratorMetadata": true,
|
|
10
|
-
"strictPropertyInitialization": false,
|
|
11
|
-
"types": ["bun-types"], // Added bun-types for bun:test support
|
|
12
|
-
|
|
13
|
-
"moduleResolution": "Node", // Specifies how modules are resolved when bundling.
|
|
14
|
-
"resolveJsonModule": true, // Enables importing JSON modules.
|
|
15
|
-
"isolatedModules": true, // Ensures each file is treated as a separate module.
|
|
16
|
-
"noEmit": false, // Prevents TypeScript from emitting output files.
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
|
|
19
|
-
/* Linting */
|
|
20
|
-
"strict": true,
|
|
21
|
-
"allowJs": false,
|
|
22
|
-
"allowSyntheticDefaultImports": true,
|
|
23
|
-
"noUnusedLocals": true, // Flags unused local variables.
|
|
24
|
-
"noUnusedParameters": true, // Flags unused function parameters.
|
|
25
|
-
"noFallthroughCasesInSwitch": true, // Requires handling all cases in a switch statement.
|
|
26
|
-
"declaration": true, // Generates declaration files for TypeScript.
|
|
27
|
-
"forceConsistentCasingInFileNames": true,
|
|
28
|
-
|
|
29
|
-
"outDir": "./dist"
|
|
30
|
-
},
|
|
31
|
-
"include": ["src"]
|
|
32
|
-
}
|