@malloy-publisher/server 0.0.198-dev → 0.0.198-dev1

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.
Files changed (86) hide show
  1. package/README.docker.md +135 -20
  2. package/README.md +15 -0
  3. package/build.ts +42 -1
  4. package/dist/app/api-doc.yaml +51 -0
  5. package/dist/app/assets/EnvironmentPage-Dpee_Kn6.js +1 -0
  6. package/dist/app/assets/HomePage-DLRWTNoL.js +1 -0
  7. package/dist/app/assets/MainPage-DsVt5QGM.js +2 -0
  8. package/dist/app/assets/ModelPage-AwAugZ37.js +1 -0
  9. package/dist/app/assets/PackagePage-XQ-EWGTC.js +1 -0
  10. package/dist/app/assets/RouteError-3Mv8JQw7.js +1 -0
  11. package/dist/app/assets/WorkbookPage-DHYYpcYc.js +1 -0
  12. package/dist/app/assets/{core-w79IMXAG.es-Bd0UlzOL.js → core-DfcpQGVP.es-DQggNOdX.js} +14 -14
  13. package/dist/app/assets/{index-C513UodQ.js → index-BUp81Qdm.js} +15 -15
  14. package/dist/app/assets/index-D1pdwrUW.js +1803 -0
  15. package/dist/app/assets/index-Dv5bF4Ii.js +451 -0
  16. package/dist/app/assets/{index.umd-BMeMPq_9.js → index.umd-CQH4LZU8.js} +1 -1
  17. package/dist/app/index.html +2 -3
  18. package/dist/compile_worker.mjs +628 -0
  19. package/dist/default-publisher.config.json +23 -0
  20. package/dist/instrumentation.mjs +36 -38
  21. package/dist/server.mjs +2060 -913
  22. package/package.json +11 -12
  23. package/publisher.config.example.bigquery.json +33 -0
  24. package/publisher.config.example.duckdb.json +23 -0
  25. package/publisher.config.json +1 -11
  26. package/src/compile/compile_pool.spec.ts +227 -0
  27. package/src/compile/compile_pool.ts +729 -0
  28. package/src/compile/compile_worker.ts +683 -0
  29. package/src/compile/protocol.ts +251 -0
  30. package/src/config.spec.ts +306 -0
  31. package/src/config.ts +222 -2
  32. package/src/controller/compile.controller.ts +3 -1
  33. package/src/controller/connection.controller.ts +1 -1
  34. package/src/controller/model.controller.ts +8 -1
  35. package/src/controller/package.controller.ts +70 -29
  36. package/src/controller/query.controller.ts +3 -0
  37. package/src/default-publisher.config.json +23 -0
  38. package/src/errors.spec.ts +42 -0
  39. package/src/errors.ts +21 -0
  40. package/src/health.spec.ts +90 -0
  41. package/src/health.ts +86 -45
  42. package/src/logger.ts +1 -3
  43. package/src/mcp/tools/discovery_tools.ts +6 -2
  44. package/src/mcp/tools/execute_query_tool.ts +12 -0
  45. package/src/path_safety.spec.ts +158 -0
  46. package/src/path_safety.ts +140 -0
  47. package/src/pg_helpers.spec.ts +226 -0
  48. package/src/pg_helpers.ts +129 -0
  49. package/src/server-old.ts +3 -23
  50. package/src/server.ts +49 -0
  51. package/src/service/connection.spec.ts +6 -4
  52. package/src/service/connection.ts +8 -3
  53. package/src/service/connection_config.ts +2 -2
  54. package/src/service/environment.ts +621 -176
  55. package/src/service/environment_admission.spec.ts +180 -0
  56. package/src/service/environment_store.ts +22 -0
  57. package/src/service/filter_integration.spec.ts +110 -0
  58. package/src/service/givens_integration.spec.ts +192 -0
  59. package/src/service/manifest_service.spec.ts +7 -2
  60. package/src/service/manifest_service.ts +8 -2
  61. package/src/service/materialization_service.ts +14 -3
  62. package/src/service/model.spec.ts +105 -0
  63. package/src/service/model.ts +317 -10
  64. package/src/service/model_worker_path.spec.ts +125 -0
  65. package/src/service/package.ts +4 -3
  66. package/src/service/package_memory_governor.spec.ts +173 -0
  67. package/src/service/package_memory_governor.ts +233 -0
  68. package/src/service/package_race.spec.ts +208 -0
  69. package/src/storage/StorageManager.ts +71 -11
  70. package/src/storage/duckdb/schema.ts +41 -0
  71. package/src/utils.ts +11 -0
  72. package/tests/harness/rest_e2e.ts +2 -2
  73. package/tests/integration/concurrent_package/concurrent_package.integration.spec.ts +280 -0
  74. package/tests/integration/legacy_routes/legacy_routes.integration.spec.ts +259 -0
  75. package/tests/unit/duckdb/attached_databases.test.ts +5 -5
  76. package/tests/unit/duckdb/legacy_schema_migration.test.ts +194 -0
  77. package/tests/unit/storage/StorageManager.test.ts +166 -0
  78. package/dist/app/assets/EnvironmentPage-1j6QDWAy.js +0 -1
  79. package/dist/app/assets/HomePage-DMop21VG.js +0 -1
  80. package/dist/app/assets/MainPage-BbE8ETz1.js +0 -2
  81. package/dist/app/assets/ModelPage-D2jvfe3t.js +0 -1
  82. package/dist/app/assets/PackagePage-BbnhGoD3.js +0 -1
  83. package/dist/app/assets/RouteError-D3LGEZ3i.js +0 -1
  84. package/dist/app/assets/WorkbookPage-DttVIj4u.js +0 -1
  85. package/dist/app/assets/index-5K9YjIxF.js +0 -456
  86. package/dist/app/assets/index-DIgzgp69.js +0 -1742
