@jarenjs/studio 0.83.3 → 0.85.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 (90) hide show
  1. package/README.md +21 -6
  2. package/contracts/data.contract.json +243 -0
  3. package/dist/types/component/data/actions.d.ts +234 -0
  4. package/dist/types/component/data/index.d.ts +9 -0
  5. package/dist/types/component/data/mount.d.ts +87 -0
  6. package/dist/types/component/data/project-widget.d.ts +27 -0
  7. package/dist/types/component/data/viewmodel.d.ts +85 -0
  8. package/dist/types/component/data/views.d.ts +148 -0
  9. package/dist/types/component/document.d.ts +82 -0
  10. package/dist/types/component/flow/actions.d.ts +708 -0
  11. package/dist/types/component/flow/index.d.ts +7 -0
  12. package/dist/types/component/flow/mount.d.ts +66 -0
  13. package/dist/types/component/flow/project-widget.d.ts +8 -0
  14. package/dist/types/component/flow/runtime.d.ts +57 -0
  15. package/dist/types/component/flow/views.d.ts +242 -0
  16. package/dist/types/component/host.d.ts +2 -2
  17. package/dist/types/component/index.d.ts +21 -15
  18. package/dist/types/component/mount.d.ts +51 -0
  19. package/dist/types/component/project-actions.d.ts +302 -0
  20. package/dist/types/component/project-controller.d.ts +81 -0
  21. package/dist/types/component/project-state.d.ts +1 -0
  22. package/dist/types/component/project.d.ts +327 -0
  23. package/dist/types/component/shared/host-widget.d.ts +24 -0
  24. package/dist/types/component/shared/memo.d.ts +12 -0
  25. package/dist/types/component/shared/nodes.d.ts +92 -0
  26. package/dist/types/component/shared/schema-options.d.ts +28 -0
  27. package/dist/types/component/shared/studio-kit.d.ts +78 -0
  28. package/dist/types/component/shared/ui.d.ts +136 -0
  29. package/dist/types/component/view.d.ts +6 -6
  30. package/dist/types/data/boot-stages.d.ts +97 -0
  31. package/dist/types/data/browser-worker.d.ts +22 -0
  32. package/dist/types/data/contract.d.ts +9 -0
  33. package/dist/types/data/editor.d.ts +81 -0
  34. package/dist/types/data/handlers.d.ts +130 -0
  35. package/dist/types/data/host.d.ts +8 -0
  36. package/dist/types/data/project-worker.d.ts +8 -0
  37. package/dist/types/data/runtime.d.ts +46 -0
  38. package/dist/types/data/state.d.ts +33 -0
  39. package/dist/types/data/storage.d.ts +26 -0
  40. package/dist/types/data/transport.d.ts +69 -0
  41. package/dist/types/flow-document.d.ts +19 -0
  42. package/dist/types/flow-editor.d.ts +88 -0
  43. package/docs/EDITORS.md +158 -0
  44. package/docs/PROJECT-FORMAT.md +1 -11
  45. package/package.json +32 -15
  46. package/src/component/data/actions.js +138 -0
  47. package/src/component/data/index.js +10 -0
  48. package/src/component/data/mount.js +63 -0
  49. package/src/component/data/project-widget.js +164 -0
  50. package/src/component/data/viewmodel.js +185 -0
  51. package/src/component/data/views.js +241 -0
  52. package/src/component/document.js +344 -0
  53. package/src/component/flow/actions.js +331 -0
  54. package/src/component/flow/index.js +8 -0
  55. package/src/component/flow/mount.js +53 -0
  56. package/src/component/flow/project-widget.js +44 -0
  57. package/src/component/flow/runtime.js +481 -0
  58. package/src/component/flow/views.js +196 -0
  59. package/src/component/host.js +2 -2
  60. package/src/component/index.js +19 -9
  61. package/src/component/mount.js +43 -0
  62. package/src/component/project-actions.js +189 -0
  63. package/src/component/project-controller.js +248 -0
  64. package/src/component/project-state.js +30 -0
  65. package/src/component/project.js +308 -0
  66. package/src/component/shared/host-widget.js +35 -0
  67. package/src/component/shared/memo.js +28 -0
  68. package/src/component/shared/nodes.js +94 -0
  69. package/src/component/shared/schema-options.js +30 -0
  70. package/src/component/shared/studio-kit.js +59 -0
  71. package/src/component/shared/ui.js +134 -0
  72. package/src/data/boot-stages.js +202 -0
  73. package/src/data/browser-worker.js +247 -0
  74. package/src/data/contract.js +7 -0
  75. package/src/data/editor.js +95 -0
  76. package/src/data/handlers.js +349 -0
  77. package/src/data/host.js +8 -0
  78. package/src/data/project-worker.js +26 -0
  79. package/src/data/runtime.js +462 -0
  80. package/src/data/state.js +46 -0
  81. package/src/data/storage.js +61 -0
  82. package/src/data/transport.js +215 -0
  83. package/src/flow-document.js +24 -0
  84. package/src/flow-editor.js +98 -0
  85. package/styles/data.css +53 -0
  86. package/styles/editor.css +150 -0
  87. package/styles/flow.css +99 -0
  88. package/styles/studio.css +1 -0
  89. package/dist/types/author.d.ts +0 -27
  90. package/src/author.js +0 -55
