@devaloop/devalang 0.0.1-beta.2 → 0.1.1

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 (329) hide show
  1. package/README.md +177 -146
  2. package/out-tsc/api.d.ts +180 -0
  3. package/out-tsc/api.d.ts.map +1 -0
  4. package/out-tsc/api.js +286 -0
  5. package/out-tsc/api.js.map +1 -0
  6. package/out-tsc/bin/index.d.ts +12 -0
  7. package/out-tsc/bin/index.d.ts.map +1 -0
  8. package/out-tsc/bin/index.js +20 -54
  9. package/out-tsc/bin/index.js.map +1 -0
  10. package/out-tsc/examples/basic-usage.d.ts +8 -0
  11. package/out-tsc/examples/basic-usage.d.ts.map +1 -0
  12. package/out-tsc/examples/basic-usage.js +113 -0
  13. package/out-tsc/examples/basic-usage.js.map +1 -0
  14. package/out-tsc/index.d.ts +19 -5
  15. package/out-tsc/index.d.ts.map +1 -0
  16. package/out-tsc/index.js +24 -6
  17. package/out-tsc/index.js.map +1 -0
  18. package/out-tsc/scripts/copy-wasm-dts.d.ts +7 -0
  19. package/out-tsc/scripts/copy-wasm-dts.d.ts.map +1 -0
  20. package/out-tsc/scripts/copy-wasm-dts.js +36 -32
  21. package/out-tsc/scripts/copy-wasm-dts.js.map +1 -0
  22. package/out-tsc/scripts/postinstall.d.ts +1 -0
  23. package/out-tsc/scripts/postinstall.d.ts.map +1 -0
  24. package/out-tsc/scripts/postinstall.js +4 -1
  25. package/out-tsc/scripts/postinstall.js.map +1 -0
  26. package/out-tsc/scripts/version/bump.d.ts +5 -1
  27. package/out-tsc/scripts/version/bump.d.ts.map +1 -0
  28. package/out-tsc/scripts/version/bump.js +114 -44
  29. package/out-tsc/scripts/version/bump.js.map +1 -0
  30. package/out-tsc/scripts/version/fetch.d.ts +12 -1
  31. package/out-tsc/scripts/version/fetch.d.ts.map +1 -0
  32. package/out-tsc/scripts/version/fetch.js +68 -24
  33. package/out-tsc/scripts/version/fetch.js.map +1 -0
  34. package/out-tsc/scripts/version/index.d.ts +6 -0
  35. package/out-tsc/scripts/version/index.d.ts.map +1 -0
  36. package/out-tsc/scripts/version/index.js +44 -22
  37. package/out-tsc/scripts/version/index.js.map +1 -0
  38. package/out-tsc/scripts/version/sync.d.ts +5 -1
  39. package/out-tsc/scripts/version/sync.d.ts.map +1 -0
  40. package/out-tsc/scripts/version/sync.js +78 -29
  41. package/out-tsc/scripts/version/sync.js.map +1 -0
  42. package/out-tsc/types.d.ts +68 -0
  43. package/out-tsc/types.d.ts.map +1 -0
  44. package/out-tsc/{core/types/value.js → types.js} +4 -0
  45. package/out-tsc/types.js.map +1 -0
  46. package/out-tsc/wasm.d.ts +8 -0
  47. package/out-tsc/wasm.d.ts.map +1 -0
  48. package/out-tsc/{core/index.js → wasm.js} +9 -6
  49. package/out-tsc/wasm.js.map +1 -0
  50. package/package.json +50 -37
  51. package/.cargo/config.toml +0 -2
  52. package/.devalang +0 -9
  53. package/.github/workflows/ci.yml +0 -103
  54. package/Cargo.toml +0 -81
  55. package/docs/CHANGELOG.md +0 -581
  56. package/docs/CONTRIBUTING.md +0 -101
  57. package/docs/ROADMAP.md +0 -38
  58. package/docs/TODO.md +0 -71
  59. package/examples/automation.deva +0 -42
  60. package/examples/bank.deva +0 -7
  61. package/examples/bus.deva +0 -10
  62. package/examples/condition.deva +0 -20
  63. package/examples/duration.deva +0 -9
  64. package/examples/effect.deva +0 -2
  65. package/examples/events.deva +0 -12
  66. package/examples/filter.deva +0 -11
  67. package/examples/function.deva +0 -15
  68. package/examples/group.deva +0 -12
  69. package/examples/index.deva +0 -63
  70. package/examples/lfo.deva +0 -9
  71. package/examples/loop.deva +0 -10
  72. package/examples/pattern.deva +0 -8
  73. package/examples/plugin.deva +0 -16
  74. package/examples/samples/hat-808.wav +0 -0
  75. package/examples/samples/kick-808.wav +0 -0
  76. package/examples/synth.deva +0 -24
  77. package/examples/synth_types.deva +0 -17
  78. package/examples/variables.deva +0 -9
  79. package/out-tsc/core/functions/index.d.ts +0 -42
  80. package/out-tsc/core/functions/index.js +0 -87
  81. package/out-tsc/core/index.d.ts +0 -6
  82. package/out-tsc/core/types/index.d.ts +0 -4
  83. package/out-tsc/core/types/index.js +0 -20
  84. package/out-tsc/core/types/plugin.d.ts +0 -18
  85. package/out-tsc/core/types/plugin.js +0 -2
  86. package/out-tsc/core/types/result.d.ts +0 -27
  87. package/out-tsc/core/types/result.js +0 -2
  88. package/out-tsc/core/types/statement.d.ts +0 -106
  89. package/out-tsc/core/types/statement.js +0 -2
  90. package/out-tsc/core/types/value.d.ts +0 -43
  91. package/out-tsc/pkg/devalang_core.d.ts +0 -15
  92. package/out-tsc/pkg/devalang_core.js +0 -65
  93. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +0 -34
  94. package/project-version.json +0 -6
  95. package/rust/cli/bank/api.rs +0 -122
  96. package/rust/cli/bank/commands.rs +0 -306
  97. package/rust/cli/bank/mod.rs +0 -29
  98. package/rust/cli/build/commands.rs +0 -153
  99. package/rust/cli/build/mod.rs +0 -2
  100. package/rust/cli/build/process.rs +0 -165
  101. package/rust/cli/check/mod.rs +0 -208
  102. package/rust/cli/discover/commands.rs +0 -253
  103. package/rust/cli/discover/config.rs +0 -111
  104. package/rust/cli/discover/fs.rs +0 -19
  105. package/rust/cli/discover/install.rs +0 -103
  106. package/rust/cli/discover/metadata.rs +0 -48
  107. package/rust/cli/discover/mod.rs +0 -5
  108. package/rust/cli/init/commands.rs +0 -88
  109. package/rust/cli/init/mod.rs +0 -1
  110. package/rust/cli/install/addon.rs +0 -118
  111. package/rust/cli/install/bank.rs +0 -72
  112. package/rust/cli/install/commands.rs +0 -35
  113. package/rust/cli/install/mod.rs +0 -4
  114. package/rust/cli/install/plugin.rs +0 -80
  115. package/rust/cli/login/commands.rs +0 -124
  116. package/rust/cli/login/mod.rs +0 -1
  117. package/rust/cli/mod.rs +0 -12
  118. package/rust/cli/parser.rs +0 -359
  119. package/rust/cli/play/commands.rs +0 -375
  120. package/rust/cli/play/io.rs +0 -17
  121. package/rust/cli/play/mod.rs +0 -5
  122. package/rust/cli/play/process.rs +0 -159
  123. package/rust/cli/play/realtime.rs +0 -91
  124. package/rust/cli/play/utils.rs +0 -23
  125. package/rust/cli/telemetry/commands.rs +0 -22
  126. package/rust/cli/telemetry/event_creator.rs +0 -80
  127. package/rust/cli/telemetry/mod.rs +0 -3
  128. package/rust/cli/telemetry/send.rs +0 -51
  129. package/rust/cli/template/commands.rs +0 -69
  130. package/rust/cli/template/mod.rs +0 -1
  131. package/rust/cli/update/commands.rs +0 -6
  132. package/rust/cli/update/mod.rs +0 -1
  133. package/rust/config/driver.rs +0 -112
  134. package/rust/config/mod.rs +0 -3
  135. package/rust/config/ops.rs +0 -26
  136. package/rust/config/settings.rs +0 -101
  137. package/rust/core/audio/engine/driver.rs +0 -220
  138. package/rust/core/audio/engine/export.rs +0 -169
  139. package/rust/core/audio/engine/helpers.rs +0 -178
  140. package/rust/core/audio/engine/mod.rs +0 -56
  141. package/rust/core/audio/engine/notes/dsp.rs +0 -85
  142. package/rust/core/audio/engine/notes/mod.rs +0 -44
  143. package/rust/core/audio/engine/notes/params.rs +0 -294
  144. package/rust/core/audio/engine/sample/insert.rs +0 -199
  145. package/rust/core/audio/engine/sample/mod.rs +0 -40
  146. package/rust/core/audio/engine/sample/padding.rs +0 -170
  147. package/rust/core/audio/evaluator/condition.rs +0 -61
  148. package/rust/core/audio/evaluator/mod.rs +0 -9
  149. package/rust/core/audio/evaluator/numeric.rs +0 -152
  150. package/rust/core/audio/evaluator/rhs.rs +0 -16
  151. package/rust/core/audio/evaluator/string_expr.rs +0 -94
  152. package/rust/core/audio/interpreter/driver.rs +0 -574
  153. package/rust/core/audio/interpreter/mod.rs +0 -2
  154. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +0 -175
  155. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +0 -384
  156. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +0 -2
  157. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +0 -316
  158. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +0 -3
  159. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +0 -192
  160. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +0 -24
  161. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +0 -116
  162. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +0 -97
  163. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +0 -100
  164. package/rust/core/audio/interpreter/statements/automate.rs +0 -16
  165. package/rust/core/audio/interpreter/statements/call.rs +0 -295
  166. package/rust/core/audio/interpreter/statements/condition.rs +0 -72
  167. package/rust/core/audio/interpreter/statements/function.rs +0 -24
  168. package/rust/core/audio/interpreter/statements/let_.rs +0 -36
  169. package/rust/core/audio/interpreter/statements/load.rs +0 -17
  170. package/rust/core/audio/interpreter/statements/loop_.rs +0 -115
  171. package/rust/core/audio/interpreter/statements/mod.rs +0 -12
  172. package/rust/core/audio/interpreter/statements/sleep.rs +0 -28
  173. package/rust/core/audio/interpreter/statements/spawn.rs +0 -253
  174. package/rust/core/audio/interpreter/statements/tempo.rs +0 -40
  175. package/rust/core/audio/interpreter/statements/trigger.rs +0 -239
  176. package/rust/core/audio/loader/mod.rs +0 -1
  177. package/rust/core/audio/loader/trigger.rs +0 -98
  178. package/rust/core/audio/mod.rs +0 -6
  179. package/rust/core/audio/player.rs +0 -70
  180. package/rust/core/audio/special/easing.rs +0 -189
  181. package/rust/core/audio/special/env.rs +0 -45
  182. package/rust/core/audio/special/math.rs +0 -134
  183. package/rust/core/audio/special/mod.rs +0 -9
  184. package/rust/core/audio/special/modulator.rs +0 -143
  185. package/rust/core/builder/mod.rs +0 -129
  186. package/rust/core/debugger/lexer.rs +0 -27
  187. package/rust/core/debugger/logs.rs +0 -52
  188. package/rust/core/debugger/mod.rs +0 -30
  189. package/rust/core/debugger/preprocessor.rs +0 -27
  190. package/rust/core/debugger/store.rs +0 -38
  191. package/rust/core/error/mod.rs +0 -269
  192. package/rust/core/lexer/driver.rs +0 -59
  193. package/rust/core/lexer/handler/arrow.rs +0 -82
  194. package/rust/core/lexer/handler/at.rs +0 -21
  195. package/rust/core/lexer/handler/brace.rs +0 -41
  196. package/rust/core/lexer/handler/colon.rs +0 -21
  197. package/rust/core/lexer/handler/comment.rs +0 -30
  198. package/rust/core/lexer/handler/dot.rs +0 -21
  199. package/rust/core/lexer/handler/driver.rs +0 -337
  200. package/rust/core/lexer/handler/identifier.rs +0 -47
  201. package/rust/core/lexer/handler/indent.rs +0 -66
  202. package/rust/core/lexer/handler/mod.rs +0 -15
  203. package/rust/core/lexer/handler/newline.rs +0 -23
  204. package/rust/core/lexer/handler/number.rs +0 -31
  205. package/rust/core/lexer/handler/operator.rs +0 -46
  206. package/rust/core/lexer/handler/parenthesis.rs +0 -41
  207. package/rust/core/lexer/handler/slash.rs +0 -21
  208. package/rust/core/lexer/handler/string.rs +0 -63
  209. package/rust/core/lexer/mod.rs +0 -3
  210. package/rust/core/lexer/token.rs +0 -91
  211. package/rust/core/mod.rs +0 -9
  212. package/rust/core/parser/driver/block.rs +0 -111
  213. package/rust/core/parser/driver/cursor.rs +0 -82
  214. package/rust/core/parser/driver/driver_impl.rs +0 -139
  215. package/rust/core/parser/driver/mod.rs +0 -6
  216. package/rust/core/parser/driver/parse_array.rs +0 -120
  217. package/rust/core/parser/driver/parse_map.rs +0 -223
  218. package/rust/core/parser/driver/parser.rs +0 -160
  219. package/rust/core/parser/handler/arrow_call.rs +0 -277
  220. package/rust/core/parser/handler/at.rs +0 -279
  221. package/rust/core/parser/handler/bank.rs +0 -104
  222. package/rust/core/parser/handler/condition.rs +0 -83
  223. package/rust/core/parser/handler/dot.rs +0 -148
  224. package/rust/core/parser/handler/identifier/automate.rs +0 -254
  225. package/rust/core/parser/handler/identifier/call.rs +0 -91
  226. package/rust/core/parser/handler/identifier/emit.rs +0 -70
  227. package/rust/core/parser/handler/identifier/function.rs +0 -113
  228. package/rust/core/parser/handler/identifier/group.rs +0 -89
  229. package/rust/core/parser/handler/identifier/let_.rs +0 -173
  230. package/rust/core/parser/handler/identifier/mod.rs +0 -55
  231. package/rust/core/parser/handler/identifier/on.rs +0 -107
  232. package/rust/core/parser/handler/identifier/print.rs +0 -49
  233. package/rust/core/parser/handler/identifier/sleep.rs +0 -96
  234. package/rust/core/parser/handler/identifier/spawn.rs +0 -91
  235. package/rust/core/parser/handler/identifier/synth.rs +0 -135
  236. package/rust/core/parser/handler/loop_.rs +0 -194
  237. package/rust/core/parser/handler/mod.rs +0 -9
  238. package/rust/core/parser/handler/pattern.rs +0 -74
  239. package/rust/core/parser/handler/tempo.rs +0 -105
  240. package/rust/core/parser/mod.rs +0 -3
  241. package/rust/core/parser/statement.rs +0 -10
  242. package/rust/core/plugin/loader.rs +0 -137
  243. package/rust/core/plugin/mod.rs +0 -2
  244. package/rust/core/plugin/runner/mod.rs +0 -11
  245. package/rust/core/plugin/runner/non_wasm.rs +0 -297
  246. package/rust/core/plugin/runner/wasm32.rs +0 -43
  247. package/rust/core/preprocessor/loader/inject.rs +0 -278
  248. package/rust/core/preprocessor/loader/loader_helpers.rs +0 -110
  249. package/rust/core/preprocessor/loader/mod.rs +0 -235
  250. package/rust/core/preprocessor/mod.rs +0 -4
  251. package/rust/core/preprocessor/module.rs +0 -55
  252. package/rust/core/preprocessor/processor/handlers.rs +0 -107
  253. package/rust/core/preprocessor/processor/mod.rs +0 -1
  254. package/rust/core/preprocessor/resolver/bank.rs +0 -49
  255. package/rust/core/preprocessor/resolver/call.rs +0 -124
  256. package/rust/core/preprocessor/resolver/condition.rs +0 -95
  257. package/rust/core/preprocessor/resolver/driver.rs +0 -324
  258. package/rust/core/preprocessor/resolver/function.rs +0 -69
  259. package/rust/core/preprocessor/resolver/group.rs +0 -122
  260. package/rust/core/preprocessor/resolver/let_.rs +0 -32
  261. package/rust/core/preprocessor/resolver/loop_.rs +0 -318
  262. package/rust/core/preprocessor/resolver/mod.rs +0 -16
  263. package/rust/core/preprocessor/resolver/pattern.rs +0 -83
  264. package/rust/core/preprocessor/resolver/spawn.rs +0 -99
  265. package/rust/core/preprocessor/resolver/synth.rs +0 -54
  266. package/rust/core/preprocessor/resolver/tempo.rs +0 -48
  267. package/rust/core/preprocessor/resolver/trigger.rs +0 -116
  268. package/rust/core/preprocessor/resolver/value.rs +0 -176
  269. package/rust/core/store/global.rs +0 -57
  270. package/rust/core/store/mod.rs +0 -1
  271. package/rust/lib.rs +0 -323
  272. package/rust/main.rs +0 -388
  273. package/rust/types/Cargo.toml +0 -11
  274. package/rust/types/src/addons.rs +0 -55
  275. package/rust/types/src/ast.rs +0 -202
  276. package/rust/types/src/config.rs +0 -84
  277. package/rust/types/src/lib.rs +0 -15
  278. package/rust/types/src/plugin.rs +0 -20
  279. package/rust/types/src/store.rs +0 -139
  280. package/rust/types/src/telemetry.rs +0 -85
  281. package/rust/utils/Cargo.toml +0 -26
  282. package/rust/utils/src/error.rs +0 -186
  283. package/rust/utils/src/file.rs +0 -94
  284. package/rust/utils/src/first_usage.rs +0 -97
  285. package/rust/utils/src/lib.rs +0 -9
  286. package/rust/utils/src/logger.rs +0 -200
  287. package/rust/utils/src/path.rs +0 -129
  288. package/rust/utils/src/signature.rs +0 -41
  289. package/rust/utils/src/spinner.rs +0 -20
  290. package/rust/utils/src/version.rs +0 -27
  291. package/rust/utils/src/watcher.rs +0 -46
  292. package/rust/web/api.rs +0 -5
  293. package/rust/web/cdn.rs +0 -34
  294. package/rust/web/mod.rs +0 -3
  295. package/rust/web/sso.rs +0 -5
  296. package/templates/minimal/.devalang +0 -5
  297. package/templates/minimal/README.md +0 -218
  298. package/templates/minimal/src/index.deva +0 -2
  299. package/templates/welcome/.devalang +0 -5
  300. package/templates/welcome/README.md +0 -218
  301. package/templates/welcome/samples/kick-808.wav +0 -0
  302. package/templates/welcome/src/index.deva +0 -61
  303. package/templates/welcome/src/variables.deva +0 -3
  304. package/tests/integration.rs +0 -21
  305. package/tests/rust/cli_check_build.rs +0 -21
  306. package/tests/rust/cli_help.rs +0 -12
  307. package/tests/rust/cli_template_list.rs +0 -10
  308. package/tests/rust/cli_version.rs +0 -11
  309. package/tests/typescript/index.spec.ts +0 -136
  310. package/tests/typescript/playhead.spec.ts +0 -36
  311. package/tests/typescript/render_e2e.spec.ts +0 -77
  312. package/tsconfig.json +0 -115
  313. package/typescript/bin/index.ts +0 -28
  314. package/typescript/core/functions/index.ts +0 -94
  315. package/typescript/core/index.ts +0 -6
  316. package/typescript/core/types/index.ts +0 -4
  317. package/typescript/core/types/plugin.ts +0 -19
  318. package/typescript/core/types/result.ts +0 -29
  319. package/typescript/core/types/statement.ts +0 -47
  320. package/typescript/core/types/value.ts +0 -29
  321. package/typescript/index.ts +0 -8
  322. package/typescript/pkg/devalang_core.d.ts +0 -4
  323. package/typescript/pkg/devalang_core.ts +0 -65
  324. package/typescript/scripts/copy-wasm-dts.ts +0 -41
  325. package/typescript/scripts/postinstall.ts +0 -85
  326. package/typescript/scripts/version/bump.ts +0 -44
  327. package/typescript/scripts/version/fetch.ts +0 -18
  328. package/typescript/scripts/version/index.ts +0 -25
  329. package/typescript/scripts/version/sync.ts +0 -24
