@uwdata/mosaic-spec 0.21.0 → 0.22.0

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 (197) hide show
  1. package/dist/src/ast/ASTNode.js +37 -0
  2. package/dist/src/ast/ASTNode.js.map +1 -0
  3. package/dist/src/ast/ColumnParamRefNode.js +18 -0
  4. package/dist/src/ast/ColumnParamRefNode.js.map +1 -0
  5. package/dist/src/ast/DataNode.js +255 -0
  6. package/dist/src/ast/DataNode.js.map +1 -0
  7. package/dist/src/ast/ExpressionNode.js +52 -0
  8. package/dist/src/ast/ExpressionNode.js.map +1 -0
  9. package/dist/src/ast/HConcatNode.js +24 -0
  10. package/dist/src/ast/HConcatNode.js.map +1 -0
  11. package/dist/src/ast/HSpaceNode.js +21 -0
  12. package/dist/src/ast/HSpaceNode.js.map +1 -0
  13. package/dist/src/ast/InputNode.js +29 -0
  14. package/dist/src/ast/InputNode.js.map +1 -0
  15. package/dist/src/ast/LiteralNode.js +18 -0
  16. package/dist/src/ast/LiteralNode.js.map +1 -0
  17. package/dist/src/ast/OptionsNode.js +45 -0
  18. package/dist/src/ast/OptionsNode.js.map +1 -0
  19. package/dist/src/ast/ParamNode.js +50 -0
  20. package/dist/src/ast/ParamNode.js.map +1 -0
  21. package/dist/src/ast/ParamRefNode.js +19 -0
  22. package/dist/src/ast/ParamRefNode.js.map +1 -0
  23. package/dist/src/ast/PlotAttributeNode.js +43 -0
  24. package/dist/src/ast/PlotAttributeNode.js.map +1 -0
  25. package/dist/src/ast/PlotFromNode.js +38 -0
  26. package/dist/src/ast/PlotFromNode.js.map +1 -0
  27. package/dist/src/ast/PlotInteractorNode.js +29 -0
  28. package/dist/src/ast/PlotInteractorNode.js.map +1 -0
  29. package/dist/src/ast/PlotLegendNode.js +31 -0
  30. package/dist/src/ast/PlotLegendNode.js.map +1 -0
  31. package/dist/src/ast/PlotMarkNode.js +68 -0
  32. package/dist/src/ast/PlotMarkNode.js.map +1 -0
  33. package/dist/src/ast/PlotNode.js +55 -0
  34. package/dist/src/ast/PlotNode.js.map +1 -0
  35. package/dist/src/ast/SelectionNode.js +52 -0
  36. package/dist/src/ast/SelectionNode.js.map +1 -0
  37. package/dist/src/ast/SpecNode.js +43 -0
  38. package/dist/src/ast/SpecNode.js.map +1 -0
  39. package/dist/src/ast/TransformNode.js +129 -0
  40. package/dist/src/ast/TransformNode.js.map +1 -0
  41. package/dist/src/ast/VConcatNode.js +24 -0
  42. package/dist/src/ast/VConcatNode.js.map +1 -0
  43. package/dist/src/ast/VSpaceNode.js +21 -0
  44. package/dist/src/ast/VSpaceNode.js.map +1 -0
  45. package/dist/src/ast/WindowFrameNode.js +54 -0
  46. package/dist/src/ast/WindowFrameNode.js.map +1 -0
  47. package/dist/src/ast-to-dom.js +68 -0
  48. package/dist/src/ast-to-dom.js.map +1 -0
  49. package/dist/src/ast-to-esm.js +180 -0
  50. package/dist/src/ast-to-esm.js.map +1 -0
  51. package/dist/src/config/components.js +25 -0
  52. package/dist/src/config/components.js.map +1 -0
  53. package/dist/src/config/extensions.js +21 -0
  54. package/dist/src/config/extensions.js.map +1 -0
  55. package/dist/src/config/inputs.js +14 -0
  56. package/dist/src/config/inputs.js.map +1 -0
  57. package/dist/src/config/plots.js +48 -0
  58. package/dist/src/config/plots.js.map +1 -0
  59. package/dist/src/config/transforms.js +57 -0
  60. package/dist/src/config/transforms.js.map +1 -0
  61. package/dist/src/constants.js +44 -0
  62. package/dist/src/constants.js.map +1 -0
  63. package/dist/src/index.d.ts +5 -8
  64. package/dist/src/index.d.ts.map +1 -1
  65. package/dist/src/index.js +26 -0
  66. package/dist/src/index.js.map +1 -0
  67. package/dist/src/parse-spec.js +148 -0
  68. package/dist/src/parse-spec.js.map +1 -0
  69. package/dist/src/spec/CSSStyles.js +2 -0
  70. package/dist/src/spec/CSSStyles.js.map +1 -0
  71. package/dist/src/spec/Data.js +2 -0
  72. package/dist/src/spec/Data.js.map +1 -0
  73. package/dist/src/spec/Expression.js +2 -0
  74. package/dist/src/spec/Expression.js.map +1 -0
  75. package/dist/src/spec/HConcat.js +2 -0
  76. package/dist/src/spec/HConcat.js.map +1 -0
  77. package/dist/src/spec/HSpace.js +2 -0
  78. package/dist/src/spec/HSpace.js.map +1 -0
  79. package/dist/src/spec/Input.js +2 -0
  80. package/dist/src/spec/Input.js.map +1 -0
  81. package/dist/src/spec/Interval.js +2 -0
  82. package/dist/src/spec/Interval.js.map +1 -0
  83. package/dist/src/spec/Param.js +2 -0
  84. package/dist/src/spec/Param.js.map +1 -0
  85. package/dist/src/spec/Plot.js +2 -0
  86. package/dist/src/spec/Plot.js.map +1 -0
  87. package/dist/src/spec/PlotAttribute.js +2 -0
  88. package/dist/src/spec/PlotAttribute.js.map +1 -0
  89. package/dist/src/spec/PlotFrom.js +2 -0
  90. package/dist/src/spec/PlotFrom.js.map +1 -0
  91. package/dist/src/spec/PlotInteractor.js +2 -0
  92. package/dist/src/spec/PlotInteractor.js.map +1 -0
  93. package/dist/src/spec/PlotLegend.js +2 -0
  94. package/dist/src/spec/PlotLegend.js.map +1 -0
  95. package/dist/src/spec/PlotMark.js +2 -0
  96. package/dist/src/spec/PlotMark.js.map +1 -0
  97. package/dist/src/spec/PlotTypes.js +2 -0
  98. package/dist/src/spec/PlotTypes.js.map +1 -0
  99. package/dist/src/spec/Spec.js +2 -0
  100. package/dist/src/spec/Spec.js.map +1 -0
  101. package/dist/src/spec/Transform.js +2 -0
  102. package/dist/src/spec/Transform.js.map +1 -0
  103. package/dist/src/spec/VConcat.js +2 -0
  104. package/dist/src/spec/VConcat.js.map +1 -0
  105. package/dist/src/spec/VSpace.js +2 -0
  106. package/dist/src/spec/VSpace.js.map +1 -0
  107. package/dist/src/spec/index.d.ts +22 -0
  108. package/dist/src/spec/index.d.ts.map +1 -0
  109. package/dist/src/spec/index.js +2 -0
  110. package/dist/src/spec/index.js.map +1 -0
  111. package/dist/src/spec/interactors/BrushStyles.js +2 -0
  112. package/dist/src/spec/interactors/BrushStyles.js.map +1 -0
  113. package/dist/src/spec/interactors/Highlight.js +2 -0
  114. package/dist/src/spec/interactors/Highlight.js.map +1 -0
  115. package/dist/src/spec/interactors/Interval1D.js +2 -0
  116. package/dist/src/spec/interactors/Interval1D.js.map +1 -0
  117. package/dist/src/spec/interactors/Interval2D.js +2 -0
  118. package/dist/src/spec/interactors/Interval2D.js.map +1 -0
  119. package/dist/src/spec/interactors/Nearest.js +2 -0
  120. package/dist/src/spec/interactors/Nearest.js.map +1 -0
  121. package/dist/src/spec/interactors/PanZoom.js +2 -0
  122. package/dist/src/spec/interactors/PanZoom.js.map +1 -0
  123. package/dist/src/spec/interactors/Region.js +2 -0
  124. package/dist/src/spec/interactors/Region.js.map +1 -0
  125. package/dist/src/spec/interactors/Toggle.js +2 -0
  126. package/dist/src/spec/interactors/Toggle.js.map +1 -0
  127. package/dist/src/spec/interactors/index.d.ts +9 -0
  128. package/dist/src/spec/interactors/index.d.ts.map +1 -0
  129. package/dist/src/spec/interactors/index.js +2 -0
  130. package/dist/src/spec/interactors/index.js.map +1 -0
  131. package/dist/src/spec/marks/Area.js +2 -0
  132. package/dist/src/spec/marks/Area.js.map +1 -0
  133. package/dist/src/spec/marks/Arrow.js +2 -0
  134. package/dist/src/spec/marks/Arrow.js.map +1 -0
  135. package/dist/src/spec/marks/Axis.js +2 -0
  136. package/dist/src/spec/marks/Axis.js.map +1 -0
  137. package/dist/src/spec/marks/Bar.js +2 -0
  138. package/dist/src/spec/marks/Bar.js.map +1 -0
  139. package/dist/src/spec/marks/Cell.js +2 -0
  140. package/dist/src/spec/marks/Cell.js.map +1 -0
  141. package/dist/src/spec/marks/Contour.js +2 -0
  142. package/dist/src/spec/marks/Contour.js.map +1 -0
  143. package/dist/src/spec/marks/Delaunay.js +2 -0
  144. package/dist/src/spec/marks/Delaunay.js.map +1 -0
  145. package/dist/src/spec/marks/DenseLine.js +2 -0
  146. package/dist/src/spec/marks/DenseLine.js.map +1 -0
  147. package/dist/src/spec/marks/Density.js +2 -0
  148. package/dist/src/spec/marks/Density.js.map +1 -0
  149. package/dist/src/spec/marks/Dot.js +2 -0
  150. package/dist/src/spec/marks/Dot.js.map +1 -0
  151. package/dist/src/spec/marks/ErrorBar.js +2 -0
  152. package/dist/src/spec/marks/ErrorBar.js.map +1 -0
  153. package/dist/src/spec/marks/Frame.js +2 -0
  154. package/dist/src/spec/marks/Frame.js.map +1 -0
  155. package/dist/src/spec/marks/Geo.js +2 -0
  156. package/dist/src/spec/marks/Geo.js.map +1 -0
  157. package/dist/src/spec/marks/Hexbin.js +2 -0
  158. package/dist/src/spec/marks/Hexbin.js.map +1 -0
  159. package/dist/src/spec/marks/Hexgrid.js +2 -0
  160. package/dist/src/spec/marks/Hexgrid.js.map +1 -0
  161. package/dist/src/spec/marks/Image.js +2 -0
  162. package/dist/src/spec/marks/Image.js.map +1 -0
  163. package/dist/src/spec/marks/Line.js +2 -0
  164. package/dist/src/spec/marks/Line.js.map +1 -0
  165. package/dist/src/spec/marks/Link.js +2 -0
  166. package/dist/src/spec/marks/Link.js.map +1 -0
  167. package/dist/src/spec/marks/Marks.js +2 -0
  168. package/dist/src/spec/marks/Marks.js.map +1 -0
  169. package/dist/src/spec/marks/Raster.js +2 -0
  170. package/dist/src/spec/marks/Raster.js.map +1 -0
  171. package/dist/src/spec/marks/Rect.js +2 -0
  172. package/dist/src/spec/marks/Rect.js.map +1 -0
  173. package/dist/src/spec/marks/Regression.js +2 -0
  174. package/dist/src/spec/marks/Regression.js.map +1 -0
  175. package/dist/src/spec/marks/Rule.js +2 -0
  176. package/dist/src/spec/marks/Rule.js.map +1 -0
  177. package/dist/src/spec/marks/Text.js +2 -0
  178. package/dist/src/spec/marks/Text.js.map +1 -0
  179. package/dist/src/spec/marks/Tick.js +2 -0
  180. package/dist/src/spec/marks/Tick.js.map +1 -0
  181. package/dist/src/spec/marks/Vector.js +2 -0
  182. package/dist/src/spec/marks/Vector.js.map +1 -0
  183. package/dist/src/spec/marks/Waffle.js +2 -0
  184. package/dist/src/spec/marks/Waffle.js.map +1 -0
  185. package/dist/src/spec/marks/index.d.ts +28 -0
  186. package/dist/src/spec/marks/index.d.ts.map +1 -0
  187. package/dist/src/spec/marks/index.js +2 -0
  188. package/dist/src/spec/marks/index.js.map +1 -0
  189. package/dist/src/util.js +45 -0
  190. package/dist/src/util.js.map +1 -0
  191. package/package.json +7 -7
  192. package/src/constants.js +32 -32
  193. package/src/index.ts +39 -0
  194. package/src/spec/index.ts +25 -0
  195. package/src/spec/interactors/index.ts +8 -0
  196. package/src/spec/marks/index.ts +27 -0
  197. package/src/index.js +0 -40
