create-mikrojs 0.0.7

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 (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +33 -0
  3. package/bin/create-mikrojs.js +2 -0
  4. package/dist/index.d.ts +2 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +106 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/inspect.d.ts +2 -0
  9. package/dist/inspect.d.ts.map +1 -0
  10. package/dist/inspect.js +56 -0
  11. package/dist/inspect.js.map +1 -0
  12. package/dist/logo.d.ts +2 -0
  13. package/dist/logo.d.ts.map +1 -0
  14. package/dist/logo.js +26 -0
  15. package/dist/logo.js.map +1 -0
  16. package/dist/pkg-manager.d.ts +5 -0
  17. package/dist/pkg-manager.d.ts.map +1 -0
  18. package/dist/pkg-manager.js +15 -0
  19. package/dist/pkg-manager.js.map +1 -0
  20. package/dist/scaffold.d.ts +22 -0
  21. package/dist/scaffold.d.ts.map +1 -0
  22. package/dist/scaffold.js +133 -0
  23. package/dist/scaffold.js.map +1 -0
  24. package/dist/scaffold.test.d.ts +2 -0
  25. package/dist/scaffold.test.d.ts.map +1 -0
  26. package/dist/scaffold.test.js +105 -0
  27. package/dist/scaffold.test.js.map +1 -0
  28. package/dist/templates/_common/dependencies.d.ts +7 -0
  29. package/dist/templates/_common/dependencies.d.ts.map +1 -0
  30. package/dist/templates/_common/dependencies.js +7 -0
  31. package/dist/templates/_common/dependencies.js.map +1 -0
  32. package/dist/templates/_common/env-example.d.ts +2 -0
  33. package/dist/templates/_common/env-example.d.ts.map +1 -0
  34. package/dist/templates/_common/env-example.js +10 -0
  35. package/dist/templates/_common/env-example.js.map +1 -0
  36. package/dist/templates/_common/gitignore.d.ts +2 -0
  37. package/dist/templates/_common/gitignore.d.ts.map +1 -0
  38. package/dist/templates/_common/gitignore.js +8 -0
  39. package/dist/templates/_common/gitignore.js.map +1 -0
  40. package/dist/templates/_common/package-json.d.ts +22 -0
  41. package/dist/templates/_common/package-json.d.ts.map +1 -0
  42. package/dist/templates/_common/package-json.js +22 -0
  43. package/dist/templates/_common/package-json.js.map +1 -0
  44. package/dist/templates/_common/readme.d.ts +11 -0
  45. package/dist/templates/_common/readme.d.ts.map +1 -0
  46. package/dist/templates/_common/readme.js +45 -0
  47. package/dist/templates/_common/readme.js.map +1 -0
  48. package/dist/templates/_common/tsconfig.d.ts +3 -0
  49. package/dist/templates/_common/tsconfig.d.ts.map +1 -0
  50. package/dist/templates/_common/tsconfig.js +26 -0
  51. package/dist/templates/_common/tsconfig.js.map +1 -0
  52. package/package.json +56 -0
  53. package/src/templates/_common/dependencies.ts +9 -0
  54. package/src/templates/_common/env-example.ts +9 -0
  55. package/src/templates/_common/gitignore.ts +7 -0
  56. package/src/templates/_common/package-json.ts +35 -0
  57. package/src/templates/_common/readme.ts +64 -0
  58. package/src/templates/_common/tsconfig.ts +27 -0
  59. package/src/templates/blank/app/main.ts +3 -0
  60. package/src/templates/blinky/app/main.ts +18 -0
  61. package/src/templates/neopixel/app/color.ts +23 -0
  62. package/src/templates/neopixel/app/main.ts +24 -0
  63. package/src/templates/neopixel/app/patterns/breathe.ts +22 -0
  64. package/src/templates/neopixel/app/patterns/color-wipe.ts +35 -0
  65. package/src/templates/neopixel/app/patterns/comet.ts +29 -0
  66. package/src/templates/neopixel/app/patterns/rainbow.ts +24 -0
  67. package/src/templates/neopixel/app/patterns/sparkle.ts +25 -0
  68. package/src/templates/pwm-led/app/main.ts +21 -0
  69. package/src/templates/rtc-counter/app/main.ts +20 -0
  70. package/src/templates/sntp/app/main.ts +35 -0
  71. package/src/templates/sntp/env.d.ts +4 -0
  72. package/src/templates/wifi-access-point/app/main.ts +40 -0
  73. package/src/templates/wifi-fetch/app/main.ts +35 -0
  74. package/src/templates/wifi-fetch/env.d.ts +4 -0
@@ -0,0 +1,20 @@
1
+ import {rtcStorage} from 'mikrojs/kv/rtc'
2
+ import * as s from 'mikrojs/schema'
3
+ import {deepSleep, sleep} from 'mikrojs/sleep'
4
+
5
+ // Read the wake counter from RTC memory (survives deep sleep).
6
+ // optional() because the key may not exist on first boot.
7
+ const count = rtcStorage.createValue('count', {schema: s.optional(s.number())})
8
+
9
+ console.log(`Wake #${count.get() ?? 0}`)
10
+ console.log(`RTC memory: ${rtcStorage.info().used}/${rtcStorage.info().total} bytes used`)
11
+
12
+ // Increment and store back
13
+ count.update((n) => (n ?? 0) + 1).orPanic('failed to store count')
14
+
15
+ console.log('Waiting for a few seconds before going to deep sleep...')
16
+ await sleep(5000)
17
+
18
+ // Sleep for 15 seconds, then wake up again
19
+ console.log('Going to deep sleep for 15s...')
20
+ deepSleep(15000)
@@ -0,0 +1,35 @@
1
+ import {env} from 'mikrojs/env'
2
+ import {sleep} from 'mikrojs/sleep'
3
+ import {sntp} from 'mikrojs/sntp'
4
+ import {wifi} from 'mikrojs/wifi'
5
+
6
+ await sleep(2000)
7
+ console.log('Current time at startup: %s', new Date())
8
+
9
+ wifi.country = 'NO'
10
+
11
+ const ssid = env.require('WIFI_SSID')
12
+ const passphrase = env.require('WIFI_PASSPHRASE')
13
+
14
+ // Connect to WiFi
15
+ console.log(`Connecting to ${ssid}...`)
16
+ const connectResult = await wifi.connect(ssid, passphrase)
17
+ if (!connectResult.ok) {
18
+ console.error('WiFi connect failed: %s', connectResult.error.name)
19
+ } else {
20
+ console.log('Connected! IP: %s', connectResult.value.ip)
21
+
22
+ // One-shot time sync
23
+ console.log('Syncing time...')
24
+ const syncResult = await sntp.sync({timezone: 'CET-1CEST,M3.5.0,M10.5.0/3'})
25
+ if (!syncResult.ok) {
26
+ console.error('SNTP sync failed: %s', syncResult.error.name)
27
+ } else {
28
+ console.log('Time synced: %s', syncResult.value.time)
29
+ console.log('Current time: %s', new Date())
30
+ }
31
+ }
32
+
33
+ // Or use background mode to keep re-syncing periodically:
34
+ // const {time, stop} = await sntp.sync({background: true})
35
+ // ... later: stop()
@@ -0,0 +1,4 @@
1
+ declare interface ImportMetaEnv {
2
+ WIFI_SSID: string
3
+ WIFI_PASSPHRASE: string
4
+ }
@@ -0,0 +1,40 @@
1
+ import {sleep} from 'mikrojs/sleep'
2
+ import {wifi} from 'mikrojs/wifi'
3
+
4
+ // Country must be set before using WiFi
5
+ wifi.country = 'NO'
6
+
7
+ // Start the access point
8
+ wifi.ap
9
+ .start({
10
+ ssid: 'MikroJS-AP',
11
+ passphrase: 'hello1234',
12
+ channel: 6,
13
+ maxConnections: 4,
14
+ })
15
+ .orPanic('Failed to start access point')
16
+
17
+ console.log('Access point started')
18
+ console.log('SSID: MikroJS-AP')
19
+ console.log('IP: %s', wifi.ap.ip)
20
+
21
+ // Log when stations connect/disconnect
22
+ wifi.ap.on('station-connect', (info) => {
23
+ console.log('Station connected: %s', info.mac)
24
+ })
25
+
26
+ wifi.ap.on('station-disconnect', (info) => {
27
+ console.log('Station disconnected: %s', info.mac)
28
+ })
29
+
30
+ // Periodically print connected stations
31
+ while (true) {
32
+ await sleep(10000)
33
+ const stations = wifi.ap.stations
34
+ if (stations.length > 0) {
35
+ console.log(`Connected stations (${stations.length}):`)
36
+ for (const sta of stations) {
37
+ console.log(` ${sta.mac} (RSSI: ${sta.rssi})`)
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,35 @@
1
+ import {env} from 'mikrojs/env'
2
+ import {request} from 'mikrojs/http/request'
3
+ import {memoryUsage} from 'mikrojs/sys'
4
+ import {wifi} from 'mikrojs/wifi'
5
+
6
+ // Country must be set before using WiFi
7
+ wifi.country = 'NO'
8
+
9
+ const ssid = env.require('WIFI_SSID')
10
+ const passphrase = env.require('WIFI_PASSPHRASE')
11
+
12
+ // Connect to WiFi
13
+ console.log(`Connecting to ${ssid}...`)
14
+ const connectResult = await wifi.connect(ssid, passphrase)
15
+ if (!connectResult.ok) {
16
+ console.error('WiFi connect failed: %s', connectResult.error.name)
17
+ } else {
18
+ console.log('Connected! IP: %s', connectResult.value.ip)
19
+
20
+ // Request JSON from an API
21
+ const result = await request('https://jsonplaceholder.typicode.com/posts/1')
22
+ if (result.ok) {
23
+ if (!result.value.ok) {
24
+ console.error(`HTTP error: ${result.value.status}`)
25
+ } else {
26
+ const data = await result.value.json()
27
+ console.log('Fetched post: %o', data)
28
+ }
29
+ } else {
30
+ console.error('Request failed: %s', result.error.name)
31
+ }
32
+ }
33
+
34
+ const mem = memoryUsage()
35
+ console.log('free heap: %dKB', (mem.heapTotal - mem.heapUsed) / 1000)
@@ -0,0 +1,4 @@
1
+ declare interface ImportMetaEnv {
2
+ WIFI_SSID: string
3
+ WIFI_PASSPHRASE: string
4
+ }