@hpcc-js/observablehq-compiler 1.1.1 → 1.1.3

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 (52) hide show
  1. package/LICENSE +43 -0
  2. package/README.md +105 -105
  3. package/bin/ojscc.mjs +74 -74
  4. package/dist/index.esm.js +586 -562
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.esm.min.js +2 -2
  7. package/dist/index.esm.min.js.map +1 -1
  8. package/dist/index.js +6716 -6688
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.min.js +3 -3
  11. package/dist/index.min.js.map +1 -1
  12. package/package.json +5 -4
  13. package/src/__package__.ts +3 -3
  14. package/src/__tests__/File Attachments.ts +894 -894
  15. package/src/__tests__/Introduction to Imports.ts +748 -748
  16. package/src/__tests__/Observable TimeChart.ts +771 -771
  17. package/src/__tests__/index.ts +13 -13
  18. package/src/__tests__/node.ts +177 -177
  19. package/src/compiler.md +234 -234
  20. package/src/compiler.ts +279 -264
  21. package/src/cst.ts +172 -172
  22. package/src/index.css +459 -459
  23. package/src/index.ts +6 -7
  24. package/src/util.md +113 -113
  25. package/src/util.ts +163 -153
  26. package/src/writer.ts +80 -80
  27. package/types/__package__.d.ts +3 -3
  28. package/types/__tests__/File Attachments.d.ts +109 -109
  29. package/types/__tests__/Introduction to Imports.d.ts +119 -119
  30. package/types/__tests__/Observable TimeChart.d.ts +110 -110
  31. package/types/__tests__/index.d.ts +1 -1
  32. package/types/__tests__/node.d.ts +1 -1
  33. package/types/compiler.d.ts +90 -87
  34. package/types/compiler.d.ts.map +1 -1
  35. package/types/cst.d.ts +41 -41
  36. package/types/index.d.ts +4 -5
  37. package/types/index.d.ts.map +1 -1
  38. package/types/util.d.ts +28 -25
  39. package/types/util.d.ts.map +1 -1
  40. package/types/writer.d.ts +18 -18
  41. package/types-3.4/__package__.d.ts +4 -0
  42. package/types-3.4/__tests__/File Attachments.d.ts +110 -0
  43. package/types-3.4/__tests__/Introduction to Imports.d.ts +120 -0
  44. package/types-3.4/__tests__/Observable TimeChart.d.ts +111 -0
  45. package/types-3.4/__tests__/index.d.ts +2 -0
  46. package/types-3.4/__tests__/node.d.ts +2 -0
  47. package/types-3.4/compiler.d.ts +94 -0
  48. package/types-3.4/cst.d.ts +42 -0
  49. package/types-3.4/index.d.ts +5 -0
  50. package/types-3.4/util.d.ts +29 -0
  51. package/types-3.4/writer.d.ts +19 -0
  52. package/src/__tests__/tsconfig.json +0 -21