@@ -0,0 +1,54 @@
1
+ import { LiteralNode, WindowFrameNode as WindowFrame } from '@uwdata/mosaic-sql';
2
+ import { WINDOW_FRAME } from '../constants.js';
3
+ import { isObject, paramRef } from '../util.js';
4
+ import { ASTNode } from './ASTNode.js';
5
+ import { parseTransform } from './TransformNode.js';
6
+ export function parseWindowFrame(spec, ctx) {
7
+ const type = spec.rows ? 'ROWS'
8
+ : spec.range ? 'RANGE'
9
+ : spec.groups ? 'GROUPS'
10
+ : null;
11
+ if (!type)
12
+ return null;
13
+ const value = spec[type.toLowerCase()];
14
+ const name = paramRef(value);
15
+ const extent = name
16
+ ? ctx.paramRef(name)
17
+ : value.map(v => isObject(v)
18
+ ? parseTransform(v, ctx)
19
+ : new LiteralNode(v));
20
+ return new WindowFrameNode(type, extent, spec.exclude);
21
+ }
22
+ export class WindowFrameNode extends ASTNode {
23
+ constructor(type, extent, exclude) {
24
+ super(WINDOW_FRAME);
25
+ this.type = type;
26
+ this.extent = extent;
27
+ this.exclude = exclude?.toUpperCase();
28
+ }
29
+ instantiate(ctx) {
30
+ const { type, extent, exclude } = this;
31
+ const ex = Array.isArray(extent)
32
+ ? extent.map(v => v.instantiate(ctx))
33
+ : extent.instantiate(ctx);
34
+ return new WindowFrame(type, ex, exclude?.toUpperCase());
35
+ }
36
+ codegen(ctx) {
37
+ const { type, extent, exclude } = this;
38
+ const fn = `frame${type[0].toUpperCase()}${type.slice(1).toLowerCase()}`;
39
+ const ex = Array.isArray(extent)
40
+ ? `[${extent.map(v => v.codegen(ctx)).join(', ')}]`
41
+ : extent.codegen(ctx);
42
+ const cl = exclude ? `, '${exclude.toUpperCase()}'` : '';
43
+ return `${ctx.ns()}${fn}(${ex}${cl})`;
44
+ }
45
+ toJSON() {
46
+ const { type, extent, exclude } = this;
47
+ const key = type.toLowerCase();
48
+ const ex = Array.isArray(extent)
49
+ ? extent.map(v => v.toJSON())
50
+ : extent.toJSON();
51
+ return { [key]: ex, exclude };
52
+ }
53
+ }
54
+ //# sourceMappingURL=WindowFrameNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowFrameNode.js","sourceRoot":"","sources":["../../../src/ast/WindowFrameNode.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,UAAU,gBAAgB,CAAC,IAAI,EAAE,GAAG;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;YACtB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBACxB,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI;QACjB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG,CAAC;YACxB,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CACrB,CAAC;IAEN,OAAO,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAC1C,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO;QAC/B,KAAK,CAAC,YAAY,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG;QACT,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACzE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACnD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @import { Param, Selection } from '@uwdata/mosaic-core'
3
+ * @import { SpecNode } from './ast/SpecNode.js'
4
+ */
5
+ import { createAPIContext, loadExtension } from '@uwdata/vgplot';
6
+ import { resolveExtensions } from './config/extensions.js';
7
+ import { error } from './util.js';
8
+ /**
9
+ * Generate a running web application (DOM content) for a Mosaic spec AST.
10
+ * @param {SpecNode} ast Mosaic AST root node.
11
+ * @param {ConstructorParameters<typeof InstantiateContext>[0]} [options] Instantiation options.
12
+ * @returns {Promise<{
13
+ * element: HTMLElement | SVGSVGElement;
14
+ * params: Map<string, Param | Selection>;
15
+ * }>} A Promise to an object with the resulting
16
+ * DOM element, and a map of named parameters (Param and Selection instances).
17
+ */
18
+ export async function astToDOM(ast, options) {
19
+ const { data, params, plotDefaults } = ast;
20
+ const ctx = new InstantiateContext({ plotDefaults, ...options });
21
+ const queries = [];
22
+ // process database extensions
23
+ const exts = resolveExtensions(ast);
24
+ queries.push(...Array.from(exts).map(name => loadExtension(name)));
25
+ // process data definitions
26
+ for (const node of Object.values(data)) {
27
+ const query = node.instantiate(ctx);
28
+ if (query)
29
+ queries.push(query);
30
+ }
31
+ // perform extension and data loading, if needed
32
+ if (queries.length > 0) {
33
+ await ctx.coordinator.exec(queries);
34
+ }
35
+ // process param/selection definitions
36
+ // skip definitions with names already defined
37
+ for (const [name, node] of Object.entries(params)) {
38
+ if (!ctx.activeParams.has(name)) {
39
+ const param = node.instantiate(ctx);
40
+ ctx.activeParams.set(name, param);
41
+ }
42
+ }
43
+ return {
44
+ element: ast.root.instantiate(ctx),
45
+ params: ctx.activeParams
46
+ };
47
+ }
48
+ export class InstantiateContext {
49
+ /**
50
+ * Create a new InstantiateContext instance.
51
+ * @param {object} options Optional instantiation options.
52
+ * @param {string} [options.baseURL] The base URL for loading data files.
53
+ * @param {any[]} [options.plotDefaults] Array of default plot attributes.
54
+ * @param {Map<string, Param>} [options.params] A map of predefined Params/Selections.
55
+ * @param {ReturnType<typeof createAPIContext>} [options.api] The context to be used for vgplot API methods.
56
+ */
57
+ constructor({ api = createAPIContext(), plotDefaults = [], params = new Map, baseURL = null } = {}) {
58
+ this.api = api;
59
+ this.plotDefaults = plotDefaults;
60
+ this.activeParams = params;
61
+ this.baseURL = baseURL;
62
+ this.coordinator = api.context.coordinator;
63
+ }
64
+ error(message, data) {
65
+ error(message, data);
66
+ }
67
+ }
68
+ //# sourceMappingURL=ast-to-dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-dom.js","sourceRoot":"","sources":["../../src/ast-to-dom.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAG,EAAE,OAAO;IACzC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,8BAA8B;IAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnE,2BAA2B;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,gDAAgD;IAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,sCAAsC;IACtC,8CAA8C;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,YAAY;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBAAkB;IAC7B;;;;;;;OAOG;IACH,YAAY,EACV,GAAG,GAAG,gBAAgB,EAAE,EACxB,YAAY,GAAG,EAAE,EACjB,MAAM,GAAG,IAAI,GAAG,EAChB,OAAO,GAAG,IAAI,EACf,GAAG,EAAE;QACJ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,EAAE,IAAI;QACjB,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,180 @@
1
+ /** @import { SpecNode } from './ast/SpecNode.js' */
2
+ import { resolveExtensions } from './config/extensions.js';
3
+ import { error, isArray, isObject, isString, toArray, toParamRef } from './util.js';
4
+ /**
5
+ * Generate ESM code for a Mosaic spec AST.
6
+ * @param {SpecNode} ast Mosaic AST root node.
7
+ * @param {object} [options] Code generation options.
8
+ * @param {string} [options.baseURL] The base URL for loading data files.
9
+ * @param {string} [options.connector] A database connector to initialize.
10
+ * Valid values are 'wasm', 'socket', and 'rest'.
11
+ * If undefined, no connector code is generated.
12
+ * @param {string} [options.namespace='vg'] The vgplot API namespace object.
13
+ * @param {number} [options.depth=0] The starting indentation depth.
14
+ * @param {Map<string,string|string[]>} [options.imports] A Map of ESM
15
+ * imports to include in generated code. Keys are packages (e.g.,
16
+ * '@uwdata/vgplot') and values indicate what to import (e.g., '* as vg').
17
+ * @param {string|string[]} [options.preamble] Code to include after imports.
18
+ * @returns {string} Generated ESM code using the vgplot API.
19
+ */
20
+ export function astToESM(ast, options = {}) {
21
+ const { root, data, params, plotDefaults } = ast;
22
+ const { preamble, ...ctxOptions } = options;
23
+ const ctx = new CodegenContext({ plotDefaults, ...ctxOptions });
24
+ // generate package imports
25
+ const importsCode = [];
26
+ for (const [pkg, methods] of ctx.imports) {
27
+ importsCode.push(isString(methods)
28
+ ? `import ${methods} from "${pkg}";`
29
+ // @ts-ignore
30
+ : `import { ${methods.join(', ')} } from "${pkg}";`);
31
+ }
32
+ // preamble code comes directly after imports
33
+ const preambleCode = preamble
34
+ ? toArray(preamble).map(s => `${ctx.tab()}${s}`)
35
+ : [];
36
+ // generate database connector code
37
+ const connectorCode = [];
38
+ if (ctx.connector) {
39
+ const con = `${ctx.ns()}${ctx.connector}Connector()`;
40
+ connectorCode.push(`${ctx.tab()}${ctx.ns()}coordinator().databaseConnector(${con});`);
41
+ }
42
+ // process extensions and data definitions
43
+ const queries = [];
44
+ for (const name of resolveExtensions(ast)) {
45
+ queries.push(`${ctx.ns()}loadExtension("${name}")`);
46
+ }
47
+ for (const node of Object.values(data)) {
48
+ const load = node.codegen(ctx);
49
+ if (load)
50
+ queries.push(load);
51
+ }
52
+ // perform extension and data loading
53
+ const dataCode = [];
54
+ if (queries.length) {
55
+ dataCode.push(`${ctx.tab()}await ${ctx.ns()}coordinator().exec([`);
56
+ ctx.indent();
57
+ dataCode.push(queries.map(q => `${ctx.tab()}${q}`).join(',\n'));
58
+ ctx.undent();
59
+ dataCode.push(`${ctx.tab()}]);`);
60
+ }
61
+ // generate params / selections
62
+ const paramCode = [];
63
+ for (const [key, value] of Object.entries(params)) {
64
+ paramCode.push(`const ${toParamRef(key)} = ${value.codegen(ctx)};`);
65
+ }
66
+ // generate default attributes
67
+ let defaultCode = [];
68
+ const defaultList = plotDefaults;
69
+ if (defaultList.length) {
70
+ defaultCode = [
71
+ 'const defaultAttributes = [',
72
+ defaultList.map(a => ' ' + a.codegen(ctx)).join(',\n'),
73
+ '];'
74
+ ];
75
+ }
76
+ // generate specification tree
77
+ const specCode = [
78
+ `export default ${root.codegen(ctx)};`
79
+ ];
80
+ return [
81
+ ...importsCode,
82
+ ...maybeNewline(importsCode),
83
+ ...preambleCode,
84
+ ...maybeNewline(preambleCode),
85
+ ...connectorCode,
86
+ ...maybeNewline(connectorCode),
87
+ ...dataCode,
88
+ ...maybeNewline(dataCode),
89
+ ...paramCode,
90
+ ...maybeNewline(paramCode),
91
+ ...defaultCode,
92
+ ...maybeNewline(defaultCode),
93
+ ...specCode
94
+ ].join('\n');
95
+ }
96
+ export class CodegenContext {
97
+ /**
98
+ * Create a new code generator context.
99
+ * @param {object} [options] Code generation options.
100
+ * @param {*} [options.plotDefaults] Default attributes to apply to all plots.
101
+ * @param {string} [options.baseURL] The base URL for loading data files.
102
+ * @param {string} [options.connector] A database connector to initialize.
103
+ * Valid values are 'wasm', 'socket', and 'rest'.
104
+ * If undefined, no connector code is generated.
105
+ * @param {string} [options.namespace='vg'] The vgplot API namespace object.
106
+ * @param {number} [options.depth=0] The starting indentation depth.
107
+ * @param {Map<string,string|string[]>} [options.imports] A Map of ESM
108
+ * imports to include in generated code. Keys are packages (e.g.,
109
+ * '@uwdata/vgplot') and values indicate what to import (e.g., '* as vg').
110
+ */
111
+ constructor({ plotDefaults = undefined, namespace = 'vg', connector = undefined, imports = new Map([['@uwdata/vgplot', '* as vg']]), baseURL = undefined, depth = 0 } = {}) {
112
+ this.plotDefaults = plotDefaults;
113
+ this.namespace = `${namespace}.`;
114
+ this.connector = connector;
115
+ this.imports = imports;
116
+ this.baseURL = baseURL;
117
+ this.depth = depth;
118
+ }
119
+ addImport(pkg, method) {
120
+ if (!this.imports.has(pkg)) {
121
+ this.imports.set(pkg, [method]);
122
+ }
123
+ else {
124
+ // @ts-ignore
125
+ this.imports.get(pkg).push(method);
126
+ }
127
+ }
128
+ setImports(pkg, all) {
129
+ this.imports.set(pkg, all);
130
+ }
131
+ ns() {
132
+ return this.namespace;
133
+ }
134
+ indent() {
135
+ this.depth += 1;
136
+ }
137
+ undent() {
138
+ this.depth -= 1;
139
+ }
140
+ tab() {
141
+ return Array.from({ length: this.depth }, () => ' ').join('');
142
+ }
143
+ stringify(value) {
144
+ if (isArray(value)) {
145
+ const items = value.map(v => this.stringify(v));
146
+ return `[${this.maybeLineWrap(items)}]`;
147
+ }
148
+ else if (isObject(value)) {
149
+ const props = Object.entries(value)
150
+ .map(([k, v]) => `${maybeQuote(k)}: ${this.stringify(v)}`);
151
+ return `{${this.maybeLineWrap(props)}}`;
152
+ }
153
+ else {
154
+ return JSON.stringify(value);
155
+ }
156
+ }
157
+ maybeLineWrap(spans) {
158
+ const limit = 80 - 2 * this.depth;
159
+ const chars = 2 * spans.length + spans.reduce((a, b) => a + b.length, 0);
160
+ if (chars > limit) {
161
+ this.indent();
162
+ const str = spans.map(s => `\n${this.tab()}${s}`).join(',');
163
+ this.undent();
164
+ return str + '\n' + this.tab();
165
+ }
166
+ else {
167
+ return spans.join(', ');
168
+ }
169
+ }
170
+ error(message, data) {
171
+ error(message, data);
172
+ }
173
+ }
174
+ function maybeQuote(str) {
175
+ return /^[A-Za-z_$]\w*/.test(str) ? str : JSON.stringify(str);
176
+ }
177
+ function maybeNewline(entry) {
178
+ return entry?.length ? [''] : [];
179
+ }
180
+ //# sourceMappingURL=ast-to-esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-to-esm.js","sourceRoot":"","sources":["../../src/ast-to-esm.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { parseHConcat } from '../ast/HConcatNode.js';
2
+ import { parseHSpace } from '../ast/HSpaceNode.js';
3
+ import { parseInput } from '../ast/InputNode.js';
4
+ import { parseLegend } from '../ast/PlotLegendNode.js';
5
+ import { parsePlot, parseTopLevelMark } from '../ast/PlotNode.js';
6
+ import { parseVConcat } from '../ast/VConcatNode.js';
7
+ import { parseVSpace } from '../ast/VSpaceNode.js';
8
+ import { HCONCAT, HSPACE, INPUT, LEGEND, MARK, PLOT, VCONCAT, VSPACE } from '../constants.js';
9
+ /**
10
+ * Map of specification keys to component parsers.
11
+ */
12
+ export function componentMap(overrides = []) {
13
+ return new Map([
14
+ [PLOT, parsePlot],
15
+ [MARK, parseTopLevelMark],
16
+ [LEGEND, parseLegend],
17
+ [INPUT, parseInput],
18
+ [HCONCAT, parseHConcat],
19
+ [VCONCAT, parseVConcat],
20
+ [HSPACE, parseHSpace],
21
+ [VSPACE, parseVSpace],
22
+ ...overrides
23
+ ]);
24
+ }
25
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../../src/config/components.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EACL,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAC5D,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAS,GAAG,EAAE;IACzC,OAAO,IAAI,GAAG,CAAC;QACb,CAAE,IAAI,EAAE,SAAS,CAAE;QACnB,CAAE,IAAI,EAAE,iBAAiB,CAAE;QAC3B,CAAE,MAAM,EAAE,WAAW,CAAE;QACvB,CAAE,KAAK,EAAE,UAAU,CAAE;QACrB,CAAE,OAAO,EAAE,YAAY,CAAE;QACzB,CAAE,OAAO,EAAE,YAAY,CAAE;QACzB,CAAE,MAAM,EAAE,WAAW,CAAE;QACvB,CAAE,MAAM,EAAE,WAAW,CAAE;QACvB,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** @import { SpecNode } from '../ast/SpecNode.js' */
2
+ import { SPATIAL_DATA } from '../ast/DataNode.js';
3
+ import { toArray } from '../util.js';
4
+ /**
5
+ * Construct a set of database extensions to load.
6
+ * Automatically adds the spatial extension if a
7
+ * dataset with format "spatial" is loaded.
8
+ * @param {SpecNode} ast Mosaic AST root node.
9
+ * @returns {Set<string>} A set of extension names.
10
+ */
11
+ export function resolveExtensions(ast) {
12
+ const spec = ast.config?.extensions;
13
+ const exts = new Set(spec ? toArray(spec) : []);
14
+ for (const def of Object.values(ast.data)) {
15
+ if (def.format === SPATIAL_DATA) {
16
+ exts.add('spatial');
17
+ }
18
+ }
19
+ return exts;
20
+ }
21
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/config/extensions.js"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Set of input widget type names.
3
+ * @returns {Set<string>}
4
+ */
5
+ export function inputNames(overrides = []) {
6
+ return new Set([
7
+ 'menu',
8
+ 'search',
9
+ 'slider',
10
+ 'table',
11
+ ...overrides
12
+ ]);
13
+ }
14
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/config/inputs.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,SAAS,GAAG,EAAE;IACvC,OAAO,IAAI,GAAG,CAAC;QACb,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { attributeDirectives, interactorDirectives, legendDirectives, markDirectives } from '@uwdata/vgplot';
2
+ /**
3
+ * Generate an object of lookup maps for vgplot components.
4
+ */
5
+ export function plotNames({ attributes = plotAttributeNames(), interactors = plotInteractorNames(), legends = plotLegendNames(), marks = plotMarkNames() } = {}) {
6
+ return { attributes, interactors, legends, marks };
7
+ }
8
+ /**
9
+ * Names of attribute directive functions.
10
+ * @returns {Set<string>}
11
+ */
12
+ export function plotAttributeNames(overrides = []) {
13
+ return new Set([
14
+ ...Object.keys(attributeDirectives),
15
+ ...overrides
16
+ ]);
17
+ }
18
+ /**
19
+ * Names interactor directive functions.
20
+ * @returns {Set<string>}
21
+ */
22
+ export function plotInteractorNames(overrides = []) {
23
+ return new Set([
24
+ ...Object.keys(interactorDirectives),
25
+ ...overrides
26
+ ]);
27
+ }
28
+ /**
29
+ * Names of legend directive functions.
30
+ * @returns {Set<string>}
31
+ */
32
+ export function plotLegendNames(overrides = []) {
33
+ return new Set([
34
+ ...Object.keys(legendDirectives),
35
+ ...overrides
36
+ ]);
37
+ }
38
+ /**
39
+ * Names of mark directive functions.
40
+ * @returns {Set<string>}
41
+ */
42
+ export function plotMarkNames(overrides = []) {
43
+ return new Set([
44
+ ...Object.keys(markDirectives),
45
+ ...overrides
46
+ ]);
47
+ }
48
+ //# sourceMappingURL=plots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plots.js","sourceRoot":"","sources":["../../../src/config/plots.js"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,UAAU,GAAG,kBAAkB,EAAE,EACjC,WAAW,GAAG,mBAAmB,EAAE,EACnC,OAAO,GAAG,eAAe,EAAE,EAC3B,KAAK,GAAG,aAAa,EAAE,EACxB,GAAG,EAAE;IACJ,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAS,GAAG,EAAE;IAC/C,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACnC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAS,GAAG,EAAE;IAChD,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACpC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAS,GAAG,EAAE;IAC5C,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAChC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,SAAS,GAAG,EAAE;IAC1C,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC9B,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Valid transform method names.
3
+ */
4
+ export function transformNames(overrides = []) {
5
+ return new Set([
6
+ 'argmin',
7
+ 'argmax',
8
+ 'avg',
9
+ 'bin',
10
+ 'centroid',
11
+ 'centroidX',
12
+ 'centroidY',
13
+ 'column',
14
+ 'count',
15
+ 'covariance',
16
+ 'covarPop',
17
+ 'dateMonth',
18
+ 'dateMonthDay',
19
+ 'dateDay',
20
+ 'first',
21
+ 'geomean',
22
+ 'geojson',
23
+ 'last',
24
+ 'max',
25
+ 'median',
26
+ 'min',
27
+ 'mode',
28
+ 'product',
29
+ 'quantile',
30
+ 'stddev',
31
+ 'stddevPop',
32
+ 'sum',
33
+ 'variance',
34
+ 'varPop',
35
+ 'row_number',
36
+ 'rank',
37
+ 'dense_rank',
38
+ 'percent_rank',
39
+ 'cume_dist',
40
+ 'ntile',
41
+ 'lag',
42
+ 'lead',
43
+ 'first_value',
44
+ 'last_value',
45
+ 'nth_value',
46
+ 'years',
47
+ 'months',
48
+ 'days',
49
+ 'hours',
50
+ 'minutes',
51
+ 'seconds',
52
+ 'milliseconds',
53
+ 'microseconds',
54
+ ...overrides
55
+ ]);
56
+ }
57
+ //# sourceMappingURL=transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../../../src/config/transforms.js"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAS,GAAG,EAAE;IAC3C,OAAO,IAAI,GAAG,CAAC;QACb,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,KAAK;QACL,UAAU;QACV,WAAW;QACX,WAAW;QACX,QAAQ;QACR,OAAO;QACP,YAAY;QACZ,UAAU;QACV,WAAW;QACX,cAAc;QACd,SAAS;QACT,OAAO;QACP,SAAS;QACT,SAAS;QACT,MAAM;QACN,KAAK;QACL,QAAQ;QACR,KAAK;QACL,MAAM;QACN,SAAS;QACT,UAAU;QACV,QAAQ;QACR,WAAW;QACX,KAAK;QACL,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,YAAY;QACZ,cAAc;QACd,WAAW;QACX,OAAO;QACP,KAAK;QACL,MAAM;QACN,aAAa;QACb,YAAY;QACZ,WAAW;QACX,OAAO;QACP,QAAQ;QACR,MAAM;QACN,OAAO;QACP,SAAS;QACT,SAAS;QACT,cAAc;QACd,cAAc;QACd,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,44 @@
1
+ // top-level spec
2
+ export const SPEC = "spec";
3
+ // literal values
4
+ export const LITERAL = "literal";
5
+ // dataset identifier
6
+ export const DATAREF = "dataref";
7
+ // options object
8
+ export const OPTIONS = "options";
9
+ // params and selections
10
+ export const SELECTION = "selection";
11
+ export const PARAMREF = "paramref";
12
+ export const COLUMPARAMREF = "columnparamref";
13
+ export const PARAM = "param";
14
+ export const INCLUDE = "include";
15
+ // param and selection types
16
+ export const SELECT = "select";
17
+ export const VALUE = "value";
18
+ export const CROSSFILTER = "crossfilter";
19
+ export const INTERSECT = "intersect";
20
+ export const UNION = "union";
21
+ export const SINGLE = "single";
22
+ // data definitions
23
+ export const DATA = "data";
24
+ // sql expressions
25
+ export const EXPRESSION = "expression";
26
+ export const SQL = "sql";
27
+ // inputs
28
+ export const INPUT = "input";
29
+ // layout
30
+ export const HCONCAT = "hconcat";
31
+ export const VCONCAT = "vconcat";
32
+ export const HSPACE = "hspace";
33
+ export const VSPACE = "vspace";
34
+ // vgplot
35
+ export const MARK = "mark";
36
+ export const FROM = "from";
37
+ export const PLOT = "plot";
38
+ export const LEGEND = "legend";
39
+ export const ATTRIBUTE = "attribute";
40
+ export const TRANSFORM = "transform";
41
+ export const WINDOW_FRAME = "windowframe";
42
+ export const INTERACTOR = "interactor";
43
+ export const FIXED = "Fixed";
44
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.js"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B,iBAAiB;AACjB,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,qBAAqB;AACrB,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,iBAAiB;AACjB,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,wBAAwB;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAC7B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,mBAAmB;AACnB,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B,kBAAkB;AAClB,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AAEzB,SAAS;AACT,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,SAAS;AACT,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,SAAS;AACT,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC;AACvC,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC"}
@@ -1,6 +1,9 @@
1
+ export { astToDOM, InstantiateContext } from "./ast-to-dom.js";
2
+ export { astToESM, CodegenContext } from "./ast-to-esm.js";
1
3
  export { parseSpec } from "./parse-spec.js";
