@browsersync/bslive 0.0.13 → 0.0.15

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 (152) hide show
  1. package/package.json +22 -17
  2. package/Cargo.toml +0 -34
  3. package/bslive/Cargo.toml +0 -35
  4. package/bslive/build.rs +0 -5
  5. package/bslive/src/lib.rs +0 -135
  6. package/bsnext/Cargo.toml +0 -21
  7. package/bsnext/src/main.rs +0 -116
  8. package/crates/bsnext_client/Cargo.toml +0 -8
  9. package/crates/bsnext_client/build.rs +0 -53
  10. package/crates/bsnext_client/generated/dto.ts +0 -147
  11. package/crates/bsnext_client/generated/schema.ts +0 -237
  12. package/crates/bsnext_client/inject/dist/index.js +0 -6540
  13. package/crates/bsnext_client/inject/package.json +0 -12
  14. package/crates/bsnext_client/inject/src/console.ts +0 -25
  15. package/crates/bsnext_client/inject/src/index.ts +0 -73
  16. package/crates/bsnext_client/package-lock.json +0 -2145
  17. package/crates/bsnext_client/package.json +0 -27
  18. package/crates/bsnext_client/src/lib.rs +0 -11
  19. package/crates/bsnext_client/tsconfig.json +0 -22
  20. package/crates/bsnext_client/ui/dist/index.css +0 -78
  21. package/crates/bsnext_client/ui/dist/index.js +0 -997
  22. package/crates/bsnext_client/ui/index.html +0 -18
  23. package/crates/bsnext_client/ui/input.yml +0 -19
  24. package/crates/bsnext_client/ui/package.json +0 -18
  25. package/crates/bsnext_client/ui/src/components/bs-debug.ts +0 -27
  26. package/crates/bsnext_client/ui/src/components/bs-header.ts +0 -33
  27. package/crates/bsnext_client/ui/src/components/bs-icon.ts +0 -101
  28. package/crates/bsnext_client/ui/src/components/bs-server-detail.ts +0 -21
  29. package/crates/bsnext_client/ui/src/components/bs-server-identity.ts +0 -24
  30. package/crates/bsnext_client/ui/src/components/bs-server-list.ts +0 -39
  31. package/crates/bsnext_client/ui/src/index.ts +0 -39
  32. package/crates/bsnext_client/ui/styles/base.css.ts +0 -17
  33. package/crates/bsnext_client/ui/styles/reset.css +0 -52
  34. package/crates/bsnext_client/ui/styles/style.css +0 -29
  35. package/crates/bsnext_client/ui/svg/wordmark-white.svg +0 -38
  36. package/crates/bsnext_core/Cargo.toml +0 -44
  37. package/crates/bsnext_core/src/common_layers.rs +0 -62
  38. package/crates/bsnext_core/src/dir_loader.rs +0 -230
  39. package/crates/bsnext_core/src/dto.rs +0 -341
  40. package/crates/bsnext_core/src/handlers/mod.rs +0 -1
  41. package/crates/bsnext_core/src/handlers/proxy.rs +0 -95
  42. package/crates/bsnext_core/src/lib.rs +0 -12
  43. package/crates/bsnext_core/src/meta/mod.rs +0 -5
  44. package/crates/bsnext_core/src/not_found/mod.rs +0 -1
  45. package/crates/bsnext_core/src/not_found/not_found_service.rs +0 -35
  46. package/crates/bsnext_core/src/panic_handler.rs +0 -32
  47. package/crates/bsnext_core/src/raw_loader.rs +0 -196
  48. package/crates/bsnext_core/src/server/actor.rs +0 -92
  49. package/crates/bsnext_core/src/server/error.rs +0 -41
  50. package/crates/bsnext_core/src/server/handler_change.rs +0 -85
  51. package/crates/bsnext_core/src/server/handler_listen.rs +0 -163
  52. package/crates/bsnext_core/src/server/handler_patch.rs +0 -42
  53. package/crates/bsnext_core/src/server/handler_routes_updated.rs +0 -27
  54. package/crates/bsnext_core/src/server/handler_stop.rs +0 -38
  55. package/crates/bsnext_core/src/server/mod.rs +0 -10
  56. package/crates/bsnext_core/src/server/router/assets.rs +0 -39
  57. package/crates/bsnext_core/src/server/router/mod.rs +0 -123
  58. package/crates/bsnext_core/src/server/router/pub_api.rs +0 -39
  59. package/crates/bsnext_core/src/server/router/snapshots/bsnext_core__server__router__tests__test__handlers.snap +0 -9
  60. package/crates/bsnext_core/src/server/router/tests.rs +0 -209
  61. package/crates/bsnext_core/src/server/signals.rs +0 -11
  62. package/crates/bsnext_core/src/server/state.rs +0 -23
  63. package/crates/bsnext_core/src/servers_supervisor/actor.rs +0 -199
  64. package/crates/bsnext_core/src/servers_supervisor/file_changed_handler.rs +0 -41
  65. package/crates/bsnext_core/src/servers_supervisor/get_servers_handler.rs +0 -24
  66. package/crates/bsnext_core/src/servers_supervisor/input_changed_handler.rs +0 -21
  67. package/crates/bsnext_core/src/servers_supervisor/mod.rs +0 -6
  68. package/crates/bsnext_core/src/servers_supervisor/start_handler.rs +0 -86
  69. package/crates/bsnext_core/src/servers_supervisor/stop_handler.rs +0 -26
  70. package/crates/bsnext_core/src/ws/mod.rs +0 -164
  71. package/crates/bsnext_example/Cargo.toml +0 -10
  72. package/crates/bsnext_example/src/basic.rs +0 -51
  73. package/crates/bsnext_example/src/lib.rs +0 -26
  74. package/crates/bsnext_example/src/lit.rs +0 -37
  75. package/crates/bsnext_example/src/md.rs +0 -18
  76. package/crates/bsnext_fs/Cargo.toml +0 -22
  77. package/crates/bsnext_fs/src/actor.rs +0 -123
  78. package/crates/bsnext_fs/src/buffered_debounce.rs +0 -166
  79. package/crates/bsnext_fs/src/filter.rs +0 -39
  80. package/crates/bsnext_fs/src/inner_fs_event_handler.rs +0 -94
  81. package/crates/bsnext_fs/src/lib.rs +0 -141
  82. package/crates/bsnext_fs/src/remove_path_handler.rs +0 -46
  83. package/crates/bsnext_fs/src/stop_handler.rs +0 -15
  84. package/crates/bsnext_fs/src/stream.rs +0 -167
  85. package/crates/bsnext_fs/src/test/mod.rs +0 -213
  86. package/crates/bsnext_fs/src/watch_path_handler.rs +0 -67
  87. package/crates/bsnext_fs/src/watcher.rs +0 -349
  88. package/crates/bsnext_input/Cargo.toml +0 -25
  89. package/crates/bsnext_input/src/input_test/mod.rs +0 -185
  90. package/crates/bsnext_input/src/input_test/snapshots/bsnext_input__input_test__deserialize_3_headers.snap +0 -29
  91. package/crates/bsnext_input/src/input_test/snapshots/bsnext_input__input_test__deserialize_3_headers_control.snap +0 -25
  92. package/crates/bsnext_input/src/lib.rs +0 -153
  93. package/crates/bsnext_input/src/md.rs +0 -541
  94. package/crates/bsnext_input/src/paths.rs +0 -64
  95. package/crates/bsnext_input/src/route.rs +0 -189
  96. package/crates/bsnext_input/src/route_manifest.rs +0 -186
  97. package/crates/bsnext_input/src/server_config.rs +0 -88
  98. package/crates/bsnext_input/src/target.rs +0 -7
  99. package/crates/bsnext_input/src/watch_opt_test/mod.rs +0 -68
  100. package/crates/bsnext_input/src/yml.rs +0 -1
  101. package/crates/bsnext_output/Cargo.toml +0 -16
  102. package/crates/bsnext_output/src/json.rs +0 -11
  103. package/crates/bsnext_output/src/lib.rs +0 -25
  104. package/crates/bsnext_output/src/pretty.rs +0 -147
  105. package/crates/bsnext_resp/Cargo.toml +0 -13
  106. package/crates/bsnext_resp/src/js/snippet.html +0 -1
  107. package/crates/bsnext_resp/src/js/ws.js +0 -1
  108. package/crates/bsnext_resp/src/lib.rs +0 -79
  109. package/crates/bsnext_system/Cargo.toml +0 -29
  110. package/crates/bsnext_system/src/args.rs +0 -47
  111. package/crates/bsnext_system/src/lib.rs +0 -227
  112. package/crates/bsnext_system/src/monitor.rs +0 -241
  113. package/crates/bsnext_system/src/monitor_any_watchables.rs +0 -133
  114. package/crates/bsnext_system/src/start_kind/snapshots/bsnext_system__start_kind__start_from_paths__test__test-2.snap +0 -12
  115. package/crates/bsnext_system/src/start_kind/snapshots/bsnext_system__start_kind__start_from_paths__test__test.snap +0 -30
  116. package/crates/bsnext_system/src/start_kind/start_from_example.rs +0 -49
  117. package/crates/bsnext_system/src/start_kind/start_from_inputs.rs +0 -67
  118. package/crates/bsnext_system/src/start_kind/start_from_paths.rs +0 -51
  119. package/crates/bsnext_system/src/start_kind.rs +0 -56
  120. package/crates/bsnext_system/src/startup.rs +0 -51
  121. package/crates/bsnext_tracing/Cargo.toml +0 -10
  122. package/crates/bsnext_tracing/src/lib.rs +0 -127
  123. package/examples/basic/input.yml +0 -5
  124. package/examples/basic/public/index.html +0 -15
  125. package/examples/basic/public/reset.css +0 -52
  126. package/examples/basic/public/script.js +0 -1
  127. package/examples/basic/public/styles.css +0 -3
  128. package/examples/kitchen-sink/a-file.md +0 -1
  129. package/examples/kitchen-sink/api/1.json +0 -1
  130. package/examples/kitchen-sink/api/2.json +0 -3
  131. package/examples/kitchen-sink/app.js +0 -1
  132. package/examples/kitchen-sink/input.html +0 -185
  133. package/examples/kitchen-sink/input.yml +0 -133
  134. package/examples/kitchen-sink/styles-2.css +0 -3
  135. package/examples/lit/index.html +0 -21
  136. package/examples/lit/input.yml +0 -5
  137. package/examples/lit/lit.js +0 -82
  138. package/examples/lit/package-lock.json +0 -62
  139. package/examples/lit/package.json +0 -15
  140. package/examples/md-single/frontmatter.md +0 -35
  141. package/examples/md-single/md-single.md +0 -35
  142. package/examples/openai/.nvm +0 -1
  143. package/examples/openai/build.mjs +0 -21
  144. package/examples/openai/index.html +0 -13
  145. package/examples/openai/input.yml +0 -59
  146. package/examples/openai/package-lock.json +0 -720
  147. package/examples/openai/package.json +0 -21
  148. package/examples/openai/src/index.js +0 -21
  149. package/examples/openai/sse/01.txt +0 -8
  150. package/examples/proxy-simple/input.yml +0 -9
  151. package/examples/single/input.yaml +0 -26
  152. package/run.sh +0 -6