@@ -43,6 +43,7 @@ var __export = (target, all) => {
43
43
  set: __exportSetter.bind(all, name)
44
44
  });
45
45
  };
46
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
46
47
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
47
48
 
48
49
  // ../../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js
@@ -115086,41 +115087,7 @@ var require_winston = __commonJS((exports) => {
115086
115087
  warn.forProperties(exports, "deprecated", ["emitErrs", "levelLength"]);
115087
115088
  });
115088
115089
 
115089
- // src/instrumentation.ts
115090
- var import_api = __toESM(require_src(), 1);
115091
- var import_auto_instrumentations_node = __toESM(require_src59(), 1);
115092
- var import_exporter_logs_otlp_proto = __toESM(require_src66(), 1);
115093
- var import_exporter_prometheus = __toESM(require_src71(), 1);
115094
- var import_exporter_trace_otlp_proto = __toESM(require_src72(), 1);
115095
- var import_instrumentation_express = __toESM(require_src17(), 1);
115096
- var import_resources = __toESM(require_src57(), 1);
115097
- var import_sdk_logs = __toESM(require_src75(), 1);
115098
- var import_sdk_node = __toESM(require_src106(), 1);
115099
- var import_sdk_trace_base = __toESM(require_src82(), 1);
115100
- var import_semantic_conventions = __toESM(require_src2(), 1);
115101
-
115102
115090
  // src/logger.ts
