@monimesl/dot-cli 0.1.0-alpha.2 → 0.1.0-alpha.23

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 (132) hide show
  1. package/README.md +91 -17
  2. package/dist/cli.js +853 -160
  3. package/dist/cli.js.map +1 -1
  4. package/dist/server-DMnWDdJ6.js +11308 -0
  5. package/dist/server-DMnWDdJ6.js.map +1 -0
  6. package/dist/templates/showcase/.env +3 -0
  7. package/dist/templates/showcase/dot.ts +60 -0
  8. package/dist/templates/showcase/pages/basics/bars/controller.ts +47 -0
  9. package/dist/templates/showcase/pages/basics/bars/state.ts +7 -0
  10. package/dist/templates/showcase/pages/basics/bars/view.dml +36 -0
  11. package/dist/templates/showcase/pages/basics/bindings/controller.ts +15 -0
  12. package/dist/templates/showcase/pages/basics/bindings/state.ts +14 -0
  13. package/dist/templates/showcase/pages/basics/bindings/view.dml +41 -0
  14. package/dist/templates/showcase/pages/basics/colors/controller.ts +112 -0
  15. package/dist/templates/showcase/pages/basics/colors/state.ts +17 -0
  16. package/dist/templates/showcase/pages/basics/colors/view.dml +142 -0
  17. package/dist/templates/showcase/pages/basics/concert/controller.ts +16 -0
  18. package/dist/templates/showcase/pages/basics/concert/state.ts +7 -0
  19. package/dist/templates/showcase/pages/basics/concert/view.dml +20 -0
  20. package/dist/templates/showcase/pages/basics/control-flow/controller.ts +18 -0
  21. package/dist/templates/showcase/pages/basics/control-flow/state.ts +16 -0
  22. package/dist/templates/showcase/pages/basics/control-flow/view.dml +55 -0
  23. package/dist/templates/showcase/pages/basics/events/controller.ts +43 -0
  24. package/dist/templates/showcase/pages/basics/events/state.ts +11 -0
  25. package/dist/templates/showcase/pages/basics/events/view.dml +51 -0
  26. package/dist/templates/showcase/pages/basics/hooks/controller.ts +43 -0
  27. package/dist/templates/showcase/pages/basics/hooks/state.ts +10 -0
  28. package/dist/templates/showcase/pages/basics/hooks/view.dml +37 -0
  29. package/dist/templates/showcase/pages/basics/navigation/controller.ts +41 -0
  30. package/dist/templates/showcase/pages/basics/navigation/state.ts +11 -0
  31. package/dist/templates/showcase/pages/basics/navigation/view.dml +48 -0
  32. package/dist/templates/showcase/pages/basics/pick-genre/controller.ts +18 -0
  33. package/dist/templates/showcase/pages/basics/pick-genre/state.ts +3 -0
  34. package/dist/templates/showcase/pages/basics/pick-genre/view.dml +10 -0
  35. package/dist/templates/showcase/pages/basics/share/concerts.ts +31 -0
  36. package/dist/templates/showcase/pages/basics/share/controller.ts +12 -0
  37. package/dist/templates/showcase/pages/basics/share/state.ts +5 -0
  38. package/dist/templates/showcase/pages/basics/share/view.dml +21 -0
  39. package/dist/templates/showcase/pages/basics/state/controller.ts +23 -0
  40. package/dist/templates/showcase/pages/basics/state/state.ts +10 -0
  41. package/dist/templates/showcase/pages/basics/state/view.dml +46 -0
  42. package/dist/templates/showcase/pages/components/carousel/controller.ts +41 -0
  43. package/dist/templates/showcase/pages/components/carousel/state.ts +77 -0
  44. package/dist/templates/showcase/pages/components/carousel/view.dml +42 -0
  45. package/dist/templates/showcase/pages/components/feedback/controller.ts +32 -0
  46. package/dist/templates/showcase/pages/components/feedback/state.ts +41 -0
  47. package/dist/templates/showcase/pages/components/feedback/view.dml +116 -0
  48. package/dist/templates/showcase/pages/components/forms/controller.ts +72 -0
  49. package/dist/templates/showcase/pages/components/forms/state.ts +37 -0
  50. package/dist/templates/showcase/pages/components/forms/view.dml +97 -0
  51. package/dist/templates/showcase/pages/components/icons/controller.ts +15 -0
  52. package/dist/templates/showcase/pages/components/icons/state.ts +75 -0
  53. package/dist/templates/showcase/pages/components/icons/view.dml +36 -0
  54. package/dist/templates/showcase/pages/components/images/controller.ts +44 -0
  55. package/dist/templates/showcase/pages/components/images/state.ts +10 -0
  56. package/dist/templates/showcase/pages/components/images/view.dml +83 -0
  57. package/dist/templates/showcase/pages/components/layout/controller.ts +61 -0
  58. package/dist/templates/showcase/pages/components/layout/state.ts +34 -0
  59. package/dist/templates/showcase/pages/components/layout/view.dml +143 -0
  60. package/dist/templates/showcase/pages/components/lists/controller.ts +18 -0
  61. package/dist/templates/showcase/pages/components/lists/state.ts +130 -0
  62. package/dist/templates/showcase/pages/components/lists/view.dml +88 -0
  63. package/dist/templates/showcase/pages/components/money/controller.ts +45 -0
  64. package/dist/templates/showcase/pages/components/money/state.ts +13 -0
  65. package/dist/templates/showcase/pages/components/money/view.dml +54 -0
  66. package/dist/templates/showcase/pages/components/reading/controller.ts +6 -0
  67. package/dist/templates/showcase/pages/components/reading/state.ts +23 -0
  68. package/dist/templates/showcase/pages/components/reading/view.dml +42 -0
  69. package/dist/templates/showcase/pages/components/sheets/controller.ts +36 -0
  70. package/dist/templates/showcase/pages/components/sheets/state.ts +26 -0
  71. package/dist/templates/showcase/pages/components/sheets/view.dml +38 -0
  72. package/dist/templates/showcase/pages/components/styles/controller.ts +6 -0
  73. package/dist/templates/showcase/pages/components/styles/state.ts +3 -0
  74. package/dist/templates/showcase/pages/components/styles/view.dml +101 -0
  75. package/dist/templates/showcase/pages/components/tabs/controller.ts +41 -0
  76. package/dist/templates/showcase/pages/components/tabs/state.ts +127 -0
  77. package/dist/templates/showcase/pages/components/tabs/view.dml +57 -0
  78. package/dist/templates/showcase/pages/components/text/controller.ts +10 -0
  79. package/dist/templates/showcase/pages/components/text/state.ts +3 -0
  80. package/dist/templates/showcase/pages/components/text/view.dml +95 -0
  81. package/dist/templates/showcase/pages/dash/account/controller.ts +23 -0
  82. package/dist/templates/showcase/pages/dash/account/state.ts +7 -0
  83. package/dist/templates/showcase/pages/dash/account/view.dml +23 -0
  84. package/dist/templates/showcase/pages/dash/cache/controller.ts +50 -0
  85. package/dist/templates/showcase/pages/dash/cache/state.ts +17 -0
  86. package/dist/templates/showcase/pages/dash/cache/view.dml +48 -0
  87. package/dist/templates/showcase/pages/dash/calls/controller.ts +64 -0
  88. package/dist/templates/showcase/pages/dash/calls/state.ts +9 -0
  89. package/dist/templates/showcase/pages/dash/calls/view.dml +67 -0
  90. package/dist/templates/showcase/pages/dash/contacts/controller.ts +30 -0
  91. package/dist/templates/showcase/pages/dash/contacts/state.ts +6 -0
  92. package/dist/templates/showcase/pages/dash/contacts/view.dml +33 -0
  93. package/dist/templates/showcase/pages/dash/crypto/controller.ts +34 -0
  94. package/dist/templates/showcase/pages/dash/crypto/state.ts +10 -0
  95. package/dist/templates/showcase/pages/dash/crypto/view.dml +48 -0
  96. package/dist/templates/showcase/pages/dash/files/controller.ts +71 -0
  97. package/dist/templates/showcase/pages/dash/files/state.ts +23 -0
  98. package/dist/templates/showcase/pages/dash/files/view.dml +78 -0
  99. package/dist/templates/showcase/pages/dash/media/controller.ts +65 -0
  100. package/dist/templates/showcase/pages/dash/media/state.ts +12 -0
  101. package/dist/templates/showcase/pages/dash/media/view.dml +53 -0
  102. package/dist/templates/showcase/pages/dash/network/controller.ts +215 -0
  103. package/dist/templates/showcase/pages/dash/network/state.ts +35 -0
  104. package/dist/templates/showcase/pages/dash/network/view.dml +108 -0
  105. package/dist/templates/showcase/pages/dash/secrets/controller.ts +44 -0
  106. package/dist/templates/showcase/pages/dash/secrets/state.ts +5 -0
  107. package/dist/templates/showcase/pages/dash/secrets/view.dml +26 -0
  108. package/dist/templates/showcase/pages/dash/system/controller.ts +89 -0
  109. package/dist/templates/showcase/pages/dash/system/state.ts +13 -0
  110. package/dist/templates/showcase/pages/dash/system/view.dml +97 -0
  111. package/dist/templates/showcase/pages/dash/ui/controller.ts +70 -0
  112. package/dist/templates/showcase/pages/dash/ui/state.ts +8 -0
  113. package/dist/templates/showcase/pages/dash/ui/view.dml +31 -0
  114. package/dist/templates/showcase/pages/index/controller.ts +10 -0
  115. package/dist/templates/showcase/pages/index/state.ts +237 -0
  116. package/dist/templates/showcase/pages/index/view.dml +23 -0
  117. package/dist/templates/showcase/statics/logo.png +0 -0
  118. package/dist/templates/starter/.env +3 -0
  119. package/dist/templates/starter/dot.ts +3 -0
  120. package/dist/templates/starter/pages/index/controller.ts +9 -0
  121. package/dist/templates/starter/pages/index/state.ts +4 -0
  122. package/dist/templates/starter/pages/index/view.dml +16 -0
  123. package/package.json +12 -7
  124. package/dist/template/.env +0 -3
  125. package/dist/template/dot.ts +0 -6
  126. package/dist/template/pages/help/tips/controller.ts +0 -30
  127. package/dist/template/pages/help/tips/state.ts +0 -11
  128. package/dist/template/pages/help/tips/view.dml +0 -15
  129. package/dist/template/pages/index/controller.ts +0 -67
  130. package/dist/template/pages/index/state.ts +0 -17
  131. package/dist/template/pages/index/view.dml +0 -66
  132. /package/dist/{template → templates/starter}/statics/logo.png +0 -0