package/rust/main.rs DELETED
@@ -1,388 +0,0 @@
1
- #![cfg(feature = "cli")]
2
-
3
- pub mod cli;
4
- pub mod config;
5
- pub mod core;
6
- pub mod web;
7
- pub use devalang_utils as utils;
8
- use devalang_utils::path::ensure_deva_dir;
9
-
10
- use crate::cli::telemetry::send::send_telemetry_event;
11
- use crate::config::settings::ensure_user_config_file_exists;
12
- use crate::config::settings::write_user_config_file;
13
- use crate::{
14
- cli::{
15
- bank::{
16
- handle_bank_available_command, handle_bank_info_command, handle_bank_list_command,
17
- handle_remove_bank_command, handle_update_bank_command,
18
- },
19
- build::commands::handle_build_command,
20
- check::handle_check_command,
21
- discover::commands::handle_discover_command,
22
- init::commands::handle_init_command,
23
- install::commands::handle_install_command,
24
- login::commands::handle_login_command,
25
- parser::{BankCommand, Cli, Commands, InstallCommand, TelemetryCommand, TemplateCommand},
26
- play::commands::handle_play_command,
27
- telemetry::{
28
- commands::{handle_telemetry_disable_command, handle_telemetry_enable_command},
29
- event_creator::{TelemetryEventCreator, TelemetryEventExt},
30
- },
31
- template::commands::{handle_template_info_command, handle_template_list_command},
32
- update::commands::handle_update_command,
33
- },
34
- config::driver::ProjectConfig,
35
- utils::first_usage::check_is_first_usage,
36
- };
37
- use clap::CommandFactory;
38
- use clap::FromArgMatches;
39
- use devalang_types::{AddonType, TelemetryErrorLevel};
40
- use std::io;
41
-
42
- #[tokio::main]
43
- async fn main() -> io::Result<()> {
44
- let version = devalang_utils::version::get_version();
45
- let signature = devalang_utils::signature::get_signature(&version);
46
-
47
- let version_static: &'static str = Box::leak(format!("v{}", version).into_boxed_str());
48
- let signature_static: &'static str = Box::leak(signature.into_boxed_str());
49
-
50
- let mut cmd = Cli::command();
51
- cmd = cmd.version(version_static).before_help(signature_static);
52
-
53
- let raw_args: Vec<String> = std::env::args().collect();
54
- if raw_args.iter().any(|a| (a == "--version" || a == "-V")) {
55
- println!("{}", signature_static);
56
- return Ok(());
57
- }
58
-
59
- let matches = cmd.get_matches();
60
- let cli: Cli = Cli::from_arg_matches(&matches).expect("failed to parse cli args");
61
- let mut config: Option<ProjectConfig> = None;
62
-
63
- let telemetry_event_creator = TelemetryEventCreator::new();
64
- let mut event = telemetry_event_creator.get_base_event();
65
-
66
- let mut had_error: bool = false;
67
- let mut last_error_message: Option<String> = None;
68
- let mut exit_code: Option<i32> = None;
69
-
70
- let _ = ensure_deva_dir();
71
-
72
- if check_is_first_usage() == true {
73
- write_user_config_file();
74
- } else {
75
- ensure_user_config_file_exists();
76
- }
77
-
78
- let duration = std::time::Instant::now();
79
-
80
- if !cli.no_config {
81
- config = config::ops::load_config(None);
82
- } else {
83
- println!("No configuration file loaded. Running with arguments only.");
84
- }
85
-
86
- match cli.command {
87
- Commands::Init { name, template } => {
88
- handle_init_command(name, template);
89
- }
90
-
91
- Commands::Template { command } => match command {
92
- TemplateCommand::List => {
93
- handle_template_list_command();
94
- }
95
- TemplateCommand::Info { name } => {
96
- handle_template_info_command(name);
97
- }
98
- },
99
-
100
- Commands::Check {
101
- entry,
102
- output,
103
- watch,
104
- debug,
105
- } => {
106
- if let Err(err) = handle_check_command(config, entry, output, watch, debug) {
107
- let logger = devalang_utils::logger::Logger::new();
108
- logger.log_message(
109
- devalang_utils::logger::LogLevel::Error,
110
- &format!("❌ Check failed: {}", err),
111
- );
112
- had_error = true;
113
- last_error_message = Some(format!("check failed: {}", err));
114
- exit_code = Some(1);
115
- }
116
- }
117
-
118
- Commands::Build {
119
- entry,
120
- output,
121
- watch,
122
- debug,
123
- compress,
124
- output_format,
125
- audio_format,
126
- sample_rate,
127
- } => {
128
- if let Err(err) = handle_build_command(
129
- config,
130
- entry,
131
- output,
132
- output_format,
133
- audio_format,
134
- sample_rate,
135
- watch,
136
- debug,
137
- compress,
138
- ) {
139
- let logger = devalang_utils::logger::Logger::new();
140
- logger.log_message(
141
- devalang_utils::logger::LogLevel::Error,
142
- &format!("❌ Build failed: {}", err),
143
- );
144
- had_error = true;
145
- last_error_message = Some(format!("build failed: {}", err));
146
- exit_code = Some(1);
147
- }
148
- }
149
-
150
- Commands::Play {
151
- entry,
152
- output,
153
- sample_rate,
154
- watch,
155
- repeat,
156
- debug,
157
- audio_format,
158
- } => {
159
- if let Err(err) = handle_play_command(
160
- config,
161
- entry,
162
- output,
163
- audio_format,
164
- sample_rate,
165
- watch,
166
- repeat,
167
- debug,
168
- ) {
169
- let logger = devalang_utils::logger::Logger::new();
170
- logger.log_message(
171
- devalang_utils::logger::LogLevel::Error,
172
- &format!("❌ Play failed: {}", err),
173
- );
174
- had_error = true;
175
- last_error_message = Some(format!("play failed: {}", err));
176
- exit_code = Some(1);
177
- }
178
- }
179
-
180
- Commands::Install { command } => match command {
181
- InstallCommand::Template { name } => {
182
- if let Err(err) = handle_install_command(name, AddonType::Template).await {
183
- let logger = devalang_utils::logger::Logger::new();
184
- logger.log_message(
185
- devalang_utils::logger::LogLevel::Error,
186
- &format!("❌ Failed to install template: {}", err),
187
- );
188
- had_error = true;
189
- last_error_message = Some(format!("install template failed: {}", err));
190
- exit_code = Some(1);
191
- }
192
- }
193
- InstallCommand::Bank { name } => {
194
- if let Err(err) = handle_install_command(name, AddonType::Bank).await {
195
- let logger = devalang_utils::logger::Logger::new();
196
- logger.log_message(
197
- devalang_utils::logger::LogLevel::Error,
198
- &format!("❌ Failed to install bank: {}", err),
199
- );
200
- had_error = true;
201
- last_error_message = Some(format!("install bank failed: {}", err));
202
- exit_code = Some(1);
203
- }
204
- }
205
- InstallCommand::Plugin { name } => {
206
- if let Err(err) = handle_install_command(name, AddonType::Plugin).await {
207
- let logger = devalang_utils::logger::Logger::new();
208
- logger.log_message(
209
- devalang_utils::logger::LogLevel::Error,
210
- &format!("❌ Failed to install plugin: {}", err),
211
- );
212
- had_error = true;
213
- last_error_message = Some(format!("install plugin failed: {}", err));
214
- exit_code = Some(1);
215
- }
216
- }
217
- InstallCommand::Preset { name } => {
218
- if let Err(err) = handle_install_command(name, AddonType::Preset).await {
219
- let logger = devalang_utils::logger::Logger::new();
220
- logger.log_message(
221
- devalang_utils::logger::LogLevel::Error,
222
- &format!("❌ Failed to install preset: {}", err),
223
- );
224
- had_error = true;
225
- last_error_message = Some(format!("install preset failed: {}", err));
226
- exit_code = Some(1);
227
- }
228
- }
229
- },
230
-
231
- Commands::Bank { command } => match command {
232
- BankCommand::List => {
233
- if let Err(err) = handle_bank_list_command().await {
234
- let logger = devalang_utils::logger::Logger::new();
235
- logger.log_message(
236
- devalang_utils::logger::LogLevel::Error,
237
- &format!("❌ Failed to list local banks: {}", err),
238
- );
239
- had_error = true;
240
- last_error_message = Some(format!("bank list failed: {}", err));
241
- exit_code = Some(1);
242
- }
243
- }
244
-
245
- BankCommand::Available => {
246
- if let Err(err) = handle_bank_available_command().await {
247
- let logger = devalang_utils::logger::Logger::new();
248
- logger.log_message(
249
- devalang_utils::logger::LogLevel::Error,
250
- &format!("❌ Failed to list available banks: {}", err),
251
- );
252
- had_error = true;
253
- last_error_message = Some(format!("bank available failed: {}", err));
254
- exit_code = Some(1);
255
- }
256
- }
257
-
258
- BankCommand::Info { name } => {
259
- if let Err(err) = handle_bank_info_command(name).await {
260
- let logger = devalang_utils::logger::Logger::new();
261
- logger.log_message(
262
- devalang_utils::logger::LogLevel::Error,
263
- &format!("❌ Failed to get bank info: {}", err),
264
- );
265
- had_error = true;
266
- last_error_message = Some(format!("bank info failed: {}", err));
267
- exit_code = Some(1);
268
- }
269
- }
270
-
271
- BankCommand::Remove { name } => {
272
- if let Err(err) = handle_remove_bank_command(name).await {
273
- let logger = devalang_utils::logger::Logger::new();
274
- logger.log_message(
275
- devalang_utils::logger::LogLevel::Error,
276
- &format!("❌ Failed to remove bank: {}", err),
277
- );
278
- had_error = true;
279
- last_error_message = Some(format!("bank remove failed: {}", err));
280
- exit_code = Some(1);
281
- }
282
- }
283
-
284
- BankCommand::Update { name } => {
285
- if let Err(err) = handle_update_bank_command(name).await {
286
- let logger = devalang_utils::logger::Logger::new();
287
- logger.log_message(
288
- devalang_utils::logger::LogLevel::Error,
289
- &format!("❌ Failed to update bank: {}", err),
290
- );
291
- had_error = true;
292
- last_error_message = Some(format!("bank update failed: {}", err));
293
- exit_code = Some(1);
294
- }
295
- }
296
- },
297
-
298
- Commands::Update { only } => {
299
- if let Err(err) = handle_update_command(only).await {
300
- let logger = devalang_utils::logger::Logger::new();
301
- logger.log_message(
302
- devalang_utils::logger::LogLevel::Error,
303
- &format!("❌ Update failed: {}", err),
304
- );
305
- had_error = true;
306
- last_error_message = Some(format!("update failed: {}", err));
307
- exit_code = Some(1);
308
- }
309
- }
310
-
311
- Commands::Telemetry { command } => match command {
312
- TelemetryCommand::Enable { .. } => {
313
- if let Err(err) = handle_telemetry_enable_command().await {
314
- let logger = devalang_utils::logger::Logger::new();
315
- logger.log_message(
316
- devalang_utils::logger::LogLevel::Error,
317
- &format!("❌ Failed to enable telemetry: {}", err),
318
- );
319
- had_error = true;
320
- last_error_message = Some(format!("telemetry enable failed: {}", err));
321
- exit_code = Some(1);
322
- }
323
- }
324
- TelemetryCommand::Disable { .. } => {
325
- if let Err(err) = handle_telemetry_disable_command().await {
326
- let logger = devalang_utils::logger::Logger::new();
327
- logger.log_message(
328
- devalang_utils::logger::LogLevel::Error,
329
- &format!("❌ Failed to disable telemetry: {}", err),
330
- );
331
- had_error = true;
332
- last_error_message = Some(format!("telemetry disable failed: {}", err));
333
- exit_code = Some(1);
334
- }
335
- }
336
- },
337
-
338
- Commands::Discover {} => {
339
- if let Err(err) = handle_discover_command().await {
340
- let logger = devalang_utils::logger::Logger::new();
341
- logger.log_message(
342
- devalang_utils::logger::LogLevel::Error,
343
- &format!("❌ Failed to discover: {}", err),
344
- );
345
- had_error = true;
346
- last_error_message = Some(format!("discover failed: {}", err));
347
- exit_code = Some(1);
348
- }
349
- }
350
-
351
- Commands::Login { .. } => {
352
- if let Err(err) = handle_login_command().await {
353
- let logger = devalang_utils::logger::Logger::new();
354
- logger.log_message(
355
- devalang_utils::logger::LogLevel::Error,
356
- &format!("❌ Login failed: {}", err),
357
- );
358
- had_error = true;
359
- last_error_message = Some(format!("login failed: {}", err));
360
- exit_code = Some(1);
361
- }
362
- }
363
-
364
- Commands::Logout { .. } => {
365
- let logger = devalang_utils::logger::Logger::new();
366
- logger.log_message(
367
- devalang_utils::logger::LogLevel::Error,
368
- "❌ Logout command is not implemented yet.",
369
- );
370
- had_error = true;
371
- last_error_message = Some("logout not implemented".to_string());
372
- exit_code = Some(1);
373
- }
374
- }
375
-
376
- // SECTION Telemetry
377
- event.set_timestamp(chrono::Utc::now().to_string());
378
- event.set_duration(duration.elapsed().as_millis() as u64);
379
- event.set_success(!had_error);
380
-
381
- if had_error {
382
- event.set_error(TelemetryErrorLevel::Critical, last_error_message, exit_code);
383
- }
384
-
385
- let _ = send_telemetry_event(&event).await;
386
-
387
- Ok(())
388
- }
@@ -1,11 +0,0 @@
1
- [package]
2
- name = "devalang_types"
3
- version = "0.0.3"
4
- description = "Types and traits for Devalang"
5
- license = "MIT"
6
- authors = ["Devaloop <contact@devaloop.com>"]
7
- edition = "2024"
8
-
9
- [dependencies]
10
- serde = { version = "1.0", features = ["derive"] }
11
- toml = "0.8"
@@ -1,55 +0,0 @@
1
- use serde::Deserialize;
2
-
3
- #[derive(Debug, Clone)]
4
- pub struct DiscoveredAddon {
5
- pub path: std::path::PathBuf,
6
- pub name: String,
7
- pub extension: String,
8
- pub addon_type: String,
9
- }
10
-
11
- #[derive(Debug, Clone)]
12
- pub struct AddonWithMetadata {
13
- pub name: String,
14
- pub path: String,
15
- pub addon_type: String,
16
- pub metadata: AddonMetadata,
17
- }
18
-
19
- #[derive(Debug, Clone)]
20
- pub struct AddonMetadata {
21
- pub name: String,
22
- pub author: String,
23
- pub version: String,
24
- pub description: String,
25
- pub access: String,
26
- }
27
-
28
- #[derive(Debug, Clone)]
29
- pub enum AddonType {
30
- Bank,
31
- Plugin,
32
- Preset,
33
- Template,
34
- }
35
-
36
- #[derive(Debug, Deserialize)]
37
- pub struct BankInfo {
38
- pub name: String,
39
- pub version: String,
40
- pub description: String,
41
- pub author: String,
42
- }
43
-
44
- #[derive(Debug, Deserialize)]
45
- pub struct BankFile {
46
- pub bank: BankInfo,
47
- pub triggers: Option<Vec<BankTrigger>>,
48
- pub audio_path: Option<String>,
49
- }
50
-
51
- #[derive(Debug, Deserialize)]
52
- pub struct BankTrigger {
53
- pub name: String,
54
- pub path: String,
55
- }
@@ -1,202 +0,0 @@
1
- use serde::{Deserialize, Serialize};
2
- use std::collections::HashMap;
3
-
4
- #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5
- pub enum Duration {
6
- Number(f32),
7
- Identifier(String),
8
- Beat(String),
9
- Auto,
10
- }
11
-
12
- #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
13
- pub enum Severity {
14
- Warning,
15
- Critical,
16
- }
17
-
18
- #[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
19
- pub struct StackFrame {
20
- pub module: Option<String>,
21
- pub context: Option<String>,
22
- pub line: usize,
23
- pub column: usize,
24
- }
25
-
26
- #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
27
- pub struct ErrorResult {
28
- pub message: String,
29
- pub line: usize,
30
- pub column: usize,
31
- pub severity: Severity,
32
- pub stack: Vec<StackFrame>,
33
- }
34
-
35
- #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
36
- pub enum StatementKind {
37
- // ───── Core Instructions ─────
38
- Tempo,
39
- Bank {
40
- alias: Option<String>,
41
- },
42
- Print,
43
- Load {
44
- source: String,
45
- alias: String,
46
- },
47
- Use {
48
- name: String,
49
- alias: Option<String>,
50
- },
51
- Let {
52
- name: String,
53
- },
54
- Automate {
55
- target: String,
56
- },
57
- ArrowCall {
58
- target: String,
59
- method: String,
60
- args: Vec<Value>,
61
- },
62
- Function {
63
- name: String,
64
- parameters: Vec<String>,
65
- body: Vec<Statement>,
66
- },
67
-
68
- // ───── Instruments ─────
69
- Synth,
70
-
71
- // ───── Playback / Scheduling ─────
72
- Trigger {
73
- entity: String,
74
- duration: Duration,
75
- effects: Option<Value>,
76
- },
77
- Sleep,
78
- Call {
79
- name: String,
80
- args: Vec<Value>,
81
- },
82
- Spawn {
83
- name: String,
84
- args: Vec<Value>,
85
- },
86
- Loop,
87
-
88
- // ───── Structure & Logic ─────
89
- Group,
90
- Pattern {
91
- name: String,
92
- target: Option<String>,
93
- },
94
-
95
- // ───── Module System ─────
96
- Include(String),
97
- Export {
98
- names: Vec<String>,
99
- source: String,
100
- },
101
- Import {
102
- names: Vec<String>,
103
- source: String,
104
- },
105
-
106
- // ───── Conditions ─────
107
- If,
108
- Else,
109
- ElseIf,
110
-
111
- // ───── Internal / Utility ─────
112
- Comment,
113
- Indent,
114
- Dedent,
115
- NewLine,
116
-
117
- // ───── Events / Live coding ─────
118
- On {
119
- event: String,
120
- args: Option<Vec<Value>>,
121
- body: Vec<Statement>,
122
- },
123
- Emit {
124
- event: String,
125
- payload: Option<Value>,
126
- },
127
-
128
- // ───── Error Handling ─────
129
- Unknown,
130
- Error {
131
- message: String,
132
- },
133
- }
134
-
135
- #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
136
- pub enum Value {
137
- Boolean(bool),
138
- Number(f32),
139
- Duration(Duration),
140
- Identifier(String),
141
- String(String),
142
- Array(Vec<Value>),
143
- Map(HashMap<String, Value>),
144
- Block(Vec<Statement>),
145
- Sample(String),
146
- Beat(String),
147
- Statement(Box<Statement>),
148
- StatementKind(Box<StatementKind>),
149
- Unknown,
150
- Null,
151
- }
152
-
153
- impl Value {
154
- pub fn get(&self, key: &str) -> Option<&Value> {
155
- if let Value::Map(map) = self {
156
- map.get(key)
157
- } else {
158
- None
159
- }
160
- }
161
- }
162
-
163
- #[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
164
- pub struct Statement {
165
- pub kind: StatementKind,
166
- pub value: Value,
167
- pub indent: usize,
168
- pub line: usize,
169
- pub column: usize,
170
- }
171
-
172
- impl Statement {
173
- pub fn unknown() -> Self {
174
- Statement {
175
- kind: StatementKind::Unknown,
176
- value: Value::Null,
177
- indent: 0,
178
- line: 0,
179
- column: 0,
180
- }
181
- }
182
-
183
- pub fn unknown_with_pos(indent: usize, line: usize, column: usize) -> Self {
184
- Statement {
185
- kind: StatementKind::Unknown,
186
- value: Value::Null,
187
- indent,
188
- line,
189
- column,
190
- }
191
- }
192
-
193
- pub fn error_with_pos(indent: usize, line: usize, column: usize, message: String) -> Self {
194
- Statement {
195
- kind: StatementKind::Error { message },
196
- value: Value::Null,
197
- indent,
198
- line,
199
- column,
200
- }
201
- }
202
- }