package/src/writer.ts CHANGED
@@ -1,80 +1,80 @@
1
- import { ohq } from "@hpcc-js/observable-shim";
2
- import { ParsedImportCell, ParsedVariable } from "./cst";
3
-
4
- export class Writer {
5
-
6
- protected _files: ohq.File[] = [];
7
- protected _imports: string[] = [];
8
- protected _functions: string[] = [];
9
- protected _defines: string[] = [];
10
- protected _defineUid = 0;
11
- protected _functionUid = 0;
12
-
13
- constructor() {
14
- }
15
-
16
- toString() {
17
- return `\
18
- ${this._imports.join("\n")}
19
-
20
- ${this._functions.join("\n").split("\n) {").join("){")}
21
-
22
- export default function define(runtime, observer) {
23
- const main = runtime.module();
24
-
25
- function toString() { return this.url; }
26
- const fileAttachments = new Map([
27
- ${this._files.map(f => `["${f.name}", { url: new URL("${f.url}"), mimeType: ${JSON.stringify(f.mime_type)}, toString }]`).join(",\n ")}
28
- ]);
29
- main.builtin("FileAttachment", runtime.fileAttachments(name => fileAttachments.get(name)));
30
-
31
- ${this._defines.join("\n ")}
32
-
33
- return main;
34
- }\n`;
35
- }
36
-
37
- files(files: ohq.File[]) {
38
- this._files = [...this._files, ...files];
39
- }
40
-
41
- import(url: string) {
42
- this._imports.push(`import define${++this._defineUid} from "${url}"; `);
43
- }
44
-
45
- importDefine(imp: Partial<ParsedImportCell>) {
46
- const injections = imp.injections.map(inj => {
47
- return inj.name === inj.alias ?
48
- `"${inj.name}"` :
49
- `{name: "${inj.name}", alias: "${inj.alias}"}`;
50
- });
51
- const derive = imp.injections.length ? `.derive([${injections.join(", ")}], main)` : "";
52
- this._defines.push(`const child${this._defineUid} = runtime.module(define${this._defineUid})${derive};`);
53
- imp.specifiers.forEach(s => {
54
- this._defines.push(`main.import("${s.name}"${s.alias && s.alias !== s.name ? `, "${s.alias}"` : ""}, child${this._defineUid}); `);
55
- });
56
- }
57
-
58
- function(variable: Partial<ParsedVariable>) {
59
- let id = variable.id ?? `${++this._functionUid}`;
60
- const idParts = id.split(" ");
61
- id = `_${idParts[idParts.length - 1]}`;
62
- this._functions.push(`${variable.func?.toString()?.replace("anonymous", `${id}`)}`);
63
- return id;
64
- }
65
-
66
- define(variable: Partial<ParsedVariable>, observable = true, inlineFunc = false, funcId?: string) {
67
- funcId = funcId ?? variable.id;
68
- const observe = observable ? `.variable(observer(${variable.id ? JSON.stringify(variable.id) : ""}))` : "";
69
- const id = variable.id ? `${JSON.stringify(variable.id)}, ` : "";
70
- const inputs = variable.inputs.length ? `[${variable.inputs.map(i => JSON.stringify(i)).join(", ")}], ` : "";
71
- const func = inlineFunc ?
72
- variable.func?.toString() :
73
- funcId;
74
- this._defines.push(`main${observe}.define(${id}${inputs}${func});`);
75
- }
76
-
77
- error(msg: string) {
78
- }
79
- }
80
-
1
+ import { ohq } from "@hpcc-js/observable-shim";
2
+ import { ParsedImportCell, ParsedVariable } from "./cst";
3
+
4
+ export class Writer {
5
+
6
+ protected _files: ohq.File[] = [];
7
+ protected _imports: string[] = [];
8
+ protected _functions: string[] = [];
9
+ protected _defines: string[] = [];
10
+ protected _defineUid = 0;
11
+ protected _functionUid = 0;
12
+
13
+ constructor() {
14
+ }
15
+
16
+ toString() {
17
+ return `\
18
+ ${this._imports.join("\n")}
19
+
20
+ ${this._functions.join("\n").split("\n) {").join("){")}
21
+
22
+ export default function define(runtime, observer) {
23
+ const main = runtime.module();
24
+
25
+ function toString() { return this.url; }
26
+ const fileAttachments = new Map([
27
+ ${this._files.map(f => `["${f.name}", { url: new URL("${f.url}"), mimeType: ${JSON.stringify(f.mime_type)}, toString }]`).join(",\n ")}
28
+ ]);
29
+ main.builtin("FileAttachment", runtime.fileAttachments(name => fileAttachments.get(name)));
30
+
31
+ ${this._defines.join("\n ")}
32
+
33
+ return main;
34
+ }\n`;
35
+ }
36
+
37
+ files(files: ohq.File[]) {
38
+ this._files = [...this._files, ...files];
39
+ }
40
+
41
+ import(url: string) {
42
+ this._imports.push(`import define${++this._defineUid} from "${url}"; `);
43
+ }
44
+
45
+ importDefine(imp: Partial<ParsedImportCell>) {
46
+ const injections = imp.injections.map(inj => {
47
+ return inj.name === inj.alias ?
48
+ `"${inj.name}"` :
49
+ `{name: "${inj.name}", alias: "${inj.alias}"}`;
50
+ });
51
+ const derive = imp.injections.length ? `.derive([${injections.join(", ")}], main)` : "";
52
+ this._defines.push(`const child${this._defineUid} = runtime.module(define${this._defineUid})${derive};`);
53
+ imp.specifiers.forEach(s => {
54
+ this._defines.push(`main.import("${s.name}"${s.alias && s.alias !== s.name ? `, "${s.alias}"` : ""}, child${this._defineUid}); `);
55
+ });
56
+ }
57
+
58
+ function(variable: Partial<ParsedVariable>) {
59
+ let id = variable.id ?? `${++this._functionUid}`;
60
+ const idParts = id.split(" ");
61
+ id = `_${idParts[idParts.length - 1]}`;
62
+ this._functions.push(`${variable.func?.toString()?.replace("anonymous", `${id}`)}`);
63
+ return id;
64
+ }
65
+
66
+ define(variable: Partial<ParsedVariable>, observable = true, inlineFunc = false, funcId?: string) {
67
+ funcId = funcId ?? variable.id;
68
+ const observe = observable ? `.variable(observer(${variable.id ? JSON.stringify(variable.id) : ""}))` : "";
69
+ const id = variable.id ? `${JSON.stringify(variable.id)}, ` : "";
70
+ const inputs = variable.inputs.length ? `[${variable.inputs.map(i => JSON.stringify(i)).join(", ")}], ` : "";
71
+ const func = inlineFunc ?
72
+ variable.func?.toString() :
73
+ funcId;
74
+ this._defines.push(`main${observe}.define(${id}${inputs}${func});`);
75
+ }
76
+
77
+ error(msg: string) {
78
+ }
79
+ }
80
+
@@ -1,4 +1,4 @@
1
- export declare const PKG_NAME = "@hpcc-js/observablehq-compiler";
2
- export declare const PKG_VERSION = "1.1.1";
3
- export declare const BUILD_VERSION = "2.104.5";
1
+ export declare const PKG_NAME = "@hpcc-js/observablehq-compiler";
2
+ export declare const PKG_VERSION = "1.1.3";
3
+ export declare const BUILD_VERSION = "2.104.6";
4
4
  //# sourceMappingURL=__package__.d.ts.map
