@geastack/cli 0.1.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.
@@ -0,0 +1,668 @@
1
+ {
2
+ "version": 1,
3
+ "examples": [
4
+ {
5
+ "id": "analog-clock",
6
+ "name": "Analog Clock",
7
+ "description": "clock face",
8
+ "path": "apps/analog-clock",
9
+ "entry": "index.tsx",
10
+ "runtime": "gea",
11
+ "targets": {
12
+ "web": true,
13
+ "esp32": true,
14
+ "geaos": true,
15
+ "android": true,
16
+ "macos": false,
17
+ "ios": false
18
+ }
19
+ },
20
+ {
21
+ "id": "bouncing-balls",
22
+ "name": "Balls Canvas",
23
+ "description": "canvas demo",
24
+ "path": "apps/bouncing-balls",
25
+ "entry": "index.ts",
26
+ "runtime": "gea",
27
+ "targets": {
28
+ "web": true,
29
+ "esp32": true,
30
+ "geaos": true,
31
+ "macos": false,
32
+ "ios": false
33
+ }
34
+ },
35
+ {
36
+ "id": "bouncing-balls-jsx",
37
+ "name": "Balls JSX",
38
+ "description": "animation test",
39
+ "path": "apps/bouncing-balls-jsx",
40
+ "entry": "index.tsx",
41
+ "runtime": "gea",
42
+ "targets": {
43
+ "web": true,
44
+ "esp32": true,
45
+ "geaos": true,
46
+ "macos": false,
47
+ "ios": false
48
+ }
49
+ },
50
+ {
51
+ "id": "bubble-grid",
52
+ "name": "Bubble Grid",
53
+ "description": "watchOS-style pannable circle grid with edge fisheye",
54
+ "path": "apps/bubble-grid",
55
+ "entry": "index.tsx",
56
+ "runtime": "gea",
57
+ "targets": {
58
+ "web": true,
59
+ "esp32": true,
60
+ "geaos": true,
61
+ "macos": false,
62
+ "ios": false
63
+ }
64
+ },
65
+ {
66
+ "id": "bubble-grid-jsx",
67
+ "name": "Bubble Grid JSX",
68
+ "description": "watchOS-style pannable div bubble grid with edge fisheye",
69
+ "path": "apps/bubble-grid-jsx",
70
+ "entry": "index.tsx",
71
+ "runtime": "gea",
72
+ "targets": {
73
+ "web": true,
74
+ "esp32": true,
75
+ "geaos": true,
76
+ "macos": false,
77
+ "ios": false
78
+ }
79
+ },
80
+ {
81
+ "id": "button-tetris",
82
+ "name": "Tetris",
83
+ "description": "button game",
84
+ "path": "apps/button-tetris",
85
+ "entry": "index.tsx",
86
+ "runtime": "gea",
87
+ "targets": {
88
+ "web": true,
89
+ "esp32": true,
90
+ "geaos": true,
91
+ "macos": false,
92
+ "ios": false
93
+ }
94
+ },
95
+ {
96
+ "id": "camera-showcase",
97
+ "name": "Camera",
98
+ "description": "preview + cap",
99
+ "path": "apps/camera-showcase",
100
+ "entry": "index.tsx",
101
+ "runtime": "gea",
102
+ "targets": {
103
+ "web": false,
104
+ "esp32": false,
105
+ "geaos": true,
106
+ "macos": false,
107
+ "ios": false
108
+ }
109
+ },
110
+ {
111
+ "id": "camera-studio",
112
+ "name": "Camera Studio",
113
+ "description": "CSS-sized camera",
114
+ "path": "apps/camera-studio",
115
+ "entry": "index.tsx",
116
+ "runtime": "gea",
117
+ "targets": {
118
+ "web": false,
119
+ "esp32": true,
120
+ "geaos": true,
121
+ "macos": false,
122
+ "ios": false
123
+ }
124
+ },
125
+ {
126
+ "id": "canvas-3d",
127
+ "name": "Canvas 3D",
128
+ "description": "wireframe",
129
+ "path": "apps/canvas-3d",
130
+ "entry": "index.tsx",
131
+ "runtime": "gea",
132
+ "targets": {
133
+ "web": true,
134
+ "esp32": true,
135
+ "geaos": true,
136
+ "macos": false,
137
+ "ios": false
138
+ }
139
+ },
140
+ {
141
+ "id": "canvas-3d-cube",
142
+ "name": "Canvas 3D Cube",
143
+ "description": "canvas cube",
144
+ "path": "apps/canvas-3d-cube",
145
+ "entry": "index.tsx",
146
+ "runtime": "gea",
147
+ "targets": {
148
+ "web": true,
149
+ "esp32": true,
150
+ "geaos": true,
151
+ "macos": false,
152
+ "ios": false
153
+ }
154
+ },
155
+ {
156
+ "id": "car-dashboard",
157
+ "name": "Car Dashboard",
158
+ "description": "1280x720 cluster",
159
+ "path": "apps/car-dashboard",
160
+ "entry": "index.tsx",
161
+ "runtime": "gea",
162
+ "targets": {
163
+ "web": true,
164
+ "esp32": true,
165
+ "geaos": true,
166
+ "macos": false,
167
+ "ios": false
168
+ }
169
+ },
170
+ {
171
+ "id": "counter-jsx",
172
+ "name": "Counter",
173
+ "description": "JSX state",
174
+ "path": "apps/counter-jsx",
175
+ "entry": "index.tsx",
176
+ "runtime": "gea",
177
+ "targets": {
178
+ "web": true,
179
+ "esp32": true,
180
+ "geaos": true,
181
+ "macos": false,
182
+ "ios": false
183
+ }
184
+ },
185
+ {
186
+ "id": "css-3d-cube",
187
+ "name": "CSS 3D Cube",
188
+ "description": "3D CSS demo",
189
+ "path": "apps/css-3d-cube",
190
+ "entry": "index.tsx",
191
+ "runtime": "gea",
192
+ "targets": {
193
+ "web": true,
194
+ "esp32": true,
195
+ "rp2350": true,
196
+ "geaos": true,
197
+ "macos": false,
198
+ "ios": false,
199
+ "android": true
200
+ }
201
+ },
202
+ {
203
+ "id": "css-animation-showcase",
204
+ "name": "CSS Animations",
205
+ "description": "gea::css demo",
206
+ "path": "apps/css-animation-showcase",
207
+ "entry": "index.tsx",
208
+ "runtime": "gea",
209
+ "targets": {
210
+ "web": true,
211
+ "esp32": true,
212
+ "geaos": true,
213
+ "macos": false,
214
+ "ios": false
215
+ }
216
+ },
217
+ {
218
+ "id": "dialer",
219
+ "name": "Dialer",
220
+ "description": "phone keypad",
221
+ "path": "apps/dialer",
222
+ "entry": "index.tsx",
223
+ "runtime": "gea",
224
+ "targets": {
225
+ "web": true,
226
+ "esp32": true,
227
+ "geaos": true,
228
+ "macos": false,
229
+ "ios": false
230
+ }
231
+ },
232
+ {
233
+ "id": "direct-psram-balls",
234
+ "name": "Direct PSRAM Balls",
235
+ "description": "flush perf",
236
+ "path": "apps/direct-psram-balls",
237
+ "entry": "index.ts",
238
+ "runtime": "gea",
239
+ "targets": {
240
+ "web": true,
241
+ "esp32": true,
242
+ "geaos": true,
243
+ "macos": false,
244
+ "ios": false
245
+ }
246
+ },
247
+ {
248
+ "id": "hid-clicker",
249
+ "name": "HID Clicker",
250
+ "description": "BLE remote",
251
+ "path": "apps/hid-clicker",
252
+ "entry": "src/index.tsx",
253
+ "runtime": "gea",
254
+ "targets": {
255
+ "web": true,
256
+ "esp32": true,
257
+ "geaos": true,
258
+ "macos": false,
259
+ "ios": false
260
+ }
261
+ },
262
+ {
263
+ "id": "image-demo",
264
+ "name": "Image Demo",
265
+ "description": "Targets: web, esp32",
266
+ "path": "apps/image-demo",
267
+ "entry": "index.tsx",
268
+ "runtime": "gea",
269
+ "targets": {
270
+ "web": true,
271
+ "esp32": true,
272
+ "geaos": false,
273
+ "macos": false,
274
+ "ios": false
275
+ }
276
+ },
277
+ {
278
+ "id": "image-jsx",
279
+ "name": "Image",
280
+ "description": "png demo",
281
+ "path": "apps/image-jsx",
282
+ "entry": "index.tsx",
283
+ "runtime": "gea",
284
+ "targets": {
285
+ "web": true,
286
+ "esp32": true,
287
+ "geaos": true,
288
+ "macos": false,
289
+ "ios": false
290
+ }
291
+ },
292
+ {
293
+ "id": "ios-device-showcase",
294
+ "name": "iOS Device Showcase",
295
+ "description": "native iOS device APIs",
296
+ "path": "apps/ios-device-showcase",
297
+ "entry": "index.ts",
298
+ "runtime": "gea",
299
+ "targets": {
300
+ "web": false,
301
+ "esp32": false,
302
+ "geaos": false,
303
+ "macos": false,
304
+ "ios": true
305
+ }
306
+ },
307
+ {
308
+ "id": "ios-metal-shader-demo",
309
+ "name": "iOS Metal Shader Demo",
310
+ "description": "Metal shader demo",
311
+ "path": "apps/ios-metal-shader-demo",
312
+ "entry": "index.tsx",
313
+ "runtime": "gea",
314
+ "targets": {
315
+ "web": false,
316
+ "esp32": false,
317
+ "geaos": false,
318
+ "macos": false,
319
+ "ios": true
320
+ }
321
+ },
322
+ {
323
+ "id": "ios-metal-showcase",
324
+ "name": "iOS Metal Showcase",
325
+ "description": "Metal rendering showcase",
326
+ "path": "apps/ios-metal-showcase",
327
+ "entry": "index.tsx",
328
+ "runtime": "gea",
329
+ "targets": {
330
+ "web": false,
331
+ "esp32": false,
332
+ "geaos": false,
333
+ "macos": false,
334
+ "ios": true
335
+ }
336
+ },
337
+ {
338
+ "id": "ios-metal-world-game",
339
+ "name": "iOS Metal World Game",
340
+ "description": "Metal world game",
341
+ "path": "apps/ios-metal-world-game",
342
+ "entry": "index.tsx",
343
+ "runtime": "gea",
344
+ "targets": {
345
+ "web": false,
346
+ "esp32": false,
347
+ "geaos": false,
348
+ "macos": false,
349
+ "ios": true
350
+ }
351
+ },
352
+ {
353
+ "id": "ios-native-showcase",
354
+ "name": "iOS Native Showcase",
355
+ "description": "native iOS controls showcase",
356
+ "path": "apps/ios-native-showcase",
357
+ "entry": "index.ts",
358
+ "runtime": "gea",
359
+ "targets": {
360
+ "web": false,
361
+ "esp32": false,
362
+ "geaos": false,
363
+ "macos": false,
364
+ "ios": true
365
+ }
366
+ },
367
+ {
368
+ "id": "maps",
369
+ "name": "Maps",
370
+ "description": "OpenStreetMap viewer",
371
+ "path": "apps/maps",
372
+ "entry": "index.device.tsx",
373
+ "runtime": "gea",
374
+ "targets": {
375
+ "web": true,
376
+ "esp32": true,
377
+ "geaos": false,
378
+ "macos": false,
379
+ "ios": false
380
+ }
381
+ },
382
+ {
383
+ "id": "notes-jsx",
384
+ "name": "geaNotes",
385
+ "description": "macOS notes app in JSX",
386
+ "path": "apps/notes-jsx",
387
+ "entry": "index.tsx",
388
+ "runtime": "gea",
389
+ "targets": {
390
+ "web": false,
391
+ "esp32": false,
392
+ "geaos": false,
393
+ "macos": true,
394
+ "ios": false
395
+ }
396
+ },
397
+ {
398
+ "id": "notes-native",
399
+ "name": "geaNotes",
400
+ "description": "native macOS notes app",
401
+ "path": "apps/notes-native",
402
+ "entry": "index.ts",
403
+ "runtime": "apple-native",
404
+ "targets": {
405
+ "web": false,
406
+ "esp32": false,
407
+ "geaos": false,
408
+ "macos": true,
409
+ "ios": false
410
+ }
411
+ },
412
+ {
413
+ "id": "settings",
414
+ "name": "Settings",
415
+ "description": "device controls",
416
+ "path": "apps/settings",
417
+ "entry": "index.tsx",
418
+ "runtime": "gea",
419
+ "targets": {
420
+ "web": true,
421
+ "esp32": true,
422
+ "geaos": true,
423
+ "macos": false,
424
+ "ios": false
425
+ }
426
+ },
427
+ {
428
+ "id": "sky-hop",
429
+ "name": "Sky Hop Canvas",
430
+ "description": "canvas game",
431
+ "path": "apps/sky-hop",
432
+ "entry": "index.tsx",
433
+ "runtime": "gea",
434
+ "targets": {
435
+ "web": true,
436
+ "esp32": true,
437
+ "geaos": true,
438
+ "macos": false,
439
+ "ios": false
440
+ }
441
+ },
442
+ {
443
+ "id": "sky-hop-jsx",
444
+ "name": "Sky Hop JSX",
445
+ "description": "jump game",
446
+ "path": "apps/sky-hop-jsx",
447
+ "entry": "index.tsx",
448
+ "runtime": "gea",
449
+ "targets": {
450
+ "web": true,
451
+ "esp32": true,
452
+ "geaos": true,
453
+ "macos": false,
454
+ "ios": false
455
+ }
456
+ },
457
+ {
458
+ "id": "static-card",
459
+ "name": "Static Card",
460
+ "description": "static layout",
461
+ "path": "apps/static-card",
462
+ "entry": "index.tsx",
463
+ "runtime": "gea",
464
+ "targets": {
465
+ "web": true,
466
+ "esp32": true,
467
+ "geaos": true,
468
+ "macos": false,
469
+ "ios": false
470
+ }
471
+ },
472
+ {
473
+ "id": "stopwatch-jsx",
474
+ "name": "Stopwatch",
475
+ "description": "laps timer",
476
+ "path": "apps/stopwatch-jsx",
477
+ "entry": "index.tsx",
478
+ "runtime": "gea",
479
+ "targets": {
480
+ "web": true,
481
+ "esp32": true,
482
+ "geaos": true,
483
+ "macos": false,
484
+ "ios": false
485
+ }
486
+ },
487
+ {
488
+ "id": "temperature-dial",
489
+ "name": "Temperature Dial",
490
+ "description": "AC dial",
491
+ "path": "apps/temperature-dial",
492
+ "entry": "index.tsx",
493
+ "runtime": "gea",
494
+ "targets": {
495
+ "web": true,
496
+ "esp32": true,
497
+ "geaos": true,
498
+ "macos": false,
499
+ "ios": false
500
+ }
501
+ },
502
+ {
503
+ "id": "tic-tac-toe",
504
+ "name": "Tic Tac Toe",
505
+ "description": "tap board",
506
+ "path": "apps/tic-tac-toe",
507
+ "entry": "index.tsx",
508
+ "runtime": "gea",
509
+ "targets": {
510
+ "web": true,
511
+ "esp32": true,
512
+ "geaos": true,
513
+ "macos": false,
514
+ "ios": false
515
+ }
516
+ },
517
+ {
518
+ "id": "tilt-breakout",
519
+ "name": "Breakout",
520
+ "description": "tilt paddle",
521
+ "path": "apps/tilt-breakout",
522
+ "entry": "index.tsx",
523
+ "runtime": "gea",
524
+ "targets": {
525
+ "web": true,
526
+ "esp32": true,
527
+ "geaos": true,
528
+ "macos": false,
529
+ "ios": false
530
+ }
531
+ },
532
+ {
533
+ "id": "todo-jsx",
534
+ "name": "Todos",
535
+ "description": "input list",
536
+ "path": "apps/todo-jsx",
537
+ "entry": "index.tsx",
538
+ "runtime": "gea",
539
+ "targets": {
540
+ "web": true,
541
+ "esp32": true,
542
+ "geaos": true,
543
+ "macos": false,
544
+ "ios": false
545
+ }
546
+ },
547
+ {
548
+ "id": "typography",
549
+ "name": "Typography",
550
+ "description": "font sample",
551
+ "path": "apps/typography",
552
+ "entry": "index.tsx",
553
+ "runtime": "gea",
554
+ "targets": {
555
+ "web": true,
556
+ "esp32": true,
557
+ "geaos": true,
558
+ "macos": false,
559
+ "ios": false
560
+ }
561
+ },
562
+ {
563
+ "id": "virtual-list",
564
+ "name": "Virtual List",
565
+ "description": "scroll probe",
566
+ "path": "apps/virtual-list",
567
+ "entry": "index.tsx",
568
+ "runtime": "gea",
569
+ "targets": {
570
+ "web": true,
571
+ "esp32": true,
572
+ "geaos": true,
573
+ "macos": false,
574
+ "ios": false
575
+ }
576
+ },
577
+ {
578
+ "id": "voice-notes",
579
+ "name": "Voice Notes",
580
+ "description": "tagged voice memos",
581
+ "path": "apps/voice-notes",
582
+ "entry": "index.tsx",
583
+ "runtime": "gea",
584
+ "targets": {
585
+ "web": true,
586
+ "esp32": true,
587
+ "geaos": true,
588
+ "macos": false,
589
+ "ios": false
590
+ }
591
+ },
592
+ {
593
+ "id": "watch",
594
+ "name": "Watch",
595
+ "description": "watch face",
596
+ "path": "apps/watch",
597
+ "entry": "index.tsx",
598
+ "runtime": "gea",
599
+ "targets": {
600
+ "web": true,
601
+ "esp32": true,
602
+ "geaos": true,
603
+ "macos": false,
604
+ "ios": false
605
+ }
606
+ },
607
+ {
608
+ "id": "watch-analog",
609
+ "name": "Analog Watch",
610
+ "description": "analog face",
611
+ "path": "apps/watch-analog",
612
+ "entry": "index.tsx",
613
+ "runtime": "gea",
614
+ "targets": {
615
+ "web": true,
616
+ "esp32": true,
617
+ "geaos": true,
618
+ "macos": false,
619
+ "ios": false
620
+ }
621
+ },
622
+ {
623
+ "id": "watch-date",
624
+ "name": "Date",
625
+ "description": "date + time",
626
+ "path": "apps/watch-date",
627
+ "entry": "index.tsx",
628
+ "runtime": "gea",
629
+ "targets": {
630
+ "web": true,
631
+ "esp32": true,
632
+ "geaos": true,
633
+ "macos": false,
634
+ "ios": false
635
+ }
636
+ },
637
+ {
638
+ "id": "watch-face",
639
+ "name": "Watch Face",
640
+ "description": "Targets: web",
641
+ "path": "apps/watch-face",
642
+ "entry": "index.tsx",
643
+ "runtime": "gea",
644
+ "targets": {
645
+ "web": true,
646
+ "esp32": false,
647
+ "geaos": false,
648
+ "macos": false,
649
+ "ios": false
650
+ }
651
+ },
652
+ {
653
+ "id": "weather",
654
+ "name": "Weather",
655
+ "description": "live forecast",
656
+ "path": "apps/weather",
657
+ "entry": "index.tsx",
658
+ "runtime": "gea",
659
+ "targets": {
660
+ "web": true,
661
+ "esp32": true,
662
+ "geaos": false,
663
+ "macos": false,
664
+ "ios": false
665
+ }
666
+ }
667
+ ]
668
+ }
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@geastack/cli",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Command-line front door for GeaStack apps, targets, and local toolchains.",
6
+ "publishConfig": {
7
+ "access": "restricted"
8
+ },
9
+ "workspaces": [
10
+ "packages/*"
11
+ ],
12
+ "files": [
13
+ "bin/",
14
+ "src/",
15
+ "starters/",
16
+ "examples/",
17
+ "docs/",
18
+ "README.md"
19
+ ],
20
+ "exports": {
21
+ ".": "./src/gea.mjs",
22
+ "./create": "./src/create-geastack.mjs",
23
+ "./errors": "./src/errors.mjs"
24
+ },
25
+ "bin": {
26
+ "gea": "./bin/gea.mjs",
27
+ "create-geastack": "./bin/create-geastack.mjs"
28
+ },
29
+ "dependencies": {
30
+ "@geastack/core": "0.1.2",
31
+ "@geastack/targets": "0.1.2"
32
+ },
33
+ "scripts": {
34
+ "check": "node --check bin/gea.mjs && node --check bin/create-geastack.mjs && find src test packages -name '*.mjs' -print0 | xargs -0 -n1 node --check",
35
+ "test": "node --test"
36
+ },
37
+ "engines": {
38
+ "node": ">=20.19"
39
+ },
40
+ "license": "SEE LICENSE IN LICENSE"
41
+ }