@devaloop/devalang 0.0.1-alpha.9 → 0.0.1-beta.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 (322) hide show
  1. package/.cargo/config.toml +2 -0
  2. package/.devalang +6 -1
  3. package/.github/workflows/ci.yml +103 -0
  4. package/Cargo.toml +81 -48
  5. package/README.md +137 -154
  6. package/docs/CHANGELOG.md +428 -1
  7. package/docs/CONTRIBUTING.md +101 -0
  8. package/docs/ROADMAP.md +14 -7
  9. package/docs/TODO.md +16 -15
  10. package/examples/automation.deva +42 -0
  11. package/examples/bank.deva +7 -0
  12. package/examples/bus.deva +10 -0
  13. package/examples/duration.deva +9 -0
  14. package/examples/effect.deva +2 -0
  15. package/examples/events.deva +12 -0
  16. package/examples/filter.deva +11 -0
  17. package/examples/function.deva +15 -0
  18. package/examples/index.deva +57 -12
  19. package/examples/lfo.deva +9 -0
  20. package/examples/loop.deva +5 -12
  21. package/examples/pattern.deva +8 -0
  22. package/examples/plugin.deva +16 -0
  23. package/examples/synth.deva +11 -1
  24. package/examples/synth_types.deva +17 -0
  25. package/examples/variables.deva +1 -1
  26. package/out-tsc/bin/index.d.ts +2 -0
  27. package/out-tsc/bin/index.js +51 -7
  28. package/out-tsc/core/functions/index.d.ts +42 -0
  29. package/out-tsc/core/functions/index.js +87 -0
  30. package/out-tsc/core/index.d.ts +6 -0
  31. package/out-tsc/core/index.js +22 -0
  32. package/out-tsc/core/types/index.d.ts +4 -0
  33. package/out-tsc/core/types/index.js +20 -0
  34. package/out-tsc/core/types/plugin.d.ts +18 -0
  35. package/out-tsc/core/types/plugin.js +2 -0
  36. package/out-tsc/core/types/result.d.ts +27 -0
  37. package/out-tsc/core/types/result.js +2 -0
  38. package/out-tsc/core/types/statement.d.ts +106 -0
  39. package/out-tsc/core/types/statement.js +2 -0
  40. package/out-tsc/core/types/value.d.ts +43 -0
  41. package/out-tsc/core/types/value.js +2 -0
  42. package/out-tsc/index.d.ts +7 -0
  43. package/out-tsc/index.js +42 -1
  44. package/out-tsc/pkg/devalang_core.d.ts +15 -0
  45. package/out-tsc/pkg/devalang_core.js +65 -0
  46. package/out-tsc/pkg/devalang_core_bg.wasm.d.ts +34 -0
  47. package/out-tsc/scripts/copy-wasm-dts.d.ts +1 -0
  48. package/out-tsc/scripts/copy-wasm-dts.js +73 -0
  49. package/out-tsc/scripts/postinstall.d.ts +1 -0
  50. package/out-tsc/scripts/postinstall.js +83 -0
  51. package/out-tsc/scripts/version/bump.d.ts +1 -0
  52. package/out-tsc/scripts/version/fetch.d.ts +1 -0
  53. package/out-tsc/scripts/version/index.d.ts +1 -0
  54. package/out-tsc/scripts/version/sync.d.ts +1 -0
  55. package/package.json +28 -7
  56. package/project-version.json +4 -4
  57. package/rust/cli/bank/api.rs +122 -0
  58. package/rust/cli/bank/commands.rs +306 -0
  59. package/rust/cli/bank/mod.rs +29 -0
  60. package/rust/cli/build/commands.rs +153 -0
  61. package/rust/cli/build/mod.rs +2 -0
  62. package/rust/cli/build/process.rs +165 -0
  63. package/rust/cli/check/mod.rs +208 -0
  64. package/rust/cli/discover/commands.rs +253 -0
  65. package/rust/cli/discover/config.rs +111 -0
  66. package/rust/cli/discover/fs.rs +19 -0
  67. package/rust/cli/discover/install.rs +103 -0
  68. package/rust/cli/discover/metadata.rs +48 -0
  69. package/rust/cli/discover/mod.rs +5 -0
  70. package/rust/cli/{init.rs → init/commands.rs} +32 -23
  71. package/rust/cli/init/mod.rs +1 -0
  72. package/rust/cli/install/addon.rs +118 -0
  73. package/rust/cli/install/bank.rs +72 -0
  74. package/rust/cli/install/commands.rs +35 -0
  75. package/rust/cli/install/mod.rs +4 -0
  76. package/rust/cli/install/plugin.rs +80 -0
  77. package/rust/cli/login/commands.rs +124 -0
  78. package/rust/cli/login/mod.rs +1 -0
  79. package/rust/cli/mod.rs +9 -202
  80. package/rust/cli/parser.rs +359 -0
  81. package/rust/cli/play/commands.rs +375 -0
  82. package/rust/cli/play/io.rs +17 -0
  83. package/rust/cli/play/mod.rs +5 -0
  84. package/rust/cli/play/process.rs +159 -0
  85. package/rust/cli/play/realtime.rs +91 -0
  86. package/rust/cli/play/utils.rs +23 -0
  87. package/rust/cli/telemetry/commands.rs +22 -0
  88. package/rust/cli/telemetry/event_creator.rs +80 -0
  89. package/rust/cli/telemetry/mod.rs +3 -0
  90. package/rust/cli/telemetry/send.rs +51 -0
  91. package/rust/cli/{template.rs → template/commands.rs} +17 -5
  92. package/rust/cli/template/mod.rs +1 -0
  93. package/rust/cli/update/commands.rs +6 -0
  94. package/rust/cli/update/mod.rs +1 -0
  95. package/rust/config/driver.rs +112 -0
  96. package/rust/config/mod.rs +3 -16
  97. package/rust/config/ops.rs +26 -0
  98. package/rust/config/settings.rs +101 -0
  99. package/rust/core/audio/engine/driver.rs +220 -0
  100. package/rust/core/audio/engine/export.rs +169 -0
  101. package/rust/core/audio/engine/helpers.rs +178 -0
  102. package/rust/core/audio/engine/mod.rs +56 -0
  103. package/rust/core/audio/engine/notes/dsp.rs +85 -0
  104. package/rust/core/audio/engine/notes/mod.rs +44 -0
  105. package/rust/core/audio/engine/notes/params.rs +294 -0
  106. package/rust/core/audio/engine/sample/insert.rs +199 -0
  107. package/rust/core/audio/engine/sample/mod.rs +40 -0
  108. package/rust/core/audio/engine/sample/padding.rs +170 -0
  109. package/rust/core/audio/evaluator/condition.rs +61 -0
  110. package/rust/core/audio/evaluator/mod.rs +9 -0
  111. package/rust/core/audio/evaluator/numeric.rs +152 -0
  112. package/rust/core/audio/evaluator/rhs.rs +16 -0
  113. package/rust/core/audio/evaluator/string_expr.rs +94 -0
  114. package/rust/core/audio/interpreter/driver.rs +574 -216
  115. package/rust/core/audio/interpreter/mod.rs +2 -12
  116. package/rust/core/audio/interpreter/statements/arrow_call/interprete.rs +175 -0
  117. package/rust/core/audio/interpreter/statements/arrow_call/methods/chord.rs +384 -0
  118. package/rust/core/audio/interpreter/statements/arrow_call/methods/mod.rs +2 -0
  119. package/rust/core/audio/interpreter/statements/arrow_call/methods/note.rs +316 -0
  120. package/rust/core/audio/interpreter/statements/arrow_call/mod.rs +3 -0
  121. package/rust/core/audio/interpreter/statements/arrow_call/types/arp.rs +192 -0
  122. package/rust/core/audio/interpreter/statements/arrow_call/types/mod.rs +24 -0
  123. package/rust/core/audio/interpreter/statements/arrow_call/types/pad.rs +116 -0
  124. package/rust/core/audio/interpreter/statements/arrow_call/types/pluck.rs +97 -0
  125. package/rust/core/audio/interpreter/statements/arrow_call/types/sub.rs +100 -0
  126. package/rust/core/audio/interpreter/statements/automate.rs +16 -0
  127. package/rust/core/audio/interpreter/statements/call.rs +295 -0
  128. package/rust/core/audio/interpreter/{condition.rs → statements/condition.rs} +72 -69
  129. package/rust/core/audio/interpreter/statements/function.rs +24 -0
  130. package/rust/core/audio/interpreter/statements/let_.rs +36 -0
  131. package/rust/core/audio/interpreter/statements/load.rs +17 -0
  132. package/rust/core/audio/interpreter/statements/loop_.rs +115 -0
  133. package/rust/core/audio/interpreter/statements/mod.rs +12 -0
  134. package/rust/core/audio/interpreter/statements/sleep.rs +28 -0
  135. package/rust/core/audio/interpreter/statements/spawn.rs +253 -0
  136. package/rust/core/audio/interpreter/statements/tempo.rs +40 -0
  137. package/rust/core/audio/interpreter/statements/trigger.rs +239 -0
  138. package/rust/core/audio/loader/mod.rs +1 -1
  139. package/rust/core/audio/loader/trigger.rs +98 -52
  140. package/rust/core/audio/mod.rs +2 -2
  141. package/rust/core/audio/player.rs +28 -12
  142. package/rust/core/audio/special/easing.rs +189 -0
  143. package/rust/core/audio/special/env.rs +45 -0
  144. package/rust/core/audio/special/math.rs +134 -0
  145. package/rust/core/audio/special/mod.rs +9 -0
  146. package/rust/core/audio/special/modulator.rs +143 -0
  147. package/rust/core/builder/mod.rs +129 -80
  148. package/rust/core/debugger/lexer.rs +4 -4
  149. package/rust/core/debugger/logs.rs +52 -0
  150. package/rust/core/debugger/mod.rs +11 -2
  151. package/rust/core/debugger/preprocessor.rs +4 -4
  152. package/rust/core/debugger/store.rs +38 -25
  153. package/rust/core/error/mod.rs +221 -12
  154. package/rust/core/lexer/driver.rs +59 -0
  155. package/rust/core/lexer/handler/arrow.rs +62 -11
  156. package/rust/core/lexer/handler/at.rs +5 -5
  157. package/rust/core/lexer/handler/brace.rs +11 -11
  158. package/rust/core/lexer/handler/colon.rs +5 -5
  159. package/rust/core/lexer/handler/comment.rs +3 -3
  160. package/rust/core/lexer/handler/dot.rs +6 -6
  161. package/rust/core/lexer/handler/driver.rs +143 -32
  162. package/rust/core/lexer/handler/identifier.rs +11 -5
  163. package/rust/core/lexer/handler/indent.rs +18 -4
  164. package/rust/core/lexer/handler/mod.rs +6 -5
  165. package/rust/core/lexer/handler/newline.rs +3 -3
  166. package/rust/core/lexer/handler/number.rs +5 -5
  167. package/rust/core/lexer/handler/operator.rs +5 -3
  168. package/rust/core/lexer/handler/parenthesis.rs +41 -0
  169. package/rust/core/lexer/handler/slash.rs +21 -0
  170. package/rust/core/lexer/handler/string.rs +3 -3
  171. package/rust/core/lexer/mod.rs +1 -49
  172. package/rust/core/lexer/token.rs +17 -12
  173. package/rust/core/mod.rs +9 -10
  174. package/rust/core/parser/driver/block.rs +111 -0
  175. package/rust/core/parser/driver/cursor.rs +82 -0
  176. package/rust/core/parser/driver/driver_impl.rs +139 -0
  177. package/rust/core/parser/driver/mod.rs +6 -0
  178. package/rust/core/parser/driver/parse_array.rs +120 -0
  179. package/rust/core/parser/driver/parse_map.rs +223 -0
  180. package/rust/core/parser/driver/parser.rs +160 -0
  181. package/rust/core/parser/handler/arrow_call.rs +277 -126
  182. package/rust/core/parser/handler/at.rs +142 -25
  183. package/rust/core/parser/handler/bank.rs +83 -20
  184. package/rust/core/parser/handler/condition.rs +14 -5
  185. package/rust/core/parser/handler/dot.rs +111 -75
  186. package/rust/core/parser/handler/identifier/automate.rs +254 -0
  187. package/rust/core/parser/handler/identifier/call.rs +74 -24
  188. package/rust/core/parser/handler/identifier/emit.rs +70 -0
  189. package/rust/core/parser/handler/identifier/function.rs +113 -0
  190. package/rust/core/parser/handler/identifier/group.rs +28 -14
  191. package/rust/core/parser/handler/identifier/let_.rs +61 -21
  192. package/rust/core/parser/handler/identifier/mod.rs +24 -20
  193. package/rust/core/parser/handler/identifier/on.rs +107 -0
  194. package/rust/core/parser/handler/identifier/print.rs +49 -0
  195. package/rust/core/parser/handler/identifier/sleep.rs +77 -14
  196. package/rust/core/parser/handler/identifier/spawn.rs +81 -31
  197. package/rust/core/parser/handler/identifier/synth.rs +102 -32
  198. package/rust/core/parser/handler/loop_.rs +144 -22
  199. package/rust/core/parser/handler/mod.rs +6 -5
  200. package/rust/core/parser/handler/pattern.rs +74 -0
  201. package/rust/core/parser/handler/tempo.rs +67 -9
  202. package/rust/core/parser/mod.rs +3 -4
  203. package/rust/core/parser/statement.rs +6 -92
  204. package/rust/core/plugin/loader.rs +137 -0
  205. package/rust/core/plugin/mod.rs +2 -0
  206. package/rust/core/plugin/runner/mod.rs +11 -0
  207. package/rust/core/plugin/runner/non_wasm.rs +297 -0
  208. package/rust/core/plugin/runner/wasm32.rs +43 -0
  209. package/rust/core/preprocessor/loader/inject.rs +278 -0
  210. package/rust/core/preprocessor/loader/loader_helpers.rs +110 -0
  211. package/rust/core/preprocessor/loader/mod.rs +235 -0
  212. package/rust/core/preprocessor/mod.rs +4 -4
  213. package/rust/core/preprocessor/module.rs +55 -50
  214. package/rust/core/preprocessor/processor/handlers.rs +107 -0
  215. package/rust/core/preprocessor/processor/mod.rs +1 -0
  216. package/rust/core/preprocessor/resolver/bank.rs +14 -12
  217. package/rust/core/preprocessor/resolver/call.rs +106 -105
  218. package/rust/core/preprocessor/resolver/condition.rs +13 -10
  219. package/rust/core/preprocessor/resolver/driver.rs +145 -48
  220. package/rust/core/preprocessor/resolver/function.rs +69 -0
  221. package/rust/core/preprocessor/resolver/group.rs +122 -61
  222. package/rust/core/preprocessor/resolver/let_.rs +13 -12
  223. package/rust/core/preprocessor/resolver/loop_.rs +240 -13
  224. package/rust/core/preprocessor/resolver/mod.rs +8 -6
  225. package/rust/core/preprocessor/resolver/pattern.rs +83 -0
  226. package/rust/core/preprocessor/resolver/spawn.rs +83 -42
  227. package/rust/core/preprocessor/resolver/synth.rs +15 -11
  228. package/rust/core/preprocessor/resolver/tempo.rs +13 -14
  229. package/rust/core/preprocessor/resolver/trigger.rs +32 -28
  230. package/rust/core/preprocessor/resolver/value.rs +111 -13
  231. package/rust/core/store/global.rs +57 -39
  232. package/rust/core/store/mod.rs +0 -3
  233. package/rust/lib.rs +323 -117
  234. package/rust/main.rs +388 -65
  235. package/rust/types/Cargo.toml +11 -0
  236. package/rust/types/src/addons.rs +55 -0
  237. package/rust/types/src/ast.rs +202 -0
  238. package/rust/types/src/config.rs +84 -0
  239. package/rust/types/src/lib.rs +15 -0
  240. package/rust/types/src/plugin.rs +20 -0
  241. package/rust/types/src/store.rs +139 -0
  242. package/rust/types/src/telemetry.rs +85 -0
  243. package/rust/utils/Cargo.toml +26 -0
  244. package/rust/utils/src/error.rs +186 -0
  245. package/rust/utils/src/file.rs +94 -0
  246. package/rust/utils/src/first_usage.rs +97 -0
  247. package/rust/utils/{mod.rs → src/lib.rs} +6 -3
  248. package/rust/utils/{logger.rs → src/logger.rs} +94 -17
  249. package/rust/utils/src/path.rs +129 -0
  250. package/rust/utils/src/signature.rs +41 -0
  251. package/rust/utils/{spinner.rs → src/spinner.rs} +7 -8
  252. package/rust/utils/src/version.rs +27 -0
  253. package/rust/utils/{watcher.rs → src/watcher.rs} +17 -4
  254. package/rust/web/api.rs +5 -0
  255. package/rust/web/cdn.rs +34 -0
  256. package/rust/web/mod.rs +3 -0
  257. package/rust/web/sso.rs +5 -0
  258. package/templates/minimal/README.md +143 -127
  259. package/templates/welcome/README.md +143 -127
  260. package/templates/welcome/src/index.deva +56 -8
  261. package/templates/welcome/src/variables.deva +2 -4
  262. package/tests/integration.rs +21 -0
  263. package/tests/rust/cli_check_build.rs +21 -0
  264. package/tests/rust/cli_help.rs +12 -0
  265. package/tests/rust/cli_template_list.rs +10 -0
  266. package/tests/rust/cli_version.rs +11 -0
  267. package/tests/typescript/index.spec.ts +136 -0
  268. package/tests/typescript/playhead.spec.ts +36 -0
  269. package/tests/typescript/render_e2e.spec.ts +77 -0
  270. package/tsconfig.json +12 -10
  271. package/typescript/bin/index.ts +19 -5
  272. package/typescript/core/functions/index.ts +94 -0
  273. package/typescript/core/index.ts +6 -0
  274. package/typescript/core/types/index.ts +4 -0
  275. package/typescript/core/types/plugin.ts +19 -0
  276. package/typescript/core/types/result.ts +29 -0
  277. package/typescript/core/types/statement.ts +47 -0
  278. package/typescript/core/types/value.ts +29 -0
  279. package/typescript/index.ts +8 -1
  280. package/typescript/pkg/devalang_core.d.ts +4 -0
  281. package/typescript/pkg/devalang_core.ts +65 -0
  282. package/typescript/scripts/copy-wasm-dts.ts +41 -0
  283. package/typescript/scripts/postinstall.ts +85 -0
  284. package/typescript/scripts/version/bump.ts +0 -1
  285. package/typescript/scripts/version/index.ts +0 -1
  286. package/docs/COMMANDS.md +0 -85
  287. package/docs/CONFIG.md +0 -30
  288. package/docs/SYNTAX.md +0 -210
  289. package/out-tsc/bin/devalang.exe +0 -0
  290. package/out-tsc/scripts/postbuild.js +0 -11
  291. package/rust/cli/build.rs +0 -137
  292. package/rust/cli/check.rs +0 -117
  293. package/rust/cli/play.rs +0 -193
  294. package/rust/config/loader.rs +0 -13
  295. package/rust/core/audio/engine.rs +0 -203
  296. package/rust/core/audio/evaluator.rs +0 -31
  297. package/rust/core/audio/interpreter/arrow_call.rs +0 -129
  298. package/rust/core/audio/interpreter/call.rs +0 -64
  299. package/rust/core/audio/interpreter/let_.rs +0 -19
  300. package/rust/core/audio/interpreter/load.rs +0 -18
  301. package/rust/core/audio/interpreter/loop_.rs +0 -67
  302. package/rust/core/audio/interpreter/sleep.rs +0 -36
  303. package/rust/core/audio/interpreter/spawn.rs +0 -66
  304. package/rust/core/audio/interpreter/tempo.rs +0 -16
  305. package/rust/core/audio/interpreter/trigger.rs +0 -69
  306. package/rust/core/audio/renderer.rs +0 -54
  307. package/rust/core/parser/driver.rs +0 -331
  308. package/rust/core/preprocessor/loader.rs +0 -193
  309. package/rust/core/preprocessor/processor.rs +0 -76
  310. package/rust/core/shared/duration.rs +0 -8
  311. package/rust/core/shared/mod.rs +0 -2
  312. package/rust/core/shared/value.rs +0 -18
  313. package/rust/core/store/export.rs +0 -28
  314. package/rust/core/store/import.rs +0 -28
  315. package/rust/core/store/variable.rs +0 -28
  316. package/rust/core/utils/mod.rs +0 -2
  317. package/rust/core/utils/path.rs +0 -31
  318. package/rust/core/utils/validation.rs +0 -37
  319. package/rust/utils/file.rs +0 -35
  320. package/rust/utils/signature.rs +0 -17
  321. package/rust/utils/version.rs +0 -15
  322. package/typescript/scripts/postbuild.ts +0 -8