@@ -1,110 +1,110 @@
1
- export declare const fa: {
2
- id: string;
3
- slug: string;
4
- trashed: boolean;
5
- description: string;
6
- likes: number;
7
- publish_level: string;
8
- forks: number;
9
- fork_of: any;
10
- update_time: string;
11
- publish_time: string;
12
- publish_version: number;
13
- latest_version: number;
14
- thumbnail: string;
15
- default_thumbnail: string;
16
- roles: any[];
17
- sharing: any;
18
- owner: {
19
- id: string;
20
- avatar_url: string;
21
- login: string;
22
- name: string;
23
- bio: string;
24
- home_url: string;
25
- type: string;
26
- tier: string;
27
- };
28
- creator: {
29
- id: string;
30
- github_login: string;
31
- avatar_url: string;
32
- login: string;
33
- name: string;
34
- bio: string;
35
- home_url: string;
36
- tier: string;
37
- };
38
- authors: any[];
39
- collections: {
40
- id: string;
41
- type: string;
42
- slug: string;
43
- title: string;
44
- description: string;
45
- update_time: string;
46
- pinned: boolean;
47
- ordered: boolean;
48
- custom_thumbnail: string;
49
- default_thumbnail: string;
50
- thumbnail: string;
51
- listing_count: number;
52
- parent_collection_count: number;
53
- owner: {
54
- id: string;
55
- avatar_url: string;
56
- login: string;
57
- name: string;
58
- bio: string;
59
- home_url: string;
60
- type: string;
61
- tier: string;
62
- };
63
- }[];
64
- files: {
65
- id: string;
66
- url: string;
67
- download_url: string;
68
- name: string;
69
- create_time: string;
70
- status: string;
71
- size: number;
72
- mime_type: string;
73
- content_encoding: string;
74
- }[];
75
- comments: {
76
- id: string;
77
- content: string;
78
- node_id: number;
79
- create_time: string;
80
- update_time: any;
81
- resolved: boolean;
82
- user: {
83
- id: string;
84
- github_login: string;
85
- avatar_url: string;
86
- login: string;
87
- name: string;
88
- bio: string;
89
- home_url: string;
90
- tier: string;
91
- };
92
- }[];
93
- commenting_lock: any;
94
- suggestion_from: any;
95
- suggestions_to: any[];
96
- version: number;
97
- title: string;
98
- license: any;
99
- copyright: string;
100
- nodes: {
101
- id: number;
102
- value: string;
103
- pinned: boolean;
104
- mode: string;
105
- data: any;
106
- name: string;
107
- }[];
108
- resolutions: any[];
109
- };
1
+ export declare const fa: {
2
+ id: string;
3
+ slug: string;
4
+ trashed: boolean;
5
+ description: string;
6
+ likes: number;
7
+ publish_level: string;
8
+ forks: number;
9
+ fork_of: any;
10
+ update_time: string;
11
+ publish_time: string;
12
+ publish_version: number;
13
+ latest_version: number;
14
+ thumbnail: string;
15
+ default_thumbnail: string;
16
+ roles: any[];
17
+ sharing: any;
18
+ owner: {
19
+ id: string;
20
+ avatar_url: string;
21
+ login: string;
22
+ name: string;
23
+ bio: string;
24
+ home_url: string;
25
+ type: string;
26
+ tier: string;
27
+ };
28
+ creator: {
29
+ id: string;
30
+ github_login: string;
31
+ avatar_url: string;
32
+ login: string;
33
+ name: string;
34
+ bio: string;
35
+ home_url: string;
36
+ tier: string;
37
+ };
38
+ authors: any[];
39
+ collections: {
40
+ id: string;
41
+ type: string;
42
+ slug: string;
43
+ title: string;
44
+ description: string;
45
+ update_time: string;
46
+ pinned: boolean;
47
+ ordered: boolean;
48
+ custom_thumbnail: string;
49
+ default_thumbnail: string;
50
+ thumbnail: string;
51
+ listing_count: number;
52
+ parent_collection_count: number;
53
+ owner: {
54
+ id: string;
55
+ avatar_url: string;
56
+ login: string;
57
+ name: string;
58
+ bio: string;
59
+ home_url: string;
60
+ type: string;
61
+ tier: string;
62
+ };
63
+ }[];
64
+ files: {
65
+ id: string;
66
+ url: string;
67
+ download_url: string;
68
+ name: string;
69
+ create_time: string;
70
+ status: string;
71
+ size: number;
72
+ mime_type: string;
73
+ content_encoding: string;
74
+ }[];
75
+ comments: {
76
+ id: string;
77
+ content: string;
78
+ node_id: number;
79
+ create_time: string;
80
+ update_time: any;
81
+ resolved: boolean;
82
+ user: {
83
+ id: string;
84
+ github_login: string;
85
+ avatar_url: string;
86
+ login: string;
87
+ name: string;
88
+ bio: string;
89
+ home_url: string;
90
+ tier: string;
91
+ };
92
+ }[];
93
+ commenting_lock: any;
94
+ suggestion_from: any;
95
+ suggestions_to: any[];
96
+ version: number;
97
+ title: string;
98
+ license: any;
99
+ copyright: string;
100
+ nodes: {
101
+ id: number;
102
+ value: string;
103
+ pinned: boolean;
104
+ mode: string;
105
+ data: any;
106
+ name: string;
107
+ }[];
108
+ resolutions: any[];
109
+ };
110
110
  //# sourceMappingURL=File%20Attachments.d.ts.map