115103
- var import_winston = __toESM(require_winston(), 1);
115104
- var isTelemetryEnabled = Boolean(process.env.OTEL_EXPORTER_OTLP_ENDPOINT);
115105
- var VALID_LOG_LEVELS = ["error", "warn", "info", "verbose", "debug", "silly"];
115106
- var getLogLevel = () => {
115107
- if (process.env.LOG_LEVEL) {
115108
- const logLevel = process.env.LOG_LEVEL.toLowerCase();
115109
- if (VALID_LOG_LEVELS.includes(logLevel)) {
115110
- return logLevel;
115111
- } else {
115112
- console.error(`Invalid log level: ${process.env.LOG_LEVEL}. Valid log levels are: ${VALID_LOG_LEVELS.join(", ")}. Defaulting to "debug".`);
115113
- }
115114
- }
115115
- return "debug";
115116
- };
115117
- var logger = import_winston.default.createLogger({
115118
- level: getLogLevel(),
115119
- format: isTelemetryEnabled ? import_winston.default.format.combine(import_winston.default.format.uncolorize(), import_winston.default.format.timestamp(), import_winston.default.format.metadata({
115120
- fillExcept: ["message", "level", "timestamp"]
115121
- }), import_winston.default.format.json()) : import_winston.default.format.combine(import_winston.default.format.colorize(), import_winston.default.format.simple()),
115122
- transports: [new import_winston.default.transports.Console]
115123
- });
115124
115091
  function extractTraceIdFromTraceparent(traceparent) {
115125
115092
  if (!traceparent) {
115126
115093
  return;
@@ -115132,7 +115099,6 @@ function extractTraceIdFromTraceparent(traceparent) {
115132
115099
  }
115133
115100
  return;
115134
115101
  }
115135
- var DISABLE_RESPONSE_LOGGING = process.env.DISABLE_RESPONSE_LOGGING === "true" || process.env.DISABLE_RESPONSE_LOGGING === "1";
115136
115102
  function formatDuration(durationMs) {
115137
115103
  if (durationMs >= 1000) {
115138
115104
  const seconds = durationMs / 1000;
@@ -115140,7 +115106,17 @@ function formatDuration(durationMs) {
115140
115106
  }
115141
115107
  return `${durationMs.toFixed(2)}ms`;
115142
115108
  }
115143
- var loggerMiddleware = (req, res, next) => {
115109
+ var import_winston, isTelemetryEnabled, VALID_LOG_LEVELS, getLogLevel = () => {
115110
+ if (process.env.LOG_LEVEL) {
115111
+ const logLevel = process.env.LOG_LEVEL.toLowerCase();
115112
+ if (VALID_LOG_LEVELS.includes(logLevel)) {
115113
+ return logLevel;
115114
+ } else {
115115
+ console.error(`Invalid log level: ${process.env.LOG_LEVEL}. Valid log levels are: ${VALID_LOG_LEVELS.join(", ")}. Defaulting to "debug".`);
115116
+ }
115117
+ }
115118
+ return "debug";
115119
+ }, logger, DISABLE_RESPONSE_LOGGING, loggerMiddleware = (req, res, next) => {
115144
115120
  const startTime = performance.now();
115145
115121
  const resJson = res.json;
115146
115122
  res.json = (body) => {
@@ -115170,8 +115146,7 @@ var loggerMiddleware = (req, res, next) => {
115170
115146
  }
115171
115147
  });
115172
115148
  next();
115173
- };
115174
- var logAxiosError = (error) => {
115149
+ }, logAxiosError = (error) => {
115175
115150
  if (error.response) {
115176
115151
  logger.error("Axios server-side error", {
115177
115152
  url: error.response.config.url,
@@ -115185,8 +115160,31 @@ var logAxiosError = (error) => {
115185
115160
  logger.error("Axios unknown error", { error });
115186
115161
  }
115187
115162
  };
115163
+ var init_logger = __esm(() => {
115164
+ import_winston = __toESM(require_winston(), 1);
115165
+ isTelemetryEnabled = Boolean(process.env.OTEL_EXPORTER_OTLP_ENDPOINT);
115166
+ VALID_LOG_LEVELS = ["error", "warn", "info", "verbose", "debug", "silly"];
115167
+ logger = import_winston.default.createLogger({
115168
+ level: getLogLevel(),
115169
+ format: isTelemetryEnabled ? import_winston.default.format.combine(import_winston.default.format.uncolorize(), import_winston.default.format.timestamp(), import_winston.default.format.errors({ stack: true }), import_winston.default.format.json()) : import_winston.default.format.combine(import_winston.default.format.colorize(), import_winston.default.format.simple()),
115170
+ transports: [new import_winston.default.transports.Console]
115171
+ });
115172
+ DISABLE_RESPONSE_LOGGING = process.env.DISABLE_RESPONSE_LOGGING === "true" || process.env.DISABLE_RESPONSE_LOGGING === "1";
115173
+ });
115188
115174
 
115189
115175
  // src/instrumentation.ts
115176
+ init_logger();
115177
+ var import_api = __toESM(require_src(), 1);
115178
+ var import_auto_instrumentations_node = __toESM(require_src59(), 1);
115179
+ var import_exporter_logs_otlp_proto = __toESM(require_src66(), 1);
115180
+ var import_exporter_prometheus = __toESM(require_src71(), 1);
115181
+ var import_exporter_trace_otlp_proto = __toESM(require_src72(), 1);
115182
+ var import_instrumentation_express = __toESM(require_src17(), 1);
115183
+ var import_resources = __toESM(require_src57(), 1);
115184
+ var import_sdk_logs = __toESM(require_src75(), 1);
115185
+ var import_sdk_node = __toESM(require_src106(), 1);
115186
+ var import_sdk_trace_base = __toESM(require_src82(), 1);
115187
+ var import_semantic_conventions = __toESM(require_src2(), 1);
115190
115188
  var prometheusExporter = null;
115191
115189
  var sdk = null;
115192
115190
  function getPrometheusMetricsHandler() {