@shd101wyy/yo 0.1.25 → 0.1.27

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 (194) hide show
  1. package/.github/skills/yo-async-effects/SKILL.md +4 -4
  2. package/.github/skills/yo-async-effects/async-effects-recipes.md +40 -40
  3. package/.github/skills/yo-core-patterns/SKILL.md +1 -1
  4. package/.github/skills/yo-core-patterns/core-patterns-cheatsheet.md +30 -26
  5. package/.github/skills/yo-project-workflow/SKILL.md +6 -3
  6. package/.github/skills/yo-project-workflow/workflow-cheatsheet.md +34 -11
  7. package/.github/skills/yo-syntax/SKILL.md +7 -6
  8. package/.github/skills/yo-syntax/syntax-cheatsheet.md +78 -60
  9. package/.github/skills/yo-wasm-integration/wasm-integration-cheatsheet.md +3 -3
  10. package/README.md +10 -8
  11. package/out/cjs/index.cjs +583 -567
  12. package/out/cjs/yo-cli.cjs +664 -632
  13. package/out/cjs/yo-lsp.cjs +510 -485
  14. package/out/esm/index.mjs +538 -522
  15. package/out/types/src/codegen/codegen-c.d.ts +2 -2
  16. package/out/types/src/codegen/functions/collection.d.ts +2 -2
  17. package/out/types/src/codegen/functions/context.d.ts +3 -2
  18. package/out/types/src/codegen/types/collection.d.ts +2 -2
  19. package/out/types/src/codegen/utils/index.d.ts +3 -1
  20. package/out/types/src/doc/builder.d.ts +2 -2
  21. package/out/types/src/evaluator/calls/closure-type.d.ts +2 -2
  22. package/out/types/src/evaluator/calls/record-type.d.ts +11 -0
  23. package/out/types/src/evaluator/context.d.ts +8 -9
  24. package/out/types/src/evaluator/index.d.ts +3 -3
  25. package/out/types/src/evaluator/types/record.d.ts +14 -0
  26. package/out/types/src/evaluator/types/validation.d.ts +2 -2
  27. package/out/types/src/evaluator/values/anonymous-module.d.ts +5 -5
  28. package/out/types/src/evaluator/values/impl.d.ts +1 -1
  29. package/out/types/src/expr.d.ts +1 -4
  30. package/out/types/src/formatter.d.ts +11 -0
  31. package/out/types/src/function-value.d.ts +1 -1
  32. package/out/types/src/lsp/document-manager.d.ts +1 -1
  33. package/out/types/src/lsp/formatting.d.ts +2 -0
  34. package/out/types/src/module-manager.d.ts +3 -3
  35. package/out/types/src/tests/formatter.test.d.ts +1 -0
  36. package/out/types/src/types/creators.d.ts +3 -4
  37. package/out/types/src/types/definitions.d.ts +8 -19
  38. package/out/types/src/types/guards.d.ts +3 -3
  39. package/out/types/src/types/tags.d.ts +0 -1
  40. package/out/types/src/types/utils.d.ts +1 -1
  41. package/out/types/src/value-tag.d.ts +0 -1
  42. package/out/types/src/value.d.ts +6 -13
  43. package/out/types/tsconfig.tsbuildinfo +1 -1
  44. package/package.json +1 -1
  45. package/std/alg/hash.yo +13 -21
  46. package/std/allocator.yo +25 -40
  47. package/std/async.yo +3 -7
  48. package/std/build.yo +105 -151
  49. package/std/cli/arg_parser.yo +184 -169
  50. package/std/collections/array_list.yo +350 -314
  51. package/std/collections/btree_map.yo +142 -131
  52. package/std/collections/deque.yo +132 -128
  53. package/std/collections/hash_map.yo +542 -566
  54. package/std/collections/hash_set.yo +623 -687
  55. package/std/collections/linked_list.yo +275 -293
  56. package/std/collections/ordered_map.yo +113 -85
  57. package/std/collections/priority_queue.yo +73 -73
  58. package/std/crypto/md5.yo +191 -95
  59. package/std/crypto/random.yo +56 -64
  60. package/std/crypto/sha256.yo +151 -107
  61. package/std/encoding/base64.yo +87 -81
  62. package/std/encoding/hex.yo +43 -50
  63. package/std/encoding/html.yo +56 -81
  64. package/std/encoding/html_char_utils.yo +7 -13
  65. package/std/encoding/html_entities.yo +2248 -2253
  66. package/std/encoding/json.yo +316 -224
  67. package/std/encoding/punycode.yo +86 -116
  68. package/std/encoding/toml.yo +67 -66
  69. package/std/encoding/utf16.yo +37 -44
  70. package/std/env.yo +62 -91
  71. package/std/error.yo +12 -20
  72. package/std/fmt/display.yo +5 -9
  73. package/std/fmt/index.yo +8 -14
  74. package/std/fmt/to_string.yo +330 -315
  75. package/std/fmt/writer.yo +58 -87
  76. package/std/fs/dir.yo +83 -102
  77. package/std/fs/file.yo +147 -180
  78. package/std/fs/metadata.yo +45 -78
  79. package/std/fs/temp.yo +55 -65
  80. package/std/fs/types.yo +27 -40
  81. package/std/fs/walker.yo +53 -68
  82. package/std/gc.yo +5 -8
  83. package/std/glob.yo +30 -43
  84. package/std/http/client.yo +107 -120
  85. package/std/http/http.yo +106 -96
  86. package/std/http/index.yo +4 -6
  87. package/std/imm/list.yo +88 -93
  88. package/std/imm/map.yo +528 -464
  89. package/std/imm/set.yo +52 -57
  90. package/std/imm/sorted_map.yo +340 -286
  91. package/std/imm/sorted_set.yo +57 -63
  92. package/std/imm/string.yo +404 -345
  93. package/std/imm/vec.yo +173 -181
  94. package/std/io/reader.yo +3 -6
  95. package/std/io/writer.yo +4 -8
  96. package/std/libc/assert.yo +5 -9
  97. package/std/libc/ctype.yo +32 -22
  98. package/std/libc/dirent.yo +26 -25
  99. package/std/libc/errno.yo +164 -90
  100. package/std/libc/fcntl.yo +52 -45
  101. package/std/libc/float.yo +66 -44
  102. package/std/libc/limits.yo +42 -33
  103. package/std/libc/math.yo +53 -82
  104. package/std/libc/signal.yo +72 -47
  105. package/std/libc/stdatomic.yo +217 -188
  106. package/std/libc/stdint.yo +5 -29
  107. package/std/libc/stdio.yo +5 -29
  108. package/std/libc/stdlib.yo +32 -39
  109. package/std/libc/string.yo +5 -23
  110. package/std/libc/sys/stat.yo +58 -56
  111. package/std/libc/time.yo +5 -19
  112. package/std/libc/unistd.yo +5 -20
  113. package/std/libc/wctype.yo +6 -9
  114. package/std/libc/windows.yo +26 -30
  115. package/std/log.yo +41 -55
  116. package/std/net/addr.yo +102 -97
  117. package/std/net/dns.yo +27 -28
  118. package/std/net/errors.yo +50 -49
  119. package/std/net/tcp.yo +113 -124
  120. package/std/net/udp.yo +55 -66
  121. package/std/os/env.yo +35 -33
  122. package/std/os/signal.yo +15 -25
  123. package/std/path.yo +276 -311
  124. package/std/prelude.yo +6316 -4333
  125. package/std/process/command.yo +87 -103
  126. package/std/process/index.yo +12 -31
  127. package/std/regex/compiler.yo +196 -95
  128. package/std/regex/flags.yo +58 -39
  129. package/std/regex/index.yo +157 -173
  130. package/std/regex/match.yo +20 -31
  131. package/std/regex/node.yo +134 -152
  132. package/std/regex/parser.yo +283 -259
  133. package/std/regex/unicode.yo +172 -202
  134. package/std/regex/vm.yo +155 -171
  135. package/std/string/index.yo +5 -7
  136. package/std/string/rune.yo +45 -55
  137. package/std/string/string.yo +937 -964
  138. package/std/string/string_builder.yo +94 -104
  139. package/std/string/unicode.yo +46 -64
  140. package/std/sync/channel.yo +72 -73
  141. package/std/sync/cond.yo +31 -36
  142. package/std/sync/mutex.yo +30 -32
  143. package/std/sync/once.yo +13 -16
  144. package/std/sync/rwlock.yo +26 -31
  145. package/std/sync/waitgroup.yo +20 -25
  146. package/std/sys/advise.yo +16 -24
  147. package/std/sys/bufio/buf_reader.yo +77 -93
  148. package/std/sys/bufio/buf_writer.yo +52 -65
  149. package/std/sys/clock.yo +4 -9
  150. package/std/sys/constants.yo +77 -61
  151. package/std/sys/copy.yo +4 -10
  152. package/std/sys/dir.yo +26 -43
  153. package/std/sys/dns.yo +41 -61
  154. package/std/sys/errors.yo +95 -103
  155. package/std/sys/events.yo +45 -57
  156. package/std/sys/externs.yo +319 -267
  157. package/std/sys/fallocate.yo +7 -11
  158. package/std/sys/fcntl.yo +14 -22
  159. package/std/sys/file.yo +26 -40
  160. package/std/sys/future.yo +5 -8
  161. package/std/sys/iov.yo +12 -25
  162. package/std/sys/lock.yo +12 -13
  163. package/std/sys/mmap.yo +38 -43
  164. package/std/sys/path.yo +3 -8
  165. package/std/sys/perm.yo +7 -21
  166. package/std/sys/pipe.yo +5 -12
  167. package/std/sys/process.yo +23 -29
  168. package/std/sys/seek.yo +10 -12
  169. package/std/sys/signal.yo +7 -13
  170. package/std/sys/signals.yo +52 -35
  171. package/std/sys/socket.yo +63 -58
  172. package/std/sys/socketpair.yo +3 -6
  173. package/std/sys/sockinfo.yo +11 -20
  174. package/std/sys/statfs.yo +11 -34
  175. package/std/sys/statx.yo +25 -52
  176. package/std/sys/sysinfo.yo +15 -20
  177. package/std/sys/tcp.yo +62 -92
  178. package/std/sys/temp.yo +5 -9
  179. package/std/sys/time.yo +5 -15
  180. package/std/sys/timer.yo +6 -11
  181. package/std/sys/tty.yo +10 -18
  182. package/std/sys/udp.yo +22 -39
  183. package/std/sys/umask.yo +3 -6
  184. package/std/sys/unix.yo +33 -52
  185. package/std/testing/bench.yo +49 -52
  186. package/std/thread.yo +10 -15
  187. package/std/time/datetime.yo +105 -89
  188. package/std/time/duration.yo +43 -56
  189. package/std/time/instant.yo +13 -18
  190. package/std/time/sleep.yo +5 -9
  191. package/std/url/index.yo +184 -209
  192. package/std/worker.yo +6 -10
  193. package/out/types/src/evaluator/calls/module-type.d.ts +0 -11
  194. package/out/types/src/evaluator/types/module.d.ts +0 -19