@@ -1,6 +0,0 @@
1
- import { logger } from '@monimesl/dot-runtime';
2
-
3
- export default defineDot({
4
- pages: ['index', 'help/tips'],
5
- plugins: [logger()],
6
- });
@@ -1,30 +0,0 @@
1
- import state from './state';
2
-
3
- export default definePage({
4
- initialState: state,
5
- hooks: {
6
- // The page that opens this one passes its own trail and depth.
7
- onLoad(options) {
8
- this.setState({
9
- count: Number(options.count ?? 0),
10
- trail: `${options.trail ?? 'Home'} › Tips`,
11
- depth: Number(options.depth ?? 1) + 1,
12
- });
13
- },
14
- },
15
- actions: {
16
- back() {
17
- this.navigation.back();
18
- },
19
- openAnother(state) {
20
- this.navigation.push('help/tips', {
21
- count: String(state.count),
22
- trail: state.trail,
23
- depth: String(state.depth),
24
- });
25
- },
26
- startOver() {
27
- this.navigation.reset('index');
28
- },
29
- },
30
- });
@@ -1,11 +0,0 @@
1
- export default {
2
- count: 0,
3
- trail: '',
4
- depth: 0,
5
- maxPages: 8,
6
- tips: [
7
- 'Every tap is handled by controller.ts in a Worker',
8
- 'The view only renders the state it receives',
9
- 'Pages open on top of each other; Back returns to the one below',
10
- ],
11
- };
@@ -1,15 +0,0 @@
1
- <Text variant="caption">{{ trail }}</Text>
2
- <Text variant="title">Tips</Text>
3
- <Text>Page {{ depth }} of {{ maxPages }}, opened at {{ count }} taps.</Text>
4
-
5
- <View variant="card" gap="small">
6
- <For each="{{ tips }}" item="tip" key="*this">
7
- <Text>{{ tip }}</Text>
8
- </For>
9
- </View>
10
-
11
- <View direction="row">
12
- <Button onClick="back">Back</Button>
13
- <Button variant="secondary" onClick="openAnother" disabled="{{ depth >= maxPages }}">Open another</Button>
14
- <Button variant="secondary" onClick="startOver">Start over</Button>
15
- </View>
@@ -1,67 +0,0 @@
1
- import state from './state';
2
-
3
- export default definePage({
4
- initialState: state,
5
- hooks: {
6
- onShow() {
7
- this.setState((current) => ({ visits: current.visits + 1 }));
8
- },
9
- },
10
- mutations: {
11
- increment: (state) => {
12
- const count = state.count + 1;
13
- return { count, taps: [{ id: count }, ...state.taps] };
14
- },
15
- reset: () => ({ count: 0, taps: [] }),
16
- rename: (_state, event: DotEvent<{ value: string }>) => ({ title: event.detail.value }),
17
- logoLoaded: (_state, event: DotEvent<{ width: number; height: number }>) => ({
18
- logoStatus: 'loaded' as const,
19
- logoSize: `${event.detail.width}x${event.detail.height}`,
20
- }),
21
- logoFailed: () => ({ logoStatus: 'failed' as const }),
22
- },
23
- actions: {
24
- fillUp() {
25
- while (this.state.count < this.state.limit) {
26
- this.mutations.increment();
27
- }
28
- },
29
- async sayHello(state) {
30
- try {
31
- const { action } = await dash.ui.alert(
32
- {
33
- title: `Hello from ${state.title}`,
34
- message: env.DOT_PUBLIC_GREETING,
35
- actions: [
36
- { id: 'nice', label: 'Nice' },
37
- { id: 'close', label: 'Close', role: 'cancel' },
38
- ],
39
- },
40
- { timeout: 30_000 },
41
- );
42
- this.setState({ dashNote: `You chose "${action}"` });
43
- } catch (error) {
44
- this.setState({ dashNote: errorMessage(error) });
45
- }
46
- },
47
- async vibrate() {
48
- await dash.system.vibrate({ style: 'success' });
49
- },
50
- async toggleTorch(state) {
51
- const next = state.torch === 'on' ? 'off' : 'on';
52
- try {
53
- await dash.system.torch(next);
54
- this.setState({ torch: next, dashNote: `Torch ${next}` });
55
- } catch (error) {
56
- this.setState({ dashNote: errorMessage(error) });
57
- }
58
- },
59
- openTips(state) {
60
- this.navigation.push('help/tips', { count: String(state.count), trail: 'Home', depth: '1' });
61
- },
62
- },
63
- });
64
-
65
- function errorMessage(error: unknown): string {
66
- return error instanceof Error ? error.message : String(error);
67
- }
@@ -1,17 +0,0 @@
1
- export interface Tap {
2
- id: number;
3
- }
4
-
5
- export type LogoStatus = 'loading' | 'loaded' | 'failed';
6
-
7
- export default {
8
- title: 'Dot Counter',
9
- logoStatus: 'loading' as LogoStatus,
10
- logoSize: '',
11
- count: 0,
12
- limit: 5,
13
- taps: [] as Tap[],
14
- visits: 0,
15
- torch: 'off' as 'on' | 'off',
16
- dashNote: '',
17
- };
@@ -1,66 +0,0 @@
1
- <Text variant="caption">Home</Text>
2
-
3
- <View direction="row" align="center" gap="large">
4
- <Image src="statics/logo.png" alt="Dot logo" width="48" height="48" onLoad="logoLoaded" onError="logoFailed" />
5
- <View gap="none">
6
- <Text variant="title">{{ title }}</Text>
7
- <If condition="{{ logoStatus === 'loaded' }}">
8
- <Text variant="caption">Logo loaded at {{ logoSize }}</Text>
9
- </If>
10
- <ElseIf condition="{{ logoStatus === 'failed' }}">
11
- <Text variant="caption">Logo failed to load</Text>
12
- </ElseIf>
13
- <Else>
14
- <Text variant="caption">Loading logo…</Text>
15
- </Else>
16
- </View>
17
- </View>
18
-
19
- <View variant="card">
20
- <Text variant="title">{{ count }} / {{ limit }}</Text>
21
- <If condition="{{ count >= limit }}">
22
- <Text>Limit reached</Text>
23
- </If>
24
- <ElseIf condition="{{ count > 0 }}">
25
- <Text>Keep tapping</Text>
26
- </ElseIf>
27
- <Else>
28
- <Text>Tap to start 🚀</Text>
29
- </Else>
30
- <View direction="row">
31
- <Button onClick="increment" disabled="{{ count >= limit }}">Add one</Button>
32
- <Button variant="secondary" onClick="reset" disabled="{{ count === 0 }}">Reset</Button>
33
- <Button variant="secondary" onClick="fillUp" disabled="{{ count >= limit }}">Fill up</Button>
34
- </View>
35
- </View>
36
-
37
- <View variant="card" gap="small">
38
- <Text variant="caption">Name your counter</Text>
39
- <Input label="Counter name" placeholder="Dot Counter" value="{{ title }}" maxLength="24" onChange="rename" />
40
- </View>
41
-
42
- <View variant="card" gap="small">
43
- <Text variant="caption">Dash</Text>
44
- <View direction="row">
45
- <Button variant="secondary" onClick="sayHello">Say hello</Button>
46
- <Button variant="secondary" onClick="vibrate">Vibrate</Button>
47
- <Button variant="secondary" onClick="toggleTorch">{{ torch === 'on' ? 'Torch off' : 'Torch on' }}</Button>
48
- </View>
49
- <If condition="{{ dashNote }}">
50
- <Text variant="caption">{{ dashNote }}</Text>
51
- </If>
52
- </View>
53
-
54
- <View variant="card" onTap="openTips">
55
- <Text>Tips -> </Text>
56
- <Text variant="caption">Shown {{ visits }} {{ visits === 1 ? 'time' : 'times' }}</Text>
57
- </View>
58
-
59
- <If condition="{{ taps.length > 0 }}">
60
- <View variant="card" gap="small">
61
- <Text variant="caption">History</Text>
62
- <For each="{{ taps }}" index="i" item="tap" key="id">
63
- <Text>{{ i + 1 }}. Tap #{{ tap.id }}</Text>
64
- </For>
65
- </View>
66
- </If>