2
4
  export * from "./constants.js";
3
5
  export { ASTNode } from "./ast/ASTNode.js";
6
+ export { DataNode, QueryDataNode, TableDataNode, FileDataNode, CSVDataNode, JSONDataNode, ParquetDataNode, SpatialDataNode, LiteralJSONDataNode, } from "./ast/DataNode.js";
4
7
  export { ExpressionNode } from "./ast/ExpressionNode.js";
5
8
  export { HConcatNode } from "./ast/HConcatNode.js";
6
9
  export { HSpaceNode } from "./ast/HSpaceNode.js";
@@ -9,6 +12,7 @@ export { LiteralNode } from "./ast/LiteralNode.js";
9
12
  export { OptionsNode } from "./ast/OptionsNode.js";
10
13
  export { ParamNode } from "./ast/ParamNode.js";
11
14
  export { ParamRefNode } from "./ast/ParamRefNode.js";
15
+ export { PlotAttributeNode, PlotFixedNode } from "./ast/PlotAttributeNode.js";
12
16
  export { PlotFromNode } from "./ast/PlotFromNode.js";
13
17
  export { PlotInteractorNode } from "./ast/PlotInteractorNode.js";
14
18
  export { PlotLegendNode } from "./ast/PlotLegendNode.js";
@@ -19,12 +23,5 @@ export { SpecNode } from "./ast/SpecNode.js";
19
23
  export { TransformNode } from "./ast/TransformNode.js";
