@malloy-publisher/app 0.0.192 → 0.0.194

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/api-doc.yaml CHANGED
@@ -406,6 +406,8 @@ paths:
406
406
  $ref: "#/components/schemas/MotherDuckConnection"
407
407
  trinoConnection:
408
408
  $ref: "#/components/schemas/TrinoConnection"
409
+ databricksConnection:
410
+ $ref: "#/components/schemas/DatabricksConnection"
409
411
  ducklakeConnection:
410
412
  $ref: "#/components/schemas/DucklakeConnection"
411
413
  responses:
@@ -738,6 +740,7 @@ paths:
738
740
  - name: options
739
741
  in: query
740
742
  description: Options (deprecated; pass in body instead)
743
+ deprecated: true
741
744
  required: false
742
745
  schema:
743
746
  type: string
@@ -920,6 +923,521 @@ paths:
920
923
  "500":
921
924
  $ref: "#/components/responses/InternalServerError"
922
925
 
926
+ # ──────────────────────────────────────────────────────────────────
927
+ # Per-package connection data routes.
928
+ #
929
+ # `duckdb` is a per-package connection (each package has its own
930
+ # `:memory:` DuckDB rooted at the package's path), so any data-plane
931
+ # call against `connectionName="duckdb"` needs a package context.
932
+ # Non-`duckdb` names resolve through the package's MalloyConfig
933
+ # wrapper, which delegates to the project's connection registry, so
934
+ # the same routes also work for project-level connections looked up
935
+ # in a package context.
936
+ # ──────────────────────────────────────────────────────────────────
937
+
938
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/schemas:
939
+ get:
940
+ tags:
941
+ - connections
942
+ operationId: list-schemas-in-package
943
+ summary: List database schemas (per-package)
944
+ description: |
945
+ Retrieves a list of all schemas (databases) available in the specified
946
+ connection, resolved in the context of the named package. Required for
947
+ `connectionName="duckdb"`, which is per-package; works for any other
948
+ connection name as well (resolution falls through to the project).
949
+ parameters:
950
+ - name: projectName
951
+ in: path
952
+ description: Name of the project
953
+ required: true
954
+ schema:
955
+ $ref: "#/components/schemas/IdentifierPattern"
956
+ - name: packageName
957
+ in: path
958
+ description: Name of the package whose connection context to use
959
+ required: true
960
+ schema:
961
+ $ref: "#/components/schemas/IdentifierPattern"
962
+ - name: connectionName
963
+ in: path
964
+ description: Name of the connection
965
+ required: true
966
+ schema:
967
+ $ref: "#/components/schemas/IdentifierPattern"
968
+ responses:
969
+ "200":
970
+ description: A list of schemas available in the connection with metadata
971
+ content:
972
+ application/json:
973
+ schema:
974
+ type: array
975
+ items:
976
+ $ref: "#/components/schemas/Schema"
977
+ "401":
978
+ $ref: "#/components/responses/Unauthorized"
979
+ "404":
980
+ $ref: "#/components/responses/NotFound"
981
+ "500":
982
+ $ref: "#/components/responses/InternalServerError"
983
+ "503":
984
+ $ref: "#/components/responses/ServiceUnavailable"
985
+
986
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/schemas/{schemaName}/tables:
987
+ get:
988
+ tags:
989
+ - connections
990
+ operationId: list-tables-in-package
991
+ summary: List tables in database (per-package)
992
+ description: |
993
+ Retrieves a list of all tables and views available in the specified
994
+ database schema, resolved in the context of the named package.
995
+ parameters:
996
+ - name: projectName
997
+ in: path
998
+ description: Name of the project
999
+ required: true
1000
+ schema:
1001
+ $ref: "#/components/schemas/IdentifierPattern"
1002
+ - name: packageName
1003
+ in: path
1004
+ description: Name of the package whose connection context to use
1005
+ required: true
1006
+ schema:
1007
+ $ref: "#/components/schemas/IdentifierPattern"
1008
+ - name: connectionName
1009
+ in: path
1010
+ description: Name of the connection
1011
+ required: true
1012
+ schema:
1013
+ $ref: "#/components/schemas/IdentifierPattern"
1014
+ - name: schemaName
1015
+ in: path
1016
+ description: Name of the schema
1017
+ required: true
1018
+ schema:
1019
+ $ref: "#/components/schemas/IdentifierPattern"
1020
+ - name: tableNames
1021
+ in: query
1022
+ description: |
1023
+ List of table names to filter results. When provided, only returns metadata
1024
+ for the specified tables. When omitted, returns all tables in the schema.
1025
+ required: false
1026
+ schema:
1027
+ type: array
1028
+ items:
1029
+ type: string
1030
+ responses:
1031
+ "200":
1032
+ description: A list of table names available in the specified schema
1033
+ content:
1034
+ application/json:
1035
+ schema:
1036
+ type: array
1037
+ items:
1038
+ $ref: "#/components/schemas/Table"
1039
+ "401":
1040
+ $ref: "#/components/responses/Unauthorized"
1041
+ "404":
1042
+ $ref: "#/components/responses/NotFound"
1043
+ "500":
1044
+ $ref: "#/components/responses/InternalServerError"
1045
+ "503":
1046
+ $ref: "#/components/responses/ServiceUnavailable"
1047
+
1048
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/schemas/{schemaName}/tables/{tablePath}:
1049
+ get:
1050
+ tags:
1051
+ - connections
1052
+ operationId: get-table-in-package
1053
+ summary: Get table details from database (per-package)
1054
+ description: |
1055
+ Retrieves a table from the specified database schema, resolved in
1056
+ the context of the named package.
1057
+ parameters:
1058
+ - name: projectName
1059
+ in: path
1060
+ description: Name of the project
1061
+ required: true
1062
+ schema:
1063
+ $ref: "#/components/schemas/IdentifierPattern"
1064
+ - name: packageName
1065
+ in: path
1066
+ description: Name of the package whose connection context to use
1067
+ required: true
1068
+ schema:
1069
+ $ref: "#/components/schemas/IdentifierPattern"
1070
+ - name: connectionName
1071
+ in: path
1072
+ description: Name of the connection
1073
+ required: true
1074
+ schema:
1075
+ $ref: "#/components/schemas/IdentifierPattern"
1076
+ - name: schemaName
1077
+ in: path
1078
+ description: Name of the schema
1079
+ required: true
1080
+ schema:
1081
+ $ref: "#/components/schemas/IdentifierPattern"
1082
+ - name: tablePath
1083
+ in: path
1084
+ description: Full path to the table
1085
+ required: true
1086
+ schema:
1087
+ $ref: "#/components/schemas/PathPattern"
1088
+ responses:
1089
+ "200":
1090
+ description: Table information
1091
+ content:
1092
+ application/json:
1093
+ schema:
1094
+ $ref: "#/components/schemas/Table"
1095
+ "401":
1096
+ $ref: "#/components/responses/Unauthorized"
1097
+ "404":
1098
+ $ref: "#/components/responses/NotFound"
1099
+ "500":
1100
+ $ref: "#/components/responses/InternalServerError"
1101
+ "503":
1102
+ $ref: "#/components/responses/ServiceUnavailable"
1103
+
1104
+ # TODO: Remove the GET (deprecated) form once clients migrate.
1105
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/sqlSource:
1106
+ get:
1107
+ tags:
1108
+ - connections
1109
+ operationId: get-sqlsource-in-package
1110
+ deprecated: true
1111
+ summary: Get SQL source (per-package, deprecated)
1112
+ description: |
1113
+ **DEPRECATED**: Use the POST version instead.
1114
+
1115
+ Creates a Malloy source from a SQL statement using the specified
1116
+ connection, resolved in the context of the named package.
1117
+ parameters:
1118
+ - name: projectName
1119
+ in: path
1120
+ description: Name of the project
1121
+ required: true
1122
+ schema:
1123
+ $ref: "#/components/schemas/IdentifierPattern"
1124
+ - name: packageName
1125
+ in: path
1126
+ description: Name of the package whose connection context to use
1127
+ required: true
1128
+ schema:
1129
+ $ref: "#/components/schemas/IdentifierPattern"
1130
+ - name: connectionName
1131
+ in: path
1132
+ description: Name of the connection
1133
+ required: true
1134
+ schema:
1135
+ $ref: "#/components/schemas/IdentifierPattern"
1136
+ - name: sqlStatement
1137
+ in: query
1138
+ description: SQL statement
1139
+ required: false
1140
+ schema:
1141
+ type: string
1142
+ responses:
1143
+ "200":
1144
+ description: SQL source information
1145
+ content:
1146
+ application/json:
1147
+ schema:
1148
+ $ref: "#/components/schemas/SqlSource"
1149
+ "401":
1150
+ $ref: "#/components/responses/Unauthorized"
1151
+ "404":
1152
+ $ref: "#/components/responses/NotFound"
1153
+ "500":
1154
+ $ref: "#/components/responses/InternalServerError"
1155
+ "503":
1156
+ $ref: "#/components/responses/ServiceUnavailable"
1157
+
1158
+ post:
1159
+ tags:
1160
+ - connections
1161
+ operationId: post-sqlsource-in-package
1162
+ summary: Create SQL source from statement (per-package)
1163
+ description: |
1164
+ Creates a Malloy source from a SQL statement using the specified
1165
+ connection, resolved in the context of the named package.
1166
+ parameters:
1167
+ - name: projectName
1168
+ in: path
1169
+ description: Name of the project
1170
+ required: true
1171
+ schema:
1172
+ $ref: "#/components/schemas/IdentifierPattern"
1173
+ - name: packageName
1174
+ in: path
1175
+ description: Name of the package whose connection context to use
1176
+ required: true
1177
+ schema:
1178
+ $ref: "#/components/schemas/IdentifierPattern"
1179
+ - name: connectionName
1180
+ in: path
1181
+ description: Name of the connection
1182
+ required: true
1183
+ schema:
1184
+ $ref: "#/components/schemas/IdentifierPattern"
1185
+ requestBody:
1186
+ description: SQL statement to fetch the SQL source
1187
+ required: true
1188
+ content:
1189
+ application/json:
1190
+ schema:
1191
+ type: object
1192
+ properties:
1193
+ sqlStatement:
1194
+ type: string
1195
+ responses:
1196
+ "200":
1197
+ description: SQL source information
1198
+ content:
1199
+ application/json:
1200
+ schema:
1201
+ $ref: "#/components/schemas/SqlSource"
1202
+ "401":
1203
+ $ref: "#/components/responses/Unauthorized"
1204
+ "404":
1205
+ $ref: "#/components/responses/NotFound"
1206
+ "500":
1207
+ $ref: "#/components/responses/InternalServerError"
1208
+ "503":
1209
+ $ref: "#/components/responses/ServiceUnavailable"
1210
+
1211
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/sqlQuery:
1212
+ post:
1213
+ tags:
1214
+ - connections
1215
+ operationId: post-querydata-in-package
1216
+ summary: Execute SQL query (per-package)
1217
+ description: |
1218
+ Executes a SQL statement against the specified database connection,
1219
+ resolved in the context of the named package, and returns the results.
1220
+ parameters:
1221
+ - name: projectName
1222
+ in: path
1223
+ description: Name of the project
1224
+ required: true
1225
+ schema:
1226
+ $ref: "#/components/schemas/IdentifierPattern"
1227
+ - name: packageName
1228
+ in: path
1229
+ description: Name of the package whose connection context to use
1230
+ required: true
1231
+ schema:
1232
+ $ref: "#/components/schemas/IdentifierPattern"
1233
+ - name: connectionName
1234
+ in: path
1235
+ description: Name of the connection
1236
+ required: true
1237
+ schema:
1238
+ $ref: "#/components/schemas/IdentifierPattern"
1239
+ - name: options
1240
+ in: query
1241
+ description: Options (deprecated; pass in body instead)
1242
+ deprecated: true
1243
+ required: false
1244
+ schema:
1245
+ type: string
1246
+ requestBody:
1247
+ description: SQL statement to execute
1248
+ required: true
1249
+ content:
1250
+ application/json:
1251
+ schema:
1252
+ type: object
1253
+ properties:
1254
+ sqlStatement:
1255
+ type: string
1256
+ options:
1257
+ type: string
1258
+ description: Options
1259
+ responses:
1260
+ "200":
1261
+ description: Query execution results
1262
+ content:
1263
+ application/json:
1264
+ schema:
1265
+ $ref: "#/components/schemas/QueryData"
1266
+ "401":
1267
+ $ref: "#/components/responses/Unauthorized"
1268
+ "404":
1269
+ $ref: "#/components/responses/NotFound"
1270
+ "500":
1271
+ $ref: "#/components/responses/InternalServerError"
1272
+ "503":
1273
+ $ref: "#/components/responses/ServiceUnavailable"
1274
+
1275
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/sqlTemporaryTable:
1276
+ post:
1277
+ tags:
1278
+ - connections
1279
+ operationId: post-temporarytable-in-package
1280
+ summary: Create temporary table (per-package)
1281
+ description: |
1282
+ Creates a temporary table from a SQL statement using the specified
1283
+ database connection, resolved in the context of the named package.
1284
+ parameters:
1285
+ - name: projectName
1286
+ in: path
1287
+ description: Name of the project
1288
+ required: true
1289
+ schema:
1290
+ $ref: "#/components/schemas/IdentifierPattern"
1291
+ - name: packageName
1292
+ in: path
1293
+ description: Name of the package whose connection context to use
1294
+ required: true
1295
+ schema:
1296
+ $ref: "#/components/schemas/IdentifierPattern"
1297
+ - name: connectionName
1298
+ in: path
1299
+ description: Name of the connection
1300
+ required: true
1301
+ schema:
1302
+ $ref: "#/components/schemas/IdentifierPattern"
1303
+ requestBody:
1304
+ description: SQL statement to create the temporary table
1305
+ required: true
1306
+ content:
1307
+ application/json:
1308
+ schema:
1309
+ type: object
1310
+ properties:
1311
+ sqlStatement:
1312
+ type: string
1313
+ responses:
1314
+ "200":
1315
+ description: Temporary table information
1316
+ content:
1317
+ application/json:
1318
+ schema:
1319
+ $ref: "#/components/schemas/TemporaryTable"
1320
+ "401":
1321
+ $ref: "#/components/responses/Unauthorized"
1322
+ "404":
1323
+ $ref: "#/components/responses/NotFound"
1324
+ "500":
1325
+ $ref: "#/components/responses/InternalServerError"
1326
+ "503":
1327
+ $ref: "#/components/responses/ServiceUnavailable"
1328
+
1329
+ # TODO: Remove this endpoint.
1330
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/temporaryTable:
1331
+ get:
1332
+ tags:
1333
+ - connections
1334
+ operationId: get-temporarytable-in-package
1335
+ deprecated: true
1336
+ summary: Create temporary table (per-package, deprecated)
1337
+ description: |
1338
+ **DEPRECATED**: Use the POST version instead.
1339
+
1340
+ Creates a temporary table from a SQL statement using the specified
1341
+ connection, resolved in the context of the named package.
1342
+ parameters:
1343
+ - name: projectName
1344
+ in: path
1345
+ description: Name of the project
1346
+ required: true
1347
+ schema:
1348
+ $ref: "#/components/schemas/IdentifierPattern"
1349
+ - name: packageName
1350
+ in: path
1351
+ description: Name of the package whose connection context to use
1352
+ required: true
1353
+ schema:
1354
+ $ref: "#/components/schemas/IdentifierPattern"
1355
+ - name: connectionName
1356
+ in: path
1357
+ description: Name of the connection
1358
+ required: true
1359
+ schema:
1360
+ $ref: "#/components/schemas/IdentifierPattern"
1361
+ - name: sqlStatement
1362
+ in: query
1363
+ description: SQL statement
1364
+ required: false
1365
+ schema:
1366
+ type: string
1367
+ responses:
1368
+ "200":
1369
+ description: Temporary table information
1370
+ content:
1371
+ application/json:
1372
+ schema:
1373
+ $ref: "#/components/schemas/TemporaryTable"
1374
+ "401":
1375
+ $ref: "#/components/responses/Unauthorized"
1376
+ "404":
1377
+ $ref: "#/components/responses/NotFound"
1378
+ "500":
1379
+ $ref: "#/components/responses/InternalServerError"
1380
+ "503":
1381
+ $ref: "#/components/responses/ServiceUnavailable"
1382
+
1383
+ # TODO: Remove this endpoint.
1384
+ /projects/{projectName}/packages/{packageName}/connections/{connectionName}/queryData:
1385
+ get:
1386
+ tags:
1387
+ - connections
1388
+ operationId: get-querydata-in-package
1389
+ deprecated: true
1390
+ summary: Execute SQL query (per-package, deprecated)
1391
+ description: |
1392
+ **DEPRECATED**: Use the POST version instead.
1393
+
1394
+ Executes a SQL statement against the specified database connection,
1395
+ resolved in the context of the named package, and returns the results.
1396
+ parameters:
1397
+ - name: projectName
1398
+ in: path
1399
+ description: Name of the project
1400
+ required: true
1401
+ schema:
1402
+ $ref: "#/components/schemas/IdentifierPattern"
1403
+ - name: packageName
1404
+ in: path
1405
+ description: Name of the package whose connection context to use
1406
+ required: true
1407
+ schema:
1408
+ $ref: "#/components/schemas/IdentifierPattern"
1409
+ - name: connectionName
1410
+ in: path
1411
+ description: Name of the connection
1412
+ required: true
1413
+ schema:
1414
+ $ref: "#/components/schemas/IdentifierPattern"
1415
+ - name: sqlStatement
1416
+ in: query
1417
+ description: SQL statement
1418
+ required: false
1419
+ schema:
1420
+ type: string
1421
+ - name: options
1422
+ in: query
1423
+ description: Options
1424
+ required: false
1425
+ schema:
1426
+ type: string
1427
+ responses:
1428
+ "200":
1429
+ description: Query execution results
1430
+ content:
1431
+ application/json:
1432
+ schema:
1433
+ $ref: "#/components/schemas/QueryData"
1434
+ "401":
1435
+ $ref: "#/components/responses/Unauthorized"
1436
+ "404":
1437
+ $ref: "#/components/responses/NotFound"
1438
+ "500":
1439
+ $ref: "#/components/responses/InternalServerError"
1440
+
923
1441
  /projects/{projectName}/packages:
924
1442
  get:
925
1443
  tags:
@@ -2420,6 +2938,7 @@ components:
2420
2938
  bigquery,
2421
2939
  snowflake,
2422
2940
  trino,
2941
+ databricks,
2423
2942
  mysql,
2424
2943
  duckdb,
2425
2944
  motherduck,
@@ -2435,6 +2954,8 @@ components:
2435
2954
  $ref: "#/components/schemas/SnowflakeConnection"
2436
2955
  trinoConnection:
2437
2956
  $ref: "#/components/schemas/TrinoConnection"
2957
+ databricksConnection:
2958
+ $ref: "#/components/schemas/DatabricksConnection"
2438
2959
  mysqlConnection:
2439
2960
  $ref: "#/components/schemas/MysqlConnection"
2440
2961
  duckdbConnection:
@@ -2699,6 +3220,36 @@ components:
2699
3220
  type: string
2700
3221
  description: Peaka API key for authentication with Peaka-hosted Trino clusters
2701
3222
 
3223
+ DatabricksConnection:
3224
+ type: object
3225
+ description: Databricks SQL warehouse connection configuration
3226
+ properties:
3227
+ host:
3228
+ type: string
3229
+ description: Databricks workspace host (e.g.
3230
+ dbc-xxxxxxxx-xxxx.cloud.databricks.com)
3231
+ path:
3232
+ type: string
3233
+ description: SQL warehouse HTTP path (e.g. /sql/1.0/warehouses/<warehouse-id>)
3234
+ token:
3235
+ type: string
3236
+ description: Personal access token for authentication
3237
+ oauthClientId:
3238
+ type: string
3239
+ description: OAuth M2M client ID (service principal)
3240
+ oauthClientSecret:
3241
+ type: string
3242
+ description: OAuth M2M client secret (service principal)
3243
+ defaultCatalog:
3244
+ type: string
3245
+ description: Default Unity Catalog to use for queries
3246
+ defaultSchema:
3247
+ type: string
3248
+ description: Default schema to use for queries
3249
+ setupSQL:
3250
+ type: string
3251
+ description: SQL statements to run when the connection is established
3252
+
2702
3253
  MotherDuckConnection:
2703
3254
  type: object
2704
3255
  description: MotherDuck database connection configuration
@@ -2712,7 +3263,13 @@ components:
2712
3263
 
2713
3264
  DuckdbConnection:
2714
3265
  type: object
2715
- description: DuckDB database connection configuration
3266
+ description: >
3267
+ DuckDB database connection configuration. Publisher intentionally
3268
+ exposes only data-source intent here. Database files, working
3269
+ directories, filesystem/network policy, extension loading, setup SQL,
3270
+ temp directories, and resource knobs are owned by Publisher so project
3271
+ configs cannot widen deployment policy through low-level DuckDB
3272
+ settings.
2716
3273
  properties:
2717
3274
  attachedDatabases:
2718
3275
  type: array
@@ -1 +1 @@
1
- import{d as o,j as a,i as e}from"./index-d5rvmoZ7.js";function i(){const t=o();return a.jsx(e,{onClickProject:t})}export{i as default};
1
+ import{d as o,j as a,i as e}from"./index-Bu0ub036.js";function i(){const t=o();return a.jsx(e,{onClickProject:t})}export{i as default};
@@ -0,0 +1,2 @@
1
+ import{u as V,g as F,r as g,R as _,a as X,b as S,c as M,e as A,j as e,s as m,f as w,h as v,k as I,P as Y,m as R,l as J,n as z,B as K,o as N,p as Z,T as U,q,t as oo,d as ro,v as f,C as j,w as eo,x as to,I as ao,M as so,y as $,S as no,z as lo,A as io,O as co,D as po}from"./index-Bu0ub036.js";function uo(o,r,t,a,n){const[s,i]=g.useState(()=>n&&t?t(o).matches:a?a(o).matches:r);return X(()=>{if(!t)return;const p=t(o),u=()=>{i(p.matches)};return u(),p.addEventListener("change",u),()=>{p.removeEventListener("change",u)}},[o,t]),s}const go={..._},L=go.useSyncExternalStore;function xo(o,r,t,a,n){const s=g.useCallback(()=>r,[r]),i=g.useMemo(()=>{if(n&&t)return()=>t(o).matches;if(a!==null){const{matches:c}=a(o);return()=>c}return s},[s,o,a,n,t]),[p,u]=g.useMemo(()=>{if(t===null)return[s,()=>()=>{}];const c=t(o);return[()=>c.matches,l=>(c.addEventListener("change",l),()=>{c.removeEventListener("change",l)})]},[s,t,o]);return L(u,p,i)}function O(o={}){const{themeId:r}=o;return function(a,n={}){let s=V();s&&r&&(s=s[r]||s);const i=typeof window<"u"&&typeof window.matchMedia<"u",{defaultMatches:p=!1,matchMedia:u=i?window.matchMedia:null,ssrMatchMedia:d=null,noSsr:c=!1}=F({name:"MuiUseMediaQuery",props:n,theme:s});let l=typeof a=="function"?a(s):a;return l=l.replace(/^@media( ?)/m,""),l.includes("print")&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.","Using the print media query to modify print styles can lead to unexpected results.","Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
2
+ `)),(L!==void 0?xo:uo)(l,p,u,d,c)}}O();function mo(o){return S("MuiAppBar",o)}M("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent","colorError","colorInfo","colorSuccess","colorWarning"]);const fo=o=>{const{color:r,position:t,classes:a}=o,n={root:["root",`color${v(r)}`,`position${v(t)}`]};return I(n,mo,a)},D=(o,r)=>o?`${o?.replace(")","")}, ${r})`:r,bo=m(Y,{name:"MuiAppBar",slot:"Root",overridesResolver:(o,r)=>{const{ownerState:t}=o;return[r.root,r[`position${v(t.position)}`],r[`color${v(t.color)}`]]}})(R(({theme:o})=>({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0,variants:[{props:{position:"fixed"},style:{position:"fixed",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}}},{props:{position:"absolute"},style:{position:"absolute",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0}},{props:{position:"sticky"},style:{position:"sticky",zIndex:(o.vars||o).zIndex.appBar,top:0,left:"auto",right:0}},{props:{position:"static"},style:{position:"static"}},{props:{position:"relative"},style:{position:"relative"}},{props:{color:"inherit"},style:{"--AppBar-color":"inherit"}},{props:{color:"default"},style:{"--AppBar-background":o.vars?o.vars.palette.AppBar.defaultBg:o.palette.grey[100],"--AppBar-color":o.vars?o.vars.palette.text.primary:o.palette.getContrastText(o.palette.grey[100]),...o.applyStyles("dark",{"--AppBar-background":o.vars?o.vars.palette.AppBar.defaultBg:o.palette.grey[900],"--AppBar-color":o.vars?o.vars.palette.text.primary:o.palette.getContrastText(o.palette.grey[900])})}},...Object.entries(o.palette).filter(J(["contrastText"])).map(([r])=>({props:{color:r},style:{"--AppBar-background":(o.vars??o).palette[r].main,"--AppBar-color":(o.vars??o).palette[r].contrastText}})),{props:r=>r.enableColorOnDark===!0&&!["inherit","transparent"].includes(r.color),style:{backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)"}},{props:r=>r.enableColorOnDark===!1&&!["inherit","transparent"].includes(r.color),style:{backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)",...o.applyStyles("dark",{backgroundColor:o.vars?D(o.vars.palette.AppBar.darkBg,"var(--AppBar-background)"):null,color:o.vars?D(o.vars.palette.AppBar.darkColor,"var(--AppBar-color)"):null})}},{props:{color:"transparent"},style:{"--AppBar-background":"transparent","--AppBar-color":"inherit",backgroundColor:"var(--AppBar-background)",color:"var(--AppBar-color)",...o.applyStyles("dark",{backgroundImage:"none"})}}]}))),ho=g.forwardRef(function(r,t){const a=A({props:r,name:"MuiAppBar"}),{className:n,color:s="primary",enableColorOnDark:i=!1,position:p="fixed",...u}=a,d={...a,color:s,position:p,enableColorOnDark:i},c=fo(d);return e.jsx(bo,{square:!0,component:"header",ownerState:d,elevation:4,className:w(c.root,n,p==="fixed"&&"mui-fixed"),ref:t,...u})}),yo=z(e.jsx("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})),vo=m(K,{name:"MuiBreadcrumbCollapsed"})(R(({theme:o})=>({display:"flex",marginLeft:`calc(${o.spacing(1)} * 0.5)`,marginRight:`calc(${o.spacing(1)} * 0.5)`,...o.palette.mode==="light"?{backgroundColor:o.palette.grey[100],color:o.palette.grey[700]}:{backgroundColor:o.palette.grey[700],color:o.palette.grey[100]},borderRadius:2,"&:hover, &:focus":{...o.palette.mode==="light"?{backgroundColor:o.palette.grey[200]}:{backgroundColor:o.palette.grey[600]}},"&:active":{boxShadow:o.shadows[0],...o.palette.mode==="light"?{backgroundColor:N(o.palette.grey[200],.12)}:{backgroundColor:N(o.palette.grey[600],.12)}}}))),ko=m(yo)({width:24,height:16});function Bo(o){const{slots:r={},slotProps:t={},...a}=o,n=o;return e.jsx("li",{children:e.jsx(vo,{focusRipple:!0,...a,ownerState:n,children:e.jsx(ko,{as:r.CollapsedIcon,ownerState:n,...t.collapsedIcon})})})}function Co(o){return S("MuiBreadcrumbs",o)}const jo=M("MuiBreadcrumbs",["root","ol","li","separator"]),So=o=>{const{classes:r}=o;return I({root:["root"],li:["li"],ol:["ol"],separator:["separator"]},Co,r)},Mo=m(U,{name:"MuiBreadcrumbs",slot:"Root",overridesResolver:(o,r)=>[{[`& .${jo.li}`]:r.li},r.root]})({}),Ao=m("ol",{name:"MuiBreadcrumbs",slot:"Ol"})({display:"flex",flexWrap:"wrap",alignItems:"center",padding:0,margin:0,listStyle:"none"}),wo=m("li",{name:"MuiBreadcrumbs",slot:"Separator"})({display:"flex",userSelect:"none",marginLeft:8,marginRight:8});function Io(o,r,t,a){return o.reduce((n,s,i)=>(i<o.length-1?n=n.concat(s,e.jsx(wo,{"aria-hidden":!0,className:r,ownerState:a,children:t},`separator-${i}`)):n.push(s),n),[])}const Ro=g.forwardRef(function(r,t){const a=A({props:r,name:"MuiBreadcrumbs"}),{children:n,className:s,component:i="nav",slots:p={},slotProps:u={},expandText:d="Show path",itemsAfterCollapse:c=1,itemsBeforeCollapse:l=1,maxItems:h=8,separator:k="/",...Q}=a,[T,W]=g.useState(!1),b={...a,component:i,expanded:T,expandText:d,itemsAfterCollapse:c,itemsBeforeCollapse:l,maxItems:h,separator:k},y=So(b),H=Z({elementType:p.CollapsedIcon,externalSlotProps:u.collapsedIcon,ownerState:b}),P=g.useRef(null),G=x=>{const C=()=>{W(!0);const E=P.current.querySelector("a[href],button,[tabindex]");E&&E.focus()};return l+c>=x.length?x:[...x.slice(0,l),e.jsx(Bo,{"aria-label":d,slots:{CollapsedIcon:p.CollapsedIcon},slotProps:{collapsedIcon:H},onClick:C},"ellipsis"),...x.slice(x.length-c,x.length)]},B=g.Children.toArray(n).filter(x=>g.isValidElement(x)).map((x,C)=>e.jsx("li",{className:y.li,children:x},`child-${C}`));return e.jsx(Mo,{ref:t,component:i,color:"textSecondary",className:w(y.root,s),ownerState:b,...Q,children:e.jsx(Ao,{className:y.ol,ref:P,ownerState:b,children:Io(T||h&&B.length<=h?B:G(B),y.separator,k,b)})})});function zo(o){return S("MuiToolbar",o)}M("MuiToolbar",["root","gutters","regular","dense"]);const To=o=>{const{classes:r,disableGutters:t,variant:a}=o;return I({root:["root",!t&&"gutters",a]},zo,r)},Po=m("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(o,r)=>{const{ownerState:t}=o;return[r.root,!t.disableGutters&&r.gutters,r[t.variant]]}})(R(({theme:o})=>({position:"relative",display:"flex",alignItems:"center",variants:[{props:({ownerState:r})=>!r.disableGutters,style:{paddingLeft:o.spacing(2),paddingRight:o.spacing(2),[o.breakpoints.up("sm")]:{paddingLeft:o.spacing(3),paddingRight:o.spacing(3)}}},{props:{variant:"dense"},style:{minHeight:48}},{props:{variant:"regular"},style:o.mixins.toolbar}]}))),Eo=g.forwardRef(function(r,t){const a=A({props:r,name:"MuiToolbar"}),{className:n,component:s="div",disableGutters:i=!1,variant:p="regular",...u}=a,d={...a,component:s,disableGutters:i,variant:p},c=To(d);return e.jsx(Po,{as:s,className:w(c.root,n),ref:t,ownerState:d,...u})}),No=O({themeId:q}),$o=z(e.jsx("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})),Do=z(e.jsx("path",{d:"M3 18h18v-2H3zm0-5h18v-2H3zm0-7v2h18V6z"}));function Uo(){const o=oo(),r=o["*"],t=ro();return e.jsx(f,{sx:{display:"flex",alignItems:"center"},children:e.jsxs(Ro,{"aria-label":"breadcrumb",separator:e.jsx($o,{sx:{fontSize:14,color:"text.secondary"}}),sx:{"& .MuiBreadcrumbs-separator":{margin:"0 6px"}},children:[o.projectName&&e.jsx(j,{onClick:a=>t(`/${o.projectName}/`,a),label:o.projectName,size:"medium",sx:{backgroundColor:"background.paper",color:"primary.main",fontWeight:500,height:"32px",fontSize:"1rem",cursor:"pointer","&:hover":{backgroundColor:"primary.100"}}}),o.packageName&&e.jsx(j,{onClick:a=>t(`/${o.projectName}/${o.packageName}/`,a),label:o.packageName,size:"medium",sx:{backgroundColor:"background.paper",color:"primary.main",fontWeight:500,height:"32px",fontSize:"1rem",cursor:"pointer","&:hover":{backgroundColor:"secondary.100"}}}),r&&e.jsx(j,{onClick:a=>t(`/${o.projectName}/${o.packageName}/${r}`,a),label:r,size:"medium",sx:{backgroundColor:"background.paper",color:"primary.main",fontWeight:500,height:"32px",fontSize:"1rem",cursor:"pointer","&:hover":{backgroundColor:"grey.200"}}})]})})}function Lo({logoHeader:o,endCap:r}){const t=eo(),a=to(),n=No(a.breakpoints.down("sm")),[s,i]=g.useState(null),p=!!s,u=l=>{i(l.currentTarget)},d=()=>i(null),c=[{label:"Malloy Docs",link:"https://docs.malloydata.dev/documentation/",sx:{color:"primary.main"}},{label:"Publisher Docs",link:"https://github.com/malloydata/publisher/blob/main/README.md",sx:{color:"primary.main"}},{label:"Publisher API",link:"/api-doc.html",sx:{color:"primary.main"}}];return e.jsxs(ho,{position:"sticky",elevation:0,sx:{backgroundColor:"background.paper",borderBottom:"1px solid",borderColor:"divider"},children:[e.jsxs(Eo,{sx:{justifyContent:"space-between",flexWrap:"nowrap",minHeight:44},children:[o||e.jsxs(f,{sx:{display:"flex",alignItems:"center",gap:1,cursor:"pointer"},onClick:()=>t("/"),children:[e.jsx(f,{component:"img",src:"/logo.svg",alt:"Malloy",sx:{width:28,height:28}}),e.jsx(U,{variant:"h6",sx:{color:"text.primary",fontWeight:700,letterSpacing:"-0.025em",fontSize:{xs:"1.1rem",sm:"1.25rem"}},children:"Malloy Publisher"})]}),n?e.jsxs(e.Fragment,{children:[e.jsx(ao,{color:"inherit",onClick:u,children:e.jsx(Do,{})}),e.jsxs(so,{anchorEl:s,open:p,onClose:d,anchorOrigin:{vertical:"bottom",horizontal:"right"},children:[c.map(l=>e.jsx($,{onClick:()=>{d(),window.location.href=l.link},sx:l.sx,children:l.label},l.label)),r&&e.jsx($,{children:r})]})]}):e.jsxs(no,{direction:"row",spacing:2,alignItems:"center",children:[c.map(l=>e.jsx(lo,{href:l.link,sx:l.sx,children:l.label},l.label)),r]})]}),e.jsx(f,{sx:{borderTop:"1px solid white",paddingLeft:"16px",paddingRight:"16px",marginBottom:"1px",overflowX:"auto"},children:e.jsx(Uo,{})})]})}function Qo({headerProps:o}){return e.jsxs(f,{sx:{display:"flex",flexDirection:"column",minHeight:"100vh"},children:[e.jsx(Lo,{...o}),e.jsx(io,{maxWidth:"xl",component:"main",sx:{flex:1,display:"flex",flexDirection:"column",py:2,gap:2},children:e.jsx(f,{sx:{flex:1},children:e.jsx(g.Suspense,{fallback:e.jsx(po,{}),children:e.jsx(co,{})})})})]})}export{Qo as default};
@@ -1 +1 @@
1
- import{t as n,j as e,D as i,E as t,F as c}from"./index-d5rvmoZ7.js";function o(){const a=n(),r=a["*"];if(!a.projectName)return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})});if(!a.packageName)return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});const s=i({projectName:a.projectName,packageName:a.packageName,modelPath:r});return r?.endsWith(".malloy")?e.jsx(t,{resourceUri:s,runOnDemand:!0,maxResultSize:512*1024}):r?.endsWith(".malloynb")?e.jsx(c,{resourceUri:s,maxResultSize:1024*1024}):e.jsx("div",{children:e.jsxs("h2",{children:["Unrecognized file type: ",r]})})}export{o as default};
1
+ import{t as n,j as e,E as i,F as t,G as c}from"./index-Bu0ub036.js";function o(){const a=n(),r=a["*"];if(!a.projectName)return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})});if(!a.packageName)return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});const s=i({projectName:a.projectName,packageName:a.packageName,modelPath:r});return r?.endsWith(".malloy")?e.jsx(t,{resourceUri:s,runOnDemand:!0,maxResultSize:512*1024}):r?.endsWith(".malloynb")?e.jsx(c,{resourceUri:s,maxResultSize:1024*1024}):e.jsx("div",{children:e.jsxs("h2",{children:["Unrecognized file type: ",r]})})}export{o as default};
@@ -1 +1 @@
1
- import{t as n,d as c,j as e,D as t,G as o}from"./index-d5rvmoZ7.js";function l(){const{projectName:s,packageName:a}=n(),r=c();if(s)if(a){const i=t({projectName:s,packageName:a});return e.jsx(o,{onClickPackageFile:r,resourceUri:i})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})})}export{l as default};
1
+ import{t as n,d as c,j as e,E as t,H as o}from"./index-Bu0ub036.js";function l(){const{projectName:s,packageName:a}=n(),r=c();if(s)if(a){const i=t({projectName:s,packageName:a});return e.jsx(o,{onClickPackageFile:r,resourceUri:i})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})})}export{l as default};
@@ -1 +1 @@
1
- import{d as a,t as n,j as e,D as o,H as c}from"./index-d5rvmoZ7.js";function u(){const r=a(),{projectName:s}=n();if(s){const t=o({projectName:s});return e.jsx(c,{onSelectPackage:r,resourceUri:t})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})})}export{u as default};
1
+ import{d as a,t as n,j as e,E as o,J as c}from"./index-Bu0ub036.js";function u(){const r=a(),{projectName:s}=n();if(s){const t=o({projectName:s});return e.jsx(c,{onSelectPackage:r,resourceUri:t})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})})}export{u as default};
@@ -1 +1 @@
1
- import{J as o,j as r,A as s,S as n,v as t,T as a}from"./index-d5rvmoZ7.js";function x(){const e=o();return console.error(e),r.jsx(s,{maxWidth:"lg",component:"main",sx:{display:"flex",flexDirection:"column",my:2,gap:0},children:r.jsxs(n,{sx:{m:"auto",flexDirection:"column"},children:[r.jsx(t,{sx:{height:"300px"}}),r.jsx("img",{src:"/error.png"}),r.jsx(a,{variant:"subtitle1",children:"An unexpected error occurred"})]})})}export{x as default};
1
+ import{K as o,j as r,A as s,S as n,v as t,T as a}from"./index-Bu0ub036.js";function x(){const e=o();return console.error(e),r.jsx(s,{maxWidth:"lg",component:"main",sx:{display:"flex",flexDirection:"column",my:2,gap:0},children:r.jsxs(n,{sx:{m:"auto",flexDirection:"column"},children:[r.jsx(t,{sx:{height:"300px"}}),r.jsx("img",{src:"/error.png"}),r.jsx(a,{variant:"subtitle1",children:"An unexpected error occurred"})]})})}export{x as default};
@@ -1 +1 @@
1
- import{t as a,j as e,D as t,Z as c}from"./index-d5rvmoZ7.js";function d(){const{workspace:r,workbookPath:s,projectName:i,packageName:n}=a();if(r)if(s)if(i)if(n){const o=t({projectName:i,packageName:n});return e.jsx(c,{workbookPath:{path:s,workspace:r},resourceUri:o},`${s}`)}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing workbook path"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing workspace"})})}export{d as default};
1
+ import{t as a,j as e,E as t,Z as c}from"./index-Bu0ub036.js";function d(){const{workspace:r,workbookPath:s,projectName:i,packageName:n}=a();if(r)if(s)if(i)if(n){const o=t({projectName:i,packageName:n});return e.jsx(c,{workbookPath:{path:s,workspace:r},resourceUri:o},`${s}`)}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing project name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing workbook path"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing workspace"})})}export{d as default};