서준혁

set frontend development environment

1 +/node_modules/
2 +/public/build/
3 +
4 +.DS_Store
1 -var createError = require('http-errors');
2 -var express = require('express');
3 -var path = require('path');
4 -var cookieParser = require('cookie-parser');
5 -var logger = require('morgan');
6 -
7 -var indexRouter = require('./routes/index');
8 -var usersRouter = require('./routes/users');
9 -
10 -var app = express();
11 -
12 -// view engine setup
13 -app.set('views', path.join(__dirname, 'views'));
14 -app.set('view engine', 'ejs');
15 -
16 -app.use(logger('dev'));
17 -app.use(express.json());
18 -app.use(express.urlencoded({ extended: false }));
19 -app.use(cookieParser());
20 -app.use(express.static(path.join(__dirname, 'public')));
21 -
22 -app.use('/', indexRouter);
23 -app.use('/users', usersRouter);
24 -
25 -// catch 404 and forward to error handler
26 -app.use(function(req, res, next) {
27 - next(createError(404));
28 -});
29 -
30 -// error handler
31 -app.use(function(err, req, res, next) {
32 - // set locals, only providing error in development
33 - res.locals.message = err.message;
34 - res.locals.error = req.app.get('env') === 'development' ? err : {};
35 -
36 - // render the error page
37 - res.status(err.status || 500);
38 - res.render('error');
39 -});
40 -
41 -module.exports = app;
1 -#!/usr/bin/env node
2 -
3 -/**
4 - * Module dependencies.
5 - */
6 -
7 -var app = require('../app');
8 -var debug = require('debug')('tft:server');
9 -var http = require('http');
10 -
11 -/**
12 - * Get port from environment and store in Express.
13 - */
14 -
15 -var port = normalizePort(process.env.PORT || '3000');
16 -app.set('port', port);
17 -
18 -/**
19 - * Create HTTP server.
20 - */
21 -
22 -var server = http.createServer(app);
23 -
24 -/**
25 - * Listen on provided port, on all network interfaces.
26 - */
27 -
28 -server.listen(port);
29 -server.on('error', onError);
30 -server.on('listening', onListening);
31 -
32 -/**
33 - * Normalize a port into a number, string, or false.
34 - */
35 -
36 -function normalizePort(val) {
37 - var port = parseInt(val, 10);
38 -
39 - if (isNaN(port)) {
40 - // named pipe
41 - return val;
42 - }
43 -
44 - if (port >= 0) {
45 - // port number
46 - return port;
47 - }
48 -
49 - return false;
50 -}
51 -
52 -/**
53 - * Event listener for HTTP server "error" event.
54 - */
55 -
56 -function onError(error) {
57 - if (error.syscall !== 'listen') {
58 - throw error;
59 - }
60 -
61 - var bind = typeof port === 'string'
62 - ? 'Pipe ' + port
63 - : 'Port ' + port;
64 -
65 - // handle specific listen errors with friendly messages
66 - switch (error.code) {
67 - case 'EACCES':
68 - console.error(bind + ' requires elevated privileges');
69 - process.exit(1);
70 - break;
71 - case 'EADDRINUSE':
72 - console.error(bind + ' is already in use');
73 - process.exit(1);
74 - break;
75 - default:
76 - throw error;
77 - }
78 -}
79 -
80 -/**
81 - * Event listener for HTTP server "listening" event.
82 - */
83 -
84 -function onListening() {
85 - var addr = server.address();
86 - var bind = typeof addr === 'string'
87 - ? 'pipe ' + addr
88 - : 'port ' + addr.port;
89 - debug('Listening on ' + bind);
90 -}
1 -div.svelte-hpuxjp{text-align:left;box-sizing:border-box;display:block}body{padding:0;margin:0}html{scroll-behavior:smooth}nav.svelte-pxoyop{background-color:rgb(225, 175, 85);font-family:"Helvetica Neue", "Helvetica", "Arial", sans-serif;height:70px;top:0}.inner.svelte-pxoyop{max-width:500px;padding-left:10px;padding-right:10px;margin:auto;box-sizing:border-box;display:flex;align-items:center;height:100%}.logo.svelte-pxoyop{display:flex;position:absolute;width:50px;left:40px;top:25px
2 - }.navbar-list.svelte-pxoyop{display:flex;padding:0;width:100%;justify-content:space-between;margin:0}#backtotop.svelte-16na1oq{border-radius:100%;width:50px;height:50px;position:fixed;right:4%;bottom:10%}.article.svelte-90y9ti.svelte-90y9ti{font-family:맑은고딕, Malgun Gothic, dotum, gulim, sans-serif;font-size:24pt;padding:10vw;text-align:center;display:flex}.wbg.svelte-90y9ti.svelte-90y9ti{background-color:#ffffff}.gbg.svelte-90y9ti.svelte-90y9ti{background-color:#edeff2}.article.svelte-90y9ti img.svelte-90y9ti{display:inline-block;max-width:500px;width:20vw;margin-left:4vw;margin-right:4vw}.article.svelte-90y9ti .text.svelte-90y9ti{display:inline-block;width:50vw}.contents.svelte-90y9ti.svelte-90y9ti{display:flex;align-items:center}li.svelte-1c821dq{list-style-type:none;position:relative}li.svelte-1c821dq:before{content:"";position:absolute;bottom:0;left:0;width:100%;height:1px}a.svelte-1c821dq{color:#e5e6e5;text-decoration:none;display:inline-flex;height:45px;align-items:center;padding:0 10px;font-size:20px}@media only screen and (max-width: 767px){a.svelte-1c821dq{display:none}}.onmouse.svelte-1c821dq{color:#ffffff}#chat_bg.svelte-1177unw{box-sizing:border-box;display:flex;height:100vh;background-color:#edeff2}
...\ No newline at end of file ...\ No newline at end of file
1 -
2 -(function(l, r) { if (!l || l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (self.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(self.document);
3 -var app = (function () {
4 - 'use strict';
5 -
6 - function noop() { }
7 - const identity = x => x;
8 - function add_location(element, file, line, column, char) {
9 - element.__svelte_meta = {
10 - loc: { file, line, column, char }
11 - };
12 - }
13 - function run(fn) {
14 - return fn();
15 - }
16 - function blank_object() {
17 - return Object.create(null);
18 - }
19 - function run_all(fns) {
20 - fns.forEach(run);
21 - }
22 - function is_function(thing) {
23 - return typeof thing === 'function';
24 - }
25 - function safe_not_equal(a, b) {
26 - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');
27 - }
28 - let src_url_equal_anchor;
29 - function src_url_equal(element_src, url) {
30 - if (!src_url_equal_anchor) {
31 - src_url_equal_anchor = document.createElement('a');
32 - }
33 - src_url_equal_anchor.href = url;
34 - return element_src === src_url_equal_anchor.href;
35 - }
36 - function is_empty(obj) {
37 - return Object.keys(obj).length === 0;
38 - }
39 -
40 - const is_client = typeof window !== 'undefined';
41 - let now = is_client
42 - ? () => window.performance.now()
43 - : () => Date.now();
44 - let raf = is_client ? cb => requestAnimationFrame(cb) : noop;
45 -
46 - const tasks = new Set();
47 - function run_tasks(now) {
48 - tasks.forEach(task => {
49 - if (!task.c(now)) {
50 - tasks.delete(task);
51 - task.f();
52 - }
53 - });
54 - if (tasks.size !== 0)
55 - raf(run_tasks);
56 - }
57 - /**
58 - * Creates a new task that runs on each raf frame
59 - * until it returns a falsy value or is aborted
60 - */
61 - function loop(callback) {
62 - let task;
63 - if (tasks.size === 0)
64 - raf(run_tasks);
65 - return {
66 - promise: new Promise(fulfill => {
67 - tasks.add(task = { c: callback, f: fulfill });
68 - }),
69 - abort() {
70 - tasks.delete(task);
71 - }
72 - };
73 - }
74 - function append(target, node) {
75 - target.appendChild(node);
76 - }
77 - function get_root_for_style(node) {
78 - if (!node)
79 - return document;
80 - const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
81 - if (root && root.host) {
82 - return root;
83 - }
84 - return node.ownerDocument;
85 - }
86 - function append_empty_stylesheet(node) {
87 - const style_element = element('style');
88 - append_stylesheet(get_root_for_style(node), style_element);
89 - return style_element;
90 - }
91 - function append_stylesheet(node, style) {
92 - append(node.head || node, style);
93 - }
94 - function insert(target, node, anchor) {
95 - target.insertBefore(node, anchor || null);
96 - }
97 - function detach(node) {
98 - node.parentNode.removeChild(node);
99 - }
100 - function destroy_each(iterations, detaching) {
101 - for (let i = 0; i < iterations.length; i += 1) {
102 - if (iterations[i])
103 - iterations[i].d(detaching);
104 - }
105 - }
106 - function element(name) {
107 - return document.createElement(name);
108 - }
109 - function text(data) {
110 - return document.createTextNode(data);
111 - }
112 - function space() {
113 - return text(' ');
114 - }
115 - function empty() {
116 - return text('');
117 - }
118 - function listen(node, event, handler, options) {
119 - node.addEventListener(event, handler, options);
120 - return () => node.removeEventListener(event, handler, options);
121 - }
122 - function attr(node, attribute, value) {
123 - if (value == null)
124 - node.removeAttribute(attribute);
125 - else if (node.getAttribute(attribute) !== value)
126 - node.setAttribute(attribute, value);
127 - }
128 - function children(element) {
129 - return Array.from(element.childNodes);
130 - }
131 - function toggle_class(element, name, toggle) {
132 - element.classList[toggle ? 'add' : 'remove'](name);
133 - }
134 - function custom_event(type, detail, bubbles = false) {
135 - const e = document.createEvent('CustomEvent');
136 - e.initCustomEvent(type, bubbles, false, detail);
137 - return e;
138 - }
139 -
140 - const active_docs = new Set();
141 - let active = 0;
142 - // https://github.com/darkskyapp/string-hash/blob/master/index.js
143 - function hash(str) {
144 - let hash = 5381;
145 - let i = str.length;
146 - while (i--)
147 - hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
148 - return hash >>> 0;
149 - }
150 - function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {
151 - const step = 16.666 / duration;
152 - let keyframes = '{\n';
153 - for (let p = 0; p <= 1; p += step) {
154 - const t = a + (b - a) * ease(p);
155 - keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`;
156 - }
157 - const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`;
158 - const name = `__svelte_${hash(rule)}_${uid}`;
159 - const doc = get_root_for_style(node);
160 - active_docs.add(doc);
161 - const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);
162 - const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});
163 - if (!current_rules[name]) {
164 - current_rules[name] = true;
165 - stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
166 - }
167 - const animation = node.style.animation || '';
168 - node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;
169 - active += 1;
170 - return name;
171 - }
172 - function delete_rule(node, name) {
173 - const previous = (node.style.animation || '').split(', ');
174 - const next = previous.filter(name
175 - ? anim => anim.indexOf(name) < 0 // remove specific animation
176 - : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations
177 - );
178 - const deleted = previous.length - next.length;
179 - if (deleted) {
180 - node.style.animation = next.join(', ');
181 - active -= deleted;
182 - if (!active)
183 - clear_rules();
184 - }
185 - }
186 - function clear_rules() {
187 - raf(() => {
188 - if (active)
189 - return;
190 - active_docs.forEach(doc => {
191 - const stylesheet = doc.__svelte_stylesheet;
192 - let i = stylesheet.cssRules.length;
193 - while (i--)
194 - stylesheet.deleteRule(i);
195 - doc.__svelte_rules = {};
196 - });
197 - active_docs.clear();
198 - });
199 - }
200 -
201 - let current_component;
202 - function set_current_component(component) {
203 - current_component = component;
204 - }
205 - function get_current_component() {
206 - if (!current_component)
207 - throw new Error('Function called outside component initialization');
208 - return current_component;
209 - }
210 - function onMount(fn) {
211 - get_current_component().$$.on_mount.push(fn);
212 - }
213 - function onDestroy(fn) {
214 - get_current_component().$$.on_destroy.push(fn);
215 - }
216 -
217 - const dirty_components = [];
218 - const binding_callbacks = [];
219 - const render_callbacks = [];
220 - const flush_callbacks = [];
221 - const resolved_promise = Promise.resolve();
222 - let update_scheduled = false;
223 - function schedule_update() {
224 - if (!update_scheduled) {
225 - update_scheduled = true;
226 - resolved_promise.then(flush);
227 - }
228 - }
229 - function add_render_callback(fn) {
230 - render_callbacks.push(fn);
231 - }
232 - let flushing = false;
233 - const seen_callbacks = new Set();
234 - function flush() {
235 - if (flushing)
236 - return;
237 - flushing = true;
238 - do {
239 - // first, call beforeUpdate functions
240 - // and update components
241 - for (let i = 0; i < dirty_components.length; i += 1) {
242 - const component = dirty_components[i];
243 - set_current_component(component);
244 - update(component.$$);
245 - }
246 - set_current_component(null);
247 - dirty_components.length = 0;
248 - while (binding_callbacks.length)
249 - binding_callbacks.pop()();
250 - // then, once components are updated, call
251 - // afterUpdate functions. This may cause
252 - // subsequent updates...
253 - for (let i = 0; i < render_callbacks.length; i += 1) {
254 - const callback = render_callbacks[i];
255 - if (!seen_callbacks.has(callback)) {
256 - // ...so guard against infinite loops
257 - seen_callbacks.add(callback);
258 - callback();
259 - }
260 - }
261 - render_callbacks.length = 0;
262 - } while (dirty_components.length);
263 - while (flush_callbacks.length) {
264 - flush_callbacks.pop()();
265 - }
266 - update_scheduled = false;
267 - flushing = false;
268 - seen_callbacks.clear();
269 - }
270 - function update($$) {
271 - if ($$.fragment !== null) {
272 - $$.update();
273 - run_all($$.before_update);
274 - const dirty = $$.dirty;
275 - $$.dirty = [-1];
276 - $$.fragment && $$.fragment.p($$.ctx, dirty);
277 - $$.after_update.forEach(add_render_callback);
278 - }
279 - }
280 -
281 - let promise;
282 - function wait() {
283 - if (!promise) {
284 - promise = Promise.resolve();
285 - promise.then(() => {
286 - promise = null;
287 - });
288 - }
289 - return promise;
290 - }
291 - function dispatch(node, direction, kind) {
292 - node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));
293 - }
294 - const outroing = new Set();
295 - let outros;
296 - function group_outros() {
297 - outros = {
298 - r: 0,
299 - c: [],
300 - p: outros // parent group
301 - };
302 - }
303 - function check_outros() {
304 - if (!outros.r) {
305 - run_all(outros.c);
306 - }
307 - outros = outros.p;
308 - }
309 - function transition_in(block, local) {
310 - if (block && block.i) {
311 - outroing.delete(block);
312 - block.i(local);
313 - }
314 - }
315 - function transition_out(block, local, detach, callback) {
316 - if (block && block.o) {
317 - if (outroing.has(block))
318 - return;
319 - outroing.add(block);
320 - outros.c.push(() => {
321 - outroing.delete(block);
322 - if (callback) {
323 - if (detach)
324 - block.d(1);
325 - callback();
326 - }
327 - });
328 - block.o(local);
329 - }
330 - }
331 - const null_transition = { duration: 0 };
332 - function create_bidirectional_transition(node, fn, params, intro) {
333 - let config = fn(node, params);
334 - let t = intro ? 0 : 1;
335 - let running_program = null;
336 - let pending_program = null;
337 - let animation_name = null;
338 - function clear_animation() {
339 - if (animation_name)
340 - delete_rule(node, animation_name);
341 - }
342 - function init(program, duration) {
343 - const d = (program.b - t);
344 - duration *= Math.abs(d);
345 - return {
346 - a: t,
347 - b: program.b,
348 - d,
349 - duration,
350 - start: program.start,
351 - end: program.start + duration,
352 - group: program.group
353 - };
354 - }
355 - function go(b) {
356 - const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
357 - const program = {
358 - start: now() + delay,
359 - b
360 - };
361 - if (!b) {
362 - // @ts-ignore todo: improve typings
363 - program.group = outros;
364 - outros.r += 1;
365 - }
366 - if (running_program || pending_program) {
367 - pending_program = program;
368 - }
369 - else {
370 - // if this is an intro, and there's a delay, we need to do
371 - // an initial tick and/or apply CSS animation immediately
372 - if (css) {
373 - clear_animation();
374 - animation_name = create_rule(node, t, b, duration, delay, easing, css);
375 - }
376 - if (b)
377 - tick(0, 1);
378 - running_program = init(program, duration);
379 - add_render_callback(() => dispatch(node, b, 'start'));
380 - loop(now => {
381 - if (pending_program && now > pending_program.start) {
382 - running_program = init(pending_program, duration);
383 - pending_program = null;
384 - dispatch(node, running_program.b, 'start');
385 - if (css) {
386 - clear_animation();
387 - animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
388 - }
389 - }
390 - if (running_program) {
391 - if (now >= running_program.end) {
392 - tick(t = running_program.b, 1 - t);
393 - dispatch(node, running_program.b, 'end');
394 - if (!pending_program) {
395 - // we're done
396 - if (running_program.b) {
397 - // intro — we can tidy up immediately
398 - clear_animation();
399 - }
400 - else {
401 - // outro — needs to be coordinated
402 - if (!--running_program.group.r)
403 - run_all(running_program.group.c);
404 - }
405 - }
406 - running_program = null;
407 - }
408 - else if (now >= running_program.start) {
409 - const p = now - running_program.start;
410 - t = running_program.a + running_program.d * easing(p / running_program.duration);
411 - tick(t, 1 - t);
412 - }
413 - }
414 - return !!(running_program || pending_program);
415 - });
416 - }
417 - }
418 - return {
419 - run(b) {
420 - if (is_function(config)) {
421 - wait().then(() => {
422 - // @ts-ignore
423 - config = config();
424 - go(b);
425 - });
426 - }
427 - else {
428 - go(b);
429 - }
430 - },
431 - end() {
432 - clear_animation();
433 - running_program = pending_program = null;
434 - }
435 - };
436 - }
437 - function create_component(block) {
438 - block && block.c();
439 - }
440 - function mount_component(component, target, anchor, customElement) {
441 - const { fragment, on_mount, on_destroy, after_update } = component.$$;
442 - fragment && fragment.m(target, anchor);
443 - if (!customElement) {
444 - // onMount happens before the initial afterUpdate
445 - add_render_callback(() => {
446 - const new_on_destroy = on_mount.map(run).filter(is_function);
447 - if (on_destroy) {
448 - on_destroy.push(...new_on_destroy);
449 - }
450 - else {
451 - // Edge case - component was destroyed immediately,
452 - // most likely as a result of a binding initialising
453 - run_all(new_on_destroy);
454 - }
455 - component.$$.on_mount = [];
456 - });
457 - }
458 - after_update.forEach(add_render_callback);
459 - }
460 - function destroy_component(component, detaching) {
461 - const $$ = component.$$;
462 - if ($$.fragment !== null) {
463 - run_all($$.on_destroy);
464 - $$.fragment && $$.fragment.d(detaching);
465 - // TODO null out other refs, including component.$$ (but need to
466 - // preserve final state?)
467 - $$.on_destroy = $$.fragment = null;
468 - $$.ctx = [];
469 - }
470 - }
471 - function make_dirty(component, i) {
472 - if (component.$$.dirty[0] === -1) {
473 - dirty_components.push(component);
474 - schedule_update();
475 - component.$$.dirty.fill(0);
476 - }
477 - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));
478 - }
479 - function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {
480 - const parent_component = current_component;
481 - set_current_component(component);
482 - const $$ = component.$$ = {
483 - fragment: null,
484 - ctx: null,
485 - // state
486 - props,
487 - update: noop,
488 - not_equal,
489 - bound: blank_object(),
490 - // lifecycle
491 - on_mount: [],
492 - on_destroy: [],
493 - on_disconnect: [],
494 - before_update: [],
495 - after_update: [],
496 - context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
497 - // everything else
498 - callbacks: blank_object(),
499 - dirty,
500 - skip_bound: false,
501 - root: options.target || parent_component.$$.root
502 - };
503 - append_styles && append_styles($$.root);
504 - let ready = false;
505 - $$.ctx = instance
506 - ? instance(component, options.props || {}, (i, ret, ...rest) => {
507 - const value = rest.length ? rest[0] : ret;
508 - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
509 - if (!$$.skip_bound && $$.bound[i])
510 - $$.bound[i](value);
511 - if (ready)
512 - make_dirty(component, i);
513 - }
514 - return ret;
515 - })
516 - : [];
517 - $$.update();
518 - ready = true;
519 - run_all($$.before_update);
520 - // `false` as a special case of no DOM component
521 - $$.fragment = create_fragment ? create_fragment($$.ctx) : false;
522 - if (options.target) {
523 - if (options.hydrate) {
524 - const nodes = children(options.target);
525 - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
526 - $$.fragment && $$.fragment.l(nodes);
527 - nodes.forEach(detach);
528 - }
529 - else {
530 - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
531 - $$.fragment && $$.fragment.c();
532 - }
533 - if (options.intro)
534 - transition_in(component.$$.fragment);
535 - mount_component(component, options.target, options.anchor, options.customElement);
536 - flush();
537 - }
538 - set_current_component(parent_component);
539 - }
540 - /**
541 - * Base class for Svelte components. Used when dev=false.
542 - */
543 - class SvelteComponent {
544 - $destroy() {
545 - destroy_component(this, 1);
546 - this.$destroy = noop;
547 - }
548 - $on(type, callback) {
549 - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
550 - callbacks.push(callback);
551 - return () => {
552 - const index = callbacks.indexOf(callback);
553 - if (index !== -1)
554 - callbacks.splice(index, 1);
555 - };
556 - }
557 - $set($$props) {
558 - if (this.$$set && !is_empty($$props)) {
559 - this.$$.skip_bound = true;
560 - this.$$set($$props);
561 - this.$$.skip_bound = false;
562 - }
563 - }
564 - }
565 -
566 - function dispatch_dev(type, detail) {
567 - document.dispatchEvent(custom_event(type, Object.assign({ version: '3.44.1' }, detail), true));
568 - }
569 - function append_dev(target, node) {
570 - dispatch_dev('SvelteDOMInsert', { target, node });
571 - append(target, node);
572 - }
573 - function insert_dev(target, node, anchor) {
574 - dispatch_dev('SvelteDOMInsert', { target, node, anchor });
575 - insert(target, node, anchor);
576 - }
577 - function detach_dev(node) {
578 - dispatch_dev('SvelteDOMRemove', { node });
579 - detach(node);
580 - }
581 - function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {
582 - const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];
583 - if (has_prevent_default)
584 - modifiers.push('preventDefault');
585 - if (has_stop_propagation)
586 - modifiers.push('stopPropagation');
587 - dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });
588 - const dispose = listen(node, event, handler, options);
589 - return () => {
590 - dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });
591 - dispose();
592 - };
593 - }
594 - function attr_dev(node, attribute, value) {
595 - attr(node, attribute, value);
596 - if (value == null)
597 - dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });
598 - else
599 - dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });
600 - }
601 - function set_data_dev(text, data) {
602 - data = '' + data;
603 - if (text.wholeText === data)
604 - return;
605 - dispatch_dev('SvelteDOMSetData', { node: text, data });
606 - text.data = data;
607 - }
608 - function validate_each_argument(arg) {
609 - if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {
610 - let msg = '{#each} only iterates over array-like objects.';
611 - if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {
612 - msg += ' You can use a spread to convert this iterable into an array.';
613 - }
614 - throw new Error(msg);
615 - }
616 - }
617 - function validate_slots(name, slot, keys) {
618 - for (const slot_key of Object.keys(slot)) {
619 - if (!~keys.indexOf(slot_key)) {
620 - console.warn(`<${name}> received an unexpected slot "${slot_key}".`);
621 - }
622 - }
623 - }
624 - /**
625 - * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.
626 - */
627 - class SvelteComponentDev extends SvelteComponent {
628 - constructor(options) {
629 - if (!options || (!options.target && !options.$$inline)) {
630 - throw new Error("'target' is a required option");
631 - }
632 - super();
633 - }
634 - $destroy() {
635 - super.$destroy();
636 - this.$destroy = () => {
637 - console.warn('Component was already destroyed'); // eslint-disable-line no-console
638 - };
639 - }
640 - $capture_state() { }
641 - $inject_state() { }
642 - }
643 -
644 - /* src\Menuitems.svelte generated by Svelte v3.44.1 */
645 -
646 - const file$5 = "src\\Menuitems.svelte";
647 -
648 - function create_fragment$5(ctx) {
649 - let li;
650 - let a;
651 - let t_value = /*item*/ ctx[0].label + "";
652 - let t;
653 - let a_href_value;
654 - let mounted;
655 - let dispose;
656 -
657 - const block = {
658 - c: function create() {
659 - li = element("li");
660 - a = element("a");
661 - t = text(t_value);
662 - attr_dev(a, "href", a_href_value = /*item*/ ctx[0].href);
663 - attr_dev(a, "class", "svelte-1c821dq");
664 - toggle_class(a, "onmouse", /*onmouse*/ ctx[1]);
665 - add_location(a, file$5, 50, 4, 724);
666 - attr_dev(li, "class", "svelte-1c821dq");
667 - add_location(li, file$5, 49, 0, 669);
668 - },
669 - l: function claim(nodes) {
670 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
671 - },
672 - m: function mount(target, anchor) {
673 - insert_dev(target, li, anchor);
674 - append_dev(li, a);
675 - append_dev(a, t);
676 -
677 - if (!mounted) {
678 - dispose = [
679 - listen_dev(li, "mouseenter", /*enter*/ ctx[2], false, false, false),
680 - listen_dev(li, "mouseleave", /*leave*/ ctx[3], false, false, false)
681 - ];
682 -
683 - mounted = true;
684 - }
685 - },
686 - p: function update(ctx, [dirty]) {
687 - if (dirty & /*item*/ 1 && t_value !== (t_value = /*item*/ ctx[0].label + "")) set_data_dev(t, t_value);
688 -
689 - if (dirty & /*item*/ 1 && a_href_value !== (a_href_value = /*item*/ ctx[0].href)) {
690 - attr_dev(a, "href", a_href_value);
691 - }
692 -
693 - if (dirty & /*onmouse*/ 2) {
694 - toggle_class(a, "onmouse", /*onmouse*/ ctx[1]);
695 - }
696 - },
697 - i: noop,
698 - o: noop,
699 - d: function destroy(detaching) {
700 - if (detaching) detach_dev(li);
701 - mounted = false;
702 - run_all(dispose);
703 - }
704 - };
705 -
706 - dispatch_dev("SvelteRegisterBlock", {
707 - block,
708 - id: create_fragment$5.name,
709 - type: "component",
710 - source: "",
711 - ctx
712 - });
713 -
714 - return block;
715 - }
716 -
717 - function instance$5($$self, $$props, $$invalidate) {
718 - let { $$slots: slots = {}, $$scope } = $$props;
719 - validate_slots('Menuitems', slots, []);
720 - let { item } = $$props;
721 - let onmouse;
722 -
723 - function enter() {
724 - $$invalidate(1, onmouse = true);
725 - }
726 -
727 - function leave() {
728 - $$invalidate(1, onmouse = false);
729 - }
730 -
731 - const writable_props = ['item'];
732 -
733 - Object.keys($$props).forEach(key => {
734 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Menuitems> was created with unknown prop '${key}'`);
735 - });
736 -
737 - $$self.$$set = $$props => {
738 - if ('item' in $$props) $$invalidate(0, item = $$props.item);
739 - };
740 -
741 - $$self.$capture_state = () => ({ item, onmouse, enter, leave });
742 -
743 - $$self.$inject_state = $$props => {
744 - if ('item' in $$props) $$invalidate(0, item = $$props.item);
745 - if ('onmouse' in $$props) $$invalidate(1, onmouse = $$props.onmouse);
746 - };
747 -
748 - if ($$props && "$$inject" in $$props) {
749 - $$self.$inject_state($$props.$$inject);
750 - }
751 -
752 - return [item, onmouse, enter, leave];
753 - }
754 -
755 - class Menuitems extends SvelteComponentDev {
756 - constructor(options) {
757 - super(options);
758 - init(this, options, instance$5, create_fragment$5, safe_not_equal, { item: 0 });
759 -
760 - dispatch_dev("SvelteRegisterComponent", {
761 - component: this,
762 - tagName: "Menuitems",
763 - options,
764 - id: create_fragment$5.name
765 - });
766 -
767 - const { ctx } = this.$$;
768 - const props = options.props || {};
769 -
770 - if (/*item*/ ctx[0] === undefined && !('item' in props)) {
771 - console.warn("<Menuitems> was created without expected prop 'item'");
772 - }
773 - }
774 -
775 - get item() {
776 - throw new Error("<Menuitems>: Props cannot be read directly from the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
777 - }
778 -
779 - set item(value) {
780 - throw new Error("<Menuitems>: Props cannot be set directly on the component instance unless compiling with 'accessors: true' or '<svelte:options accessors/>'");
781 - }
782 - }
783 -
784 - /* src\Menu.svelte generated by Svelte v3.44.1 */
785 - const file$4 = "src\\Menu.svelte";
786 -
787 - function get_each_context(ctx, list, i) {
788 - const child_ctx = ctx.slice();
789 - child_ctx[1] = list[i];
790 - return child_ctx;
791 - }
792 -
793 - // (53:8) {#each navItems as item}
794 - function create_each_block(ctx) {
795 - let menuitems;
796 - let current;
797 -
798 - menuitems = new Menuitems({
799 - props: { item: /*item*/ ctx[1] },
800 - $$inline: true
801 - });
802 -
803 - const block = {
804 - c: function create() {
805 - create_component(menuitems.$$.fragment);
806 - },
807 - m: function mount(target, anchor) {
808 - mount_component(menuitems, target, anchor);
809 - current = true;
810 - },
811 - p: noop,
812 - i: function intro(local) {
813 - if (current) return;
814 - transition_in(menuitems.$$.fragment, local);
815 - current = true;
816 - },
817 - o: function outro(local) {
818 - transition_out(menuitems.$$.fragment, local);
819 - current = false;
820 - },
821 - d: function destroy(detaching) {
822 - destroy_component(menuitems, detaching);
823 - }
824 - };
825 -
826 - dispatch_dev("SvelteRegisterBlock", {
827 - block,
828 - id: create_each_block.name,
829 - type: "each",
830 - source: "(53:8) {#each navItems as item}",
831 - ctx
832 - });
833 -
834 - return block;
835 - }
836 -
837 - function create_fragment$4(ctx) {
838 - let nav;
839 - let div0;
840 - let t1;
841 - let div1;
842 - let ul;
843 - let current;
844 - let each_value = /*navItems*/ ctx[0];
845 - validate_each_argument(each_value);
846 - let each_blocks = [];
847 -
848 - for (let i = 0; i < each_value.length; i += 1) {
849 - each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
850 - }
851 -
852 - const out = i => transition_out(each_blocks[i], 1, 1, () => {
853 - each_blocks[i] = null;
854 - });
855 -
856 - const block = {
857 - c: function create() {
858 - nav = element("nav");
859 - div0 = element("div");
860 - div0.textContent = "Logo";
861 - t1 = space();
862 - div1 = element("div");
863 - ul = element("ul");
864 -
865 - for (let i = 0; i < each_blocks.length; i += 1) {
866 - each_blocks[i].c();
867 - }
868 -
869 - attr_dev(div0, "class", "logo svelte-pxoyop");
870 - add_location(div0, file$4, 49, 1, 909);
871 - attr_dev(ul, "class", "navbar-list svelte-pxoyop");
872 - add_location(ul, file$4, 51, 8, 969);
873 - attr_dev(div1, "class", "inner svelte-pxoyop");
874 - add_location(div1, file$4, 50, 1, 940);
875 - attr_dev(nav, "class", "svelte-pxoyop");
876 - add_location(nav, file$4, 48, 0, 901);
877 - },
878 - l: function claim(nodes) {
879 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
880 - },
881 - m: function mount(target, anchor) {
882 - insert_dev(target, nav, anchor);
883 - append_dev(nav, div0);
884 - append_dev(nav, t1);
885 - append_dev(nav, div1);
886 - append_dev(div1, ul);
887 -
888 - for (let i = 0; i < each_blocks.length; i += 1) {
889 - each_blocks[i].m(ul, null);
890 - }
891 -
892 - current = true;
893 - },
894 - p: function update(ctx, [dirty]) {
895 - if (dirty & /*navItems*/ 1) {
896 - each_value = /*navItems*/ ctx[0];
897 - validate_each_argument(each_value);
898 - let i;
899 -
900 - for (i = 0; i < each_value.length; i += 1) {
901 - const child_ctx = get_each_context(ctx, each_value, i);
902 -
903 - if (each_blocks[i]) {
904 - each_blocks[i].p(child_ctx, dirty);
905 - transition_in(each_blocks[i], 1);
906 - } else {
907 - each_blocks[i] = create_each_block(child_ctx);
908 - each_blocks[i].c();
909 - transition_in(each_blocks[i], 1);
910 - each_blocks[i].m(ul, null);
911 - }
912 - }
913 -
914 - group_outros();
915 -
916 - for (i = each_value.length; i < each_blocks.length; i += 1) {
917 - out(i);
918 - }
919 -
920 - check_outros();
921 - }
922 - },
923 - i: function intro(local) {
924 - if (current) return;
925 -
926 - for (let i = 0; i < each_value.length; i += 1) {
927 - transition_in(each_blocks[i]);
928 - }
929 -
930 - current = true;
931 - },
932 - o: function outro(local) {
933 - each_blocks = each_blocks.filter(Boolean);
934 -
935 - for (let i = 0; i < each_blocks.length; i += 1) {
936 - transition_out(each_blocks[i]);
937 - }
938 -
939 - current = false;
940 - },
941 - d: function destroy(detaching) {
942 - if (detaching) detach_dev(nav);
943 - destroy_each(each_blocks, detaching);
944 - }
945 - };
946 -
947 - dispatch_dev("SvelteRegisterBlock", {
948 - block,
949 - id: create_fragment$4.name,
950 - type: "component",
951 - source: "",
952 - ctx
953 - });
954 -
955 - return block;
956 - }
957 -
958 - function instance$4($$self, $$props, $$invalidate) {
959 - let { $$slots: slots = {}, $$scope } = $$props;
960 - validate_slots('Menu', slots, []);
961 -
962 - const navItems = [
963 - { label: "Article1", href: "#article1" },
964 - { label: "Article2", href: "#article2" },
965 - { label: "Article3", href: "#article3" },
966 - { label: "Article4", href: "#article4" }
967 - ];
968 -
969 - const writable_props = [];
970 -
971 - Object.keys($$props).forEach(key => {
972 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Menu> was created with unknown prop '${key}'`);
973 - });
974 -
975 - $$self.$capture_state = () => ({ Menuitems, navItems });
976 - return [navItems];
977 - }
978 -
979 - class Menu extends SvelteComponentDev {
980 - constructor(options) {
981 - super(options);
982 - init(this, options, instance$4, create_fragment$4, safe_not_equal, {});
983 -
984 - dispatch_dev("SvelteRegisterComponent", {
985 - component: this,
986 - tagName: "Menu",
987 - options,
988 - id: create_fragment$4.name
989 - });
990 - }
991 - }
992 -
993 - function cubicOut(t) {
994 - const f = t - 1.0;
995 - return f * f * f + 1.0;
996 - }
997 -
998 - function fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {
999 - const style = getComputedStyle(node);
1000 - const target_opacity = +style.opacity;
1001 - const transform = style.transform === 'none' ? '' : style.transform;
1002 - const od = target_opacity * (1 - opacity);
1003 - return {
1004 - delay,
1005 - duration,
1006 - easing,
1007 - css: (t, u) => `
1008 - transform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);
1009 - opacity: ${target_opacity - (od * u)}`
1010 - };
1011 - }
1012 -
1013 - /* src\Backtotop.svelte generated by Svelte v3.44.1 */
1014 - const file$3 = "src\\Backtotop.svelte";
1015 -
1016 - // (37:0) {#if (show)}
1017 - function create_if_block(ctx) {
1018 - let button;
1019 - let button_transition;
1020 - let current;
1021 - let mounted;
1022 - let dispose;
1023 -
1024 - const block = {
1025 - c: function create() {
1026 - button = element("button");
1027 - button.textContent = "▲";
1028 - attr_dev(button, "id", "backtotop");
1029 - attr_dev(button, "class", "svelte-16na1oq");
1030 - add_location(button, file$3, 37, 4, 730);
1031 - },
1032 - m: function mount(target, anchor) {
1033 - insert_dev(target, button, anchor);
1034 - current = true;
1035 -
1036 - if (!mounted) {
1037 - dispose = listen_dev(button, "click", scrollUp, false, false, false);
1038 - mounted = true;
1039 - }
1040 - },
1041 - p: noop,
1042 - i: function intro(local) {
1043 - if (current) return;
1044 -
1045 - add_render_callback(() => {
1046 - if (!button_transition) button_transition = create_bidirectional_transition(button, fly, { y: 200, duration: 400 }, true);
1047 - button_transition.run(1);
1048 - });
1049 -
1050 - current = true;
1051 - },
1052 - o: function outro(local) {
1053 - if (!button_transition) button_transition = create_bidirectional_transition(button, fly, { y: 200, duration: 400 }, false);
1054 - button_transition.run(0);
1055 - current = false;
1056 - },
1057 - d: function destroy(detaching) {
1058 - if (detaching) detach_dev(button);
1059 - if (detaching && button_transition) button_transition.end();
1060 - mounted = false;
1061 - dispose();
1062 - }
1063 - };
1064 -
1065 - dispatch_dev("SvelteRegisterBlock", {
1066 - block,
1067 - id: create_if_block.name,
1068 - type: "if",
1069 - source: "(37:0) {#if (show)}",
1070 - ctx
1071 - });
1072 -
1073 - return block;
1074 - }
1075 -
1076 - function create_fragment$3(ctx) {
1077 - let if_block_anchor;
1078 - let current;
1079 - let if_block = /*show*/ ctx[0] && create_if_block(ctx);
1080 -
1081 - const block = {
1082 - c: function create() {
1083 - if (if_block) if_block.c();
1084 - if_block_anchor = empty();
1085 - },
1086 - l: function claim(nodes) {
1087 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1088 - },
1089 - m: function mount(target, anchor) {
1090 - if (if_block) if_block.m(target, anchor);
1091 - insert_dev(target, if_block_anchor, anchor);
1092 - current = true;
1093 - },
1094 - p: function update(ctx, [dirty]) {
1095 - if (/*show*/ ctx[0]) {
1096 - if (if_block) {
1097 - if_block.p(ctx, dirty);
1098 -
1099 - if (dirty & /*show*/ 1) {
1100 - transition_in(if_block, 1);
1101 - }
1102 - } else {
1103 - if_block = create_if_block(ctx);
1104 - if_block.c();
1105 - transition_in(if_block, 1);
1106 - if_block.m(if_block_anchor.parentNode, if_block_anchor);
1107 - }
1108 - } else if (if_block) {
1109 - group_outros();
1110 -
1111 - transition_out(if_block, 1, 1, () => {
1112 - if_block = null;
1113 - });
1114 -
1115 - check_outros();
1116 - }
1117 - },
1118 - i: function intro(local) {
1119 - if (current) return;
1120 - transition_in(if_block);
1121 - current = true;
1122 - },
1123 - o: function outro(local) {
1124 - transition_out(if_block);
1125 - current = false;
1126 - },
1127 - d: function destroy(detaching) {
1128 - if (if_block) if_block.d(detaching);
1129 - if (detaching) detach_dev(if_block_anchor);
1130 - }
1131 - };
1132 -
1133 - dispatch_dev("SvelteRegisterBlock", {
1134 - block,
1135 - id: create_fragment$3.name,
1136 - type: "component",
1137 - source: "",
1138 - ctx
1139 - });
1140 -
1141 - return block;
1142 - }
1143 -
1144 - function scrollUp() {
1145 - document.body.scrollIntoView({ behavior: "smooth" });
1146 - }
1147 -
1148 - function instance$3($$self, $$props, $$invalidate) {
1149 - let { $$slots: slots = {}, $$scope } = $$props;
1150 - validate_slots('Backtotop', slots, []);
1151 - let show = false;
1152 -
1153 - onMount(() => {
1154 - window.onscroll = () => {
1155 - if (window.scrollY > 60) {
1156 - $$invalidate(0, show = true);
1157 - } else {
1158 - $$invalidate(0, show = false);
1159 - }
1160 - };
1161 - });
1162 -
1163 - onDestroy(() => {
1164 - window.onscroll = () => {
1165 -
1166 - };
1167 - });
1168 -
1169 - const writable_props = [];
1170 -
1171 - Object.keys($$props).forEach(key => {
1172 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Backtotop> was created with unknown prop '${key}'`);
1173 - });
1174 -
1175 - $$self.$capture_state = () => ({ fly, onMount, onDestroy, show, scrollUp });
1176 -
1177 - $$self.$inject_state = $$props => {
1178 - if ('show' in $$props) $$invalidate(0, show = $$props.show);
1179 - };
1180 -
1181 - if ($$props && "$$inject" in $$props) {
1182 - $$self.$inject_state($$props.$$inject);
1183 - }
1184 -
1185 - return [show];
1186 - }
1187 -
1188 - class Backtotop extends SvelteComponentDev {
1189 - constructor(options) {
1190 - super(options);
1191 - init(this, options, instance$3, create_fragment$3, safe_not_equal, {});
1192 -
1193 - dispatch_dev("SvelteRegisterComponent", {
1194 - component: this,
1195 - tagName: "Backtotop",
1196 - options,
1197 - id: create_fragment$3.name
1198 - });
1199 - }
1200 - }
1201 -
1202 - /* src\Map.svelte generated by Svelte v3.44.1 */
1203 -
1204 - const file$2 = "src\\Map.svelte";
1205 -
1206 - function create_fragment$2(ctx) {
1207 - let div;
1208 -
1209 - const block = {
1210 - c: function create() {
1211 - div = element("div");
1212 - attr_dev(div, "id", "chat_bg");
1213 - attr_dev(div, "class", "svelte-1177unw");
1214 - add_location(div, file$2, 13, 0, 156);
1215 - },
1216 - l: function claim(nodes) {
1217 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1218 - },
1219 - m: function mount(target, anchor) {
1220 - insert_dev(target, div, anchor);
1221 - },
1222 - p: noop,
1223 - i: noop,
1224 - o: noop,
1225 - d: function destroy(detaching) {
1226 - if (detaching) detach_dev(div);
1227 - }
1228 - };
1229 -
1230 - dispatch_dev("SvelteRegisterBlock", {
1231 - block,
1232 - id: create_fragment$2.name,
1233 - type: "component",
1234 - source: "",
1235 - ctx
1236 - });
1237 -
1238 - return block;
1239 - }
1240 -
1241 - function instance$2($$self, $$props) {
1242 - let { $$slots: slots = {}, $$scope } = $$props;
1243 - validate_slots('Map', slots, []);
1244 - const writable_props = [];
1245 -
1246 - Object.keys($$props).forEach(key => {
1247 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Map> was created with unknown prop '${key}'`);
1248 - });
1249 -
1250 - return [];
1251 - }
1252 -
1253 - class Map$1 extends SvelteComponentDev {
1254 - constructor(options) {
1255 - super(options);
1256 - init(this, options, instance$2, create_fragment$2, safe_not_equal, {});
1257 -
1258 - dispatch_dev("SvelteRegisterComponent", {
1259 - component: this,
1260 - tagName: "Map",
1261 - options,
1262 - id: create_fragment$2.name
1263 - });
1264 - }
1265 - }
1266 -
1267 - /* src\Articles.svelte generated by Svelte v3.44.1 */
1268 -
1269 - const file$1 = "src\\Articles.svelte";
1270 -
1271 - function create_fragment$1(ctx) {
1272 - let div2;
1273 - let div1;
1274 - let img0;
1275 - let img0_src_value;
1276 - let t0;
1277 - let div0;
1278 - let t2;
1279 - let div5;
1280 - let div4;
1281 - let div3;
1282 - let t4;
1283 - let img1;
1284 - let img1_src_value;
1285 - let t5;
1286 - let div8;
1287 - let div7;
1288 - let img2;
1289 - let img2_src_value;
1290 - let t6;
1291 - let div6;
1292 - let t8;
1293 - let div11;
1294 - let div10;
1295 - let div9;
1296 - let t10;
1297 - let img3;
1298 - let img3_src_value;
1299 -
1300 - const block = {
1301 - c: function create() {
1302 - div2 = element("div");
1303 - div1 = element("div");
1304 - img0 = element("img");
1305 - t0 = space();
1306 - div0 = element("div");
1307 - div0.textContent = "ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ\r\n ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ";
1308 - t2 = space();
1309 - div5 = element("div");
1310 - div4 = element("div");
1311 - div3 = element("div");
1312 - div3.textContent = "ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ\r\n ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ";
1313 - t4 = space();
1314 - img1 = element("img");
1315 - t5 = space();
1316 - div8 = element("div");
1317 - div7 = element("div");
1318 - img2 = element("img");
1319 - t6 = space();
1320 - div6 = element("div");
1321 - div6.textContent = "ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ\r\n ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ";
1322 - t8 = space();
1323 - div11 = element("div");
1324 - div10 = element("div");
1325 - div9 = element("div");
1326 - div9.textContent = "ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ\r\n ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ";
1327 - t10 = space();
1328 - img3 = element("img");
1329 - if (!src_url_equal(img0.src, img0_src_value = "https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/574/a90016a30d614a19fe6987d94edb5e29.jpeg")) attr_dev(img0, "src", img0_src_value);
1330 - attr_dev(img0, "alt", ":)");
1331 - attr_dev(img0, "class", "svelte-90y9ti");
1332 - add_location(img0, file$1, 40, 8, 753);
1333 - attr_dev(div0, "class", "text svelte-90y9ti");
1334 - add_location(div0, file$1, 41, 8, 880);
1335 - attr_dev(div1, "class", "contents svelte-90y9ti");
1336 - add_location(div1, file$1, 39, 4, 721);
1337 - attr_dev(div2, "class", "article wbg svelte-90y9ti");
1338 - attr_dev(div2, "id", "article1");
1339 - add_location(div2, file$1, 38, 0, 676);
1340 - attr_dev(div3, "class", "text svelte-90y9ti");
1341 - add_location(div3, file$1, 49, 8, 1122);
1342 - if (!src_url_equal(img1.src, img1_src_value = "https://www.pinclipart.com/picdir/big/550-5506338_pepe-the-frog-transparent-png-transparent-pepe-png.png")) attr_dev(img1, "src", img1_src_value);
1343 - attr_dev(img1, "alt", ";(");
1344 - attr_dev(img1, "class", "svelte-90y9ti");
1345 - add_location(img1, file$1, 53, 8, 1274);
1346 - attr_dev(div4, "class", "contents svelte-90y9ti");
1347 - add_location(div4, file$1, 48, 4, 1089);
1348 - attr_dev(div5, "class", "article gbg svelte-90y9ti");
1349 - attr_dev(div5, "id", "article2");
1350 - add_location(div5, file$1, 47, 0, 1044);
1351 - if (!src_url_equal(img2.src, img2_src_value = "https://d2u3dcdbebyaiu.cloudfront.net/uploads/atch_img/574/a90016a30d614a19fe6987d94edb5e29.jpeg")) attr_dev(img2, "src", img2_src_value);
1352 - attr_dev(img2, "alt", ":)");
1353 - attr_dev(img2, "class", "svelte-90y9ti");
1354 - add_location(img2, file$1, 58, 8, 1498);
1355 - attr_dev(div6, "class", "text svelte-90y9ti");
1356 - add_location(div6, file$1, 59, 8, 1625);
1357 - attr_dev(div7, "class", "contents svelte-90y9ti");
1358 - add_location(div7, file$1, 57, 4, 1466);
1359 - attr_dev(div8, "class", "article wbg svelte-90y9ti");
1360 - attr_dev(div8, "id", "article3");
1361 - add_location(div8, file$1, 56, 0, 1421);
1362 - attr_dev(div9, "class", "text svelte-90y9ti");
1363 - add_location(div9, file$1, 67, 8, 1866);
1364 - if (!src_url_equal(img3.src, img3_src_value = "https://www.pinclipart.com/picdir/big/550-5506338_pepe-the-frog-transparent-png-transparent-pepe-png.png")) attr_dev(img3, "src", img3_src_value);
1365 - attr_dev(img3, "alt", ";(");
1366 - attr_dev(img3, "class", "svelte-90y9ti");
1367 - add_location(img3, file$1, 71, 8, 2018);
1368 - attr_dev(div10, "class", "contents svelte-90y9ti");
1369 - add_location(div10, file$1, 66, 4, 1834);
1370 - attr_dev(div11, "class", "article gbg svelte-90y9ti");
1371 - attr_dev(div11, "id", "article4");
1372 - add_location(div11, file$1, 65, 0, 1789);
1373 - },
1374 - l: function claim(nodes) {
1375 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1376 - },
1377 - m: function mount(target, anchor) {
1378 - insert_dev(target, div2, anchor);
1379 - append_dev(div2, div1);
1380 - append_dev(div1, img0);
1381 - append_dev(div1, t0);
1382 - append_dev(div1, div0);
1383 - insert_dev(target, t2, anchor);
1384 - insert_dev(target, div5, anchor);
1385 - append_dev(div5, div4);
1386 - append_dev(div4, div3);
1387 - append_dev(div4, t4);
1388 - append_dev(div4, img1);
1389 - insert_dev(target, t5, anchor);
1390 - insert_dev(target, div8, anchor);
1391 - append_dev(div8, div7);
1392 - append_dev(div7, img2);
1393 - append_dev(div7, t6);
1394 - append_dev(div7, div6);
1395 - insert_dev(target, t8, anchor);
1396 - insert_dev(target, div11, anchor);
1397 - append_dev(div11, div10);
1398 - append_dev(div10, div9);
1399 - append_dev(div10, t10);
1400 - append_dev(div10, img3);
1401 - },
1402 - p: noop,
1403 - i: noop,
1404 - o: noop,
1405 - d: function destroy(detaching) {
1406 - if (detaching) detach_dev(div2);
1407 - if (detaching) detach_dev(t2);
1408 - if (detaching) detach_dev(div5);
1409 - if (detaching) detach_dev(t5);
1410 - if (detaching) detach_dev(div8);
1411 - if (detaching) detach_dev(t8);
1412 - if (detaching) detach_dev(div11);
1413 - }
1414 - };
1415 -
1416 - dispatch_dev("SvelteRegisterBlock", {
1417 - block,
1418 - id: create_fragment$1.name,
1419 - type: "component",
1420 - source: "",
1421 - ctx
1422 - });
1423 -
1424 - return block;
1425 - }
1426 -
1427 - function instance$1($$self, $$props) {
1428 - let { $$slots: slots = {}, $$scope } = $$props;
1429 - validate_slots('Articles', slots, []);
1430 - const writable_props = [];
1431 -
1432 - Object.keys($$props).forEach(key => {
1433 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<Articles> was created with unknown prop '${key}'`);
1434 - });
1435 -
1436 - return [];
1437 - }
1438 -
1439 - class Articles extends SvelteComponentDev {
1440 - constructor(options) {
1441 - super(options);
1442 - init(this, options, instance$1, create_fragment$1, safe_not_equal, {});
1443 -
1444 - dispatch_dev("SvelteRegisterComponent", {
1445 - component: this,
1446 - tagName: "Articles",
1447 - options,
1448 - id: create_fragment$1.name
1449 - });
1450 - }
1451 - }
1452 -
1453 - /* src\App.svelte generated by Svelte v3.44.1 */
1454 - const file = "src\\App.svelte";
1455 -
1456 - function create_fragment(ctx) {
1457 - let div;
1458 - let menu;
1459 - let t0;
1460 - let map;
1461 - let t1;
1462 - let backtotop;
1463 - let t2;
1464 - let article;
1465 - let current;
1466 - menu = new Menu({ $$inline: true });
1467 - map = new Map$1({ $$inline: true });
1468 - backtotop = new Backtotop({ $$inline: true });
1469 - article = new Articles({ $$inline: true });
1470 -
1471 - const block = {
1472 - c: function create() {
1473 - div = element("div");
1474 - create_component(menu.$$.fragment);
1475 - t0 = space();
1476 - create_component(map.$$.fragment);
1477 - t1 = space();
1478 - create_component(backtotop.$$.fragment);
1479 - t2 = space();
1480 - create_component(article.$$.fragment);
1481 - attr_dev(div, "class", "svelte-hpuxjp");
1482 - add_location(div, file, 25, 0, 366);
1483 - },
1484 - l: function claim(nodes) {
1485 - throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
1486 - },
1487 - m: function mount(target, anchor) {
1488 - insert_dev(target, div, anchor);
1489 - mount_component(menu, div, null);
1490 - append_dev(div, t0);
1491 - mount_component(map, div, null);
1492 - append_dev(div, t1);
1493 - mount_component(backtotop, div, null);
1494 - append_dev(div, t2);
1495 - mount_component(article, div, null);
1496 - current = true;
1497 - },
1498 - p: noop,
1499 - i: function intro(local) {
1500 - if (current) return;
1501 - transition_in(menu.$$.fragment, local);
1502 - transition_in(map.$$.fragment, local);
1503 - transition_in(backtotop.$$.fragment, local);
1504 - transition_in(article.$$.fragment, local);
1505 - current = true;
1506 - },
1507 - o: function outro(local) {
1508 - transition_out(menu.$$.fragment, local);
1509 - transition_out(map.$$.fragment, local);
1510 - transition_out(backtotop.$$.fragment, local);
1511 - transition_out(article.$$.fragment, local);
1512 - current = false;
1513 - },
1514 - d: function destroy(detaching) {
1515 - if (detaching) detach_dev(div);
1516 - destroy_component(menu);
1517 - destroy_component(map);
1518 - destroy_component(backtotop);
1519 - destroy_component(article);
1520 - }
1521 - };
1522 -
1523 - dispatch_dev("SvelteRegisterBlock", {
1524 - block,
1525 - id: create_fragment.name,
1526 - type: "component",
1527 - source: "",
1528 - ctx
1529 - });
1530 -
1531 - return block;
1532 - }
1533 -
1534 - function instance($$self, $$props, $$invalidate) {
1535 - let { $$slots: slots = {}, $$scope } = $$props;
1536 - validate_slots('App', slots, []);
1537 - const writable_props = [];
1538 -
1539 - Object.keys($$props).forEach(key => {
1540 - if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(`<App> was created with unknown prop '${key}'`);
1541 - });
1542 -
1543 - $$self.$capture_state = () => ({ Menu, Backtotop, Map: Map$1, Article: Articles });
1544 - return [];
1545 - }
1546 -
1547 - class App extends SvelteComponentDev {
1548 - constructor(options) {
1549 - super(options);
1550 - init(this, options, instance, create_fragment, safe_not_equal, {});
1551 -
1552 - dispatch_dev("SvelteRegisterComponent", {
1553 - component: this,
1554 - tagName: "App",
1555 - options,
1556 - id: create_fragment.name
1557 - });
1558 - }
1559 - }
1560 -
1561 - const app = new App({
1562 - target: document.body,
1563 - props: {
1564 - // name: 'world'
1565 - }
1566 - });
1567 -
1568 - return app;
1569 -
1570 -})();
1571 -//# sourceMappingURL=bundle.js.map
This diff could not be displayed because it is too large.
1 -html, body {
2 - position: relative;
3 - width: 100%;
4 - height: 100%;
5 -}
6 -
7 -body {
8 - color: #333;
9 - margin: 0;
10 - padding: 8px;
11 - box-sizing: border-box;
12 - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
13 -}
14 -
15 -a {
16 - color: rgb(0,100,200);
17 - text-decoration: none;
18 -}
19 -
20 -a:hover {
21 - text-decoration: underline;
22 -}
23 -
24 -a:visited {
25 - color: rgb(0,80,160);
26 -}
27 -
28 -label {
29 - display: block;
30 -}
31 -
32 -input, button, select, textarea {
33 - font-family: inherit;
34 - font-size: inherit;
35 - -webkit-padding: 0.4em 0;
36 - padding: 0.4em;
37 - margin: 0 0 0.5em 0;
38 - box-sizing: border-box;
39 - border: 1px solid #ccc;
40 - border-radius: 2px;
41 -}
42 -
43 -input:disabled {
44 - color: #ccc;
45 -}
46 -
47 -button {
48 - color: #333;
49 - background-color: #f4f4f4;
50 - outline: none;
51 -}
52 -
53 -button:disabled {
54 - color: #999;
55 -}
56 -
57 -button:not(:disabled):active {
58 - background-color: #ddd;
59 -}
60 -
61 -button:focus {
62 - border-color: #666;
63 -}
1 -<!DOCTYPE html>
2 -<html lang="en">
3 -<head>
4 - <meta charset='utf-8'>
5 - <meta name='viewport' content='width=device-width,initial-scale=1'>
6 -
7 - <title>Svelte app</title>
8 -
9 - <link rel='icon' type='image/png' href='./favicon.png'>
10 - <link rel='stylesheet' href='./global.css'>
11 - <link rel='stylesheet' href='./build/bundle.css'>
12 -
13 - <script defer src='./build/bundle.js'></script>
14 -</head>
15 -
16 -<body>
17 -</body>
18 -</html>
1 +{
2 + "name": "svelte-app",
3 + "version": "1.0.0",
4 + "lockfileVersion": 1,
5 + "requires": true,
6 + "dependencies": {
7 + "@babel/code-frame": {
8 + "version": "7.16.0",
9 + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
10 + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
11 + "dev": true,
12 + "requires": {
13 + "@babel/highlight": "^7.16.0"
14 + }
15 + },
16 + "@babel/helper-validator-identifier": {
17 + "version": "7.15.7",
18 + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
19 + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
20 + "dev": true
21 + },
22 + "@babel/highlight": {
23 + "version": "7.16.0",
24 + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
25 + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
26 + "dev": true,
27 + "requires": {
28 + "@babel/helper-validator-identifier": "^7.15.7",
29 + "chalk": "^2.0.0",
30 + "js-tokens": "^4.0.0"
31 + }
32 + },
33 + "@polka/url": {
34 + "version": "1.0.0-next.21",
35 + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
36 + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g=="
37 + },
38 + "@rollup/plugin-commonjs": {
39 + "version": "17.1.0",
40 + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz",
41 + "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==",
42 + "dev": true,
43 + "requires": {
44 + "@rollup/pluginutils": "^3.1.0",
45 + "commondir": "^1.0.1",
46 + "estree-walker": "^2.0.1",
47 + "glob": "^7.1.6",
48 + "is-reference": "^1.2.1",
49 + "magic-string": "^0.25.7",
50 + "resolve": "^1.17.0"
51 + }
52 + },
53 + "@rollup/plugin-node-resolve": {
54 + "version": "11.2.1",
55 + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
56 + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
57 + "dev": true,
58 + "requires": {
59 + "@rollup/pluginutils": "^3.1.0",
60 + "@types/resolve": "1.17.1",
61 + "builtin-modules": "^3.1.0",
62 + "deepmerge": "^4.2.2",
63 + "is-module": "^1.0.0",
64 + "resolve": "^1.19.0"
65 + }
66 + },
67 + "@rollup/pluginutils": {
68 + "version": "3.1.0",
69 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
70 + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
71 + "dev": true,
72 + "requires": {
73 + "@types/estree": "0.0.39",
74 + "estree-walker": "^1.0.1",
75 + "picomatch": "^2.2.2"
76 + },
77 + "dependencies": {
78 + "estree-walker": {
79 + "version": "1.0.1",
80 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
81 + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
82 + "dev": true
83 + }
84 + }
85 + },
86 + "@types/estree": {
87 + "version": "0.0.39",
88 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
89 + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
90 + "dev": true
91 + },
92 + "@types/node": {
93 + "version": "16.11.7",
94 + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.7.tgz",
95 + "integrity": "sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw==",
96 + "dev": true
97 + },
98 + "@types/resolve": {
99 + "version": "1.17.1",
100 + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
101 + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
102 + "dev": true,
103 + "requires": {
104 + "@types/node": "*"
105 + }
106 + },
107 + "ansi-styles": {
108 + "version": "3.2.1",
109 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
110 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
111 + "dev": true,
112 + "requires": {
113 + "color-convert": "^1.9.0"
114 + }
115 + },
116 + "anymatch": {
117 + "version": "3.1.2",
118 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
119 + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
120 + "dev": true,
121 + "requires": {
122 + "normalize-path": "^3.0.0",
123 + "picomatch": "^2.0.4"
124 + }
125 + },
126 + "balanced-match": {
127 + "version": "1.0.2",
128 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
129 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
130 + "dev": true
131 + },
132 + "base64-arraybuffer": {
133 + "version": "1.0.1",
134 + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz",
135 + "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA=="
136 + },
137 + "binary-extensions": {
138 + "version": "2.2.0",
139 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
140 + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
141 + "dev": true
142 + },
143 + "brace-expansion": {
144 + "version": "1.1.11",
145 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
146 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
147 + "dev": true,
148 + "requires": {
149 + "balanced-match": "^1.0.0",
150 + "concat-map": "0.0.1"
151 + }
152 + },
153 + "braces": {
154 + "version": "3.0.2",
155 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
156 + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
157 + "dev": true,
158 + "requires": {
159 + "fill-range": "^7.0.1"
160 + }
161 + },
162 + "buffer-from": {
163 + "version": "1.1.2",
164 + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
165 + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
166 + "dev": true
167 + },
168 + "builtin-modules": {
169 + "version": "3.2.0",
170 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz",
171 + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
172 + "dev": true
173 + },
174 + "chalk": {
175 + "version": "2.4.2",
176 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
177 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
178 + "dev": true,
179 + "requires": {
180 + "ansi-styles": "^3.2.1",
181 + "escape-string-regexp": "^1.0.5",
182 + "supports-color": "^5.3.0"
183 + }
184 + },
185 + "chokidar": {
186 + "version": "3.5.2",
187 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
188 + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
189 + "dev": true,
190 + "requires": {
191 + "anymatch": "~3.1.2",
192 + "braces": "~3.0.2",
193 + "fsevents": "~2.3.2",
194 + "glob-parent": "~5.1.2",
195 + "is-binary-path": "~2.1.0",
196 + "is-glob": "~4.0.1",
197 + "normalize-path": "~3.0.0",
198 + "readdirp": "~3.6.0"
199 + }
200 + },
201 + "color-convert": {
202 + "version": "1.9.3",
203 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
204 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
205 + "dev": true,
206 + "requires": {
207 + "color-name": "1.1.3"
208 + }
209 + },
210 + "color-name": {
211 + "version": "1.1.3",
212 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
213 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
214 + "dev": true
215 + },
216 + "commander": {
217 + "version": "2.20.3",
218 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
219 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
220 + "dev": true
221 + },
222 + "commondir": {
223 + "version": "1.0.1",
224 + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
225 + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
226 + "dev": true
227 + },
228 + "concat-map": {
229 + "version": "0.0.1",
230 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
231 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
232 + "dev": true
233 + },
234 + "console-clear": {
235 + "version": "1.1.1",
236 + "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz",
237 + "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ=="
238 + },
239 + "deepmerge": {
240 + "version": "4.2.2",
241 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
242 + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
243 + "dev": true
244 + },
245 + "engine.io-parser": {
246 + "version": "5.0.1",
247 + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.1.tgz",
248 + "integrity": "sha512-j4p3WwJrG2k92VISM0op7wiq60vO92MlF3CRGxhKHy9ywG1/Dkc72g0dXeDQ+//hrcDn8gqQzoEkdO9FN0d9AA==",
249 + "requires": {
250 + "base64-arraybuffer": "~1.0.1"
251 + }
252 + },
253 + "escape-string-regexp": {
254 + "version": "1.0.5",
255 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
256 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
257 + "dev": true
258 + },
259 + "estree-walker": {
260 + "version": "2.0.2",
261 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
262 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
263 + "dev": true
264 + },
265 + "fill-range": {
266 + "version": "7.0.1",
267 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
268 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
269 + "dev": true,
270 + "requires": {
271 + "to-regex-range": "^5.0.1"
272 + }
273 + },
274 + "fs.realpath": {
275 + "version": "1.0.0",
276 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
277 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
278 + "dev": true
279 + },
280 + "fsevents": {
281 + "version": "2.3.2",
282 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
283 + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
284 + "dev": true,
285 + "optional": true
286 + },
287 + "function-bind": {
288 + "version": "1.1.1",
289 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
290 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
291 + "dev": true
292 + },
293 + "get-port": {
294 + "version": "3.2.0",
295 + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
296 + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw="
297 + },
298 + "glob": {
299 + "version": "7.2.0",
300 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
301 + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
302 + "dev": true,
303 + "requires": {
304 + "fs.realpath": "^1.0.0",
305 + "inflight": "^1.0.4",
306 + "inherits": "2",
307 + "minimatch": "^3.0.4",
308 + "once": "^1.3.0",
309 + "path-is-absolute": "^1.0.0"
310 + }
311 + },
312 + "glob-parent": {
313 + "version": "5.1.2",
314 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
315 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
316 + "dev": true,
317 + "requires": {
318 + "is-glob": "^4.0.1"
319 + }
320 + },
321 + "has": {
322 + "version": "1.0.3",
323 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
324 + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
325 + "dev": true,
326 + "requires": {
327 + "function-bind": "^1.1.1"
328 + }
329 + },
330 + "has-flag": {
331 + "version": "3.0.0",
332 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
333 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
334 + "dev": true
335 + },
336 + "inflight": {
337 + "version": "1.0.6",
338 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
339 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
340 + "dev": true,
341 + "requires": {
342 + "once": "^1.3.0",
343 + "wrappy": "1"
344 + }
345 + },
346 + "inherits": {
347 + "version": "2.0.4",
348 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
349 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
350 + "dev": true
351 + },
352 + "is-binary-path": {
353 + "version": "2.1.0",
354 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
355 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
356 + "dev": true,
357 + "requires": {
358 + "binary-extensions": "^2.0.0"
359 + }
360 + },
361 + "is-core-module": {
362 + "version": "2.8.0",
363 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz",
364 + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==",
365 + "dev": true,
366 + "requires": {
367 + "has": "^1.0.3"
368 + }
369 + },
370 + "is-extglob": {
371 + "version": "2.1.1",
372 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
373 + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
374 + "dev": true
375 + },
376 + "is-glob": {
377 + "version": "4.0.3",
378 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
379 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
380 + "dev": true,
381 + "requires": {
382 + "is-extglob": "^2.1.1"
383 + }
384 + },
385 + "is-module": {
386 + "version": "1.0.0",
387 + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
388 + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=",
389 + "dev": true
390 + },
391 + "is-number": {
392 + "version": "7.0.0",
393 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
394 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
395 + "dev": true
396 + },
397 + "is-reference": {
398 + "version": "1.2.1",
399 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
400 + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
401 + "dev": true,
402 + "requires": {
403 + "@types/estree": "*"
404 + }
405 + },
406 + "jest-worker": {
407 + "version": "26.6.2",
408 + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
409 + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
410 + "dev": true,
411 + "requires": {
412 + "@types/node": "*",
413 + "merge-stream": "^2.0.0",
414 + "supports-color": "^7.0.0"
415 + },
416 + "dependencies": {
417 + "has-flag": {
418 + "version": "4.0.0",
419 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
420 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
421 + "dev": true
422 + },
423 + "supports-color": {
424 + "version": "7.2.0",
425 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
426 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
427 + "dev": true,
428 + "requires": {
429 + "has-flag": "^4.0.0"
430 + }
431 + }
432 + }
433 + },
434 + "js-tokens": {
435 + "version": "4.0.0",
436 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
437 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
438 + "dev": true
439 + },
440 + "kleur": {
441 + "version": "3.0.3",
442 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
443 + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
444 + },
445 + "livereload": {
446 + "version": "0.9.3",
447 + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
448 + "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
449 + "dev": true,
450 + "requires": {
451 + "chokidar": "^3.5.0",
452 + "livereload-js": "^3.3.1",
453 + "opts": ">= 1.2.0",
454 + "ws": "^7.4.3"
455 + }
456 + },
457 + "livereload-js": {
458 + "version": "3.3.2",
459 + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz",
460 + "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==",
461 + "dev": true
462 + },
463 + "local-access": {
464 + "version": "1.1.0",
465 + "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz",
466 + "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw=="
467 + },
468 + "magic-string": {
469 + "version": "0.25.7",
470 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
471 + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
472 + "dev": true,
473 + "requires": {
474 + "sourcemap-codec": "^1.4.4"
475 + }
476 + },
477 + "merge-stream": {
478 + "version": "2.0.0",
479 + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
480 + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
481 + "dev": true
482 + },
483 + "mime": {
484 + "version": "2.6.0",
485 + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
486 + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
487 + },
488 + "minimatch": {
489 + "version": "3.0.4",
490 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
491 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
492 + "dev": true,
493 + "requires": {
494 + "brace-expansion": "^1.1.7"
495 + }
496 + },
497 + "mri": {
498 + "version": "1.2.0",
499 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
500 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA=="
501 + },
502 + "normalize-path": {
503 + "version": "3.0.0",
504 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
505 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
506 + "dev": true
507 + },
508 + "once": {
509 + "version": "1.4.0",
510 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
511 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
512 + "dev": true,
513 + "requires": {
514 + "wrappy": "1"
515 + }
516 + },
517 + "opts": {
518 + "version": "2.0.2",
519 + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
520 + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
521 + "dev": true
522 + },
523 + "path-is-absolute": {
524 + "version": "1.0.1",
525 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
526 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
527 + "dev": true
528 + },
529 + "path-parse": {
530 + "version": "1.0.7",
531 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
532 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
533 + "dev": true
534 + },
535 + "picomatch": {
536 + "version": "2.3.0",
537 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
538 + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
539 + "dev": true
540 + },
541 + "randombytes": {
542 + "version": "2.1.0",
543 + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
544 + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
545 + "dev": true,
546 + "requires": {
547 + "safe-buffer": "^5.1.0"
548 + }
549 + },
550 + "readdirp": {
551 + "version": "3.6.0",
552 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
553 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
554 + "dev": true,
555 + "requires": {
556 + "picomatch": "^2.2.1"
557 + }
558 + },
559 + "require-relative": {
560 + "version": "0.8.7",
561 + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
562 + "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
563 + "dev": true
564 + },
565 + "resolve": {
566 + "version": "1.20.0",
567 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
568 + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
569 + "dev": true,
570 + "requires": {
571 + "is-core-module": "^2.2.0",
572 + "path-parse": "^1.0.6"
573 + }
574 + },
575 + "rollup": {
576 + "version": "2.59.0",
577 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.59.0.tgz",
578 + "integrity": "sha512-l7s90JQhCQ6JyZjKgo7Lq1dKh2RxatOM+Jr6a9F7WbS9WgKbocyUSeLmZl8evAse7y96Ae98L2k1cBOwWD8nHw==",
579 + "dev": true,
580 + "requires": {
581 + "fsevents": "~2.3.2"
582 + }
583 + },
584 + "rollup-plugin-css-only": {
585 + "version": "3.1.0",
586 + "resolved": "https://registry.npmjs.org/rollup-plugin-css-only/-/rollup-plugin-css-only-3.1.0.tgz",
587 + "integrity": "sha512-TYMOE5uoD76vpj+RTkQLzC9cQtbnJNktHPB507FzRWBVaofg7KhIqq1kGbcVOadARSozWF883Ho9KpSPKH8gqA==",
588 + "dev": true,
589 + "requires": {
590 + "@rollup/pluginutils": "4"
591 + },
592 + "dependencies": {
593 + "@rollup/pluginutils": {
594 + "version": "4.1.1",
595 + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.1.1.tgz",
596 + "integrity": "sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==",
597 + "dev": true,
598 + "requires": {
599 + "estree-walker": "^2.0.1",
600 + "picomatch": "^2.2.2"
601 + }
602 + }
603 + }
604 + },
605 + "rollup-plugin-livereload": {
606 + "version": "2.0.5",
607 + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz",
608 + "integrity": "sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==",
609 + "dev": true,
610 + "requires": {
611 + "livereload": "^0.9.1"
612 + }
613 + },
614 + "rollup-plugin-svelte": {
615 + "version": "7.1.0",
616 + "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.1.0.tgz",
617 + "integrity": "sha512-vopCUq3G+25sKjwF5VilIbiY6KCuMNHP1PFvx2Vr3REBNMDllKHFZN2B9jwwC+MqNc3UPKkjXnceLPEjTjXGXg==",
618 + "dev": true,
619 + "requires": {
620 + "require-relative": "^0.8.7",
621 + "rollup-pluginutils": "^2.8.2"
622 + }
623 + },
624 + "rollup-plugin-terser": {
625 + "version": "7.0.2",
626 + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
627 + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
628 + "dev": true,
629 + "requires": {
630 + "@babel/code-frame": "^7.10.4",
631 + "jest-worker": "^26.2.1",
632 + "serialize-javascript": "^4.0.0",
633 + "terser": "^5.0.0"
634 + }
635 + },
636 + "rollup-pluginutils": {
637 + "version": "2.8.2",
638 + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
639 + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
640 + "dev": true,
641 + "requires": {
642 + "estree-walker": "^0.6.1"
643 + },
644 + "dependencies": {
645 + "estree-walker": {
646 + "version": "0.6.1",
647 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
648 + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
649 + "dev": true
650 + }
651 + }
652 + },
653 + "sade": {
654 + "version": "1.7.4",
655 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz",
656 + "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==",
657 + "requires": {
658 + "mri": "^1.1.0"
659 + }
660 + },
661 + "safe-buffer": {
662 + "version": "5.2.1",
663 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
664 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
665 + "dev": true
666 + },
667 + "semiver": {
668 + "version": "1.1.0",
669 + "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz",
670 + "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg=="
671 + },
672 + "serialize-javascript": {
673 + "version": "4.0.0",
674 + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
675 + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
676 + "dev": true,
677 + "requires": {
678 + "randombytes": "^2.1.0"
679 + }
680 + },
681 + "sirv": {
682 + "version": "1.0.18",
683 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz",
684 + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==",
685 + "requires": {
686 + "@polka/url": "^1.0.0-next.20",
687 + "mime": "^2.3.1",
688 + "totalist": "^1.0.0"
689 + }
690 + },
691 + "sirv-cli": {
692 + "version": "1.0.14",
693 + "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-1.0.14.tgz",
694 + "integrity": "sha512-yyUTNr984ANKDloqepkYbBSqvx3buwYg2sQKPWjSU+IBia5loaoka2If8N9CMwt8AfP179cdEl7kYJ//iWJHjQ==",
695 + "requires": {
696 + "console-clear": "^1.1.0",
697 + "get-port": "^3.2.0",
698 + "kleur": "^3.0.0",
699 + "local-access": "^1.0.1",
700 + "sade": "^1.6.0",
701 + "semiver": "^1.0.0",
702 + "sirv": "^1.0.13",
703 + "tinydate": "^1.0.0"
704 + }
705 + },
706 + "source-map": {
707 + "version": "0.7.3",
708 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
709 + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
710 + "dev": true
711 + },
712 + "source-map-support": {
713 + "version": "0.5.20",
714 + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
715 + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
716 + "dev": true,
717 + "requires": {
718 + "buffer-from": "^1.0.0",
719 + "source-map": "^0.6.0"
720 + },
721 + "dependencies": {
722 + "source-map": {
723 + "version": "0.6.1",
724 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
725 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
726 + "dev": true
727 + }
728 + }
729 + },
730 + "sourcemap-codec": {
731 + "version": "1.4.8",
732 + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
733 + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
734 + "dev": true
735 + },
736 + "supports-color": {
737 + "version": "5.5.0",
738 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
739 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
740 + "dev": true,
741 + "requires": {
742 + "has-flag": "^3.0.0"
743 + }
744 + },
745 + "svelte": {
746 + "version": "3.44.1",
747 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.44.1.tgz",
748 + "integrity": "sha512-4DrCEJoBvdR689efHNSxIQn2pnFwB7E7j2yLEJtHE/P8hxwZWIphCtJ8are7bjl/iVMlcEf5uh5pJ68IwR09vQ==",
749 + "dev": true
750 + },
751 + "terser": {
752 + "version": "5.9.0",
753 + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
754 + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
755 + "dev": true,
756 + "requires": {
757 + "commander": "^2.20.0",
758 + "source-map": "~0.7.2",
759 + "source-map-support": "~0.5.20"
760 + }
761 + },
762 + "tinydate": {
763 + "version": "1.3.0",
764 + "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz",
765 + "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w=="
766 + },
767 + "to-regex-range": {
768 + "version": "5.0.1",
769 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
770 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
771 + "dev": true,
772 + "requires": {
773 + "is-number": "^7.0.0"
774 + }
775 + },
776 + "totalist": {
777 + "version": "1.1.0",
778 + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
779 + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g=="
780 + },
781 + "wrappy": {
782 + "version": "1.0.2",
783 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
784 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
785 + "dev": true
786 + },
787 + "ws": {
788 + "version": "7.5.5",
789 + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz",
790 + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==",
791 + "dev": true
792 + }
793 + }
794 +}
1 { 1 {
2 - "name": "tft", 2 + "name": "svelte-app",
3 - "version": "0.0.0", 3 + "version": "1.0.0",
4 "private": true, 4 "private": true,
5 "scripts": { 5 "scripts": {
6 - "start": "node ./bin/www" 6 + "build": "rollup -c",
7 + "dev": "rollup -c -w",
8 + "start": "sirv public --no-clear"
9 + },
10 + "devDependencies": {
11 + "@rollup/plugin-commonjs": "^17.0.0",
12 + "@rollup/plugin-node-resolve": "^11.0.0",
13 + "rollup": "^2.3.4",
14 + "rollup-plugin-css-only": "^3.1.0",
15 + "rollup-plugin-livereload": "^2.0.0",
16 + "rollup-plugin-svelte": "^7.0.0",
17 + "rollup-plugin-terser": "^7.0.0",
18 + "svelte": "^3.0.0"
7 }, 19 },
8 "dependencies": { 20 "dependencies": {
9 - "cookie-parser": "~1.4.4", 21 + "engine.io-parser": "^5.0.1",
10 - "debug": "~2.6.9", 22 + "sirv-cli": "^1.0.0"
11 - "ejs": "~2.6.1",
12 - "express": "~4.16.1",
13 - "http-errors": "~1.6.3",
14 - "morgan": "~1.9.1"
15 } 23 }
16 } 24 }
......
1 -body {
2 - padding: 50px;
3 - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
4 -}
5 -
6 -a {
7 - color: #00B7FF;
8 -}
1 +import svelte from 'rollup-plugin-svelte';
2 +import commonjs from '@rollup/plugin-commonjs';
3 +import resolve from '@rollup/plugin-node-resolve';
4 +import livereload from 'rollup-plugin-livereload';
5 +import { terser } from 'rollup-plugin-terser';
6 +import css from 'rollup-plugin-css-only';
7 +
8 +const production = !process.env.ROLLUP_WATCH;
9 +
10 +function serve() {
11 + let server;
12 +
13 + function toExit() {
14 + if (server) server.kill(0);
15 + }
16 +
17 + return {
18 + writeBundle() {
19 + if (server) return;
20 + server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], {
21 + stdio: ['ignore', 'inherit', 'inherit'],
22 + shell: true
23 + });
24 +
25 + process.on('SIGTERM', toExit);
26 + process.on('exit', toExit);
27 + }
28 + };
29 +}
30 +
31 +export default {
32 + input: 'src/main.js',
33 + output: {
34 + sourcemap: true,
35 + format: 'iife',
36 + name: 'app',
37 + file: 'public/build/bundle.js'
38 + },
39 + plugins: [
40 + svelte({
41 + compilerOptions: {
42 + // enable run-time checks when not in production
43 + dev: !production
44 + }
45 + }),
46 + // we'll extract any component CSS out into
47 + // a separate file - better for performance
48 + css({ output: 'bundle.css' }),
49 +
50 + // If you have external dependencies installed from
51 + // npm, you'll most likely need these plugins. In
52 + // some cases you'll need additional configuration -
53 + // consult the documentation for details:
54 + // https://github.com/rollup/plugins/tree/master/packages/commonjs
55 + resolve({
56 + browser: true,
57 + dedupe: ['svelte']
58 + }),
59 + commonjs(),
60 +
61 + // In dev mode, call `npm run start` once
62 + // the bundle has been generated
63 + !production && serve(),
64 +
65 + // Watch the `public` directory and refresh the
66 + // browser on changes when not in production
67 + !production && livereload('public'),
68 +
69 + // If we're building for production (npm run build
70 + // instead of npm run dev), minify
71 + production && terser()
72 + ],
73 + watch: {
74 + clearScreen: false
75 + }
76 +};
1 -var express = require('express');
2 -var router = express.Router();
3 -
4 -/* GET home page. */
5 -router.get('/', function(req, res, next) {
6 - res.render('index', { title: 'Express' });
7 -});
8 -
9 -module.exports = router;
1 -var express = require('express');
2 -var router = express.Router();
3 -
4 -/* GET users listing. */
5 -router.get('/', function(req, res, next) {
6 - res.send('respond with a resource');
7 -});
8 -
9 -module.exports = router;
1 +// @ts-check
2 +
3 +/** This script modifies the project to support TS code in .svelte files like:
4 +
5 + <script lang="ts">
6 + export let name: string;
7 + </script>
8 +
9 + As well as validating the code for CI.
10 + */
11 +
12 +/** To work on this script:
13 + rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template
14 +*/
15 +
16 +const fs = require("fs")
17 +const path = require("path")
18 +const { argv } = require("process")
19 +
20 +const projectRoot = argv[2] || path.join(__dirname, "..")
21 +
22 +// Add deps to pkg.json
23 +const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8"))
24 +packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, {
25 + "svelte-check": "^2.0.0",
26 + "svelte-preprocess": "^4.0.0",
27 + "@rollup/plugin-typescript": "^8.0.0",
28 + "typescript": "^4.0.0",
29 + "tslib": "^2.0.0",
30 + "@tsconfig/svelte": "^2.0.0"
31 +})
32 +
33 +// Add script for checking
34 +packageJSON.scripts = Object.assign(packageJSON.scripts, {
35 + "check": "svelte-check --tsconfig ./tsconfig.json"
36 +})
37 +
38 +// Write the package JSON
39 +fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " "))
40 +
41 +// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too
42 +const beforeMainJSPath = path.join(projectRoot, "src", "main.js")
43 +const afterMainTSPath = path.join(projectRoot, "src", "main.ts")
44 +fs.renameSync(beforeMainJSPath, afterMainTSPath)
45 +
46 +// Switch the app.svelte file to use TS
47 +const appSveltePath = path.join(projectRoot, "src", "App.svelte")
48 +let appFile = fs.readFileSync(appSveltePath, "utf8")
49 +appFile = appFile.replace("<script>", '<script lang="ts">')
50 +appFile = appFile.replace("export let name;", 'export let name: string;')
51 +fs.writeFileSync(appSveltePath, appFile)
52 +
53 +// Edit rollup config
54 +const rollupConfigPath = path.join(projectRoot, "rollup.config.js")
55 +let rollupConfig = fs.readFileSync(rollupConfigPath, "utf8")
56 +
57 +// Edit imports
58 +rollupConfig = rollupConfig.replace(`'rollup-plugin-terser';`, `'rollup-plugin-terser';
59 +import sveltePreprocess from 'svelte-preprocess';
60 +import typescript from '@rollup/plugin-typescript';`)
61 +
62 +// Replace name of entry point
63 +rollupConfig = rollupConfig.replace(`'src/main.js'`, `'src/main.ts'`)
64 +
65 +// Add preprocessor
66 +rollupConfig = rollupConfig.replace(
67 + 'compilerOptions:',
68 + 'preprocess: sveltePreprocess({ sourceMap: !production }),\n\t\t\tcompilerOptions:'
69 +);
70 +
71 +// Add TypeScript
72 +rollupConfig = rollupConfig.replace(
73 + 'commonjs(),',
74 + 'commonjs(),\n\t\ttypescript({\n\t\t\tsourceMap: !production,\n\t\t\tinlineSources: !production\n\t\t}),'
75 +);
76 +fs.writeFileSync(rollupConfigPath, rollupConfig)
77 +
78 +// Add TSConfig
79 +const tsconfig = `{
80 + "extends": "@tsconfig/svelte/tsconfig.json",
81 +
82 + "include": ["src/**/*"],
83 + "exclude": ["node_modules/*", "__sapper__/*", "public/*"]
84 +}`
85 +const tsconfigPath = path.join(projectRoot, "tsconfig.json")
86 +fs.writeFileSync(tsconfigPath, tsconfig)
87 +
88 +// Add global.d.ts
89 +const dtsPath = path.join(projectRoot, "src", "global.d.ts")
90 +fs.writeFileSync(dtsPath, `/// <reference types="svelte" />`)
91 +
92 +// Delete this script, but not during testing
93 +if (!argv[2]) {
94 + // Remove the script
95 + fs.unlinkSync(path.join(__filename))
96 +
97 + // Check for Mac's DS_store file, and if it's the only one left remove it
98 + const remainingFiles = fs.readdirSync(path.join(__dirname))
99 + if (remainingFiles.length === 1 && remainingFiles[0] === '.DS_store') {
100 + fs.unlinkSync(path.join(__dirname, '.DS_store'))
101 + }
102 +
103 + // Check if the scripts folder is empty
104 + if (fs.readdirSync(path.join(__dirname)).length === 0) {
105 + // Remove the scripts folder
106 + fs.rmdirSync(path.join(__dirname))
107 + }
108 +}
109 +
110 +// Adds the extension recommendation
111 +fs.mkdirSync(path.join(projectRoot, ".vscode"), { recursive: true })
112 +fs.writeFileSync(path.join(projectRoot, ".vscode", "extensions.json"), `{
113 + "recommendations": ["svelte.svelte-vscode"]
114 +}
115 +`)
116 +
117 +console.log("Converted to TypeScript.")
118 +
119 +if (fs.existsSync(path.join(projectRoot, "node_modules"))) {
120 + console.log("\nYou will need to re-run your dependency manager to get started.")
121 +}
1 -<h1><%= message %></h1>
2 -<h2><%= error.status %></h2>
3 -<pre><%= error.stack %></pre>
1 -<!DOCTYPE html>
2 -<html>
3 - <head>
4 - <title><%= title %></title>
5 - <link rel='stylesheet' href='/stylesheets/style.css' />
6 - </head>
7 - <body>
8 - <h1><%= title %></h1>
9 - <p>Welcome to <%= title %></p>
10 - </body>
11 -</html>