20
24
  export { VConcatNode } from "./ast/VConcatNode.js";
21
25
  export { VSpaceNode } from "./ast/VSpaceNode.js";
22
- /**
23
- * A Mosaic declarative specification.
24
- */
25
- export type Spec = import("./spec/Spec.js").Spec;
26
- export { astToDOM, InstantiateContext } from "./ast-to-dom.js";
27
- export { astToESM, CodegenContext } from "./ast-to-esm.js";
28
- export { DataNode, QueryDataNode, TableDataNode, FileDataNode, CSVDataNode, JSONDataNode, ParquetDataNode, SpatialDataNode, LiteralJSONDataNode } from "./ast/DataNode.js";
29
- export { PlotAttributeNode, PlotFixedNode } from "./ast/PlotAttributeNode.js";
26
+ export type * from "./spec/index.js";
30
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;mBACa,OAAO,gBAAgB,EAAE,IAAI"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,mBAAmB,iBAAiB,CAAC"}
@@ -0,0 +1,26 @@
1
+ export { astToDOM, InstantiateContext } from "./ast-to-dom.js";
2
+ export { astToESM, CodegenContext } from "./ast-to-esm.js";
3
+ export { parseSpec } from "./parse-spec.js";
4
+ export * from "./constants.js";
5
+ export { ASTNode } from "./ast/ASTNode.js";
6
+ export { DataNode, QueryDataNode, TableDataNode, FileDataNode, CSVDataNode, JSONDataNode, ParquetDataNode, SpatialDataNode, LiteralJSONDataNode, } from "./ast/DataNode.js";
7
+ export { ExpressionNode } from "./ast/ExpressionNode.js";
8
+ export { HConcatNode } from "./ast/HConcatNode.js";
9
+ export { HSpaceNode } from "./ast/HSpaceNode.js";
10
+ export { InputNode } from "./ast/InputNode.js";
11
+ export { LiteralNode } from "./ast/LiteralNode.js";
12
+ export { OptionsNode } from "./ast/OptionsNode.js";
13
+ export { ParamNode } from "./ast/ParamNode.js";
14
+ export { ParamRefNode } from "./ast/ParamRefNode.js";
15
+ export { PlotAttributeNode, PlotFixedNode } from "./ast/PlotAttributeNode.js";
16
+ export { PlotFromNode } from "./ast/PlotFromNode.js";
17
+ export { PlotInteractorNode } from "./ast/PlotInteractorNode.js";
18
+ export { PlotLegendNode } from "./ast/PlotLegendNode.js";
19
+ export { PlotMarkNode } from "./ast/PlotMarkNode.js";
20
+ export { PlotNode } from "./ast/PlotNode.js";
21
+ export { SelectionNode } from "./ast/SelectionNode.js";
22
+ export { SpecNode } from "./ast/SpecNode.js";
23
+ export { TransformNode } from "./ast/TransformNode.js";
24
+ export { VConcatNode } from "./ast/VConcatNode.js";
25
+ export { VSpaceNode } from "./ast/VSpaceNode.js";
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}