@monimesl/dot-cli 1.0.0-beta.1 → 1.0.0-beta.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 (76) hide show
  1. package/README.md +22 -9
  2. package/dist/cli.js +13 -11
  3. package/dist/cli.js.map +1 -1
  4. package/dist/templates/showcase/.env +2 -2
  5. package/dist/templates/showcase/dot.ts +2 -1
  6. package/dist/templates/showcase/pages/basics/bars/controller.ts +2 -2
  7. package/dist/templates/showcase/pages/basics/bars/view.dml +2 -1
  8. package/dist/templates/showcase/pages/basics/bindings/state.ts +2 -2
  9. package/dist/templates/showcase/pages/basics/bindings/view.dml +2 -2
  10. package/dist/templates/showcase/pages/basics/colors/controller.ts +1 -1
  11. package/dist/templates/showcase/pages/basics/concert/view.dml +1 -1
  12. package/dist/templates/showcase/pages/basics/control-flow/controller.ts +1 -1
  13. package/dist/templates/showcase/pages/basics/control-flow/view.dml +1 -1
  14. package/dist/templates/showcase/pages/basics/events/controller.ts +1 -1
  15. package/dist/templates/showcase/pages/basics/events/view.dml +1 -1
  16. package/dist/templates/showcase/pages/basics/hooks/controller.ts +2 -1
  17. package/dist/templates/showcase/pages/basics/hooks/view.dml +2 -2
  18. package/dist/templates/showcase/pages/basics/navigation/controller.ts +1 -0
  19. package/dist/templates/showcase/pages/basics/navigation/view.dml +1 -1
  20. package/dist/templates/showcase/pages/basics/pick-genre/controller.ts +3 -3
  21. package/dist/templates/showcase/pages/basics/share/view.dml +2 -2
  22. package/dist/templates/showcase/pages/basics/state/controller.ts +9 -0
  23. package/dist/templates/showcase/pages/basics/state/state.ts +3 -0
  24. package/dist/templates/showcase/pages/components/carousel/view.dml +2 -2
  25. package/dist/templates/showcase/pages/components/feedback/controller.ts +2 -1
  26. package/dist/templates/showcase/pages/components/feedback/state.ts +2 -2
  27. package/dist/templates/showcase/pages/components/feedback/view.dml +2 -2
  28. package/dist/templates/showcase/pages/components/forms/controller.ts +2 -2
  29. package/dist/templates/showcase/pages/components/forms/state.ts +1 -1
  30. package/dist/templates/showcase/pages/components/forms/view.dml +5 -5
  31. package/dist/templates/showcase/pages/components/icons/controller.ts +1 -0
  32. package/dist/templates/showcase/pages/components/icons/state.ts +1 -1
  33. package/dist/templates/showcase/pages/components/images/controller.ts +1 -1
  34. package/dist/templates/showcase/pages/components/images/state.ts +1 -1
  35. package/dist/templates/showcase/pages/components/images/view.dml +4 -4
  36. package/dist/templates/showcase/pages/components/layout/controller.ts +3 -1
  37. package/dist/templates/showcase/pages/components/layout/view.dml +5 -5
  38. package/dist/templates/showcase/pages/components/lists/view.dml +8 -8
  39. package/dist/templates/showcase/pages/components/money/controller.ts +1 -1
  40. package/dist/templates/showcase/pages/components/money/view.dml +2 -2
  41. package/dist/templates/showcase/pages/components/reading/state.ts +2 -2
  42. package/dist/templates/showcase/pages/components/sheets/controller.ts +1 -1
  43. package/dist/templates/showcase/pages/components/sheets/view.dml +1 -1
  44. package/dist/templates/showcase/pages/components/styles/view.dml +3 -3
  45. package/dist/templates/showcase/pages/components/tabs/state.ts +2 -2
  46. package/dist/templates/showcase/pages/components/tabs/view.dml +2 -2
  47. package/dist/templates/showcase/pages/components/text/view.dml +3 -3
  48. package/dist/templates/showcase/pages/dash/account/controller.ts +3 -0
  49. package/dist/templates/showcase/pages/dash/account/view.dml +2 -2
  50. package/dist/templates/showcase/pages/dash/cache/controller.ts +3 -0
  51. package/dist/templates/showcase/pages/dash/calls/controller.ts +3 -2
  52. package/dist/templates/showcase/pages/dash/contacts/controller.ts +1 -0
  53. package/dist/templates/showcase/pages/dash/crypto/controller.ts +2 -0
  54. package/dist/templates/showcase/pages/dash/crypto/view.dml +1 -1
  55. package/dist/templates/showcase/pages/dash/files/controller.ts +6 -1
  56. package/dist/templates/showcase/pages/dash/files/view.dml +1 -1
  57. package/dist/templates/showcase/pages/dash/media/controller.ts +7 -1
  58. package/dist/templates/showcase/pages/dash/media/state.ts +2 -0
  59. package/dist/templates/showcase/pages/dash/network/controller.ts +5 -1
  60. package/dist/templates/showcase/pages/dash/network/view.dml +1 -1
  61. package/dist/templates/showcase/pages/dash/payments/cases.ts +18 -18
  62. package/dist/templates/showcase/pages/dash/payments/controller.ts +21 -3
  63. package/dist/templates/showcase/pages/dash/payments/state.ts +2 -0
  64. package/dist/templates/showcase/pages/dash/payments/view.dml +3 -1
  65. package/dist/templates/showcase/pages/dash/secrets/controller.ts +3 -0
  66. package/dist/templates/showcase/pages/dash/system/controller.ts +5 -0
  67. package/dist/templates/showcase/pages/dash/system/view.dml +4 -4
  68. package/dist/templates/showcase/pages/dash/ui/controller.ts +6 -1
  69. package/dist/templates/showcase/pages/index/controller.ts +1 -0
  70. package/dist/templates/showcase/pages/index/state.ts +3 -3
  71. package/dist/templates/starter/.env +2 -2
  72. package/dist/templates/starter/dot.ts +1 -0
  73. package/dist/templates/starter/pages/index/controller.ts +2 -0
  74. package/dist/templates/starter/pages/index/state.ts +2 -0
  75. package/dist/templates/starter/pages/index/view.dml +2 -1
  76. package/package.json +6 -6
