@devaloop/devalang 0.0.1-beta.3 → 0.1.2

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 (346) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +251 -221
  3. package/out-tsc/api.d.ts +180 -0
  4. package/out-tsc/api.d.ts.map +1 -0
  5. package/out-tsc/api.js +286 -0
  6. package/out-tsc/api.js.map +1 -0
  7. package/out-tsc/bin/index.d.ts +12 -0
  8. package/out-tsc/bin/index.d.ts.map +1 -0
  9. package/out-tsc/bin/index.js +20 -54
  10. package/out-tsc/bin/index.js.map +1 -0
  11. package/out-tsc/examples/basic-usage.d.ts +8 -0
  12. package/out-tsc/examples/basic-usage.d.ts.map +1 -0
  13. package/out-tsc/examples/basic-usage.js +113 -0
  14. package/out-tsc/examples/basic-usage.js.map +1 -0
  15. package/out-tsc/index.d.ts +19 -5
  16. package/out-tsc/index.d.ts.map +1 -0
  17. package/out-tsc/index.js +24 -6
  18. package/out-tsc/index.js.map +1 -0
  19. package/out-tsc/scripts/copy-wasm-dts.d.ts +7 -0
  20. package/out-tsc/scripts/copy-wasm-dts.d.ts.map +1 -0
  21. package/out-tsc/scripts/copy-wasm-dts.js +36 -32
  22. package/out-tsc/scripts/copy-wasm-dts.js.map +1 -0
  23. package/out-tsc/scripts/postinstall.d.ts +1 -0
  24. package/out-tsc/scripts/postinstall.d.ts.map +1 -0
  25. package/out-tsc/scripts/postinstall.js +4 -1
  26. package/out-tsc/scripts/postinstall.js.map +1 -0
  27. package/out-tsc/scripts/version/bump.d.ts +5 -1
  28. package/out-tsc/scripts/version/bump.d.ts.map +1 -0
  29. package/out-tsc/scripts/version/bump.js +122 -44
  30. package/out-tsc/scripts/version/bump.js.map +1 -0
  31. package/out-tsc/scripts/version/fetch.d.ts +12 -1
  32. package/out-tsc/scripts/version/fetch.d.ts.map +1 -0
  33. package/out-tsc/scripts/version/fetch.js +68 -24
  34. package/out-tsc/scripts/version/fetch.js.map +1 -0
  35. package/out-tsc/scripts/version/index.d.ts +6 -0
  36. package/out-tsc/scripts/version/index.d.ts.map +1 -0
  37. package/out-tsc/scripts/version/index.js +44 -22
  38. package/out-tsc/scripts/version/index.js.map +1 -0
  39. package/out-tsc/scripts/version/sync.d.ts +5 -1
  40. package/out-tsc/scripts/version/sync.d.ts.map +1 -0
  41. package/out-tsc/scripts/version/sync.js +95 -29
  42. package/out-tsc/scripts/version/sync.js.map +1 -0
  43. package/out-tsc/types.d.ts +68 -0
  44. package/out-tsc/types.d.ts.map +1 -0
  45. package/out-tsc/{core/types/value.js → types.js} +4 -0
  46. package/out-tsc/types.js.map +1 -0
  47. package/out-tsc/wasm.d.ts +8 -0
  48. package/out-tsc/wasm.d.ts.map +1 -0
  49. package/out-tsc/{core/index.js → wasm.js} +9 -6
  50. package/out-tsc/wasm.js.map +1 -0
  51. package/package.json +42 -42
  52. package/.cargo/config.toml +0 -2
  53. package/.devalang +0 -9
  54. package/.github/workflows/ci.yml +0 -103
  55. package/Cargo.toml +0 -84
  56. package/docs/CHANGELOG.md +0 -622
  57. package/docs/CONTRIBUTING.md +0 -101
  58. package/docs/ROADMAP.md +0 -38
  59. package/docs/TODO.md +0 -71
  60. package/examples/automation.deva +0 -42
  61. package/examples/bank.deva +0 -7
  62. package/examples/bus.deva +0 -10
  63. package/examples/chain.deva +0 -19
  64. package/examples/condition.deva +0 -20
  65. package/examples/duration.deva +0 -9
  66. package/examples/effect.deva +0 -2
  67. package/examples/events.deva +0 -12
  68. package/examples/filter.deva +0 -11
  69. package/examples/function.deva +0 -15
  70. package/examples/group.deva +0 -12
  71. package/examples/index.deva +0 -63
  72. package/examples/lfo.deva +0 -9
  73. package/examples/loop.deva +0 -10
  74. package/examples/pattern.deva +0 -8
  75. package/examples/plugin.deva +0 -16
  76. package/examples/routing.deva +0 -23
  77. package/examples/samples/hat-808.wav +0 -0
  78. package/examples/samples/kick-808.wav +0 -0
  79. package/examples/synth.deva +0 -24
  80. package/examples/synth_types.deva +0 -17
  81. package/examples/variables.deva +0 -9
  82. package/out-tsc/bin/project-version.json +0 -6
  83. package/out-tsc/core/functions/index.d.ts +0 -42
  84. package/out-tsc/core/functions/index.js +0 -87
  85. package/out-tsc/core/index.d.ts +0 -6
  86. package/out-tsc/core/types/index.d.ts +0 -4
  87. package/out-tsc/core/types/index.js +0 -20
  88. package/out-tsc/core/types/plugin.d.ts +0 -18
  89. package/out-tsc/core/types/plugin.js +0 -2
  90. package/out-tsc/core/types/result.d.ts +0 -27
  91. package/out-tsc/core/types/result.js +0 -2
  92. package/out-tsc/core/types/statement.d.ts +0 -106
  93. package/out-tsc/core/types/statement.js +0 -2
  94. package/out-tsc/core/types/value.d.ts +0 -43
  95. package/out-tsc/pkg/devalang_core.d.ts +0 -15
  96. package/out-tsc/pkg/devalang_core.js +0 -65
  97. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +0 -34
  98. package/out-tsc/scripts/version/copy-to-binary.d.ts +0 -1
  99. package/out-tsc/scripts/version/copy-to-binary.js +0 -79
  100. package/project-version.json +0 -6
  101. package/rust/bindings/Cargo.toml +0 -9
  102. package/rust/bindings/src/lib.rs +0 -86
  103. package/rust/cli/addon/commands.rs +0 -35
  104. package/rust/cli/addon/download.rs +0 -234
  105. package/rust/cli/addon/install.rs +0 -33
  106. package/rust/cli/addon/list.rs +0 -224
  107. package/rust/cli/addon/metadata.rs +0 -124
  108. package/rust/cli/addon/mod.rs +0 -8
  109. package/rust/cli/addon/remove.rs +0 -271
  110. package/rust/cli/addon/update.rs +0 -305
  111. package/rust/cli/addon/utils.rs +0 -109
  112. package/rust/cli/build/commands.rs +0 -153
  113. package/rust/cli/build/mod.rs +0 -2
  114. package/rust/cli/build/process.rs +0 -165
  115. package/rust/cli/check/mod.rs +0 -208
  116. package/rust/cli/discover/commands.rs +0 -275
  117. package/rust/cli/discover/config.rs +0 -109
  118. package/rust/cli/discover/fs.rs +0 -19
  119. package/rust/cli/discover/install.rs +0 -214
  120. package/rust/cli/discover/metadata.rs +0 -48
  121. package/rust/cli/discover/mod.rs +0 -5
  122. package/rust/cli/init/commands.rs +0 -88
  123. package/rust/cli/init/mod.rs +0 -1
  124. package/rust/cli/login/commands.rs +0 -124
  125. package/rust/cli/login/mod.rs +0 -1
  126. package/rust/cli/me/commands.rs +0 -52
  127. package/rust/cli/me/mod.rs +0 -1
  128. package/rust/cli/mod.rs +0 -12
  129. package/rust/cli/parser.rs +0 -320
  130. package/rust/cli/play/commands.rs +0 -375
  131. package/rust/cli/play/io.rs +0 -17
  132. package/rust/cli/play/mod.rs +0 -5
  133. package/rust/cli/play/process.rs +0 -159
  134. package/rust/cli/play/realtime.rs +0 -91
  135. package/rust/cli/play/utils.rs +0 -23
  136. package/rust/cli/telemetry/commands.rs +0 -22
  137. package/rust/cli/telemetry/event_creator.rs +0 -80
  138. package/rust/cli/telemetry/mod.rs +0 -3
  139. package/rust/cli/telemetry/send.rs +0 -51
  140. package/rust/cli/template/commands.rs +0 -69
  141. package/rust/cli/template/mod.rs +0 -1
  142. package/rust/cli/update/commands.rs +0 -6
  143. package/rust/cli/update/mod.rs +0 -1
  144. package/rust/config/driver.rs +0 -112
  145. package/rust/config/mod.rs +0 -3
  146. package/rust/config/ops.rs +0 -26
  147. package/rust/config/settings.rs +0 -101
  148. package/rust/core/audio/engine/driver.rs +0 -237
  149. package/rust/core/audio/engine/export.rs +0 -169
  150. package/rust/core/audio/engine/helpers.rs +0 -178
  151. package/rust/core/audio/engine/mod.rs +0 -56
  152. package/rust/core/audio/engine/notes/dsp.rs +0 -88
  153. package/rust/core/audio/engine/notes/mod.rs +0 -53
  154. package/rust/core/audio/engine/notes/params.rs +0 -294
  155. package/rust/core/audio/engine/sample/insert.rs +0 -300
  156. package/rust/core/audio/engine/sample/mod.rs +0 -40
  157. package/rust/core/audio/engine/sample/padding.rs +0 -170
  158. package/rust/core/audio/evaluator/condition.rs +0 -61
  159. package/rust/core/audio/evaluator/mod.rs +0 -9
  160. package/rust/core/audio/evaluator/numeric.rs +0 -152
  161. package/rust/core/audio/evaluator/rhs.rs +0 -16
  162. package/rust/core/audio/evaluator/string_expr.rs +0 -94
  163. package/rust/core/audio/interpreter/driver.rs +0 -574
  164. package/rust/core/audio/interpreter/mod.rs +0 -2
  165. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +0 -179
  166. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +0 -398
  167. package/rust/core/audio/interpreter/statements/arrow_call/methods/effects.rs +0 -323
  168. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +0 -3
  169. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +0 -371
  170. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +0 -3
  171. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +0 -192
  172. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +0 -24
  173. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +0 -116
  174. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +0 -97
  175. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +0 -100
  176. package/rust/core/audio/interpreter/statements/automate.rs +0 -16
  177. package/rust/core/audio/interpreter/statements/call.rs +0 -325
  178. package/rust/core/audio/interpreter/statements/condition.rs +0 -72
  179. package/rust/core/audio/interpreter/statements/function.rs +0 -24
  180. package/rust/core/audio/interpreter/statements/let_.rs +0 -36
  181. package/rust/core/audio/interpreter/statements/load.rs +0 -17
  182. package/rust/core/audio/interpreter/statements/loop_.rs +0 -115
  183. package/rust/core/audio/interpreter/statements/mod.rs +0 -12
  184. package/rust/core/audio/interpreter/statements/sleep.rs +0 -28
  185. package/rust/core/audio/interpreter/statements/spawn.rs +0 -302
  186. package/rust/core/audio/interpreter/statements/tempo.rs +0 -40
  187. package/rust/core/audio/interpreter/statements/trigger.rs +0 -242
  188. package/rust/core/audio/loader/mod.rs +0 -1
  189. package/rust/core/audio/loader/trigger.rs +0 -98
  190. package/rust/core/audio/mod.rs +0 -6
  191. package/rust/core/audio/player.rs +0 -70
  192. package/rust/core/audio/special/easing.rs +0 -189
  193. package/rust/core/audio/special/env.rs +0 -45
  194. package/rust/core/audio/special/math.rs +0 -134
  195. package/rust/core/audio/special/mod.rs +0 -9
  196. package/rust/core/audio/special/modulator.rs +0 -143
  197. package/rust/core/builder/mod.rs +0 -129
  198. package/rust/core/debugger/lexer.rs +0 -27
  199. package/rust/core/debugger/logs.rs +0 -52
  200. package/rust/core/debugger/mod.rs +0 -30
  201. package/rust/core/debugger/preprocessor.rs +0 -27
  202. package/rust/core/debugger/store.rs +0 -38
  203. package/rust/core/error/mod.rs +0 -269
  204. package/rust/core/lexer/driver.rs +0 -59
  205. package/rust/core/lexer/handler/arrow.rs +0 -82
  206. package/rust/core/lexer/handler/at.rs +0 -21
  207. package/rust/core/lexer/handler/brace.rs +0 -41
  208. package/rust/core/lexer/handler/colon.rs +0 -21
  209. package/rust/core/lexer/handler/comment.rs +0 -30
  210. package/rust/core/lexer/handler/dot.rs +0 -21
  211. package/rust/core/lexer/handler/driver.rs +0 -337
  212. package/rust/core/lexer/handler/identifier.rs +0 -47
  213. package/rust/core/lexer/handler/indent.rs +0 -66
  214. package/rust/core/lexer/handler/mod.rs +0 -15
  215. package/rust/core/lexer/handler/newline.rs +0 -23
  216. package/rust/core/lexer/handler/number.rs +0 -31
  217. package/rust/core/lexer/handler/operator.rs +0 -46
  218. package/rust/core/lexer/handler/parenthesis.rs +0 -41
  219. package/rust/core/lexer/handler/slash.rs +0 -21
  220. package/rust/core/lexer/handler/string.rs +0 -63
  221. package/rust/core/lexer/mod.rs +0 -3
  222. package/rust/core/lexer/token.rs +0 -91
  223. package/rust/core/mod.rs +0 -9
  224. package/rust/core/parser/driver/block.rs +0 -111
  225. package/rust/core/parser/driver/cursor.rs +0 -82
  226. package/rust/core/parser/driver/driver_impl.rs +0 -159
  227. package/rust/core/parser/driver/mod.rs +0 -6
  228. package/rust/core/parser/driver/parse_array.rs +0 -120
  229. package/rust/core/parser/driver/parse_map.rs +0 -247
  230. package/rust/core/parser/driver/parser.rs +0 -160
  231. package/rust/core/parser/handler/arrow_call.rs +0 -328
  232. package/rust/core/parser/handler/at.rs +0 -279
  233. package/rust/core/parser/handler/bank.rs +0 -104
  234. package/rust/core/parser/handler/condition.rs +0 -83
  235. package/rust/core/parser/handler/dot.rs +0 -148
  236. package/rust/core/parser/handler/identifier/automate.rs +0 -254
  237. package/rust/core/parser/handler/identifier/call.rs +0 -91
  238. package/rust/core/parser/handler/identifier/emit.rs +0 -70
  239. package/rust/core/parser/handler/identifier/function.rs +0 -113
  240. package/rust/core/parser/handler/identifier/group.rs +0 -89
  241. package/rust/core/parser/handler/identifier/let_.rs +0 -173
  242. package/rust/core/parser/handler/identifier/mod.rs +0 -55
  243. package/rust/core/parser/handler/identifier/on.rs +0 -107
  244. package/rust/core/parser/handler/identifier/print.rs +0 -49
  245. package/rust/core/parser/handler/identifier/sleep.rs +0 -96
  246. package/rust/core/parser/handler/identifier/spawn.rs +0 -91
  247. package/rust/core/parser/handler/identifier/synth.rs +0 -171
  248. package/rust/core/parser/handler/loop_.rs +0 -194
  249. package/rust/core/parser/handler/mod.rs +0 -9
  250. package/rust/core/parser/handler/pattern.rs +0 -97
  251. package/rust/core/parser/handler/tempo.rs +0 -105
  252. package/rust/core/parser/mod.rs +0 -3
  253. package/rust/core/parser/statement.rs +0 -10
  254. package/rust/core/plugin/loader.rs +0 -137
  255. package/rust/core/plugin/mod.rs +0 -2
  256. package/rust/core/plugin/runner/mod.rs +0 -11
  257. package/rust/core/plugin/runner/non_wasm.rs +0 -481
  258. package/rust/core/plugin/runner/wasm32.rs +0 -44
  259. package/rust/core/preprocessor/loader/inject.rs +0 -313
  260. package/rust/core/preprocessor/loader/loader_helpers.rs +0 -110
  261. package/rust/core/preprocessor/loader/mod.rs +0 -235
  262. package/rust/core/preprocessor/mod.rs +0 -4
  263. package/rust/core/preprocessor/module.rs +0 -55
  264. package/rust/core/preprocessor/processor/handlers.rs +0 -107
  265. package/rust/core/preprocessor/processor/mod.rs +0 -1
  266. package/rust/core/preprocessor/resolver/bank.rs +0 -49
  267. package/rust/core/preprocessor/resolver/call.rs +0 -124
  268. package/rust/core/preprocessor/resolver/condition.rs +0 -95
  269. package/rust/core/preprocessor/resolver/driver.rs +0 -324
  270. package/rust/core/preprocessor/resolver/function.rs +0 -69
  271. package/rust/core/preprocessor/resolver/group.rs +0 -122
  272. package/rust/core/preprocessor/resolver/let_.rs +0 -32
  273. package/rust/core/preprocessor/resolver/loop_.rs +0 -318
  274. package/rust/core/preprocessor/resolver/mod.rs +0 -16
  275. package/rust/core/preprocessor/resolver/pattern.rs +0 -95
  276. package/rust/core/preprocessor/resolver/spawn.rs +0 -99
  277. package/rust/core/preprocessor/resolver/synth.rs +0 -54
  278. package/rust/core/preprocessor/resolver/tempo.rs +0 -48
  279. package/rust/core/preprocessor/resolver/trigger.rs +0 -116
  280. package/rust/core/preprocessor/resolver/value.rs +0 -176
  281. package/rust/core/store/global.rs +0 -57
  282. package/rust/core/store/mod.rs +0 -1
  283. package/rust/lib.rs +0 -323
  284. package/rust/macros/Cargo.toml +0 -14
  285. package/rust/macros/src/lib.rs +0 -52
  286. package/rust/main.rs +0 -557
  287. package/rust/types/Cargo.toml +0 -11
  288. package/rust/types/src/addons.rs +0 -57
  289. package/rust/types/src/ast.rs +0 -202
  290. package/rust/types/src/config.rs +0 -82
  291. package/rust/types/src/lib.rs +0 -15
  292. package/rust/types/src/plugin.rs +0 -20
  293. package/rust/types/src/store.rs +0 -139
  294. package/rust/types/src/telemetry.rs +0 -85
  295. package/rust/utils/Cargo.toml +0 -29
  296. package/rust/utils/src/error.rs +0 -186
  297. package/rust/utils/src/file.rs +0 -477
  298. package/rust/utils/src/first_usage.rs +0 -97
  299. package/rust/utils/src/lib.rs +0 -9
  300. package/rust/utils/src/logger.rs +0 -200
  301. package/rust/utils/src/path.rs +0 -158
  302. package/rust/utils/src/signature.rs +0 -41
  303. package/rust/utils/src/spinner.rs +0 -20
  304. package/rust/utils/src/version.rs +0 -58
  305. package/rust/utils/src/watcher.rs +0 -46
  306. package/rust/web/api.rs +0 -5
  307. package/rust/web/auth.rs +0 -5
  308. package/rust/web/cdn.rs +0 -34
  309. package/rust/web/forge.rs +0 -5
  310. package/rust/web/mod.rs +0 -5
  311. package/rust/web/sso.rs +0 -5
  312. package/templates/minimal/.devalang +0 -5
  313. package/templates/minimal/README.md +0 -218
  314. package/templates/minimal/src/index.deva +0 -2
  315. package/templates/welcome/.devalang +0 -5
  316. package/templates/welcome/README.md +0 -218
  317. package/templates/welcome/samples/kick-808.wav +0 -0
  318. package/templates/welcome/src/index.deva +0 -61
  319. package/templates/welcome/src/variables.deva +0 -3
  320. package/tests/integration.rs +0 -21
  321. package/tests/rust/cli_check_build.rs +0 -21
  322. package/tests/rust/cli_help.rs +0 -12
  323. package/tests/rust/cli_template_list.rs +0 -10
  324. package/tests/rust/cli_version.rs +0 -11
  325. package/tests/typescript/index.spec.ts +0 -136
  326. package/tests/typescript/playhead.spec.ts +0 -36
  327. package/tests/typescript/render_e2e.spec.ts +0 -77
  328. package/tsconfig.json +0 -115
  329. package/typescript/bin/index.ts +0 -28
  330. package/typescript/core/functions/index.ts +0 -94
  331. package/typescript/core/index.ts +0 -6
  332. package/typescript/core/types/index.ts +0 -4
  333. package/typescript/core/types/plugin.ts +0 -19
  334. package/typescript/core/types/result.ts +0 -29
  335. package/typescript/core/types/statement.ts +0 -47
  336. package/typescript/core/types/value.ts +0 -29
  337. package/typescript/index.ts +0 -8
  338. package/typescript/pkg/devalang_core.d.ts +0 -4
  339. package/typescript/pkg/devalang_core.ts +0 -65
  340. package/typescript/scripts/copy-wasm-dts.ts +0 -41
  341. package/typescript/scripts/postinstall.ts +0 -85
  342. package/typescript/scripts/version/bump.ts +0 -44
  343. package/typescript/scripts/version/copy-to-binary.ts +0 -82
  344. package/typescript/scripts/version/fetch.ts +0 -18
  345. package/typescript/scripts/version/index.ts +0 -25
  346. package/typescript/scripts/version/sync.ts +0 -24
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Devaloop Labs
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Devaloop Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
package/README.md CHANGED
@@ -1,221 +1,251 @@
1
- <div align="center">
2
- <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
- </div>
4
-
5
- ![Rust](https://img.shields.io/badge/Made%20with-Rust-orange?logo=rust)
6
- ![TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-blue?logo=typescript)
7
- ![Node.js](https://img.shields.io/badge/Node.js-18%2B-brightgreen?logo=node.js)
8
-
9
- ![Project Status](https://img.shields.io/badge/status-beta-blue)
10
- ![Version](https://img.shields.io/npm/v/@devaloop/devalang)
11
- ![License: MIT](https://img.shields.io/badge/license-MIT-green)
12
-
13
- ![Linux](https://img.shields.io/badge/linux-supported-blue?logo=linux)
14
- ![macOS](https://img.shields.io/badge/macOS-supported-blue?logo=apple)
15
- ![Windows](https://img.shields.io/badge/windows-supported-blue?logo=windows)
16
-
17
- ![npm](https://img.shields.io/npm/dt/@devaloop/devalang)
18
- ![crates](https://img.shields.io/crates/d/devalang)
19
-
20
- ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/devaloop-labs/devalang/.github/workflows/ci.yml)
21
-
22
- # 🦊 Devalang (CORE) Compose music with code
23
-
24
- Devalang is a tiny domain-specific language (DSL) for music makers, sound designers, and audio hackers.
25
- Compose loops, control samples, render and play audio all in clean, readable text.
26
-
27
- Whether you're building a track, shaping textures, or performing live, Devalang helps you think in rhythms. It’s designed to be simple, expressive, and fast — because your ideas shouldn’t wait.
28
-
29
- From studio sketches to live sets, Devalang gives you rhythmic control — with the elegance of code.
30
-
31
- > **🚧 Notice 🚧**
32
- >
33
- > Includes synthesis, playback, and rendering features, but is still in early development, and breaking changes may occur.
34
- >
35
- > **NEW**: [Devalang WORKSHOP is now available](https://workshop.devalang.com).
36
- >
37
-
38
- ## 📚 Quick Access
39
-
40
- - [▶️ Playground](https://playground.devalang.com)
41
- - [📖 Documentation](https://docs.devalang.com)
42
- - [🧩 VSCode Extension](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode)
43
- - [🎨 Prettier Plugin](https://www.npmjs.com/package/@devaloop/prettier-plugin-devalang)
44
- - [📜 Changelog](./docs/CHANGELOG.md)
45
- - [💡 Examples](./examples/)
46
- - [🌐 Project Website](https://devalang.com)
47
- - [📦 Devaforge on npm](https://www.npmjs.com/package/@devaloop/devaforge)
48
- - [📦 Devalang on npm](https://www.npmjs.com/package/@devaloop/devalang)
49
-
50
- ## ⏱️ Try it now !
51
-
52
- ### Try Devalang in your browser
53
-
54
- > [Have a look at the Playground to try Devalang directly in your browser](https://playground.devalang.com)
55
-
56
- ### Try Devalang in your terminal
57
-
58
- #### With Node.js
59
-
60
- ```bash
61
- npm install -g @devaloop/devalang@latest
62
- ```
63
-
64
- #### With Rust
65
-
66
- ```bash
67
- cargo install devalang --version <version>
68
- ```
69
-
70
- #### Initialize a new project
71
-
72
- ```bash
73
- devalang init --name my-project --template minimal
74
- ```
75
-
76
- #### Write your first script
77
-
78
- Create a new Devalang file `src/index.deva` in the project directory:
79
-
80
- ```deva
81
- # src/index.deva
82
-
83
- # BPM definition
84
- bpm 125
85
-
86
- # Bank picking (make sure you've installed it)
87
- bank devaloop.808 as my808Bank
88
-
89
- # Pattern literal without options
90
- pattern kickPattern with my808Bank.kick = "x--- x--- x--- x---"
91
-
92
- group myGroup:
93
- # Rhythmic (each beat playing a kick)
94
- # on beat:
95
- # .my808Bank.kick 1/4
96
-
97
- # Synth definition with ADSR
98
- let myLead = synth sine {
99
- attack: 0,
100
- decay: 100,
101
- sustain: 100,
102
- release: 100
103
- }
104
-
105
- # Global automation
106
- automate myLead:
107
- param volume {
108
- 0% = 0.0
109
- 100% = 0.5
110
- }
111
- param pitch {
112
- 0% = -12.0
113
- 100% = 12.0
114
- }
115
-
116
- # Notes in a loop with condition
117
- for i in [1, 2, 3]:
118
- if i == 3:
119
- myLead -> note(C5, { duration: 200 })
120
- print "Playing note C5 for " + i
121
-
122
- # Pause runtime for 500ms
123
- sleep 500
124
-
125
- # Note with automation
126
- myLead -> note(C4, {
127
- duration: 400,
128
- velocity: 0.8,
129
- automate: {
130
- pan: {
131
- 0%: -1.0,
132
- 100%: 0.0
133
- }
134
- }
135
- })
136
-
137
- # Notes with params
138
- myLead -> note(G4, { duration: 600, glide: true })
139
- myLead -> note(B3, { duration: 400, slide: true })
140
-
141
- # Spawning the group & the pattern to play them in parallel
142
- spawn myGroup
143
- spawn kickPattern
144
- ```
145
-
146
- ### And the best part ? You can play it directly from the command line:
147
-
148
- #### Play the script once
149
-
150
- ```bash
151
- devalang play
152
- ```
153
-
154
- #### **LIVE mode** (repeat the playback + watch mode)
155
-
156
- ```bash
157
- devalang play --repeat
158
- ```
159
-
160
- ### 🎉 You can now hear your Devalang code in action
161
-
162
- > For more examples, check out the [examples directory](./examples/)
163
-
164
- ## Why Devalang ?
165
-
166
- - 🎹 Prototype audio ideas without opening a DAW, even VSCode with our Playground
167
- - 💻 Integrate sound into code-based workflows
168
- - 🎛️ Control audio parameters through readable syntax
169
- - 🧪 Build musical logic with variables and conditions
170
- - 🔄 Create complex patterns with ease
171
-
172
- ## 🚀 Features
173
-
174
- - ⚡ **Fast Build & Hot Reload** — optimized build process for quicker iteration.
175
- - 🎵 **Audio Engine & Real-time runner** — low-latency playback, render-to-file, and a realtime runner used by `devalang play --repeat` for live feedback.
176
- - 🧩 **Language primitives** — synths, notes, ADSR, maps, arrays, loops, conditionals and functions for expressive musical logic.
177
- - 🎛️ **Per-note automation & modulators** — `automate` maps, `$mod.*`, `$easing.*` and `$math.*` helpers for envelopes and LFOs.
178
- - 🧩 **Module system & structured AST** — import/export variables, stable AST output for debugging and tooling.
179
- - 🧰 **Plugins & Addons (WASM-ready)** install plugins/banks, `@use` directive, and WASM plugin integration so plugins can render or process audio at runtime.
180
- - 📦 **Addon manager & Devaforge** CLI commands to discover/install banks, plugins and templates; `devaforge` helps create addons.
181
- - ⚙️ **CLI tooling** — `build`, `check`, `play`, `install`, `init`, `discover`, `telemetry` and more with consistent flags (`--watch`, `--debug`, `--compress`).
182
- - 📂 **Project templates & examples** quick-start templates and many example projects in `examples/`.
183
- - 🧑‍💻 **TypeScript API & WASM distribution** — Node-friendly package with TypeScript bindings and a WASM build for browser/Node usage.
184
- - 🧰 **Editor & formatting support** — VSCode extension and Prettier plugin to edit Devalang with syntax and formatting support.
185
- - 🎵 **Custom samples & banks** drop samples into `.deva` and reference them from code; banks of sounds for fast composition.
186
- - 🔄 **Looping, grouping & scheduling** — precise beat-tied scheduling primitives for complex rhythmic patterns.
187
-
188
- ## 📄 Documentation
189
-
190
- ### [Please refer to the online documentation](https://docs.devalang.com) for detailed information on syntax, features, and usage examples
191
-
192
- ## 📰 What's new
193
-
194
- - **Effects chaining**: Added support for chaining multiple effects on synths and samples.
195
- - **New addons system**: Revamped the addons system for better management and integration.
196
- - **MIDI export**: Added the ability to export MIDI files from Devalang scripts.
197
- - **Synthesizer improvements**: Enhanced the built-in synthesizer with new types and modulation options.
198
- - **Devaforge**: Introduced a new system for creating and managing addons, including a CLI for addon generation.
199
- - **Documentation updates**: Improved documentation for clarity and completeness.
200
- - **Discovering addons**: Introduced a new command to detect addons.
201
- - **Public TypeScript API**: Added a public TypeScript API for easier integration.
202
- - **Improved error messages**: Enhanced error messages for better debugging.
203
- - **Major refactor**: Significant codebase refactor for improved maintainability and performance.
204
- - **Bug fixes**: Various bug fixes and stability improvements.
205
-
206
- ## 🛡️ License
207
-
208
- MIT — see [LICENSE](./LICENSE)
209
-
210
- ## 🤝 Contributing
211
-
212
- Contributions, bug reports and suggestions are welcome !
213
- Feel free to open an issue or submit a pull request.
214
-
215
- For more info, see [docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md).
216
-
217
- ## 📢 Contact
218
-
219
- Feel free to reach out for any inquiries or feedback.
220
-
221
- 📧 [contact@devaloop.com](mailto:contact@devaloop.com)
1
+ <div align="center">
2
+ <img src="https://devalang.com/images/devalang-logo-min.png" alt="Devalang Logo" width="100" />
3
+ </div>
4
+
5
+ ![Rust](https://img.shields.io/badge/Made%20with-Rust-orange?logo=rust)
6
+ ![TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-blue?logo=typescript)
7
+ ![Node.js](https://img.shields.io/badge/Node.js-16%2B-brightgreen?logo=node.js)
8
+
9
+ ![Project Status](https://img.shields.io/badge/status-preview-blue)
10
+ ![Version](https://img.shields.io/npm/v/@devaloop/devalang)
11
+ ![License: MIT](https://img.shields.io/badge/license-MIT-green)
12
+
13
+ ![Linux](https://img.shields.io/badge/linux-supported-blue?logo=linux)
14
+ ![macOS](https://img.shields.io/badge/macOS-supported-blue?logo=apple)
15
+ ![Windows](https://img.shields.io/badge/windows-supported-blue?logo=windows)
16
+
17
+ ![npm](https://img.shields.io/npm/dt/@devaloop/devalang)
18
+ ![crates](https://img.shields.io/crates/d/devalang)
19
+
20
+ # 🦊 Devalang — Write music with code
21
+
22
+ Devalang is a compact domain-specific language (DSL) for music makers, sound designers, and creative coders.
23
+ Compose loops, control samples, synthesize audio, and render your ideas — all in clean, readable text.
24
+
25
+ Whether you're prototyping a beat, building generative music, or performing live, Devalang gives you rhythmic precision with the elegance of code.
26
+
27
+ From studio sketches to live sets, Devalang puts musical ideas into motion.
28
+
29
+ > **🚀 v0.1.0 - Complete Rewriting**
30
+ >
31
+ >
32
+ > **NEW**: [Devalang Playground V2.0 is now available](https://playground.devalang.com) — Try it in your browser!
33
+
34
+ ---
35
+
36
+ ## 📚 Quick Access
37
+
38
+ - [▶️ Playground](https://playground.devalang.com) — Try Devalang in your browser
39
+ - [📖 Documentation](https://docs.devalang.com) — Complete language reference
40
+ - [🧩 VSCode Extension](https://marketplace.visualstudio.com/items?itemName=devaloop.devalang-vscode) — Syntax highlighting & snippets
41
+ - [📜 Changelog](./docs/CHANGELOG.md) — Version history
42
+ - [💡 Examples](./examples/)
43
+ - [🌐 Website](https://devalang.com) — Project homepage
44
+ - [📦 npm Package](https://www.npmjs.com/package/@devaloop/devalang)
45
+ - [📦 Rust Crate](https://crates.io/crates/devalang)
46
+
47
+ ---
48
+
49
+ ## ⚡ Quick Start
50
+
51
+ ### Try in Your Browser
52
+
53
+ > **[Launch the Playground](https://playground.devalang.com)** to try Devalang without installing anything.
54
+
55
+ ### Install via npm (Recommended)
56
+
57
+ ```bash
58
+ npm install -g @devaloop/devalang
59
+ ```
60
+
61
+ ### Install via Cargo (Rust)
62
+
63
+ ```bash
64
+ cargo install devalang
65
+ ```
66
+
67
+ ### Create Your First Project
68
+
69
+ ```bash
70
+ # Initialize a new project
71
+ devalang init my-project
72
+
73
+ # Navigate to the project
74
+ cd my-project
75
+
76
+ # Check syntax
77
+ devalang check --entry examples/index.deva
78
+
79
+ # Build audio files
80
+ devalang build --path examples/index.deva --formats wav mid
81
+
82
+ # Play audio (live mode)
83
+ devalang play --live --input examples/index.deva
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 🎵 Your First Devalang Script
89
+
90
+ Create a file `hello.deva`:
91
+
92
+ ```deva
93
+ # Set the tempo
94
+ bpm 120
95
+
96
+ # Load a bank of sounds
97
+ bank devaloop.808 as drums
98
+
99
+ # Create a simple drum pattern
100
+ pattern kickPattern with drums.kick = "x--- x--- x--- x---"
101
+ pattern snarePattern with drums.snare = "---- x--- ---- x---"
102
+ pattern hihatPattern with drums.hihat = "x-x- x-x- x-x- x-x-"
103
+
104
+ # Play the patterns
105
+ call kickPattern
106
+ call snarePattern
107
+ call hihatPattern
108
+ ```
109
+
110
+ ### Build the audio
111
+
112
+ ```bash
113
+ # Build to WAV
114
+ devalang build --path hello.deva --formats wav
115
+
116
+ # Output: ./output/audio/hello.wav
117
+ ```
118
+
119
+ # Play the audio
120
+
121
+ ```bash
122
+ # Play the audio file
123
+ devalang play --input hello.deva
124
+
125
+ # Play live (repeats and watch until stopped)
126
+ devalang play --live --input hello.deva
127
+ ```
128
+
129
+ ---
130
+
131
+ ## 🚀 Features
132
+
133
+ ### 🎵 **Core Language**
134
+ - ✅ **Lexer & Parser** — Complete tokenization and AST generation
135
+ - ✅ **Patterns** — Rhythmic notation with swing, humanize, velocity
136
+ - ✅ **Synths** — Built-in synthesizers with ADSR envelopes
137
+ - **Filters** — Lowpass, highpass, bandpass audio filtering
138
+ - **Effects** Reverb, delay, distortion, drive, chorus
139
+ - **Variables** `let`, `const`, `var` with scoping
140
+ - ✅ **Groups & Spawn** — Organize and parallelize execution
141
+ - **Loops & Conditions** `for`, `if`, `else` control flow
142
+ - ✅ **Triggers** — Conditional audio triggering
143
+ - ✅ **Events** — Event system with `on` and `emit`
144
+
145
+ ### 🛠️ **CLI Tools**
146
+ - `devalang init` Scaffold new projects (3 templates)
147
+ - ✅ `devalang build` — Compile to WAV/MIDI
148
+ - `devalang check` — Validate syntax
149
+ - ✅ `devalang play` — Audio playback
150
+ - ✅ `devalang addon` — Manage addons (install, list, discover)
151
+ - ✅ `devalang login/logout` — Authentication
152
+ - ✅ `devalang telemetry` — Privacy controls
153
+
154
+ ### 🌐 **WASM API**
155
+ - ✅ `render_audio()` — Browser audio rendering
156
+ - ✅ `render_midi_array()` — MIDI export
157
+ - `debug_render()` — Debug information
158
+ - ✅ `parse()` — Parse Devalang code
159
+ - ✅ TypeScript types included
160
+
161
+ ### 📦 **Output Formats**
162
+ - **WAV** 16/24/32-bit audio export
163
+ - ✅ **MIDI** — Standard MIDI file export
164
+ - ⚠️ **MP3/FLAC** Planned for v0.1.1
165
+
166
+ ### 🎯 **Performance**
167
+ - **Fast builds** 7-10ms for typical projects
168
+ - **Low latency** Optimized audio engine
169
+ - **Release builds** 5-6x faster than debug
170
+
171
+ ### 📚 **Learning Resources**
172
+ - **Online Docs** — Complete language reference
173
+ - ✅ **VSCode Extension** — Syntax highlighting
174
+
175
+ ---
176
+
177
+ ## 💡 Why Devalang?
178
+
179
+ - 🎹 **Prototype audio ideas** without opening a DAW
180
+ - 💻 **Integrate sound** into code-based workflows
181
+ - 🎛️ **Control audio parameters** with readable syntax
182
+ - 🧪 **Build musical logic** with variables and conditions
183
+ - 🔄 **Create patterns** with expressive notation
184
+ - 🎨 **Live code** with fast iteration cycles
185
+ - 📦 **Version control** your music with git
186
+
187
+ ---
188
+
189
+ ## 📖 Documentation
190
+
191
+ **[Visit docs.devalang.com](https://docs.devalang.com)** for:
192
+ - Complete syntax reference
193
+ - API documentation
194
+ - WASM integration guide
195
+ - CLI command reference
196
+ - Advanced tutorials
197
+ - Best practices
198
+
199
+ ---
200
+
201
+ ## 🔧 Development
202
+
203
+ ### Build from Source
204
+
205
+ ```bash
206
+ # Clone the repository
207
+ git clone https://github.com/devaloop-labs/devalang.git
208
+ cd devalang
209
+
210
+ # Build CLI (Rust)
211
+ cargo build --release --features cli
212
+
213
+ # Build WASM
214
+ cargo build --release --features wasm --lib
215
+
216
+ # Build TypeScript
217
+ npm install
218
+ npm run ts:build
219
+
220
+ # Run tests
221
+ cargo test --features cli
222
+ npm test
223
+ ```
224
+
225
+ ## 🤝 Contributing
226
+
227
+ We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
228
+
229
+ ### Ways to Contribute
230
+
231
+ - 🐛 **Report bugs** via [GitHub Issues](https://github.com/devaloop-labs/devalang/issues)
232
+ - 💡 **Suggest features** in discussions
233
+ - 📝 **Improve docs** with pull requests
234
+ - 🎵 **Share examples** of your creations
235
+ - 🧪 **Write tests** for new features
236
+
237
+ ---
238
+
239
+ ## 📜 License
240
+
241
+ MIT License — See [LICENSE](./LICENSE) for details.
242
+
243
+ Copyright (c) 2025 Devaloop
244
+
245
+ ---
246
+
247
+ <div align="center">
248
+ <strong>Made with ❤️ by the Devaloop team</strong>
249
+ <br />
250
+ <sub>Star ⭐ the repo if you like it!</sub>
251
+ </div>