package/std/os/env.yo CHANGED
@@ -10,32 +10,31 @@
10
10
  //! home := home_dir();
11
11
  //! tmp := temp_dir();
12
12
  //! ```
13
-
14
- open import "../string";
15
- { platform, Platform } :: import "../process";
16
- { env } :: import "../env";
17
-
13
+ open(import("../string"));
14
+ { platform, Platform } :: import("../process");
15
+ { env } :: import("../env");
18
16
  // ============================================================================
19
17
  // Directory helpers
20
18
  // ============================================================================
21
-
22
19
  /// Return the current user's home directory, or `.None` if unavailable.
23
20
  home_dir :: (fn() -> Option(String))(
24
21
  cond(
25
- (platform == Platform.Windows) => match(env.get(`USERPROFILE`),
26
- .Some(p) => .Some(p),
27
- .None => match(env.get(`HOMEDRIVE`),
28
- .None => .None,
29
- .Some(drive) => match(env.get(`HOMEPATH`),
30
- .None => .None,
31
- .Some(path) => .Some(drive.concat(path))
22
+ (platform == Platform.Windows) => match(
23
+ env.get(`USERPROFILE`),
24
+ .Some(p) =>.Some(p),
25
+ .None => match(
26
+ env.get(`HOMEDRIVE`),
27
+ .None =>.None,
28
+ .Some(drive) => match(
29
+ env.get(`HOMEPATH`),
30
+ .None =>.None,
31
+ .Some(path) =>.Some(drive.concat(path))
32
32
  )
33
33
  )
34
34
  ),
35
35
  true => env.get(`HOME`)
36
36
  )
37
37
  );
38
-
39
38
  /// Return the user-specific configuration directory.
40
39
  ///
41
40
  /// - Linux/macOS: `$XDG_CONFIG_HOME` or `$HOME/.config`
@@ -43,16 +42,17 @@ home_dir :: (fn() -> Option(String))(
43
42
  config_dir :: (fn() -> Option(String))(
44
43
  cond(
45
44
  (platform == Platform.Windows) => env.get(`APPDATA`),
46
- true => match(env.get(`XDG_CONFIG_HOME`),
47
- .Some(d) => .Some(d),
48
- .None => match(home_dir(),
49
- .None => .None,
50
- .Some(h) => .Some(h.concat(`/.config`))
45
+ true => match(
46
+ env.get(`XDG_CONFIG_HOME`),
47
+ .Some(d) =>.Some(d),
48
+ .None => match(
49
+ home_dir(),
50
+ .None =>.None,
51
+ .Some(h) =>.Some(h.concat(`/.config`))
51
52
  )
52
53
  )
53
54
  )
54
55
  );
55
-
56
56
  /// Return the user-specific cache directory.
57
57
  ///
58
58
  /// - Linux: `$XDG_CACHE_HOME` or `$HOME/.cache`
@@ -61,29 +61,31 @@ config_dir :: (fn() -> Option(String))(
61
61
  cache_dir :: (fn() -> Option(String))(
62
62
  cond(
63
63
  (platform == Platform.Windows) => env.get(`LOCALAPPDATA`),
64
- (platform == Platform.Macos) => match(home_dir(),
65
- .None => .None,
66
- .Some(h) => .Some(h.concat(`/Library/Caches`))
64
+ (platform == Platform.Macos) => match(
65
+ home_dir(),
66
+ .None =>.None,
67
+ .Some(h) =>.Some(h.concat(`/Library/Caches`))
67
68
  ),
68
- true => match(env.get(`XDG_CACHE_HOME`),
69
- .Some(d) => .Some(d),
70
- .None => match(home_dir(),
71
- .None => .None,
72
- .Some(h) => .Some(h.concat(`/.cache`))
69
+ true => match(
70
+ env.get(`XDG_CACHE_HOME`),
71
+ .Some(d) =>.Some(d),
72
+ .None => match(
73
+ home_dir(),
74
+ .None =>.None,
75
+ .Some(h) =>.Some(h.concat(`/.cache`))
73
76
  )
74
77
  )
75
78
  )
76
79
  );
77
-
78
80
  /// Return the system temporary directory.
79
81
  temp_dir :: (fn() -> String)(
80
82
  cond(
81
- (platform == Platform.Windows) => match(env.get(`TEMP`),
83
+ (platform == Platform.Windows) => match(
84
+ env.get(`TEMP`),
82
85
  .Some(t) => t,
83
- .None => `C:\Temp`
86
+ .None => `C:\Temp`
84
87
  ),
85
88
  true => `/tmp`
86
89
  )
87
90
  );
88
-
89
- export home_dir, config_dir, cache_dir, temp_dir;
91
+ export(home_dir, config_dir, cache_dir, temp_dir);
package/std/os/signal.yo CHANGED
@@ -10,18 +10,13 @@
10
10
  //! handler :: (fn(data: *(u8)) -> unit)({ println("Caught SIGINT"); });
11
11
  //! on_signal(.Interrupt, handler);
12
12
  //! ```
13
-
14
- { IOError } :: import "../sys/errors";
15
- {
16
- on_signal : _on_signal, off_signal : _off_signal, SignalHandler
17
- } :: import "../sys/signal";
18
- { platform, Platform } :: import "../process";
19
- { Error, AnyError, Exception } :: import "../error";
20
-
13
+ { IOError } :: import("../sys/errors");
14
+ { on_signal : _on_signal, off_signal : _off_signal, SignalHandler } :: import("../sys/signal");
15
+ { platform, Platform } :: import("../process");
16
+ { Error, AnyError, Exception } :: import("../error");
21
17
  // ============================================================================
22
18
  // Signal enum
23
19
  // ============================================================================
24
-
25
20
  /// Portable signal identifiers.
26
21
  Signal :: enum(
27
22
  /// SIGINT — interrupt from keyboard (Ctrl-C).
@@ -41,11 +36,10 @@ Signal :: enum(
41
36
  /// SIGCHLD — child process status change.
42
37
  Child
43
38
  );
44
-
45
- export Signal;
46
-
47
- _signal_num :: (fn(sig: Signal) -> i32)(
48
- match(sig,
39
+ export(Signal);
40
+ _signal_num :: (fn(sig : Signal) -> i32)(
41
+ match(
42
+ sig,
49
43
  .Interrupt => cond(
50
44
  (platform == Platform.Macos) => i32(2),
51
45
  true => i32(2)
@@ -80,33 +74,29 @@ _signal_num :: (fn(sig: Signal) -> i32)(
80
74
  )
81
75
  )
82
76
  );
83
-
84
77
  // ============================================================================
85
78
  // on_signal / off_signal
86
79
  // ============================================================================
87
-
88
80
  /// Register a handler for the given signal.
89
- on_signal :: (fn(sig: Signal, handler: SignalHandler, using(exn : Exception)) -> unit)({
81
+ on_signal :: (fn(sig : Signal, handler : SignalHandler, using(exn : Exception)) -> unit)({
90
82
  num := _signal_num(sig);
91
- r := _on_signal(num, handler);
83
+ r := _on_signal(num, handler);
92
84
  cond(
93
85
  (r < i32(0)) => {
94
- exn.throw(dyn IOError.from_errno((i32(0) - r)));
86
+ exn.throw(dyn(IOError.from_errno(i32(0) - r)));
95
87
  },
96
88
  true => ()
97
89
  );
98
90
  });
99
-
100
91
  /// Remove the handler for the given signal.
101
- off_signal :: (fn(sig: Signal, using(exn : Exception)) -> unit)({
92
+ off_signal :: (fn(sig : Signal, using(exn : Exception)) -> unit)({
102
93
  num := _signal_num(sig);
103
- r := _off_signal(num);
94
+ r := _off_signal(num);
104
95
  cond(
105
96
  (r < i32(0)) => {
106
- exn.throw(dyn IOError.from_errno((i32(0) - r)));
97
+ exn.throw(dyn(IOError.from_errno(i32(0) - r)));
107
98
  },
108
99
  true => ()
109
100
  );
110
101
  });
111
-
112
- export SignalHandler, on_signal, off_signal;
102
+ export(SignalHandler, on_signal, off_signal);