@@ -58,7 +58,7 @@
58
58
 
59
59
  <View gap="small">
60
60
  <Text variant="subtitle">openUrl</Text>
61
- <Text variant="caption" tone="muted">Opens a web page in the phone's browser.</Text>
61
+ <Text variant="caption" tone="muted">Opens an https web page in the phone's browser.</Text>
62
62
  <View variant="card">
63
63
  <Button variant="secondary" onClick="openDrizilik">Open Drizilik's website</Button>
64
64
  </View>
@@ -66,7 +66,7 @@
66
66
 
67
67
  <View gap="small">
68
68
  <Text variant="subtitle">delay</Text>
69
- <Text variant="caption" tone="muted">Waits for a number of milliseconds. Dash keeps time, so it's cancelled when the page closes.</Text>
69
+ <Text variant="caption" tone="muted">Waits for a number of milliseconds. Like any call still running, it stops when the page closes.</Text>
70
70
  <View variant="card">
71
71
  <Button variant="secondary" onClick="countDown" disabled="{{ showIn > 0 }}">{{ showIn > 0 ? 'Showtime in ' + showIn + 's' : 'Count down to showtime' }}</Button>
72
72
  </View>
@@ -74,7 +74,7 @@
74
74
 
75
75
  <View gap="small">
76
76
  <Text variant="subtitle">dial</Text>
77
- <Text variant="caption" tone="muted">Opens the phone's dialer with a number ready, or a USSD code such as *715#. The person taps Call.</Text>
77
+ <Text variant="caption" tone="muted">Opens the phone's dialer with a number ready, or a USSD code such as *715#. The person taps Call. For a code, Dash asks them first.</Text>
78
78
  <View variant="card">
79
79
  <Input label="Number or code" type="phone" value="{{ number }}" onChange="setNumber" onSubmit="dialNumber" />
80
80
  <Button variant="secondary" onClick="dialNumber" disabled="{{ !number }}">Open the dialer</Button>
@@ -83,7 +83,7 @@
83
83
 
84
84
  <View gap="small">
85
85
  <Text variant="subtitle">torch</Text>
86
- <Text variant="caption" tone="muted">Turns the camera's light on or off.</Text>
86
+ <Text variant="caption" tone="muted">Turns the camera's light on or off, on a phone that has one.</Text>
87
87
  <View variant="card">
88
88
  <Button variant="secondary" onClick="toggleTorch">{{ torchOn ? 'Turn the torch off' : 'Lights up for the slow song' }}</Button>
89
89
  </View>