@@ -1,120 +1,120 @@
1
- export declare const imports: {
2
- id: string;
3
- slug: string;
4
- trashed: boolean;
5
- description: string;
6
- likes: number;
7
- publish_level: string;
8
- forks: number;
9
- fork_of: any;
10
- update_time: string;
11
- publish_time: string;
12
- publish_version: number;
13
- latest_version: number;
14
- thumbnail: string;
15
- default_thumbnail: string;
16
- roles: any[];
17
- sharing: any;
18
- owner: {
19
- id: string;
20
- avatar_url: string;
21
- login: string;
22
- name: string;
23
- bio: string;
24
- home_url: string;
25
- type: string;
26
- tier: string;
27
- };
28
- creator: {
29
- id: string;
30
- github_login: string;
31
- avatar_url: string;
32
- login: string;
33
- name: string;
34
- bio: string;
35
- home_url: string;
36
- tier: string;
37
- };
38
- authors: any[];
39
- collections: {
40
- id: string;
41
- type: string;
42
- slug: string;
43
- title: string;
44
- description: string;
45
- update_time: string;
46
- pinned: boolean;
47
- ordered: boolean;
48
- custom_thumbnail: string;
49
- default_thumbnail: string;
50
- thumbnail: string;
51
- listing_count: number;
52
- parent_collection_count: number;
53
- owner: {
54
- id: string;
55
- avatar_url: string;
56
- login: string;
57
- name: string;
58
- bio: string;
59
- home_url: string;
60
- type: string;
61
- tier: string;
62
- };
63
- }[];
64
- files: ({
65
- id: string;
66
- url: string;
67
- download_url: string;
68
- name: string;
69
- create_time: string;
70
- status: string;
71
- size: number;
72
- mime_type: any;
73
- content_encoding: string;
74
- } | {
75
- id: string;
76
- url: string;
77
- download_url: string;
78
- name: string;
79
- create_time: string;
80
- status: string;
81
- size: number;
82
- mime_type: string;
83
- content_encoding: any;
84
- })[];
85
- comments: {
86
- id: string;
87
- content: string;
88
- node_id: number;
89
- create_time: string;
90
- update_time: any;
91
- resolved: boolean;
92
- user: {
93
- id: string;
94
- github_login: string;
95
- avatar_url: string;
96
- login: string;
97
- name: string;
98
- bio: string;
99
- home_url: string;
100
- tier: string;
101
- };
102
- }[];
103
- commenting_lock: any;
104
- suggestion_from: any;
105
- suggestions_to: any[];
106
- version: number;
107
- title: string;
108
- license: any;
109
- copyright: string;
110
- nodes: {
111
- id: number;
112
- value: string;
113
- pinned: boolean;
114
- mode: string;
115
- data: any;
116
- name: string;
117
- }[];
118
- resolutions: any[];
119
- };
1
+ export declare const imports: {
2
+ id: string;
3
+ slug: string;
4
+ trashed: boolean;
5
+ description: string;
6
+ likes: number;
7
+ publish_level: string;
8
+ forks: number;
9
+ fork_of: any;
10
+ update_time: string;
11
+ publish_time: string;
12
+ publish_version: number;
13
+ latest_version: number;
14
+ thumbnail: string;
15
+ default_thumbnail: string;
16
+ roles: any[];
17
+ sharing: any;
18
+ owner: {
19
+ id: string;
20
+ avatar_url: string;
21
+ login: string;
22
+ name: string;
23
+ bio: string;
24
+ home_url: string;
25
+ type: string;
26
+ tier: string;
27
+ };
28
+ creator: {
29
+ id: string;
30
+ github_login: string;
31
+ avatar_url: string;
32
+ login: string;
33
+ name: string;
34
+ bio: string;
35
+ home_url: string;
36
+ tier: string;
37
+ };
38
+ authors: any[];
39
+ collections: {
40
+ id: string;
41
+ type: string;
42
+ slug: string;
43
+ title: string;
44
+ description: string;
45
+ update_time: string;
46
+ pinned: boolean;
47
+ ordered: boolean;
48
+ custom_thumbnail: string;
49
+ default_thumbnail: string;
50
+ thumbnail: string;
51
+ listing_count: number;
52
+ parent_collection_count: number;
53
+ owner: {
54
+ id: string;
55
+ avatar_url: string;
56
+ login: string;
57
+ name: string;
58
+ bio: string;
59
+ home_url: string;
60
+ type: string;
61
+ tier: string;
62
+ };
63
+ }[];
64
+ files: ({
65
+ id: string;
66
+ url: string;
67
+ download_url: string;
68
+ name: string;
69
+ create_time: string;
70
+ status: string;
71
+ size: number;
72
+ mime_type: any;
73
+ content_encoding: string;
74
+ } | {
75
+ id: string;
76
+ url: string;
77
+ download_url: string;
78
+ name: string;
79
+ create_time: string;
80
+ status: string;
81
+ size: number;
82
+ mime_type: string;
83
+ content_encoding: any;
84
+ })[];
85
+ comments: {
86
+ id: string;
87
+ content: string;
88
+ node_id: number;
89
+ create_time: string;
90
+ update_time: any;
91
+ resolved: boolean;
92
+ user: {
93
+ id: string;
94
+ github_login: string;
95
+ avatar_url: string;
96
+ login: string;
97
+ name: string;
98
+ bio: string;
99
+ home_url: string;
100
+ tier: string;
101
+ };
102
+ }[];
103
+ commenting_lock: any;
104
+ suggestion_from: any;
105
+ suggestions_to: any[];
106
+ version: number;
107
+ title: string;
108
+ license: any;
109
+ copyright: string;
110
+ nodes: {
111
+ id: number;
112
+ value: string;
113
+ pinned: boolean;
114
+ mode: string;
115
+ data: any;
116
+ name: string;
117
+ }[];
118
+ resolutions: any[];
119
+ };
120
120
  //# sourceMappingURL=Introduction%20to%20Imports.d.ts.map