@@ -0,0 +1,302 @@
1
+ /** Project editor transitions, shared by every host. */
2
+ export declare const PROJECT_ACTIONS: {
3
+ 'project/buffer-text': {
4
+ patch: {
5
+ op: string;
6
+ path: string;
7
+ value: {
8
+ file: string;
9
+ text: string;
10
+ dirty: boolean;
11
+ };
12
+ }[];
13
+ };
14
+ 'project/buffer-accept': {
15
+ patch: {
16
+ op: string;
17
+ path: string;
18
+ value: null;
19
+ }[];
20
+ };
21
+ 'project/route-input': {
22
+ effects: {
23
+ run: string;
24
+ with: {
25
+ member: string;
26
+ value: string;
27
+ };
28
+ }[];
29
+ };
30
+ 'project/route-model': {
31
+ effects: {
32
+ run: string;
33
+ with: {
34
+ member: string;
35
+ value: string;
36
+ };
37
+ }[];
38
+ };
39
+ 'project/route-collection': {
40
+ effects: {
41
+ run: string;
42
+ with: {
43
+ member: string;
44
+ value: string;
45
+ };
46
+ }[];
47
+ };
48
+ 'project/artifact-edit': {
49
+ effects: {
50
+ run: string;
51
+ with: string;
52
+ }[];
53
+ };
54
+ 'project/file-text': {
55
+ patch: {
56
+ op: string;
57
+ path: string;
58
+ value: null;
59
+ }[];
60
+ effects: {
61
+ run: string;
62
+ with: {
63
+ text: string;
64
+ };
65
+ }[];
66
+ };
67
+ 'project/files-set': {
68
+ patch: ({
69
+ op: string;
70
+ path: string;
71
+ value: string;
72
+ } | {
73
+ op: string;
74
+ path: string;
75
+ value: boolean;
76
+ })[];
77
+ };
78
+ 'project/active': {
79
+ patch: ({
80
+ op: string;
81
+ path: string;
82
+ value: string;
83
+ } | {
84
+ op: string;
85
+ path: string;
86
+ value: null;
87
+ })[];
88
+ };
89
+ 'project/committed': {
90
+ patch: ({
91
+ op: string;
92
+ path: string;
93
+ value: string;
94
+ } | {
95
+ op: string;
96
+ path: string;
97
+ value: boolean;
98
+ })[];
99
+ };
100
+ 'project/execute': {
101
+ patch: {
102
+ op: string;
103
+ path: string;
104
+ value: string;
105
+ }[];
106
+ effects: {
107
+ run: string;
108
+ with: string;
109
+ }[];
110
+ };
111
+ 'project/run': {
112
+ patch: {
113
+ op: string;
114
+ path: string;
115
+ value: string;
116
+ }[];
117
+ effects: {
118
+ run: string;
119
+ }[];
120
+ };
121
+ 'project/autorun': {
122
+ patch: ({
123
+ op: string;
124
+ path: string;
125
+ value: {
126
+ $not: string;
127
+ };
128
+ } | {
129
+ op: string;
130
+ path: string;
131
+ value: boolean;
132
+ })[];
133
+ };
134
+ 'project/result': {
135
+ patch: {
136
+ op: string;
137
+ path: {
138
+ $concat: (string | {
139
+ $replace: (string | {
140
+ $replace: string[];
141
+ })[];
142
+ })[];
143
+ };
144
+ value: string;
145
+ }[];
146
+ };
147
+ 'project/add-file': {
148
+ effects: {
149
+ run: string;
150
+ with: {
151
+ kind: string;
152
+ };
153
+ }[];
154
+ };
155
+ 'project/delete': {
156
+ effects: {
157
+ run: string;
158
+ with: {
159
+ name: string;
160
+ };
161
+ }[];
162
+ };
163
+ 'project/rename-draft': {
164
+ patch: {
165
+ op: string;
166
+ path: string;
167
+ value: {
168
+ file: string;
169
+ text: string;
170
+ };
171
+ }[];
172
+ };
173
+ 'project/rename': {
174
+ patch: {
175
+ op: string;
176
+ path: string;
177
+ value: null;
178
+ }[];
179
+ effects: {
180
+ run: string;
181
+ with: {
182
+ name: string;
183
+ };
184
+ }[];
185
+ };
186
+ 'project/added': {
187
+ patch: ({
188
+ op: string;
189
+ path: string;
190
+ value: string;
191
+ } | {
192
+ op: string;
193
+ path: string;
194
+ value: boolean;
195
+ } | {
196
+ op: string;
197
+ path: string;
198
+ value: null;
199
+ })[];
200
+ };
201
+ 'project/structural': {
202
+ patch: ({
203
+ op: string;
204
+ path: string;
205
+ value: string;
206
+ } | {
207
+ op: string;
208
+ path: string;
209
+ value: null;
210
+ } | {
211
+ op: string;
212
+ path: string;
213
+ value: {};
214
+ } | {
215
+ op: string;
216
+ path: string;
217
+ value: boolean;
218
+ })[];
219
+ };
220
+ 'project/stage-error': {
221
+ patch: {
222
+ op: string;
223
+ path: string;
224
+ value: string;
225
+ }[];
226
+ };
227
+ 'project/open': {
228
+ patch: ({
229
+ op: string;
230
+ path: string;
231
+ value: {
232
+ $default: string[];
233
+ };
234
+ } | {
235
+ op: string;
236
+ path: string;
237
+ value: string;
238
+ } | {
239
+ op: string;
240
+ path: string;
241
+ value: null;
242
+ } | {
243
+ op: string;
244
+ path: string;
245
+ value: number;
246
+ } | {
247
+ op: string;
248
+ path: string;
249
+ value: boolean;
250
+ } | {
251
+ op: string;
252
+ path: string;
253
+ value: {
254
+ $default?: undefined;
255
+ };
256
+ })[];
257
+ };
258
+ 'project/template': {
259
+ effects: {
260
+ run: string;
261
+ with: {
262
+ id: string;
263
+ };
264
+ }[];
265
+ };
266
+ 'project/download': {
267
+ effects: {
268
+ run: string;
269
+ }[];
270
+ };
271
+ 'project/eject': {
272
+ effects: {
273
+ run: string;
274
+ }[];
275
+ };
276
+ 'project/export': {
277
+ effects: {
278
+ run: string;
279
+ }[];
280
+ };
281
+ 'project/layout-mode': {
282
+ patch: {
283
+ op: string;
284
+ path: string;
285
+ value: string;
286
+ }[];
287
+ };
288
+ 'project/layout-ratio': {
289
+ patch: {
290
+ op: string;
291
+ path: string;
292
+ value: string;
293
+ }[];
294
+ };
295
+ 'project/pane': {
296
+ patch: {
297
+ op: string;
298
+ path: string;
299
+ value: string;
300
+ }[];
301
+ };
302
+ };
@@ -0,0 +1,81 @@
1
+ export type ProjectSnapshot = {
2
+ document: any;
3
+ revision: string;
4
+ stageRevision: number;
5
+ };
6
+ export type EditorReceipt = {
7
+ ok: boolean;
8
+ document?: any;
9
+ revision?: string;
10
+ conflict?: boolean;
11
+ error?: string;
12
+ errors?: any[];
13
+ valid?: boolean;
14
+ total?: number;
15
+ code?: string;
16
+ result?: any;
17
+ stale?: boolean;
18
+ requested?: boolean;
19
+ };
20
+ import { applyJSONPatch } from '@jarenjs/json/patch';
21
+ /** @param {{ getApp: () => any, host: any, projectData?: any, projectTemplate?: Function, download?: Function, exportProject?: Function, debounceMs?: number }} env */
22
+ export declare function createProjectController(env: {
23
+ getApp: () => any;
24
+ host: any;
25
+ projectData?: any;
26
+ projectTemplate?: Function;
27
+ download?: Function;
28
+ exportProject?: Function;
29
+ debounceMs?: number;
30
+ }): {
31
+ effects: {
32
+ 'project-accepted': (id: any) => void;
33
+ 'project-refused': (id: any) => void;
34
+ 'project-editor-run': (props: any, dispatch: any) => Promise<void>;
35
+ 'project-download': (props: any, dispatch: any) => void;
36
+ 'project-eject': (props: any, dispatch: any) => Promise<void>;
37
+ 'project-export': (props: any, dispatch: any) => void;
38
+ 'project-route': (props: any, dispatch: any) => void;
39
+ 'project-artifact-edit': (props: any, dispatch: any) => void;
40
+ 'project-edit': (props: any, dispatch: any) => void;
41
+ 'project-run': ((props: any, dispatch: any) => void) & {
42
+ dispose: () => void;
43
+ };
44
+ 'project-template': (props: any, dispatch: any) => void;
45
+ 'project-add': (props: any, dispatch: any) => void;
46
+ 'project-delete': (props: any, dispatch: any) => void;
47
+ 'project-rename': (props: any, dispatch: any) => void;
48
+ };
49
+ attach: () => void;
50
+ dispose: () => void;
51
+ commit: () => void;
52
+ runActive: () => void;
53
+ read: () => ProjectSnapshot;
54
+ validate: (candidate: any) => {
55
+ valid: boolean;
56
+ errors: any;
57
+ total: any;
58
+ document: any;
59
+ } | {
60
+ document?: undefined;
61
+ valid: boolean;
62
+ errors: {
63
+ code: any;
64
+ message: any;
65
+ docPath: any;
66
+ }[];
67
+ total: number;
68
+ };
69
+ replace: (candidate: any, { expectedRevision }?: {
70
+ expectedRevision?: string;
71
+ }) => Promise<EditorReceipt>;
72
+ apply: (patch: Parameters<typeof applyJSONPatch>[1], options?: {
73
+ expectedRevision?: string;
74
+ }) => Promise<EditorReceipt>;
75
+ run: (name?: string, options?: {
76
+ restart?: boolean;
77
+ }) => Promise<EditorReceipt> | {
78
+ error: string;
79
+ };
80
+ subscribe: (listener: (snapshot: ProjectSnapshot) => void) => () => void;
81
+ };
@@ -0,0 +1 @@
1
+ export declare function createProjectState(project: any): any;
@@ -0,0 +1,327 @@
1
+ /** @param {{ operators?: any, loadDocument: Function, runQuery: Function, runJslt: Function, runValidation: Function }} options */
2
+ export declare function createProjectHost(options: {
3
+ operators?: any;
4
+ loadDocument: Function;
5
+ runQuery: Function;
6
+ runJslt: Function;
7
+ runValidation: Function;
8
+ }): {
9
+ projectComponent: {
10
+ mode: string;
11
+ rules: ({
12
+ match: string;
13
+ mode: string;
14
+ body: (string | (string | {
15
+ name: string;
16
+ class: string;
17
+ role: string;
18
+ 'aria-orientation': {
19
+ $if: (string | {
20
+ $eq: string[];
21
+ })[];
22
+ };
23
+ 'aria-label': string;
24
+ 'aria-valuemin': string;
25
+ 'aria-valuemax': string;
26
+ 'aria-valuenow': string;
27
+ tabindex: string;
28
+ props: {
29
+ ratio: string;
30
+ mode: string;
31
+ axis: {
32
+ $if: (string | {
33
+ $eq: string[];
34
+ })[];
35
+ };
36
+ };
37
+ })[] | (string | any[] | {
38
+ class: string;
39
+ role: string;
40
+ 'aria-label': string;
41
+ })[] | (string | {
42
+ $apply: string;
43
+ }[] | (string | (string | {
44
+ value: string;
45
+ })[] | {
46
+ class: string;
47
+ 'aria-label': string;
48
+ value: string;
49
+ on: {
50
+ change: string;
51
+ };
52
+ })[] | {
53
+ class: string;
54
+ 'aria-label': string;
55
+ })[] | (string | (string | {
56
+ class: string;
57
+ })[] | {
58
+ class: string;
59
+ $if?: undefined;
60
+ } | {
61
+ $if: (string | (string | {
62
+ class: string;
63
+ role: string;
64
+ })[])[];
65
+ class?: undefined;
66
+ } | {
67
+ $if: ((string | (string | {
68
+ name: {
69
+ $default: string[];
70
+ };
71
+ props: string;
72
+ })[] | {
73
+ class: string;
74
+ })[] | {
75
+ $eq: string[];
76
+ $if?: undefined;
77
+ } | {
78
+ $if: ({
79
+ $eq: string[];
80
+ $if?: undefined;
81
+ } | {
82
+ $eq?: undefined;
83
+ $if: (string | (string | {
84
+ $apply: string[];
85
+ }[] | {
86
+ class: string;
87
+ })[])[];
88
+ } | {
89
+ $eq?: undefined;
90
+ $if: ((string | {
91
+ class: string;
92
+ })[] | {
93
+ $eq: string[];
94
+ })[];
95
+ })[];
96
+ $eq?: undefined;
97
+ })[];
98
+ class?: undefined;
99
+ })[] | (string | (string | {
100
+ class: string;
101
+ type: string;
102
+ 'aria-pressed': {
103
+ $if: string[];
104
+ };
105
+ on: {
106
+ click: string;
107
+ };
108
+ })[] | (string | {
109
+ class: string;
110
+ type: string;
111
+ on: {
112
+ click: string;
113
+ };
114
+ })[] | (string | any[] | {
115
+ class: string;
116
+ role: string;
117
+ 'aria-label': string;
118
+ })[] | (string | {
119
+ $apply: string;
120
+ }[] | (string | {
121
+ class: string;
122
+ })[] | {
123
+ class: string;
124
+ })[] | {
125
+ class: string;
126
+ })[] | (string | (string | {
127
+ class: string;
128
+ rows: number;
129
+ spellcheck: string;
130
+ autocapitalize: string;
131
+ autocorrect: string;
132
+ autocomplete: string;
133
+ value: any;
134
+ readonly?: string | undefined;
135
+ on: {
136
+ change: string;
137
+ input?: undefined;
138
+ } | {
139
+ input: string;
140
+ change: string;
141
+ };
142
+ })[] | (string | (string | {
143
+ class: string;
144
+ value: string;
145
+ spellcheck: string;
146
+ autocapitalize: string;
147
+ autocomplete: string;
148
+ 'aria-label': string;
149
+ on: {
150
+ input: string;
151
+ change: string;
152
+ };
153
+ })[] | (string | string[] | {
154
+ class: string;
155
+ })[] | {
156
+ class: string;
157
+ })[] | {
158
+ class: string;
159
+ $if?: undefined;
160
+ } | {
161
+ $if: (string | (string | {}[] | (string | {
162
+ type: string;
163
+ class: string;
164
+ title: string;
165
+ on: {
166
+ click: string;
167
+ };
168
+ })[] | {
169
+ class: string;
170
+ role: string;
171
+ })[])[];
172
+ class?: undefined;
173
+ } | {
174
+ $if: (string | (string | {
175
+ class: string;
176
+ $if?: undefined;
177
+ } | {
178
+ $if: (string | {}[])[];
179
+ class?: undefined;
180
+ } | {
181
+ $if: (string | {}[])[];
182
+ class?: undefined;
183
+ } | {
184
+ $if: (string | {}[])[];
185
+ class?: undefined;
186
+ })[])[];
187
+ class?: undefined;
188
+ } | {
189
+ $if: (string | (string | {
190
+ $apply: string;
191
+ }[] | {
192
+ class: string;
193
+ role: string;
194
+ })[])[];
195
+ class?: undefined;
196
+ })[] | {
197
+ class: string;
198
+ 'data-mode': string;
199
+ 'data-pane': string;
200
+ })[];
201
+ } | {
202
+ match: string;
203
+ mode: string;
204
+ body: (string | (string | {
205
+ type: string;
206
+ class: string;
207
+ title: string;
208
+ 'aria-label': string;
209
+ on: {
210
+ click: {
211
+ action: string;
212
+ with: string;
213
+ };
214
+ };
215
+ })[] | (string | (string | {
216
+ class: string;
217
+ 'data-badge': string;
218
+ })[] | (string | {
219
+ class: string;
220
+ })[] | {
221
+ type: string;
222
+ class: {
223
+ $if: string[];
224
+ };
225
+ title: string;
226
+ on: {
227
+ click: {
228
+ action: string;
229
+ with: string;
230
+ };
231
+ };
232
+ $if?: undefined;
233
+ } | {
234
+ type?: undefined;
235
+ title?: undefined;
236
+ on?: undefined;
237
+ $if: (string | (string | {
238
+ class: string;
239
+ title: string;
240
+ })[])[];
241
+ class?: undefined;
242
+ })[] | {
243
+ class: string;
244
+ })[];
245
+ } | {
246
+ match: string;
247
+ mode: string;
248
+ body: (string | {}[] | {
249
+ class: string;
250
+ type: string;
251
+ on: {
252
+ click: {
253
+ action: string;
254
+ with: string;
255
+ };
256
+ };
257
+ })[];
258
+ })[];
259
+ modes: Readonly<{
260
+ project: {
261
+ unmatched: string;
262
+ };
263
+ }>;
264
+ viewModel: (state: any) => any;
265
+ hostPolicy: typeof import("./host.js").hostPolicy;
266
+ reconcileBuffer: typeof import("./host.js").reconcileBuffer;
267
+ describe: (project: any) => {
268
+ active: any;
269
+ layout: any;
270
+ files: any;
271
+ };
272
+ validateFile: (file: any) => {
273
+ valid: boolean;
274
+ kind: string;
275
+ total: number;
276
+ errors: Array<{
277
+ code: string | null;
278
+ message: string;
279
+ docPath?: string;
280
+ }>;
281
+ };
282
+ classifyChange: typeof import("../assemble.js").classifyChange;
283
+ parseProject: typeof import("../project.js").parseProject;
284
+ };
285
+ projectSnapshot: (slice: any) => {
286
+ project: any;
287
+ files: any;
288
+ active: any;
289
+ layout: any;
290
+ name: any;
291
+ };
292
+ projectAppFile: (slice: any) => {
293
+ name: string;
294
+ kind: string;
295
+ text: string;
296
+ } | null;
297
+ commitProject: (slice: any) => {
298
+ mount: any;
299
+ revision: number;
300
+ };
301
+ runProjectFile: (slice: any, name: string, options?: {
302
+ model?: (project: any, name: string) => Promise<any>;
303
+ }) => {
304
+ nodes: any[];
305
+ } | Promise<{
306
+ nodes: any[];
307
+ }> | null;
308
+ createProjectStageWidget: (env?: {
309
+ schedule?: (flush: () => void) => void;
310
+ }) => {
311
+ mount(host: any, props: any, emit: any): {
312
+ host: any;
313
+ emit: any;
314
+ app: null;
315
+ revision: null;
316
+ stateKey: null;
317
+ shapeKey: null;
318
+ };
319
+ update(handle: any, props: any, prevProps: any): void;
320
+ unmount(handle: any): void;
321
+ };
322
+ createProjectSplitterWidget: () => {
323
+ mount: Function;
324
+ update: Function;
325
+ unmount: Function;
326
+ };
327
+ };