@@ -5,9 +5,13 @@ import state from './state';
5
5
  export default definePage({
6
6
  initialState: state,
7
7
  configs: { navigationBar: { title: 'Dialogs and pickers' } },
8
+ // A this.dash call goes to Dash and answers later, so await it. If it fails, it throws a
9
+ // DashError with a code that says why, such as 'cancelled' or 'denied'. errorMessage(error)
10
+ // gives text to show for any error. The Calls and errors page lists every code.
8
11
  actions: {
9
12
  async greet() {
10
13
  try {
14
+ // Resolves with { action }: the id of the button tapped.
11
15
  const { action } = await this.dash.ui.alert({
12
16
  title: 'Kushé',
13
17
  message: 'Kushé means hello in Krio, and tenki means thanks.',
@@ -36,7 +40,8 @@ export default definePage({
36
40
  this.setState({ note: errorMessage(error) });
37
41
  }
38
42
  },
39
- // unlessCancelled gives undefined when the person closes the picker, which isn't a problem.
43
+ // Closing a picker rejects with 'cancelled'. That isn't a problem, so unlessCancelled turns it
44
+ // into undefined. Any other error still throws. A min after max rejects with 'invalid'.
40
45
  async chooseNight(state) {
41
46
  try {
42
47
  const night = await unlessCancelled(
@@ -3,6 +3,7 @@ import state from './state';
3
3
  export default definePage({
4
4
  initialState: state,
5
5
  actions: {
6
+ // Each row's data-page names its page. The Events and Navigation pages show how this works.
6
7
  open(_state, event: DataEvent<{ page: PageId }>) {
7
8
  this.navigation.push(event.data.page);
8
9
  },
@@ -40,7 +40,7 @@ export default {
40
40
  {
41
41
  page: 'basics/events',
42
42
  title: 'Events',
43
- covers: 'onTap, onChange, event.detail, data-*',
43
+ covers: 'onClick, onTap, onChange, event.detail, event.data',
44
44
  icon: 'bolt',
45
45
  },
46
46
  {
@@ -216,7 +216,7 @@ export default {
216
216
  {
217
217
  page: 'dash/files',
218
218
  title: 'dash.storage.file',
219
- covers: 'write, read, list, move, copy, remove, save, stat, open, usage',
219
+ covers: 'write, read, list, createFolder, move, copy, remove, save, stat, open, usage',
220
220
  icon: 'file',
221
221
  },
222
222
  {
@@ -234,7 +234,7 @@ export default {
234
234
  {
235
235
  page: 'dash/calls',
236
236
  title: 'Calls and errors',
237
- covers: 'timeout, cancel, DashError, isDashError',
237
+ covers: 'timeout, cancel, DashError, isDashError, supports, dash.dot.close',
238
238
  icon: 'warning',
239
239
  },
240
240
  ],
@@ -1,3 +1,3 @@
1
- # Public configuration for the dot. Anyone with the dot can read these variables: never put a
2
- # secret here. Read them in the service as `env.GREETING`.
1
+ # Public settings for the dot. Code reads each one from `env`, such as `env.GREETING`.
2
+ # They're built into the dot, so anyone who has it can read them. Never put a secret here.
3
3
  GREETING=Hello from your dot
@@ -1,3 +1,4 @@
1
1
  export default defineDot({
2
+ // Each page is a folder under pages/. The dot opens on the first one.
2
3
  pages: ['index'],
3
4
  });
@@ -2,6 +2,8 @@ import state from './state';
2
2
 
3
3
  export default definePage({
4
4
  initialState: state,
5
+ // A mutation gets the state and returns the fields to change, and the view follows. For steps
6
+ // that wait, such as a Dash call, use actions instead.
5
7
  mutations: {
6
8
  increment: (state) => ({ count: state.count + 1 }),
7
9
  reset: () => ({ count: 0 }),
@@ -1,4 +1,6 @@
1
+ // The data the page starts with. view.dml shows it with bindings, such as {{ count }}.
1
2
  export default {
3
+ // env holds the values in .env.
2
4
  greeting: env.GREETING,
3
5
  count: 0,
4
6
  };
@@ -3,11 +3,12 @@
3
3
  <Image src="statics/logo.png" alt="Logo" width="40" height="40" />
4
4
  <Text variant="title">{{ greeting }}</Text>
5
5
  </View>
6
- <Text>Change pages/index/view.dml and save: the simulator shows it at once.</Text>
6
+ <Text>Change pages/index/view.dml and save. The simulator shows the change at once.</Text>
7
7
 
8
8
  <View variant="card" align="center" gap="medium">
9
9
  <Text variant="title">{{ count }}</Text>
10
10
  <Text tone="muted">{{ count === 1 ? 'tap' : 'taps' }} so far</Text>
11
+ <!-- onClick names the mutation or action in controller.ts to run. -->
11
12
  <View direction="row" gap="small">
12
13
  <Button variant="secondary" onClick="reset" disabled="{{ count === 0 }}">Reset</Button>
13
14
  <Button onClick="increment">Tap me</Button>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monimesl/dot-cli",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.3",
4
4
  "description": "The dotctl command: build mini apps and run them in the simulator",
5
5
  "type": "module",
6
6
  "repository": {
@@ -24,11 +24,11 @@
24
24
  "dependencies": {
25
25
  "typescript": "^5.9.3",
26
26
  "uqr": "^0.1.3",
27
- "@monimesl/dot-compiler": "1.0.0-beta.1",
28
- "@monimesl/dot-core": "1.0.0-beta.1",
29
- "@monimesl/dot-dml-parser": "1.0.0-beta.1",
30
- "@monimesl/dot-script-parser": "1.0.0-beta.1",
31
- "@monimesl/dot-simulator": "1.0.0-beta.1"
27
+ "@monimesl/dot-compiler": "1.0.0-beta.3",
28
+ "@monimesl/dot-core": "1.0.0-beta.3",
29
+ "@monimesl/dot-dml-parser": "1.0.0-beta.3",
30
+ "@monimesl/dot-script-parser": "1.0.0-beta.3",
31
+ "@monimesl/dot-simulator": "1.0.0-beta.3"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^22.20.4",