@malloydata/malloy-interfaces 0.0.240-dev250311202829 → 0.0.240-dev250311214430

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/index.js CHANGED
@@ -210,7 +210,10 @@ exports.thingy1 = {
210
210
  exports.thingy123r = {
211
211
  definition: {
212
212
  kind: 'arrow',
213
- source_reference: { name: 'flights' },
213
+ source: {
214
+ kind: 'source_reference',
215
+ name: 'flights',
216
+ },
214
217
  view: {
215
218
  kind: 'view_reference',
216
219
  name: 'by_carrier',
@@ -220,7 +223,10 @@ exports.thingy123r = {
220
223
  exports.thingyssdfg = {
221
224
  definition: {
222
225
  kind: 'refinement',
223
- query_reference: { name: 'flights' },
226
+ base: {
227
+ kind: 'query_reference',
228
+ name: 'flights',
229
+ },
224
230
  refinement: {
225
231
  kind: 'view_reference',
226
232
  name: 'by_carrier',
@@ -230,7 +236,10 @@ exports.thingyssdfg = {
230
236
  exports.thingy2asdf = {
231
237
  definition: {
232
238
  kind: 'arrow',
233
- source_reference: { name: 'flights' },
239
+ source: {
240
+ kind: 'source_reference',
241
+ name: 'flights',
242
+ },
234
243
  view: {
235
244
  kind: 'refinement',
236
245
  base: {
@@ -256,7 +265,8 @@ exports.thingy2asdf = {
256
265
  exports.thingy3 = {
257
266
  definition: {
258
267
  kind: 'arrow',
259
- source_reference: {
268
+ source: {
269
+ kind: 'source_reference',
260
270
  name: 'flights',
261
271
  },
262
272
  view: {
@@ -294,7 +304,8 @@ exports.thingy3 = {
294
304
  exports.thingy3dfdf = {
295
305
  definition: {
296
306
  kind: 'arrow',
297
- source_reference: {
307
+ source: {
308
+ kind: 'source_reference',
298
309
  name: 'flights',
299
310
  },
300
311
  view: {
@@ -313,7 +324,8 @@ exports.thingy3dfdf = {
313
324
  exports.thingy4asdfasdf = {
314
325
  definition: {
315
326
  kind: 'arrow',
316
- source_reference: {
327
+ source: {
328
+ kind: 'source_reference',
317
329
  name: 'flights',
318
330
  },
319
331
  view: {
@@ -345,7 +357,8 @@ exports.thingy4asdfasdf = {
345
357
  exports.thingy4asdfas = {
346
358
  definition: {
347
359
  kind: 'arrow',
348
- source_reference: {
360
+ source: {
361
+ kind: 'source_reference',
349
362
  name: 'flights',
350
363
  },
351
364
  view: {
@@ -358,7 +371,8 @@ exports.thingy4asdfas = {
358
371
  exports.thingy4dfdsfs = {
359
372
  definition: {
360
373
  kind: 'arrow',
361
- source_reference: {
374
+ source: {
375
+ kind: 'source_reference',
362
376
  name: 'flights',
363
377
  },
364
378
  view: {
@@ -383,7 +397,8 @@ exports.thingy4dfdsfs = {
383
397
  exports.thingy4sdfsd = {
384
398
  definition: {
385
399
  kind: 'arrow',
386
- source_reference: {
400
+ source: {
401
+ kind: 'source_reference',
387
402
  name: 'flights',
388
403
  },
389
404
  view: {
@@ -410,7 +425,8 @@ exports.thingy4sdfsd = {
410
425
  exports.thingy4sddfdfsd = {
411
426
  definition: {
412
427
  kind: 'arrow',
413
- source_reference: {
428
+ source: {
429
+ kind: 'source_reference',
414
430
  name: 'flights',
415
431
  },
416
432
  view: {
package/dist/to_malloy.js CHANGED
@@ -39,11 +39,14 @@ function codeFromFragments(fragments, { tabWidth } = { tabWidth: 2 }) {
39
39
  }
40
40
  return code;
41
41
  }
42
- function wrap(open, block, close) {
42
+ function wrap(open, block, close, options) {
43
+ var _a;
43
44
  if (block.includes(NEWLINE)) {
44
45
  return [open, NEWLINE, INDENT, ...block, NEWLINE, OUTDENT, close];
45
46
  }
46
- return [open, ' ', ...block, ' ', close];
47
+ const spaces = (_a = options === null || options === void 0 ? void 0 : options.spaces) !== null && _a !== void 0 ? _a : true;
48
+ const maybeSpace = spaces ? ' ' : '';
49
+ return [open, maybeSpace, ...block, maybeSpace, close];
47
50
  }
48
51
  function escapeString(str) {
49
52
  return { contents: str, quoteCharacter: '"' }; // TODO
@@ -153,7 +156,7 @@ function referenceToFragments(reference) {
153
156
  parameterFragments.push(',', NEWLINE);
154
157
  }
155
158
  }
156
- fragments.push(...wrap('(', parameterFragments, ')'));
159
+ fragments.push(...wrap('(', parameterFragments, ')', { spaces: false }));
157
160
  }
158
161
  return fragments;
159
162
  }
@@ -164,11 +167,24 @@ function queryToFragments(query) {
164
167
  fragments.push(...queryDefinitionToFragments(query.definition));
165
168
  return fragments;
166
169
  }
170
+ function queryArrowSourceToFragments(query) {
171
+ const fragments = [];
172
+ switch (query.kind) {
173
+ case 'source_reference': {
174
+ fragments.push(...referenceToFragments(query));
175
+ break;
176
+ }
177
+ case 'refinement':
178
+ fragments.push(...queryDefinitionToFragments(query));
179
+ break;
180
+ }
181
+ return fragments;
182
+ }
167
183
  function queryDefinitionToFragments(query) {
168
184
  const fragments = [];
169
185
  switch (query.kind) {
170
186
  case 'arrow': {
171
- fragments.push(...referenceToFragments(query.source_reference));
187
+ fragments.push(...queryArrowSourceToFragments(query.source));
172
188
  fragments.push(' -> ');
173
189
  fragments.push(...viewDefinitionToFragments(query.view));
174
190
  break;
@@ -178,7 +194,13 @@ function queryDefinitionToFragments(query) {
178
194
  break;
179
195
  }
180
196
  case 'refinement': {
181
- fragments.push(...referenceToFragments(query.query_reference));
197
+ const baseFragments = queryDefinitionToFragments(query.base);
198
+ if (query.base.kind === 'arrow') {
199
+ fragments.push(...wrap('(', baseFragments, ')', { spaces: false }));
200
+ }
201
+ else {
202
+ fragments.push(...baseFragments);
203
+ }
182
204
  fragments.push(' + ');
183
205
  fragments.push(...viewDefinitionToFragments(query.refinement));
184
206
  break;
package/dist/types.d.ts CHANGED
@@ -312,9 +312,17 @@ export type Query = {
312
312
  annotations?: Array<Annotation>;
313
313
  };
314
314
  export type QueryArrow = {
315
- source_reference: Reference;
315
+ source: QueryArrowSource;
316
316
  view: ViewDefinition;
317
317
  };
318
+ export type QueryArrowSourceType = 'refinement' | 'source_reference';
319
+ export type QueryArrowSource = QueryArrowSourceWithRefinement | QueryArrowSourceWithSourceReference;
320
+ export type QueryArrowSourceWithRefinement = {
321
+ kind: 'refinement';
322
+ } & QueryRefinement;
323
+ export type QueryArrowSourceWithSourceReference = {
324
+ kind: 'source_reference';
325
+ } & Reference;
318
326
  export type QueryDefinitionType = 'arrow' | 'query_reference' | 'refinement';
319
327
  export type QueryDefinition = QueryDefinitionWithArrow | QueryDefinitionWithQueryReference | QueryDefinitionWithRefinement;
320
328
  export type QueryDefinitionWithArrow = {
@@ -335,7 +343,7 @@ export type QueryInfo = {
335
343
  location?: Location;
336
344
  };
337
345
  export type QueryRefinement = {
338
- query_reference: Reference;
346
+ base: QueryDefinition;
339
347
  refinement: ViewDefinition;
340
348
  };
341
349
  export type Range = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malloydata/malloy-interfaces",
3
- "version": "0.0.240-dev250311202829",
3
+ "version": "0.0.240-dev250311214430",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -305,7 +305,6 @@ stages: [
305
305
  ]
306
306
  }
307
307
  ]
308
-
309
308
  */
310
309
 
311
310
  struct Query {
@@ -319,13 +318,18 @@ union QueryDefinition {
319
318
  3: QueryRefinement refinement,
320
319
  }
321
320
 
321
+ union QueryArrowSource {
322
+ 3: QueryRefinement refinement,
323
+ 2: Reference source_reference,
324
+ }
325
+
322
326
  struct QueryArrow {
323
- 1: required Reference source_reference,
327
+ 1: required QueryArrowSource source,
324
328
  2: required ViewDefinition view,
325
329
  }
326
330
 
327
331
  struct QueryRefinement {
328
- 1: required Reference query_reference,
332
+ 1: required QueryDefinition base,
329
333
  2: required ViewDefinition refinement,
330
334
  }
331
335
 
@@ -1 +0,0 @@
1
- export {};
@@ -1,67 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const nest_unions_1 = require("./nest_unions");
10
- describe('unnest unions', () => {
11
- test('works', () => {
12
- const query = {
13
- definition: {
14
- kind: 'arrow',
15
- source_reference: {
16
- name: 'flights',
17
- },
18
- view: {
19
- kind: 'segment',
20
- operations: [
21
- {
22
- kind: 'group_by',
23
- field: {
24
- expression: {
25
- kind: 'field_reference',
26
- name: 'carrier',
27
- },
28
- },
29
- },
30
- {
31
- kind: 'limit',
32
- limit: 10,
33
- },
34
- ],
35
- },
36
- },
37
- };
38
- expect((0, nest_unions_1.nestUnions)(query)).toMatchObject({
39
- definition: {
40
- arrow: {
41
- source_reference: {
42
- name: 'flights',
43
- },
44
- view: {
45
- segment: {
46
- operations: [
47
- {
48
- group_by: {
49
- field: {
50
- expression: {
51
- field_reference: { name: 'carrier' },
52
- },
53
- },
54
- },
55
- },
56
- {
57
- limit: { limit: 10 },
58
- },
59
- ],
60
- },
61
- },
62
- },
63
- },
64
- });
65
- });
66
- });
67
- //# sourceMappingURL=nest_unions.spec.js.map