@@ -0,0 +1,106 @@
1
+ import { Value, Duration } from "./value";
2
+ /**
3
+ * Represents a statement kind in the code.
4
+ */
5
+ export type StatementKind = {
6
+ kind: "Tempo";
7
+ } | {
8
+ kind: "Bank";
9
+ alias?: string;
10
+ } | {
11
+ kind: "Print";
12
+ } | {
13
+ kind: "Load";
14
+ source: string;
15
+ alias: string;
16
+ } | {
17
+ kind: "Use";
18
+ name: string;
19
+ alias?: string;
20
+ } | {
21
+ kind: "Let";
22
+ name: string;
23
+ } | {
24
+ kind: "Automate";
25
+ target: string;
26
+ } | {
27
+ kind: "ArrowCall";
28
+ target: string;
29
+ method: string;
30
+ args: Value[];
31
+ } | {
32
+ kind: "Function";
33
+ name: string;
34
+ parameters: string[];
35
+ body: Statement[];
36
+ } | {
37
+ kind: "Synth";
38
+ } | {
39
+ kind: "Trigger";
40
+ entity: string;
41
+ duration: Duration;
42
+ effects?: Value;
43
+ } | {
44
+ kind: "Sleep";
45
+ } | {
46
+ kind: "Call";
47
+ name: string;
48
+ args: Value[];
49
+ } | {
50
+ kind: "Spawn";
51
+ name: string;
52
+ args: Value[];
53
+ } | {
54
+ kind: "Loop";
55
+ } | {
56
+ kind: "Group";
57
+ } | {
58
+ kind: "Include";
59
+ path: string;
60
+ } | {
61
+ kind: "Export";
62
+ names: string[];
63
+ source: string;
64
+ } | {
65
+ kind: "Import";
66
+ names: string[];
67
+ source: string;
68
+ } | {
69
+ kind: "If";
70
+ } | {
71
+ kind: "Else";
72
+ } | {
73
+ kind: "ElseIf";
74
+ } | {
75
+ kind: "Comment";
76
+ } | {
77
+ kind: "Indent";
78
+ } | {
79
+ kind: "Dedent";
80
+ } | {
81
+ kind: "NewLine";
82
+ } | {
83
+ kind: "On";
84
+ event: string;
85
+ args?: Value[];
86
+ body: Statement[];
87
+ } | {
88
+ kind: "Emit";
89
+ event: string;
90
+ payload?: Value;
91
+ } | {
92
+ kind: "Unknown";
93
+ } | {
94
+ kind: "Error";
95
+ message: string;
96
+ };
97
+ /**
98
+ * Represents a statement in the code.
99
+ */
100
+ export interface Statement {
101
+ kind: StatementKind;
102
+ value: Value;
103
+ indent: number;
104
+ line: number;
105
+ column: number;
106
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,43 @@
1
+ import { Statement } from "./statement";
2
+ /**
3
+ * Represents a duration in the code.
4
+ */
5
+ export type Duration = {
6
+ Number: number;
7
+ } | {
8
+ Identifier: string;
9
+ } | {
10
+ Beat: string;
11
+ } | {
12
+ Auto: null;
13
+ };
14
+ /**
15
+ * Represents a value in the code.
16
+ */
17
+ export type Value = {
18
+ Boolean: boolean;
19
+ } | {
20
+ Number: number;
21
+ } | {
22
+ Duration: Duration;
23
+ } | {
24
+ Identifier: string;
25
+ } | {
26
+ String: string;
27
+ } | {
28
+ Array: Value[];
29
+ } | {
30
+ Map: Record<string, Value>;
31
+ } | {
32
+ Block: Statement[];
33
+ } | {
34
+ Sample: string;
35
+ } | {
36
+ Beat: string;
37
+ } | {
38
+ Statement: Statement;
39
+ } | {
40
+ StatementKind: any;
41
+ } | {
42
+ Unknown: null;
43
+ } | null;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Public TypeScript definitions for Devalang.
3
+ * ————————————————————————————————————————
4
+ * Used to provide TypeScript types for the Devalang WASM package.
5
+ */
6
+ export * as pkg from "./pkg/devalang_core";
7
+ export * as core from "./core/index";
package/out-tsc/index.js CHANGED
@@ -1,2 +1,43 @@
1
1
  "use strict";
2
- // This file is part of the Devalang project
2
+ /**
3
+ * Public TypeScript definitions for Devalang.
4
+ * ————————————————————————————————————————
5
+ * Used to provide TypeScript types for the Devalang WASM package.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.core = exports.pkg = void 0;
42
+ exports.pkg = __importStar(require("./pkg/devalang_core"));
43
+ exports.core = __importStar(require("./core/index"));
@@ -0,0 +1,15 @@
1
+ export declare function parse(...args: any[]): any;
2
+ export declare function debug_render(...args: any[]): any;
3
+ export declare function render_audio(...args: any[]): any;
4
+ export declare function register_playhead_callback(cb?: any): any;
5
+ export declare function collect_playhead_events(): any;
6
+ export declare function unregister_playhead_callback(): any;
7
+ declare const pkg: {
8
+ parse: typeof parse;
9
+ debug_render: typeof debug_render;
10
+ render_audio: typeof render_audio;
11
+ register_playhead_callback: typeof register_playhead_callback;
12
+ collect_playhead_events: typeof collect_playhead_events;
13
+ unregister_playhead_callback: typeof unregister_playhead_callback;
14
+ };
15
+ export default pkg;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse = parse;
4
+ exports.debug_render = debug_render;
5
+ exports.render_audio = render_audio;
6
+ exports.register_playhead_callback = register_playhead_callback;
7
+ exports.collect_playhead_events = collect_playhead_events;
8
+ exports.unregister_playhead_callback = unregister_playhead_callback;
9
+ /**
10
+ * Shim TypeScript source that re-exports the runtime wasm-pack package when
11
+ * available, or provides safe stubs when not present. Compiles to
12
+ * out-tsc/pkg/devalang_core.js so compiled code can require("./pkg/devalang_core").
13
+ */
14
+ let runtimePkg;
15
+ try {
16
+ // prefer runtime pkg generated by wasm-pack when available
17
+ // require at runtime so the package can be used even if wasm hasn't been built
18
+ // (this keeps tests and consumers robust).
19
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
20
+ runtimePkg = require("../../pkg/devalang_core");
21
+ }
22
+ catch (e) {
23
+ runtimePkg = undefined;
24
+ }
25
+ function parse(...args) {
26
+ if (runtimePkg && typeof runtimePkg.parse === "function")
27
+ return runtimePkg.parse(...args);
28
+ throw new Error("WASM package not built: pkg/devalang_core not found");
29
+ }
30
+ function debug_render(...args) {
31
+ if (runtimePkg && typeof runtimePkg.debug_render === "function")
32
+ return runtimePkg.debug_render(...args);
33
+ throw new Error("WASM package not built: pkg/devalang_core not found");
34
+ }
35
+ function render_audio(...args) {
36
+ if (runtimePkg && typeof runtimePkg.render_audio === "function")
37
+ return runtimePkg.render_audio(...args);
38
+ return new Float32Array(0);
39
+ }
40
+ function register_playhead_callback(cb) {
41
+ if (runtimePkg && typeof runtimePkg.register_playhead_callback === "function")
42
+ return runtimePkg.register_playhead_callback(cb);
43
+ return;
44
+ }
45
+ function collect_playhead_events() {
46
+ if (runtimePkg && typeof runtimePkg.collect_playhead_events === "function") {
47
+ return runtimePkg.collect_playhead_events();
48
+ }
49
+ return [];
50
+ }
51
+ function unregister_playhead_callback() {
52
+ if (runtimePkg &&
53
+ typeof runtimePkg.unregister_playhead_callback === "function")
54
+ return runtimePkg.unregister_playhead_callback();
55
+ return;
56
+ }
57
+ const pkg = {
58
+ parse,
59
+ debug_render,
60
+ render_audio,
61
+ register_playhead_callback,
62
+ collect_playhead_events,
63
+ unregister_playhead_callback,
64
+ };
65
+ exports.default = pkg;
@@ -0,0 +1,34 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export const memory: WebAssembly.Memory;
4
+ export const parse: (a: number, b: number, c: number, d: number) => [number, number, number];
5
+ export const debug_render: (a: number, b: number) => [number, number, number];
6
+ export const render_audio: (a: number, b: number) => [number, number, number];
7
+ export const register_playhead_callback: (a: any) => void;
8
+ export const collect_playhead_events: () => [number, number, number];
9
+ export const unregister_playhead_callback: () => void;
10
+ export const rust_lzma_wasm_shim_malloc: (a: number) => number;
11
+ export const rust_lzma_wasm_shim_calloc: (a: number, b: number) => number;
12
+ export const rust_lzma_wasm_shim_free: (a: number) => void;
13
+ export const rust_lzma_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
14
+ export const rust_lzma_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
15
+ export const rust_lzma_wasm_shim_memmove: (a: number, b: number, c: number) => number;
16
+ export const rust_lzma_wasm_shim_memset: (a: number, b: number, c: number) => number;
17
+ export const rust_lzma_wasm_shim_strlen: (a: number) => number;
18
+ export const rust_lzma_wasm_shim_memchr: (a: number, b: number, c: number) => number;
19
+ export const rust_zstd_wasm_shim_qsort: (a: number, b: number, c: number, d: number) => void;
20
+ export const rust_zstd_wasm_shim_malloc: (a: number) => number;
21
+ export const rust_zstd_wasm_shim_memcmp: (a: number, b: number, c: number) => number;
22
+ export const rust_zstd_wasm_shim_calloc: (a: number, b: number) => number;
23
+ export const rust_zstd_wasm_shim_free: (a: number) => void;
24
+ export const rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
25
+ export const rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
26
+ export const rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
27
+ export const __wbindgen_malloc: (a: number, b: number) => number;
28
+ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
29
+ export const __wbindgen_exn_store: (a: number) => void;
30
+ export const __externref_table_alloc: () => number;
31
+ export const __wbindgen_export_4: WebAssembly.Table;
32
+ export const __wbindgen_free: (a: number, b: number, c: number) => void;
33
+ export const __externref_table_dealloc: (a: number) => void;
34
+ export const __wbindgen_start: () => void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ // Copies .d.ts files from pkg/ (wasm-pack output) into out-tsc/pkg/
39
+ const ROOT = path.resolve(__dirname, '..', '..');
40
+ const PKG_DIR = path.join(ROOT, 'pkg');
41
+ const OUT_DIR = path.join(ROOT, 'out-tsc', 'pkg');
42
+ function ensureDir(p) {
43
+ if (!fs.existsSync(p))
44
+ fs.mkdirSync(p, { recursive: true });
45
+ }
46
+ function copyDir(src, dest) {
47
+ ensureDir(dest);
48
+ const items = fs.readdirSync(src, { withFileTypes: true });
49
+ for (const item of items) {
50
+ const srcPath = path.join(src, item.name);
51
+ const destPath = path.join(dest, item.name);
52
+ if (item.isDirectory()) {
53
+ copyDir(srcPath, destPath);
54
+ }
55
+ else if (item.isFile() && item.name.endsWith('.d.ts')) {
56
+ fs.copyFileSync(srcPath, destPath);
57
+ console.log('copied', srcPath, '->', destPath);
58
+ }
59
+ }
60
+ }
61
+ function main() {
62
+ if (!fs.existsSync(PKG_DIR)) {
63
+ console.error('pkg directory not found at', PKG_DIR);
64
+ return 1;
65
+ }
66
+ ensureDir(OUT_DIR);
67
+ copyDir(PKG_DIR, OUT_DIR);
68
+ console.log('done');
69
+ return 0;
70
+ }
71
+ const exitCode = main();
72
+ if (exitCode !== 0)
73
+ process.exit(exitCode);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const follow_redirects_1 = require("follow-redirects");
9
+ const fs_2 = __importDefault(require("fs"));
10
+ const path_2 = __importDefault(require("path"));
11
+ const projectVersionPath = path_2.default.join(__dirname, "../../project-version.json");
12
+ let versionString = "";
13
+ try {
14
+ if (!fs_2.default.existsSync(projectVersionPath)) {
15
+ console.warn(`⚠️ project-version.json not found at ${projectVersionPath}. Skipping postinstall binary download.`);
16
+ }
17
+ else {
18
+ const version = fs_2.default.readFileSync(projectVersionPath, "utf-8").trim();
19
+ try {
20
+ versionString = JSON.parse(version).version;
21
+ }
22
+ catch (e) {
23
+ console.warn(`⚠️ Failed to parse project-version.json: ${e.message}. Skipping binary download.`);
24
+ versionString = "";
25
+ }
26
+ }
27
+ }
28
+ catch (e) {
29
+ console.warn(`⚠️ Could not read project-version.json: ${e.message}. Skipping binary download.`);
30
+ versionString = "";
31
+ }
32
+ const platform = process.platform;
33
+ let binaryName = "";
34
+ switch (platform) {
35
+ case "win32":
36
+ binaryName = "devalang-x86_64-pc-windows-msvc.exe";
37
+ break;
38
+ case "darwin":
39
+ binaryName = "devalang-x86_64-apple-darwin";
40
+ break;
41
+ case "linux":
42
+ binaryName = "devalang-x86_64-unknown-linux-gnu";
43
+ break;
44
+ }
45
+ if (binaryName !== "" && versionString) {
46
+ const destDir = (0, path_1.join)(__dirname, "..", "..", "out-tsc", "bin");
47
+ const dest = (0, path_1.join)(destDir, binaryName);
48
+ const url = `https://github.com/devaloop-labs/devalang/releases/download/v${versionString}/${binaryName}`;
49
+ (0, fs_1.mkdirSync)(destDir, { recursive: true });
50
+ console.log(`⬇️ Downloading ${binaryName} from ${url}`);
51
+ const req = follow_redirects_1.https.get(url, (res) => {
52
+ if (res.statusCode === 404) {
53
+ console.warn(`⚠️ Asset not found (HTTP 404). Skipping binary download.`);
54
+ res.resume();
55
+ return;
56
+ }
57
+ if (res.statusCode !== 200) {
58
+ console.warn(`⚠️ Failed (HTTP ${res.statusCode}). Skipping binary download.`);
59
+ res.resume();
60
+ return;
61
+ }
62
+ const file = (0, fs_1.createWriteStream)(dest, { mode: 0o755 });
63
+ res.pipe(file);
64
+ file.on("finish", () => {
65
+ file.close();
66
+ console.log(`✅ Downloaded ${binaryName} to ${dest}`);
67
+ });
68
+ });
69
+ req.setTimeout(30000, () => {
70
+ console.warn(`⚠️ Download timed out after 30s. Skipping binary download for ${binaryName}.`);
71
+ try {
72
+ req.destroy();
73
+ }
74
+ catch (e) { }
75
+ });
76
+ req.on("error", (err) => {
77
+ // Network or other errors should not fail CI; log and continue
78
+ console.warn(`⚠️ Error downloading binary: ${err.message}. Skipping binary download.`);
79
+ });
80
+ }
81
+ else {
82
+ console.warn(`⚠️ Unsupported platform: ${platform}. Skipping binary download.`);
83
+ }
@@ -0,0 +1 @@
1
+ export declare const bumpVersion: (bumpType: string, projectVersionPath: string) => Promise<string>;
@@ -0,0 +1 @@
1
+ export declare const fetchVersion: (projectVersionPath: string) => Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const syncVersion: (projectVersionPath: string) => Promise<void>;
package/package.json CHANGED
@@ -1,20 +1,31 @@
1
1
  {
2
2
  "name": "@devaloop/devalang",
3
3
  "private": false,
4
- "version": "0.0.1-alpha.9",
4
+ "version": "0.0.1-beta.2",
5
5
  "description": "Write music like code. Devalang is a domain-specific language (DSL) for sound designers and music hackers. Compose, automate, and control sound — in plain text.",
6
6
  "main": "out-tsc/index.js",
7
7
  "bin": {
8
8
  "devalang": "./out-tsc/bin/index.js"
9
9
  },
10
+ "types": "./out-tsc/index.d.ts",
10
11
  "scripts": {
11
- "prepublish": "cargo build --release && npm run script:postbuild",
12
- "rust:dev:build": "cargo run build --entry examples --output output",
13
- "rust:dev:check": "cargo run check --entry examples --output output",
12
+ "rust:fmt": "cargo fmt",
13
+ "rust:dev:build": "cargo run build --entry examples --output output --debug",
14
+ "rust:dev:check": "cargo run check --entry examples --output output --debug",
15
+ "rust:dev:play": "cargo run play --entry examples --output output --repeat --debug",
14
16
  "rust:wasm:web": "wasm-pack build --target=web --no-default-features",
15
17
  "rust:wasm:node": "wasm-pack build --target=nodejs --no-default-features",
16
- "script:postbuild": "tsc && node out-tsc/scripts/postbuild.js",
17
- "script:version:bump": "tsc && node out-tsc/scripts/version/index.js"
18
+ "rust:prepack": "cargo build --release",
19
+ "scripts:postbuild": "tsc && node out-tsc/scripts/postbuild.js",
20
+ "scripts:version:bump": "tsc && node out-tsc/scripts/version/index.js",
21
+ "scripts:build": "tsc",
22
+ "types:build": "tsc --emitDeclarationOnly",
23
+ "types:wasm": "tsc && node out-tsc/scripts/copy-wasm-dts.js",
24
+ "types:all": "npm run rust:wasm:node && npm run types:wasm && npm run types:build",
25
+ "test:rust": "cargo test",
26
+ "test:ts": "mocha -r ts-node/register tests/typescript/**/*.spec.ts --exit",
27
+ "test": "npm run test:ts",
28
+ "postinstall": "node out-tsc/scripts/postinstall.js"
18
29
  },
19
30
  "homepage": "https://devalang.com",
20
31
  "keywords": [
@@ -39,6 +50,16 @@
39
50
  "url": "https://github.com/devaloop-labs/devalang.git"
40
51
  },
41
52
  "dependencies": {
42
- "@types/node": "^24.0.3"
53
+ "@types/follow-redirects": "^1.14.4",
54
+ "@types/node": "^24.0.3",
55
+ "follow-redirects": "^1.15.11"
56
+ },
57
+ "devDependencies": {
58
+ "typescript": "^5.9.2",
59
+ "mocha": "^10.2.0",
60
+ "chai": "^4.3.8",
61
+ "ts-node": "^10.9.1",
62
+ "@types/mocha": "^10.0.1",
63
+ "@types/chai": "^4.3.4"
43
64
  }
44
65
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.0.1-alpha.9",
3
- "channel": "alpha",
4
- "lastCommit": "61ab816a54275f2617ffd4327eb388ed822c36eb",
5
- "build": 8
2
+ "version": "0.0.1-beta.2",
3
+ "channel": "beta",
4
+ "lastCommit": "024b7abee45bdc5e034a4efd4a3f60dbd958eec0",
5
+ "build": 1
6
6
  }