@@ -1,349 +0,0 @@
1
- use crate::inner_fs_event_handler::InnerChangeEvent;
2
- use notify::event::{
3
- AccessKind, AccessMode, CreateKind, DataChange, MetadataKind, ModifyKind, RemoveKind,
4
- RenameMode,
5
- };
6
- use notify::EventKind;
7
- use std::collections::HashSet;
8
- use std::ffi::OsStr;
9
- use std::path::{Component, Path};
10
- use std::sync::Arc;
11
- use tokio::sync::broadcast;
12
-
13
- pub fn create_watcher(
14
- sender: Arc<broadcast::Sender<InnerChangeEvent>>,
15
- cwd: &Path,
16
- ) -> notify::Result<notify::RecommendedWatcher> {
17
- let cwd_c = cwd.to_owned();
18
- notify::recommended_watcher(move |res: Result<notify::Event, _>| {
19
- let span = tracing::span!(tracing::Level::TRACE, "raw");
20
- let _guard = span.enter();
21
- match res {
22
- Ok(event) => {
23
- if event.paths.iter().any(|p| {
24
- is_ignored_path_type(&p.as_path())
25
- || is_auto_excluded(&cwd_c.as_path(), &p.as_path())
26
- }) {
27
- tracing::trace!(?event.paths, "ignored!!!");
28
- return;
29
- }
30
-
31
- let msg = InnerChangeEvent {
32
- absolute_path: event.paths.first().unwrap().into(),
33
- };
34
- match event.kind {
35
- EventKind::Any => {}
36
- EventKind::Access(ac) => match ac {
37
- AccessKind::Any => tracing::trace!("EventKind::Access AccessKind::Any"),
38
- AccessKind::Read => {
39
- tracing::trace!("EventKind::Access AccessKind::Read")
40
- }
41
- AccessKind::Open(o) => match o {
42
- AccessMode::Any => {
43
- tracing::trace!(
44
- "EventKind::Access AccessKind::Open AccessMode::Any"
45
- )
46
- }
47
- AccessMode::Execute => {
48
- tracing::trace!(
49
- "EventKind::Access AccessKind::Open AccessMode::Execute"
50
- )
51
- }
52
- AccessMode::Read => {
53
- tracing::trace!(
54
- "EventKind::Access AccessKind::Open AccessMode::Read"
55
- )
56
- }
57
- AccessMode::Write => {
58
- tracing::trace!(
59
- "EventKind::Access AccessKind::Open AccessMode::Write"
60
- )
61
- }
62
- AccessMode::Other => {
63
- tracing::trace!(
64
- "EventKind::Access AccessKind::Open AccessMode::Other"
65
- )
66
- }
67
- },
68
- AccessKind::Close(c) => match c {
69
- AccessMode::Any => {
70
- tracing::trace!(
71
- "EventKind::Access AccessKind::Close AccessMode::Any"
72
- )
73
- }
74
- AccessMode::Execute => {
75
- tracing::trace!(
76
- "EventKind::Access AccessKind::Close AccessMode::Execute"
77
- )
78
- }
79
- AccessMode::Read => {
80
- tracing::trace!(
81
- "EventKind::Access AccessKind::Close AccessMode::Read"
82
- )
83
- }
84
- AccessMode::Write => {
85
- tracing::trace!(
86
- "EventKind::Access AccessKind::Close AccessMode::Write"
87
- )
88
- }
89
- AccessMode::Other => {
90
- tracing::trace!(
91
- "EventKind::Access AccessKind::Close AccessMode::Other"
92
- )
93
- }
94
- },
95
- AccessKind::Other => {
96
- tracing::trace!("EventKind::Access AccessKind::Other")
97
- }
98
- },
99
- EventKind::Create(c) => match c {
100
- CreateKind::Any => tracing::trace!("EventKind::Create CreateKind::Any"),
101
- CreateKind::File => {
102
- tracing::trace!("EventKind::Create CreateKind::File")
103
- }
104
- CreateKind::Folder => {
105
- tracing::trace!("EventKind::Create CreateKind::Folder")
106
- }
107
- CreateKind::Other => {
108
- tracing::trace!("EventKind::Create CreateKind::Other")
109
- }
110
- },
111
- EventKind::Modify(modify) => match modify {
112
- ModifyKind::Any => tracing::trace!("EventKind::Modify ModifyKind::Any"),
113
- ModifyKind::Data(data) => match data {
114
- DataChange::Any => {
115
- tracing::trace!(
116
- "EventKind::Modify ModifyKind::Data DataChange::Any"
117
- );
118
- }
119
- DataChange::Size => {
120
- tracing::trace!(
121
- "EventKind::Modify ModifyKind::Data DataChange::Size"
122
- );
123
- }
124
- DataChange::Content => {
125
- tracing::trace!(
126
- "EventKind::Modify ModifyKind::Data DataChange::Content"
127
- );
128
- match sender.send(msg) {
129
- Ok(_) => {}
130
- Err(e) => tracing::error!(?e),
131
- };
132
- }
133
- DataChange::Other => {
134
- tracing::trace!(
135
- "EventKind::Modify ModifyKind::Data DataChange::Other"
136
- );
137
- }
138
- },
139
- ModifyKind::Metadata(meta) => {
140
- match meta {
141
- MetadataKind::Any => {
142
- tracing::trace!(
143
- "EventKind::Modify ModifyKind::Metadata MetadataKind::Any"
144
- );
145
- match sender.send(msg) {
146
- Ok(_) => {}
147
- Err(e) => tracing::error!(?e),
148
- };
149
- }
150
- MetadataKind::AccessTime => {
151
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::AccessTime")
152
- }
153
- MetadataKind::WriteTime => {
154
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::WriteTime")
155
- }
156
- MetadataKind::Permissions => {
157
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::Permissions")
158
- }
159
- MetadataKind::Ownership => {
160
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::Ownership")
161
- }
162
- MetadataKind::Extended => {
163
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::Extended")
164
- }
165
- MetadataKind::Other => {
166
- tracing::trace!("EventKind::Modify ModifyKind::Metadata MetadataKind::Other")
167
- }
168
- }
169
- }
170
- ModifyKind::Name(mode) => match mode {
171
- RenameMode::Any => {
172
- tracing::trace!(
173
- "EventKind::Modify ModifyKind::Name RenameMode::Any"
174
- )
175
- }
176
- RenameMode::To => {
177
- tracing::trace!("EventKind::Modify ModifyKind::Name RenameMode::To")
178
- }
179
- RenameMode::From => {
180
- tracing::trace!(
181
- "EventKind::Modify ModifyKind::Name RenameMode::From"
182
- )
183
- }
184
- RenameMode::Both => {
185
- tracing::trace!(
186
- "EventKind::Modify ModifyKind::Name RenameMode::Both"
187
- )
188
- }
189
- RenameMode::Other => {
190
- tracing::trace!(
191
- "EventKind::Modify ModifyKind::Name RenameMode::Other"
192
- )
193
- }
194
- },
195
- ModifyKind::Other => {
196
- tracing::trace!("EventKind::Modify ModifyKind::Other")
197
- }
198
- },
199
- EventKind::Remove(remove) => match remove {
200
- RemoveKind::Any => tracing::trace!("EventKind::Remove RemoveKind::Any"),
201
- RemoveKind::File => {
202
- tracing::trace!("EventKind::Remove RemoveKind::File")
203
- }
204
- RemoveKind::Folder => {
205
- tracing::trace!("EventKind::Remove RemoveKind::Folder")
206
- }
207
- RemoveKind::Other => {
208
- tracing::trace!("EventKind::Remove RemoveKind::Other")
209
- }
210
- },
211
- EventKind::Other => tracing::trace!("EventKind::Other"),
212
- }
213
- }
214
- Err(e) => {
215
- tracing::error!("fswadtcher {:?}", e);
216
- }
217
- }
218
- })
219
- }
220
-
221
- #[cfg(test)]
222
- mod test {
223
- use super::*;
224
- #[test]
225
- fn test() {
226
- let cwd = Path::new("/Users/shaneosbourne/WebstormProjects/browsersync.github.io");
227
- let change = Path::new("/Users/shaneosbourne/WebstormProjects/browsersync.github.io/node_modules/ajv/dist/vocabularies/applicator/if.d.ts");
228
- let excluded = is_auto_excluded(&cwd, &change);
229
- assert_eq!(excluded, true);
230
- }
231
- }
232
-
233
- fn is_ignored_path_type<P: AsRef<Path>>(subject: &P) -> bool {
234
- subject
235
- .as_ref()
236
- .as_os_str()
237
- .as_encoded_bytes()
238
- .ends_with(b"~")
239
- }
240
-
241
- fn is_auto_excluded<P: AsRef<Path>>(cwd: &P, subject: &P) -> bool {
242
- // todo: allow more config here...
243
- let excluded: HashSet<&OsStr> = [
244
- "node_modules",
245
- ".git",
246
- ".husky",
247
- ".vscode",
248
- ".idea",
249
- ".sass-cache",
250
- "bslive.log",
251
- ]
252
- .into_iter()
253
- .map(OsStr::new)
254
- .collect();
255
- let rel = subject.as_ref().strip_prefix(cwd.as_ref());
256
- return rel
257
- .map(|p| match p.components().next() {
258
- None => false,
259
- Some(Component::Normal(str)) => excluded.contains(str),
260
- Some(Component::Prefix(_)) => unreachable!("here? Prefix"),
261
- Some(Component::RootDir) => unreachable!("here? RootDir"),
262
- Some(Component::CurDir) => unreachable!("here? CurDir"),
263
- Some(Component::ParentDir) => unreachable!("here? ParentDir"),
264
- })
265
- .unwrap_or(false);
266
- }
267
-
268
- #[test]
269
- fn matches_single_glob() {
270
- use glob_match::glob_match;
271
- let p1 = "public/css/style.css";
272
- let g = "public/css/*.css";
273
- let actual = glob_match(g, p1);
274
- assert_eq!(actual, true);
275
- }
276
- #[test]
277
- fn matches_relative_glob_2() {
278
- use glob_match::glob_match;
279
- let relative_path = [
280
- (
281
- "/qwe/qwe/qwe/qw/ebuild/app-debug/debugger/debugger.css",
282
- true,
283
- ),
284
- ("/qwe/qwe/qwe/qw/ebuild/app-debug/oops.txt", true),
285
- ];
286
- let glob = "**/*.{css,txt}";
287
- for (path, expected) in relative_path {
288
- let actual = glob_match(glob, path);
289
- assert_eq!(actual, expected);
290
- }
291
- }
292
-
293
- #[test]
294
- fn matches_absolute_glob() {
295
- use glob_match::glob_match;
296
-
297
- let test_cases = vec![
298
- (
299
- "/absolute/path/public/css/style.css",
300
- "/absolute/path/public/css/*.css",
301
- true,
302
- ),
303
- (
304
- "/absolute/path/public/js/script.js",
305
- "/absolute/path/public/css/*.css",
306
- false,
307
- ),
308
- (
309
- "/absolute/path/public/css/nested/style.css",
310
- "/absolute/path/public/css/**/*.css",
311
- true,
312
- ),
313
- (
314
- "/absolute/path/public/js/nested/script.js",
315
- "/absolute/path/public/css/**/*.css",
316
- false,
317
- ),
318
- (
319
- "/users/documents/reports/january/cash_flow.xls",
320
- "/users/documents/reports/**/*.xls",
321
- true,
322
- ),
323
- (
324
- "/users/documents/reports/february/income.txt",
325
- "/users/documents/reports/**/*.xls",
326
- false,
327
- ),
328
- (
329
- "/users/documents/reports/yearly/cash_flow.xls",
330
- "/users/documents/reports/**/*.xls",
331
- true,
332
- ),
333
- (
334
- "/users/images/vacation/summer/pic.jpg",
335
- "/users/images/vacation/**/*.jpg",
336
- true,
337
- ),
338
- (
339
- "/users/images/vacation/winter/snow.png",
340
- "/users/images/vacation/**/*.jpg",
341
- false,
342
- ),
343
- ];
344
-
345
- for (path, glob, expected) in test_cases {
346
- let actual = glob_match(glob, path);
347
- assert_eq!(actual, expected);
348
- }
349
- }
@@ -1,25 +0,0 @@
1
- [package]
2
- name = "bsnext_input"
3
- version = "0.1.0"
4
- edition = "2021"
5
-
6
- # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
-
8
- [dependencies]
9
- markdown = { version = "1.0.0-alpha.16" }
10
-
11
- random_word = { workspace = true }
12
- mime_guess = { workspace = true }
13
- serde = { workspace = true }
14
- clap = { workspace = true }
15
- anyhow = { workspace = true }
16
- serde_yaml = { workspace = true }
17
- serde_json = { workspace = true }
18
- toml = { workspace = true }
19
- tracing = { workspace = true }
20
- thiserror = { workspace = true }
21
- typeshare = { workspace = true }
22
- nom = "7.1.3"
23
-
24
- [dev-dependencies]
25
- insta = { workspace = true }
@@ -1,185 +0,0 @@
1
- use crate::route::{
2
- CorsOpts, DebounceDuration, DelayKind, DelayOpts, FilterKind, Route, Spec, SpecOpts, WatchOpts,
3
- Watcher,
4
- };
5
- use crate::Input;
6
-
7
- #[test]
8
- fn test_deserialize() {
9
- let input = include_str!("../../../../examples/kitchen-sink/input.yml");
10
- let _: Input = serde_yaml::from_str(input).unwrap();
11
- }
12
-
13
- #[test]
14
- fn test_deserialize_2() {
15
- #[derive(serde::Deserialize, serde::Serialize, Debug)]
16
- struct Config {
17
- pub items: Vec<Route>,
18
- }
19
-
20
- let input = r#"
21
- items:
22
- - path: /hello.js
23
- raw: "hello"
24
- cors: true
25
- delay:
26
- ms: 2000
27
- - path: /hello.js
28
- json: ["2", "3"]
29
- - path: /node_modules
30
- dir: ./node_modules
31
- - path: /node_modules
32
- dir: ./node_modules
33
- - path: /api
34
- proxy: example.com
35
-
36
- "#;
37
- let c: Config = serde_yaml::from_str(input).unwrap();
38
- let first = c.items.get(0).unwrap().to_owned();
39
- let opts = first.cors_opts.unwrap();
40
- assert_eq!(opts, CorsOpts::Cors(true));
41
-
42
- let delay_opts = first.delay_opts.unwrap();
43
- assert_eq!(delay_opts, DelayOpts::Delay(DelayKind::Ms(2000)));
44
- }
45
-
46
- #[test]
47
- fn test_deserialize_cors_false() {
48
- #[derive(serde::Deserialize, serde::Serialize, Debug)]
49
- struct Config {
50
- pub items: Vec<Route>,
51
- }
52
-
53
- let input = r#"
54
- items:
55
- - path: /hello.js
56
- raw: "hello"
57
- cors: false
58
- "#;
59
- let c: Config = serde_yaml::from_str(input).unwrap();
60
- let first = c.items.get(0).unwrap().to_owned();
61
- let opts = first.cors_opts.unwrap();
62
- assert_eq!(opts, CorsOpts::Cors(false));
63
- }
64
-
65
- #[test]
66
- fn test_deserialize_3_headers_control() {
67
- #[derive(serde::Deserialize, serde::Serialize, Debug)]
68
- struct Config {
69
- pub items: Vec<Route>,
70
- }
71
-
72
- let input = r#"
73
- items:
74
- - path: /api
75
- json: [1,2]
76
- "#;
77
- let c: Config = serde_yaml::from_str(input).unwrap();
78
- insta::assert_debug_snapshot!(c)
79
- }
80
-
81
- #[test]
82
- fn test_deserialize_3_headers() {
83
- #[derive(serde::Deserialize, serde::Serialize, Debug)]
84
- struct Config {
85
- pub items: Vec<Route>,
86
- }
87
-
88
- let input = r#"
89
- items:
90
- - path: /api
91
- json: [1,2]
92
- headers:
93
- a: b
94
- "#;
95
- let c: Config = serde_yaml::from_str(input).unwrap();
96
- insta::assert_debug_snapshot!(c)
97
- }
98
-
99
- #[test]
100
- fn test_deserialize_3() {
101
- let input = r#"
102
- path: /hello.js
103
- dir: "hello"
104
- cors: true
105
- "#;
106
- let _c: Route = serde_yaml::from_str(input).unwrap();
107
- }
108
-
109
- #[test]
110
- fn test_deserialize_watch() {
111
- let input = r#"
112
- path: /hello.js
113
- dir: "hello"
114
- watch: true
115
- "#;
116
- let c: Route = serde_yaml::from_str(input).unwrap();
117
- assert_eq!(c.watch_opts, WatchOpts::Bool(true));
118
- let input = r#"
119
- path: /hello.js
120
- dir: "hello"
121
- watch: false
122
- "#;
123
- let c: Route = serde_yaml::from_str(input).unwrap();
124
- assert_eq!(c.watch_opts, WatchOpts::Bool(false));
125
- let input = r#"
126
- path: /hello.js
127
- dir: "hello"
128
- watch: "public/**/*.css"
129
- "#;
130
- let c: Route = serde_yaml::from_str(input).unwrap();
131
- assert_eq!(
132
- c.watch_opts,
133
- WatchOpts::InlineGlob("public/**/*.css".into())
134
- );
135
- let input = r#"
136
- path: /hello.js
137
- dir: "hello"
138
- watch:
139
- debounce:
140
- ms: 2000
141
- "#;
142
- let c: Route = serde_yaml::from_str(input).unwrap();
143
- assert_eq!(
144
- c.watch_opts,
145
- WatchOpts::Spec(Spec {
146
- opts: Some(SpecOpts {
147
- debounce: Some(DebounceDuration::Ms(2000)),
148
- filter: None,
149
- })
150
- })
151
- );
152
- }
153
-
154
- #[test]
155
- fn test_deserialize_server_watch_list() {
156
- let input = r#"
157
- servers:
158
- - bind_address: 0.0.0.0:4000
159
- watchers:
160
- - dir: ./
161
- - dir: ./other
162
- debounce_ms: 2000
163
- filter:
164
- ext: "**/*.css"
165
- "#;
166
- let c: Input = serde_yaml::from_str(input).unwrap();
167
- dbg!(&c);
168
- assert_eq!(
169
- c.servers.get(0).unwrap().watchers,
170
- vec![
171
- Watcher {
172
- dir: "./".to_string(),
173
- debounce_ms: None,
174
- filter: None,
175
- },
176
- Watcher {
177
- dir: "./other".to_string(),
178
- debounce_ms: Some(2000),
179
- filter: Some(FilterKind::Extension {
180
- ext: "**/*.css".to_string()
181
- }),
182
- }
183
- ]
184
- )
185
- }
@@ -1,29 +0,0 @@
1
- ---
2
- source: crates/bsnext_input/src/input_test/mod.rs
3
- expression: c
4
- ---
5
- Config {
6
- items: [
7
- Route {
8
- path: "/api",
9
- cors_opts: None,
10
- delay_opts: None,
11
- watch_opts: Bool(
12
- true,
13
- ),
14
- kind: Json {
15
- json: JsonWrapper(
16
- Array [
17
- Number(1),
18
- Number(2),
19
- ],
20
- ),
21
- },
22
- headers: Some(
23
- {
24
- "a": "b",
25
- },
26
- ),
27
- },
28
- ],
29
- }
@@ -1,25 +0,0 @@
1
- ---
2
- source: crates/bsnext_input/src/input_test/mod.rs
3
- expression: c
4
- ---
5
- Config {
6
- items: [
7
- Route {
8
- path: "/api",
9
- cors_opts: None,
10
- delay_opts: None,
11
- watch_opts: Bool(
12
- true,
13
- ),
14
- kind: Json {
15
- json: JsonWrapper(
16
- Array [
17
- Number(1),
18
- Number(2),
19
- ],
20
- ),
21
- },
22
- headers: None,
23
- },
24
- ],
25
- }