@browsersync/bslive 0.0.14 → 0.0.16

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 (154) hide show
  1. package/bin.js +3 -5
  2. package/package.json +22 -17
  3. package/Cargo.toml +0 -34
  4. package/bslive/Cargo.toml +0 -35
  5. package/bslive/build.rs +0 -5
  6. package/bslive/src/lib.rs +0 -135
  7. package/bsnext/Cargo.toml +0 -21
  8. package/bsnext/src/main.rs +0 -116
  9. package/crates/bsnext_client/Cargo.toml +0 -8
  10. package/crates/bsnext_client/build.rs +0 -53
  11. package/crates/bsnext_client/generated/dto.ts +0 -147
  12. package/crates/bsnext_client/generated/schema.ts +0 -237
  13. package/crates/bsnext_client/inject/dist/index.js +0 -6540
  14. package/crates/bsnext_client/inject/package.json +0 -12
  15. package/crates/bsnext_client/inject/src/console.ts +0 -25
  16. package/crates/bsnext_client/inject/src/index.ts +0 -73
  17. package/crates/bsnext_client/package-lock.json +0 -2145
  18. package/crates/bsnext_client/package.json +0 -27
  19. package/crates/bsnext_client/src/lib.rs +0 -11
  20. package/crates/bsnext_client/tsconfig.json +0 -22
  21. package/crates/bsnext_client/ui/dist/index.css +0 -78
  22. package/crates/bsnext_client/ui/dist/index.js +0 -997
  23. package/crates/bsnext_client/ui/index.html +0 -18
  24. package/crates/bsnext_client/ui/input.yml +0 -19
  25. package/crates/bsnext_client/ui/package.json +0 -18
  26. package/crates/bsnext_client/ui/src/components/bs-debug.ts +0 -27
  27. package/crates/bsnext_client/ui/src/components/bs-header.ts +0 -33
  28. package/crates/bsnext_client/ui/src/components/bs-icon.ts +0 -101
  29. package/crates/bsnext_client/ui/src/components/bs-server-detail.ts +0 -21
  30. package/crates/bsnext_client/ui/src/components/bs-server-identity.ts +0 -24
  31. package/crates/bsnext_client/ui/src/components/bs-server-list.ts +0 -39
  32. package/crates/bsnext_client/ui/src/index.ts +0 -39
  33. package/crates/bsnext_client/ui/styles/base.css.ts +0 -17
  34. package/crates/bsnext_client/ui/styles/reset.css +0 -52
  35. package/crates/bsnext_client/ui/styles/style.css +0 -29
  36. package/crates/bsnext_client/ui/svg/wordmark-white.svg +0 -38
  37. package/crates/bsnext_core/Cargo.toml +0 -44
  38. package/crates/bsnext_core/src/common_layers.rs +0 -62
  39. package/crates/bsnext_core/src/dir_loader.rs +0 -230
  40. package/crates/bsnext_core/src/dto.rs +0 -341
  41. package/crates/bsnext_core/src/handlers/mod.rs +0 -1
  42. package/crates/bsnext_core/src/handlers/proxy.rs +0 -95
  43. package/crates/bsnext_core/src/lib.rs +0 -12
  44. package/crates/bsnext_core/src/meta/mod.rs +0 -5
  45. package/crates/bsnext_core/src/not_found/mod.rs +0 -1
  46. package/crates/bsnext_core/src/not_found/not_found_service.rs +0 -35
  47. package/crates/bsnext_core/src/panic_handler.rs +0 -32
  48. package/crates/bsnext_core/src/raw_loader.rs +0 -196
  49. package/crates/bsnext_core/src/server/actor.rs +0 -92
  50. package/crates/bsnext_core/src/server/error.rs +0 -41
  51. package/crates/bsnext_core/src/server/handler_change.rs +0 -85
  52. package/crates/bsnext_core/src/server/handler_listen.rs +0 -163
  53. package/crates/bsnext_core/src/server/handler_patch.rs +0 -42
  54. package/crates/bsnext_core/src/server/handler_routes_updated.rs +0 -27
  55. package/crates/bsnext_core/src/server/handler_stop.rs +0 -38
  56. package/crates/bsnext_core/src/server/mod.rs +0 -10
  57. package/crates/bsnext_core/src/server/router/assets.rs +0 -39
  58. package/crates/bsnext_core/src/server/router/mod.rs +0 -123
  59. package/crates/bsnext_core/src/server/router/pub_api.rs +0 -39
  60. package/crates/bsnext_core/src/server/router/snapshots/bsnext_core__server__router__tests__test__handlers.snap +0 -9
  61. package/crates/bsnext_core/src/server/router/tests.rs +0 -209
  62. package/crates/bsnext_core/src/server/signals.rs +0 -11
  63. package/crates/bsnext_core/src/server/state.rs +0 -23
  64. package/crates/bsnext_core/src/servers_supervisor/actor.rs +0 -199
  65. package/crates/bsnext_core/src/servers_supervisor/file_changed_handler.rs +0 -41
  66. package/crates/bsnext_core/src/servers_supervisor/get_servers_handler.rs +0 -24
  67. package/crates/bsnext_core/src/servers_supervisor/input_changed_handler.rs +0 -21
  68. package/crates/bsnext_core/src/servers_supervisor/mod.rs +0 -6
  69. package/crates/bsnext_core/src/servers_supervisor/start_handler.rs +0 -86
  70. package/crates/bsnext_core/src/servers_supervisor/stop_handler.rs +0 -26
  71. package/crates/bsnext_core/src/ws/mod.rs +0 -164
  72. package/crates/bsnext_example/Cargo.toml +0 -10
  73. package/crates/bsnext_example/src/basic.rs +0 -51
  74. package/crates/bsnext_example/src/lib.rs +0 -26
  75. package/crates/bsnext_example/src/lit.rs +0 -37
  76. package/crates/bsnext_example/src/md.rs +0 -18
  77. package/crates/bsnext_fs/Cargo.toml +0 -22
  78. package/crates/bsnext_fs/src/actor.rs +0 -123
  79. package/crates/bsnext_fs/src/buffered_debounce.rs +0 -166
  80. package/crates/bsnext_fs/src/filter.rs +0 -39
  81. package/crates/bsnext_fs/src/inner_fs_event_handler.rs +0 -94
  82. package/crates/bsnext_fs/src/lib.rs +0 -141
  83. package/crates/bsnext_fs/src/remove_path_handler.rs +0 -46
  84. package/crates/bsnext_fs/src/stop_handler.rs +0 -15
  85. package/crates/bsnext_fs/src/stream.rs +0 -167
  86. package/crates/bsnext_fs/src/test/mod.rs +0 -213
  87. package/crates/bsnext_fs/src/watch_path_handler.rs +0 -67
  88. package/crates/bsnext_fs/src/watcher.rs +0 -349
  89. package/crates/bsnext_input/Cargo.toml +0 -25
  90. package/crates/bsnext_input/src/input_test/mod.rs +0 -185
  91. package/crates/bsnext_input/src/input_test/snapshots/bsnext_input__input_test__deserialize_3_headers.snap +0 -29
  92. package/crates/bsnext_input/src/input_test/snapshots/bsnext_input__input_test__deserialize_3_headers_control.snap +0 -25
  93. package/crates/bsnext_input/src/lib.rs +0 -153
  94. package/crates/bsnext_input/src/md.rs +0 -541
  95. package/crates/bsnext_input/src/paths.rs +0 -64
  96. package/crates/bsnext_input/src/route.rs +0 -189
  97. package/crates/bsnext_input/src/route_manifest.rs +0 -186
  98. package/crates/bsnext_input/src/server_config.rs +0 -88
  99. package/crates/bsnext_input/src/target.rs +0 -7
  100. package/crates/bsnext_input/src/watch_opt_test/mod.rs +0 -68
  101. package/crates/bsnext_input/src/yml.rs +0 -1
  102. package/crates/bsnext_output/Cargo.toml +0 -16
  103. package/crates/bsnext_output/src/json.rs +0 -11
  104. package/crates/bsnext_output/src/lib.rs +0 -25
  105. package/crates/bsnext_output/src/pretty.rs +0 -147
  106. package/crates/bsnext_resp/Cargo.toml +0 -13
  107. package/crates/bsnext_resp/src/js/snippet.html +0 -1
  108. package/crates/bsnext_resp/src/js/ws.js +0 -1
  109. package/crates/bsnext_resp/src/lib.rs +0 -79
  110. package/crates/bsnext_system/Cargo.toml +0 -29
  111. package/crates/bsnext_system/src/args.rs +0 -46
  112. package/crates/bsnext_system/src/lib.rs +0 -227
  113. package/crates/bsnext_system/src/monitor.rs +0 -241
  114. package/crates/bsnext_system/src/monitor_any_watchables.rs +0 -133
  115. package/crates/bsnext_system/src/start_kind/snapshots/bsnext_system__start_kind__start_from_paths__test__test-2.snap +0 -12
  116. package/crates/bsnext_system/src/start_kind/snapshots/bsnext_system__start_kind__start_from_paths__test__test.snap +0 -30
  117. package/crates/bsnext_system/src/start_kind/start_from_example.rs +0 -49
  118. package/crates/bsnext_system/src/start_kind/start_from_inputs.rs +0 -67
  119. package/crates/bsnext_system/src/start_kind/start_from_paths.rs +0 -51
  120. package/crates/bsnext_system/src/start_kind.rs +0 -56
  121. package/crates/bsnext_system/src/startup.rs +0 -51
  122. package/crates/bsnext_tracing/Cargo.toml +0 -10
  123. package/crates/bsnext_tracing/src/lib.rs +0 -127
  124. package/examples/basic/input.yml +0 -5
  125. package/examples/basic/public/index.html +0 -15
  126. package/examples/basic/public/reset.css +0 -52
  127. package/examples/basic/public/script.js +0 -1
  128. package/examples/basic/public/styles.css +0 -3
  129. package/examples/kitchen-sink/a-file.md +0 -1
  130. package/examples/kitchen-sink/api/1.json +0 -1
  131. package/examples/kitchen-sink/api/2.json +0 -3
  132. package/examples/kitchen-sink/app.js +0 -1
  133. package/examples/kitchen-sink/input.html +0 -185
  134. package/examples/kitchen-sink/input.yml +0 -133
  135. package/examples/kitchen-sink/styles-2.css +0 -3
  136. package/examples/lit/index.html +0 -21
  137. package/examples/lit/input.yml +0 -5
  138. package/examples/lit/lit.js +0 -82
  139. package/examples/lit/package-lock.json +0 -62
  140. package/examples/lit/package.json +0 -15
  141. package/examples/md-single/frontmatter.md +0 -35
  142. package/examples/md-single/md-single.md +0 -35
  143. package/examples/openai/.nvm +0 -1
  144. package/examples/openai/build.mjs +0 -21
  145. package/examples/openai/index.html +0 -13
  146. package/examples/openai/input.yml +0 -59
  147. package/examples/openai/package-lock.json +0 -720
  148. package/examples/openai/package.json +0 -21
  149. package/examples/openai/src/index.js +0 -21
  150. package/examples/openai/sse/01.txt +0 -8
  151. package/examples/proxy-simple/input.yml +0 -9
  152. package/examples/single/input.yaml +0 -26
  153. package/input.yml +0 -8
  154. 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
- }