@liascript/devserver 1.0.9--0.10.8 → 1.0.12--0.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -78,7 +78,7 @@ updated separately, we use two different version, one for the devServer and one
78
78
  for LiaScript.
79
79
 
80
80
  ```text
81
- DevServer: 1.0.9
81
+ DevServer: 1.0.12
82
82
  LiaScript: 0.10.8
83
83
  ```
84
84
 
package/dist/index.js CHANGED
@@ -1,34 +1,180 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ var $9KXPr$minimist = require("minimist");
4
+ var $9KXPr$path = require("path");
3
5
  var $9KXPr$dotenv = require("dotenv");
4
6
  var $9KXPr$express = require("express");
5
- var $9KXPr$open = require("open");
6
7
  var $9KXPr$fs = require("fs");
7
- var $9KXPr$path = require("path");
8
8
  var $9KXPr$cors = require("cors");
9
9
  var $9KXPr$expresshandlebars = require("express-handlebars");
10
- var $9KXPr$minimist = require("minimist");
11
10
  var $9KXPr$ip = require("ip");
11
+ var $9KXPr$open = require("open");
12
12
  var $9KXPr$reloadshjs = require("reloadsh.js");
13
13
 
14
- function $parcel$interopDefault(a) {
15
- return a && a.__esModule ? a.default : a;
16
- }
17
14
 
18
15
 
19
16
 
20
17
 
18
+ var $dbf4313da36ea993$var$__dirname = $9KXPr$path.resolve(__dirname, "../src");
21
19
 
22
20
  $9KXPr$dotenv.config();
23
- const $aa3bf3164f10b283$var$app = ($parcel$interopDefault($9KXPr$express))();
24
21
 
25
22
 
26
23
 
27
- const $aa3bf3164f10b283$var$argv = $9KXPr$minimist(process.argv.slice(2));
28
24
 
29
- const $aa3bf3164f10b283$var$dirname = $aa3bf3164f10b283$var$argv.node_modules || ($parcel$interopDefault($9KXPr$path)).join(__dirname, '../node_modules');
30
- const $aa3bf3164f10b283$var$liascriptPath = ($parcel$interopDefault($9KXPr$path)).resolve(($parcel$interopDefault($9KXPr$path)).join($aa3bf3164f10b283$var$dirname, '@liascript/editor/dist'));
31
- const $aa3bf3164f10b283$var$reloadPath = ($parcel$interopDefault($9KXPr$path)).resolve(($parcel$interopDefault($9KXPr$path)).join($aa3bf3164f10b283$var$dirname, 'reloadsh.js/reloader.browser.js'));
25
+ const $dbf4313da36ea993$var$app = $9KXPr$express();
26
+ var $dbf4313da36ea993$var$dirname = '';
27
+ var $dbf4313da36ea993$var$node_modules;
28
+ var $dbf4313da36ea993$var$reloadPath = '';
29
+ var $dbf4313da36ea993$var$liascriptPath = '';
30
+ var $dbf4313da36ea993$var$serverPointer;
31
+ $dbf4313da36ea993$export$2cd8252107eb640b($dbf4313da36ea993$var$__dirname);
32
+ function $dbf4313da36ea993$export$2cd8252107eb640b(serverPath, nodeModulesPath) {
33
+ $dbf4313da36ea993$var$dirname = serverPath || $9KXPr$path.join($dbf4313da36ea993$var$__dirname, '..');
34
+ $dbf4313da36ea993$var$node_modules = nodeModulesPath || $9KXPr$path.join($dbf4313da36ea993$var$dirname, 'node_modules');
35
+ $dbf4313da36ea993$var$reloadPath = $9KXPr$path.resolve($9KXPr$path.join($dbf4313da36ea993$var$node_modules, 'reloadsh.js/reloader.browser.js'));
36
+ $dbf4313da36ea993$var$liascriptPath = $9KXPr$path.resolve($9KXPr$path.join($dbf4313da36ea993$var$node_modules, '@liascript/editor/dist'));
37
+ }
38
+
39
+ function $dbf4313da36ea993$export$b3571188c770cc5a(port, hostname, input, responsiveVoice, liveReload, openInBrowser, testOnline) {
40
+ port = port || 3000;
41
+ hostname = hostname || 'localhost';
42
+ openInBrowser = openInBrowser || false;
43
+ input = input || '.';
44
+ liveReload = liveReload || false;
45
+ testOnline = testOnline || false;
46
+ var project = {
47
+ path: input,
48
+ readme: undefined
49
+ };
50
+ if (input) {
51
+ const stats = $9KXPr$fs.lstatSync(input);
52
+ // Is it a directory?
53
+ if (stats.isDirectory()) project.path = input;
54
+ else if (stats.isFile()) {
55
+ project.path = $9KXPr$path.dirname(input);
56
+ project.readme = $9KXPr$path.basename(input);
57
+ }
58
+ }
59
+ $dbf4313da36ea993$var$app.set('view engine', 'hbs');
60
+ $dbf4313da36ea993$var$app.engine('hbs', $9KXPr$expresshandlebars({
61
+ layoutsDir: $9KXPr$path.resolve($9KXPr$path.join($dbf4313da36ea993$var$dirname, 'views/layouts')),
62
+ defaultLayout: 'main',
63
+ extname: 'hbs'
64
+ }));
65
+ $dbf4313da36ea993$var$app.set('views', $9KXPr$path.resolve($9KXPr$path.join($dbf4313da36ea993$var$dirname, 'views')));
66
+ $dbf4313da36ea993$var$app.get('/', function(req, res) {
67
+ res.redirect('/home');
68
+ });
69
+ $dbf4313da36ea993$var$app.get('/home*', function(req, res) {
70
+ const currentPath = project.path + '/' + req.params[0];
71
+ const stats = $9KXPr$fs.lstatSync(currentPath);
72
+ // Is it a directory?
73
+ if (stats.isDirectory()) {
74
+ const files = $9KXPr$fs.readdirSync(currentPath).filter((e)=>{
75
+ return e[0] !== '.';
76
+ });
77
+ let basePath = '/home';
78
+ let pathNames = req.params[0].split('/').filter((e)=>{
79
+ return e !== '';
80
+ });
81
+ let paths = [];
82
+ for(let i = 0; i < pathNames.length; i++){
83
+ basePath += '/' + pathNames[i];
84
+ paths.push({
85
+ name: pathNames[i],
86
+ href: basePath
87
+ });
88
+ }
89
+ res.render('main', {
90
+ layout: 'index',
91
+ path: paths,
92
+ file: files.map((file)=>{
93
+ return {
94
+ name: file,
95
+ href: `http://${hostname}:${port}/home${req.params[0]}/${file}`,
96
+ isDirectory: $9KXPr$fs.lstatSync(currentPath + '/' + file).isDirectory()
97
+ };
98
+ }).sort((a, b)=>{
99
+ if (a.isDirectory && !b.isDirectory) return -1;
100
+ else if (!a.isDirectory && b.isDirectory) return 1;
101
+ else {
102
+ if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) return -1;
103
+ else return 1;
104
+ }
105
+ return 0;
106
+ })
107
+ });
108
+ } else if (stats.isFile()) {
109
+ if (req.params[0].toLocaleLowerCase().endsWith('.md')) {
110
+ if (testOnline) res.redirect(`https://LiaScript.github.io/course/?http://${hostname}:${port}/${req.params[0]}`);
111
+ else res.redirect(`/liascript/index.html?http://${hostname}:${port}/${req.params[0]}`);
112
+ } else res.sendFile(req.params[0], {
113
+ root: project.path
114
+ });
115
+ } else res.send('ups, something went wrong');
116
+ });
117
+ $dbf4313da36ea993$var$app.get('/liascript/', function(req, res) {
118
+ res.redirect('/liascript/index.html');
119
+ });
120
+ $dbf4313da36ea993$var$app.get('/liascript/index.html', function(req, res) {
121
+ // ------------------------------------
122
+ if (liveReload && responsiveVoice) $9KXPr$fs.readFile($dbf4313da36ea993$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
123
+ res.send(data.replace('</head>', `<script type='text/javascript' src='/reloader/reloader.js'></script>
124
+ <script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script>
125
+ </head>`));
126
+ });
127
+ else if (liveReload) $9KXPr$fs.readFile($dbf4313da36ea993$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
128
+ res.send(data.replace('</head>', `<script type='text/javascript' src='/reloader/reloader.js'></script></head>`));
129
+ });
130
+ else if (responsiveVoice) $9KXPr$fs.readFile($dbf4313da36ea993$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
131
+ res.send(data.replace('</head>', `<script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script></head>`));
132
+ });
133
+ else res.sendFile($dbf4313da36ea993$var$liascriptPath + '/index.html');
134
+ });
135
+ // load everything from the liascript folder
136
+ $dbf4313da36ea993$var$app.get('/liascript/*', function(req, res) {
137
+ res.sendFile(req.params[0], {
138
+ root: $dbf4313da36ea993$var$liascriptPath
139
+ });
140
+ });
141
+ // ignore this one
142
+ $dbf4313da36ea993$var$app.get('/sw.js', function(req, res) {});
143
+ $dbf4313da36ea993$var$app.get('/favicon.ico', function(req, res) {});
144
+ // pass the reloader, to be used for live updates
145
+ $dbf4313da36ea993$var$app.get('/reloader/reloader.js', function(req, res) {
146
+ res.sendFile($dbf4313da36ea993$var$reloadPath);
147
+ });
148
+ // everything else comes from the current project folder
149
+ $dbf4313da36ea993$var$app.get('/*', $9KXPr$cors(), function(req, res) {
150
+ res.sendFile(req.originalUrl, {
151
+ root: project.path
152
+ });
153
+ });
154
+ let localURL = 'http://' + hostname + ':' + port;
155
+ if (project.path && project.readme) localURL += '/liascript/index.html?http://' + hostname + ':' + port + '/' + project.readme;
156
+ if (testOnline && project.readme) localURL = 'https://LiaScript.github.io/course/?http://' + hostname + ':' + port + '/' + project.readme;
157
+ const server = $9KXPr$reloadshjs($dbf4313da36ea993$var$app, liveReload ? [
158
+ $9KXPr$path.join(project.path, project.readme || '')
159
+ ] : []);
160
+ if (liveReload) console.log(`✨ watching for changes on: "${$9KXPr$path.join(project.path || '', project.readme || '')}"`);
161
+ server.on('error', (e)=>{
162
+ throw e;
163
+ });
164
+ server.listen(port);
165
+ if (openInBrowser) $9KXPr$open(localURL);
166
+ console.log('📡 starting server');
167
+ console.log(` - local: ${localURL}`);
168
+ console.log(` - on your network: ${localURL.replace(hostname, $9KXPr$ip.address())}`);
169
+ $dbf4313da36ea993$var$serverPointer = server;
170
+ }
171
+ function $dbf4313da36ea993$export$fa6813432f753b0d() {
172
+ if ($dbf4313da36ea993$var$serverPointer) $dbf4313da36ea993$var$serverPointer.close();
173
+ }
174
+
175
+
176
+
177
+ const $aa3bf3164f10b283$var$argv = $9KXPr$minimist(process.argv.slice(2));
32
178
  function $aa3bf3164f10b283$var$liascript() {
33
179
  console.log(' _ _ ____ _ _');
34
180
  console.log('| | (_) __ _/ ___| ___ _ __(_)_ __ | |_');
@@ -39,7 +185,7 @@ function $aa3bf3164f10b283$var$liascript() {
39
185
  console.log();
40
186
  }
41
187
  if ($aa3bf3164f10b283$var$argv.v || $aa3bf3164f10b283$var$argv.version) {
42
- console.log('DevServer: 1.0.9');
188
+ console.log('DevServer: 1.0.12');
43
189
  console.log('LiaScript: 0.10.8');
44
190
  process.exit();
45
191
  }
@@ -62,144 +208,14 @@ if ($aa3bf3164f10b283$var$argv.h || $aa3bf3164f10b283$var$argv.help) {
62
208
  console.log(' https://responsivevoice.org');
63
209
  process.exit();
64
210
  }
65
- const $aa3bf3164f10b283$var$port = $aa3bf3164f10b283$var$argv.p || $aa3bf3164f10b283$var$argv.port || 3000;
66
- const $aa3bf3164f10b283$var$hostname = $aa3bf3164f10b283$var$argv.n || $aa3bf3164f10b283$var$argv.hostname || 'localhost';
67
- const $aa3bf3164f10b283$var$openInBrowser = $aa3bf3164f10b283$var$argv.o || $aa3bf3164f10b283$var$argv.open;
68
- const $aa3bf3164f10b283$var$input = $aa3bf3164f10b283$var$argv.i || $aa3bf3164f10b283$var$argv.input || '.';
69
- const $aa3bf3164f10b283$var$liveReload = $aa3bf3164f10b283$var$argv.l || $aa3bf3164f10b283$var$argv.live || false;
70
- const $aa3bf3164f10b283$var$testOnline = $aa3bf3164f10b283$var$argv.t || $aa3bf3164f10b283$var$argv.test;
71
- let $aa3bf3164f10b283$var$responsiveVoice;
72
- if ($aa3bf3164f10b283$var$argv.r || $aa3bf3164f10b283$var$argv.responsiveVoice) {
73
- let active = $aa3bf3164f10b283$var$argv.r || $aa3bf3164f10b283$var$argv.responsiveVoice;
74
- if (typeof active === 'string') $aa3bf3164f10b283$var$responsiveVoice = active;
75
- else $aa3bf3164f10b283$var$responsiveVoice = process.env.RESPONSIVE_VOICE_KEY;
76
- }
77
- var $aa3bf3164f10b283$var$project = {
78
- path: null,
79
- readme: null
80
- };
81
- if ($aa3bf3164f10b283$var$input) {
82
- const stats = ($parcel$interopDefault($9KXPr$fs)).lstatSync($aa3bf3164f10b283$var$input);
83
- // Is it a directory?
84
- if (stats.isDirectory()) $aa3bf3164f10b283$var$project.path = $aa3bf3164f10b283$var$input;
85
- else if (stats.isFile()) {
86
- $aa3bf3164f10b283$var$project.path = ($parcel$interopDefault($9KXPr$path)).dirname($aa3bf3164f10b283$var$input);
87
- $aa3bf3164f10b283$var$project.readme = ($parcel$interopDefault($9KXPr$path)).basename($aa3bf3164f10b283$var$input);
88
- }
89
- }
90
- $aa3bf3164f10b283$var$app.set('view engine', 'hbs');
91
- $aa3bf3164f10b283$var$app.engine('hbs', $9KXPr$expresshandlebars({
92
- layoutsDir: ($parcel$interopDefault($9KXPr$path)).resolve(__dirname + '/../views/layouts'),
93
- defaultLayout: 'main',
94
- extname: 'hbs'
95
- }));
96
- $aa3bf3164f10b283$var$app.set('views', ($parcel$interopDefault($9KXPr$path)).resolve(__dirname + '/../views'));
97
- $aa3bf3164f10b283$var$app.get('/', function(req, res) {
98
- res.redirect('/home');
99
- });
100
- $aa3bf3164f10b283$var$app.get('/home*', function(req, res) {
101
- const currentPath = $aa3bf3164f10b283$var$project.path + '/' + req.params[0];
102
- const stats = ($parcel$interopDefault($9KXPr$fs)).lstatSync(currentPath);
103
- // Is it a directory?
104
- if (stats.isDirectory()) {
105
- const files = ($parcel$interopDefault($9KXPr$fs)).readdirSync(currentPath).filter((e)=>{
106
- return e[0] !== '.';
107
- });
108
- let basePath = '/home';
109
- let pathNames = req.params[0].split('/').filter((e)=>{
110
- return e !== '';
111
- });
112
- let paths = [];
113
- for(let i = 0; i < pathNames.length; i++){
114
- basePath += '/' + pathNames[i];
115
- paths.push({
116
- name: pathNames[i],
117
- href: basePath
118
- });
119
- }
120
- res.render('main', {
121
- layout: 'index',
122
- path: paths,
123
- file: files.map((file)=>{
124
- return {
125
- name: file,
126
- href: `http://${$aa3bf3164f10b283$var$hostname}:${$aa3bf3164f10b283$var$port}/home${req.params[0]}/${file}`,
127
- isDirectory: ($parcel$interopDefault($9KXPr$fs)).lstatSync(currentPath + '/' + file).isDirectory()
128
- };
129
- }).sort((a, b)=>{
130
- if (a.isDirectory && !b.isDirectory) return -1;
131
- else if (!a.isDirectory && b.isDirectory) return 1;
132
- else {
133
- if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) return -1;
134
- else return 1;
135
- }
136
- return 0;
137
- })
138
- });
139
- } else if (stats.isFile()) {
140
- if (req.params[0].toLocaleLowerCase().endsWith('.md')) {
141
- if ($aa3bf3164f10b283$var$testOnline) res.redirect(`https://LiaScript.github.io/course/?http://${$aa3bf3164f10b283$var$hostname}:${$aa3bf3164f10b283$var$port}/${req.params[0]}`);
142
- else res.redirect(`/liascript/index.html?http://${$aa3bf3164f10b283$var$hostname}:${$aa3bf3164f10b283$var$port}/${req.params[0]}`);
143
- } else res.sendFile(req.params[0], {
144
- root: $aa3bf3164f10b283$var$project.path
145
- });
146
- } else res.send('ups, something went wrong');
147
- });
148
- $aa3bf3164f10b283$var$app.get('/liascript/', function(req, res) {
149
- res.redirect('/liascript/index.html');
150
- });
151
- $aa3bf3164f10b283$var$app.get('/liascript/index.html', function(req, res) {
152
- // ------------------------------------
153
- if ($aa3bf3164f10b283$var$liveReload && $aa3bf3164f10b283$var$responsiveVoice) ($parcel$interopDefault($9KXPr$fs)).readFile($aa3bf3164f10b283$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
154
- res.send(data.replace('</head>', `<script type='text/javascript' src='/reloader/reloader.js'></script>
155
- <script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${$aa3bf3164f10b283$var$responsiveVoice}'></script>
156
- </head>`));
157
- });
158
- else if ($aa3bf3164f10b283$var$liveReload) ($parcel$interopDefault($9KXPr$fs)).readFile($aa3bf3164f10b283$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
159
- res.send(data.replace('</head>', `<script type='text/javascript' src='/reloader/reloader.js'></script></head>`));
160
- });
161
- else if ($aa3bf3164f10b283$var$responsiveVoice) ($parcel$interopDefault($9KXPr$fs)).readFile($aa3bf3164f10b283$var$liascriptPath + '/index.html', 'utf8', function(err, data) {
162
- res.send(data.replace('</head>', `<script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${$aa3bf3164f10b283$var$responsiveVoice}'></script></head>`));
163
- });
164
- else res.sendFile($aa3bf3164f10b283$var$liascriptPath + '/index.html');
165
- });
166
- // load everything from the liascript folder
167
- $aa3bf3164f10b283$var$app.get('/liascript/*', function(req, res) {
168
- res.sendFile(req.params[0], {
169
- root: $aa3bf3164f10b283$var$liascriptPath
170
- });
171
- });
172
- // ignore this one
173
- $aa3bf3164f10b283$var$app.get('/sw.js', function(req, res) {});
174
- $aa3bf3164f10b283$var$app.get('/favicon.ico', function(req, res) {});
175
- // pass the reloader, to be used for live updates
176
- $aa3bf3164f10b283$var$app.get('/reloader/reloader.js', function(req, res) {
177
- res.sendFile($aa3bf3164f10b283$var$reloadPath);
178
- });
179
- // everything else comes from the current project folder
180
- $aa3bf3164f10b283$var$app.get('/*', $9KXPr$cors(), function(req, res) {
181
- res.sendFile(req.originalUrl, {
182
- root: $aa3bf3164f10b283$var$project.path
183
- });
184
- });
185
- let $aa3bf3164f10b283$var$localURL = 'http://' + $aa3bf3164f10b283$var$hostname + ':' + $aa3bf3164f10b283$var$port;
186
- if ($aa3bf3164f10b283$var$project.path && $aa3bf3164f10b283$var$project.readme) $aa3bf3164f10b283$var$localURL += '/liascript/index.html?http://' + $aa3bf3164f10b283$var$hostname + ':' + $aa3bf3164f10b283$var$port + '/' + $aa3bf3164f10b283$var$project.readme;
187
- if ($aa3bf3164f10b283$var$testOnline && $aa3bf3164f10b283$var$project.readme) $aa3bf3164f10b283$var$localURL = 'https://LiaScript.github.io/course/?http://' + $aa3bf3164f10b283$var$hostname + ':' + $aa3bf3164f10b283$var$port + '/' + $aa3bf3164f10b283$var$project.readme;
188
211
  $aa3bf3164f10b283$var$liascript();
189
-
190
- const $aa3bf3164f10b283$var$server = $9KXPr$reloadshjs($aa3bf3164f10b283$var$app, $aa3bf3164f10b283$var$liveReload ? [
191
- ($parcel$interopDefault($9KXPr$path)).join($aa3bf3164f10b283$var$project.path, $aa3bf3164f10b283$var$project.readme || '')
192
- ] : []);
193
- if ($aa3bf3164f10b283$var$liveReload) console.log(`✨ watching for changes on: "${($parcel$interopDefault($9KXPr$path)).join($aa3bf3164f10b283$var$project.path, $aa3bf3164f10b283$var$project.readme || '')}"`);
194
- $aa3bf3164f10b283$var$server.on('error', (e)=>{
195
- console.error('🚨 error =>', e.message);
212
+ $dbf4313da36ea993$export$2cd8252107eb640b($aa3bf3164f10b283$var$argv.node_modules);
213
+ try {
214
+ $dbf4313da36ea993$export$b3571188c770cc5a($aa3bf3164f10b283$var$argv.p || $aa3bf3164f10b283$var$argv.port, $aa3bf3164f10b283$var$argv.n || $aa3bf3164f10b283$var$argv.hostname, $aa3bf3164f10b283$var$argv.i || $aa3bf3164f10b283$var$argv.input, $aa3bf3164f10b283$var$argv.r || $aa3bf3164f10b283$var$argv.responsiveVoice || process.env.RESPONSIVE_VOICE_KEY, $aa3bf3164f10b283$var$argv.l || $aa3bf3164f10b283$var$argv.live, $aa3bf3164f10b283$var$argv.o || $aa3bf3164f10b283$var$argv.open, $aa3bf3164f10b283$var$argv.t || $aa3bf3164f10b283$var$argv.test);
215
+ } catch (e) {
216
+ console.error('Error: ', e.message);
196
217
  process.exit();
197
- });
198
- $aa3bf3164f10b283$var$server.listen($aa3bf3164f10b283$var$port);
199
- if ($aa3bf3164f10b283$var$openInBrowser) ($parcel$interopDefault($9KXPr$open))($aa3bf3164f10b283$var$localURL);
200
- console.log('📡 starting server');
201
- console.log(` - local: ${$aa3bf3164f10b283$var$localURL}`);
202
- console.log(` - on your network: ${$aa3bf3164f10b283$var$localURL.replace($aa3bf3164f10b283$var$localURL, $9KXPr$ip.address())}`);
218
+ }
203
219
  console.log('✨ hit Ctrl-c to close the server');
204
220
 
205
221
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/index.ts"],"sourcesContent":["require('dotenv').config()\nimport express from 'express'\nconst app = express()\nimport doOpen from 'open'\nimport fs from 'fs'\nimport path from 'path'\nconst cors = require('cors')\nconst handlebars = require('express-handlebars')\n\nconst argv = require('minimist')(process.argv.slice(2))\nconst ip = require('ip')\n\nconst dirname = argv.node_modules || path.join(__dirname, '../node_modules')\n\nconst liascriptPath = path.resolve(path.join(dirname, '@liascript/editor/dist'))\n\nconst reloadPath = path.resolve(\n path.join(dirname, 'reloadsh.js/reloader.browser.js')\n)\n\nfunction liascript() {\n console.log(' _ _ ____ _ _')\n console.log('| | (_) __ _/ ___| ___ _ __(_)_ __ | |_')\n console.log(\"| | | |/ _` \\\\___ \\\\ / __| '__| | '_ \\\\| __|\")\n console.log('| |___| | (_| |___) | (__| | | | |_) | |_ ')\n console.log('|_____|_|\\\\__,_|____/ \\\\___|_| |_| .__/ \\\\__|')\n console.log(' |_|')\n console.log()\n}\n\nif (argv.v || argv.version) {\n console.log('DevServer: 1.0.9')\n console.log('LiaScript: 0.10.8')\n process.exit()\n}\n\nif (argv.h || argv.help) {\n liascript()\n\n console.log('-h --help show this help')\n console.log('-v --version show version information')\n console.log('-i --input input README.md file or folder (default: .)')\n console.log('-n --hostname hostname of your server (default: localhost)')\n console.log('-p --port used port number (default: 3000)')\n console.log('-l --live do live reload on file change')\n console.log('-o --open open in default browser')\n console.log('-t --test test online on https://LiaScript.github.io')\n console.log()\n console.log('-r --responsiveVoice add optional responsiveVoice support,')\n console.log(' or pass your own responsiveVoice key.')\n console.log(' Adding this feature might slow down')\n console.log(' the reloading speed.')\n console.log(' For more information visit:')\n console.log(' https://responsivevoice.org')\n\n process.exit()\n}\n\nconst port = argv.p || argv.port || 3000\nconst hostname = argv.n || argv.hostname || 'localhost'\nconst openInBrowser = argv.o || argv.open\nconst input = argv.i || argv.input || '.'\nconst liveReload = argv.l || argv.live || false\nconst testOnline = argv.t || argv.test\n\nlet responsiveVoice: string | undefined\n\nif (argv.r || argv.responsiveVoice) {\n let active = argv.r || argv.responsiveVoice\n\n if (typeof active === 'string') {\n responsiveVoice = active\n } else {\n responsiveVoice = process.env.RESPONSIVE_VOICE_KEY\n }\n}\n\nvar project = {\n path: null,\n readme: null,\n}\n\nif (input) {\n const stats = fs.lstatSync(input)\n\n // Is it a directory?\n if (stats.isDirectory()) {\n project.path = input\n } else if (stats.isFile()) {\n project.path = path.dirname(input)\n project.readme = path.basename(input)\n }\n}\n\napp.set('view engine', 'hbs')\napp.engine(\n 'hbs',\n handlebars({\n layoutsDir: path.resolve(__dirname + '/../views/layouts'),\n defaultLayout: 'main',\n extname: 'hbs',\n })\n)\napp.set('views', path.resolve(__dirname + '/../views'))\n\napp.get('/', function (req, res) {\n res.redirect('/home')\n})\n\napp.get('/home*', function (req, res) {\n const currentPath = project.path + '/' + req.params[0]\n\n const stats = fs.lstatSync(currentPath)\n\n // Is it a directory?\n if (stats.isDirectory()) {\n const files = fs.readdirSync(currentPath).filter((e) => {\n return e[0] !== '.'\n })\n\n let basePath = '/home'\n let pathNames = req.params[0].split('/').filter((e) => {\n return e !== ''\n })\n\n let paths: { name: string; href: string }[] = []\n for (let i = 0; i < pathNames.length; i++) {\n basePath += '/' + pathNames[i]\n paths.push({ name: pathNames[i], href: basePath })\n }\n\n res.render('main', {\n layout: 'index',\n path: paths,\n file: files\n .map((file) => {\n return {\n name: file,\n href: `http://${hostname}:${port}/home${req.params[0]}/${file}`,\n isDirectory: fs.lstatSync(currentPath + '/' + file).isDirectory(),\n }\n })\n .sort((a, b) => {\n if (a.isDirectory && !b.isDirectory) {\n return -1\n } else if (!a.isDirectory && b.isDirectory) {\n return 1\n } else {\n if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) {\n return -1\n } else {\n return 1\n }\n }\n return 0\n }),\n })\n } else if (stats.isFile()) {\n if (req.params[0].toLocaleLowerCase().endsWith('.md')) {\n if (testOnline) {\n res.redirect(\n `https://LiaScript.github.io/course/?http://${hostname}:${port}/${req.params[0]}`\n )\n } else {\n res.redirect(\n `/liascript/index.html?http://${hostname}:${port}/${req.params[0]}`\n )\n }\n } else {\n res.sendFile(req.params[0], { root: project.path })\n }\n } else {\n res.send('ups, something went wrong')\n }\n})\n\napp.get('/liascript/', function (req, res) {\n res.redirect('/liascript/index.html')\n})\n\napp.get('/liascript/index.html', function (req, res) {\n // ------------------------------------\n if (liveReload && responsiveVoice) {\n fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='/reloader/reloader.js'></script>\n <script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script>\n </head>`\n )\n )\n })\n }\n // ------------------------------------\n else if (liveReload) {\n fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='/reloader/reloader.js'></script></head>`\n )\n )\n })\n }\n // ------------------------------------\n else if (responsiveVoice) {\n fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script></head>`\n )\n )\n })\n }\n // ------------------------------------\n else {\n res.sendFile(liascriptPath + '/index.html')\n }\n})\n\n// load everything from the liascript folder\napp.get('/liascript/*', function (req, res) {\n res.sendFile(req.params[0], { root: liascriptPath })\n})\n// ignore this one\napp.get('/sw.js', function (req, res) {})\napp.get('/favicon.ico', function (req, res) {})\n\n// pass the reloader, to be used for live updates\napp.get('/reloader/reloader.js', function (req, res) {\n res.sendFile(reloadPath)\n})\n\n// everything else comes from the current project folder\napp.get('/*', cors(), function (req, res) {\n res.sendFile(req.originalUrl, { root: project.path })\n})\n\nlet localURL = 'http://' + hostname + ':' + port\n\nif (project.path && project.readme) {\n localURL +=\n '/liascript/index.html?http://' +\n hostname +\n ':' +\n port +\n '/' +\n project.readme\n}\n\nif (testOnline && project.readme) {\n localURL =\n 'https://LiaScript.github.io/course/?http://' +\n hostname +\n ':' +\n port +\n '/' +\n project.readme\n}\n\nliascript()\nconst server = require('reloadsh.js')(\n app,\n liveReload ? [path.join(project.path, project.readme || '')] : []\n)\n\nif (liveReload) {\n console.log(\n `✨ watching for changes on: \"${path.join(\n project.path,\n project.readme || ''\n )}\"`\n )\n}\n\nserver.on('error', (e: any) => {\n console.error('🚨 error =>', e.message)\n process.exit()\n})\n\nserver.listen(port)\n\nif (openInBrowser) {\n doOpen(localURL)\n}\n\nconsole.log('📡 starting server')\nconsole.log(` - local: ${localURL}`)\nconsole.log(` - on your network: ${localURL.replace(localURL, ip.address())}`)\nconsole.log('✨ hit Ctrl-c to close the server')\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
1
+ {"mappings":"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","sources":["src/index.ts","src/lib.ts"],"sourcesContent":["const argv = require('minimist')(process.argv.slice(2))\n\nimport * as server from './lib'\n\nfunction liascript() {\n console.log(' _ _ ____ _ _')\n console.log('| | (_) __ _/ ___| ___ _ __(_)_ __ | |_')\n console.log(\"| | | |/ _` \\\\___ \\\\ / __| '__| | '_ \\\\| __|\")\n console.log('| |___| | (_| |___) | (__| | | | |_) | |_ ')\n console.log('|_____|_|\\\\__,_|____/ \\\\___|_| |_| .__/ \\\\__|')\n console.log(' |_|')\n console.log()\n}\n\nif (argv.v || argv.version) {\n console.log('DevServer: 1.0.12')\n console.log('LiaScript: 0.10.8')\n process.exit()\n}\n\nif (argv.h || argv.help) {\n liascript()\n\n console.log('-h --help show this help')\n console.log('-v --version show version information')\n console.log('-i --input input README.md file or folder (default: .)')\n console.log('-n --hostname hostname of your server (default: localhost)')\n console.log('-p --port used port number (default: 3000)')\n console.log('-l --live do live reload on file change')\n console.log('-o --open open in default browser')\n console.log('-t --test test online on https://LiaScript.github.io')\n console.log()\n console.log('-r --responsiveVoice add optional responsiveVoice support,')\n console.log(' or pass your own responsiveVoice key.')\n console.log(' Adding this feature might slow down')\n console.log(' the reloading speed.')\n console.log(' For more information visit:')\n console.log(' https://responsivevoice.org')\n\n process.exit()\n}\n\nliascript()\n\nserver.init(argv.node_modules)\n\ntry {\n server.start(\n argv.p || argv.port,\n argv.n || argv.hostname,\n argv.i || argv.input,\n argv.r || argv.responsiveVoice || process.env.RESPONSIVE_VOICE_KEY,\n argv.l || argv.live,\n argv.o || argv.open,\n argv.t || argv.test\n )\n} catch (e) {\n console.error('Error: ', e.message)\n process.exit()\n}\n\nconsole.log('✨ hit Ctrl-c to close the server')\n","require('dotenv').config()\nimport * as express from 'express'\n\nimport * as fs from 'fs'\nimport * as path from 'path'\n\nconst cors = require('cors')\nconst handlebars = require('express-handlebars')\nconst ip = require('ip')\nconst open = require('open')\n\nconst app: express.Application = express()\n\nvar dirname = ''\nvar node_modules\nvar reloadPath = ''\nvar liascriptPath = ''\n\nvar serverPointer: any\n\ninit(__dirname)\n\nexport function init(serverPath?: string, nodeModulesPath?: string) {\n dirname = serverPath || path.join(__dirname, '..')\n\n node_modules = nodeModulesPath || path.join(dirname, 'node_modules')\n\n reloadPath = path.resolve(\n path.join(node_modules, 'reloadsh.js/reloader.browser.js')\n )\n\n liascriptPath = path.resolve(\n path.join(node_modules, '@liascript/editor/dist')\n )\n}\n\nexport function start(\n port?: number,\n hostname?: string,\n input?: string,\n responsiveVoice?: string,\n liveReload?: boolean,\n openInBrowser?: boolean,\n testOnline?: boolean\n) {\n port = port || 3000\n hostname = hostname || 'localhost'\n openInBrowser = openInBrowser || false\n input = input || '.'\n liveReload = liveReload || false\n testOnline = testOnline || false\n\n var project: {\n path: string\n readme?: string\n } = {\n path: input,\n readme: undefined,\n }\n\n if (input) {\n const stats = fs.lstatSync(input)\n\n // Is it a directory?\n if (stats.isDirectory()) {\n project.path = input\n } else if (stats.isFile()) {\n project.path = path.dirname(input)\n project.readme = path.basename(input)\n }\n }\n\n app.set('view engine', 'hbs')\n app.engine(\n 'hbs',\n handlebars({\n layoutsDir: path.resolve(path.join(dirname, 'views/layouts')),\n defaultLayout: 'main',\n extname: 'hbs',\n })\n )\n app.set('views', path.resolve(path.join(dirname, 'views')))\n\n app.get('/', function (req: express.Request, res: express.Response) {\n res.redirect('/home')\n })\n\n app.get('/home*', function (req: express.Request, res: express.Response) {\n const currentPath = project.path + '/' + req.params[0]\n\n const stats = fs.lstatSync(currentPath)\n\n // Is it a directory?\n if (stats.isDirectory()) {\n const files = fs.readdirSync(currentPath).filter((e: string) => {\n return e[0] !== '.'\n })\n\n let basePath = '/home'\n let pathNames = req.params[0].split('/').filter((e: string) => {\n return e !== ''\n })\n\n let paths: { name: string; href: string }[] = []\n for (let i = 0; i < pathNames.length; i++) {\n basePath += '/' + pathNames[i]\n paths.push({ name: pathNames[i], href: basePath })\n }\n\n res.render('main', {\n layout: 'index',\n path: paths,\n file: files\n .map((file: string) => {\n return {\n name: file,\n href: `http://${hostname}:${port}/home${req.params[0]}/${file}`,\n isDirectory: fs.lstatSync(currentPath + '/' + file).isDirectory(),\n }\n })\n .sort(\n (\n a: {\n name: string\n href: string\n isDirectory: boolean\n },\n b: {\n name: string\n href: string\n isDirectory: boolean\n }\n ) => {\n if (a.isDirectory && !b.isDirectory) {\n return -1\n } else if (!a.isDirectory && b.isDirectory) {\n return 1\n } else {\n if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) {\n return -1\n } else {\n return 1\n }\n }\n return 0\n }\n ),\n })\n } else if (stats.isFile()) {\n if (req.params[0].toLocaleLowerCase().endsWith('.md')) {\n if (testOnline) {\n res.redirect(\n `https://LiaScript.github.io/course/?http://${hostname}:${port}/${req.params[0]}`\n )\n } else {\n res.redirect(\n `/liascript/index.html?http://${hostname}:${port}/${req.params[0]}`\n )\n }\n } else {\n res.sendFile(req.params[0], { root: project.path })\n }\n } else {\n res.send('ups, something went wrong')\n }\n })\n\n app.get(\n '/liascript/',\n function (req: express.Request, res: express.Response) {\n res.redirect('/liascript/index.html')\n }\n )\n\n app.get(\n '/liascript/index.html',\n function (req: express.Request, res: express.Response) {\n // ------------------------------------\n if (liveReload && responsiveVoice) {\n fs.readFile(\n liascriptPath + '/index.html',\n 'utf8',\n function (err: any, data: string) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='/reloader/reloader.js'></script>\n <script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script>\n </head>`\n )\n )\n }\n )\n }\n // ------------------------------------\n else if (liveReload) {\n fs.readFile(\n liascriptPath + '/index.html',\n 'utf8',\n function (err: any, data: string) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='/reloader/reloader.js'></script></head>`\n )\n )\n }\n )\n }\n // ------------------------------------\n else if (responsiveVoice) {\n fs.readFile(\n liascriptPath + '/index.html',\n 'utf8',\n function (err: any, data: string) {\n res.send(\n data.replace(\n '</head>',\n `<script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=${responsiveVoice}'></script></head>`\n )\n )\n }\n )\n }\n // ------------------------------------\n else {\n res.sendFile(liascriptPath + '/index.html')\n }\n }\n )\n\n // load everything from the liascript folder\n app.get(\n '/liascript/*',\n function (req: express.Request, res: express.Response) {\n res.sendFile(req.params[0], { root: liascriptPath })\n }\n )\n // ignore this one\n app.get('/sw.js', function (req: express.Request, res: express.Response) {})\n app.get(\n '/favicon.ico',\n function (req: express.Request, res: express.Response) {}\n )\n\n // pass the reloader, to be used for live updates\n app.get(\n '/reloader/reloader.js',\n function (req: express.Request, res: express.Response) {\n res.sendFile(reloadPath)\n }\n )\n\n // everything else comes from the current project folder\n app.get('/*', cors(), function (req: express.Request, res: express.Response) {\n res.sendFile(req.originalUrl, { root: project.path })\n })\n\n let localURL = 'http://' + hostname + ':' + port\n\n if (project.path && project.readme) {\n localURL +=\n '/liascript/index.html?http://' +\n hostname +\n ':' +\n port +\n '/' +\n project.readme\n }\n\n if (testOnline && project.readme) {\n localURL =\n 'https://LiaScript.github.io/course/?http://' +\n hostname +\n ':' +\n port +\n '/' +\n project.readme\n }\n\n const server = require('reloadsh.js')(\n app,\n liveReload ? [path.join(project.path, project.readme || '')] : []\n )\n\n if (liveReload) {\n console.log(\n `✨ watching for changes on: \"${path.join(\n project.path || '',\n project.readme || ''\n )}\"`\n )\n }\n\n server.on('error', (e: any) => {\n throw e\n })\n\n server.listen(port)\n\n if (openInBrowser) {\n open(localURL)\n }\n\n console.log('📡 starting server')\n console.log(` - local: ${localURL}`)\n console.log(\n ` - on your network: ${localURL.replace(hostname, ip.address())}`\n )\n\n serverPointer = server\n}\n\nexport function stop() {\n if (serverPointer) {\n serverPointer.close()\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"}
package/dist/lib.js ADDED
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.stop = exports.start = exports.init = void 0;
4
+ require('dotenv').config();
5
+ var express = require("express");
6
+ var fs = require("fs");
7
+ var path = require("path");
8
+ var cors = require('cors');
9
+ var handlebars = require('express-handlebars');
10
+ var ip = require('ip');
11
+ var open = require('open');
12
+ var app = express();
13
+ var dirname = '';
14
+ var node_modules;
15
+ var reloadPath = '';
16
+ var liascriptPath = '';
17
+ var serverPointer;
18
+ init(__dirname);
19
+ function init(serverPath, nodeModulesPath) {
20
+ dirname = serverPath || path.join(__dirname, '..');
21
+ node_modules = nodeModulesPath || path.join(dirname, 'node_modules');
22
+ reloadPath = path.resolve(path.join(node_modules, 'reloadsh.js/reloader.browser.js'));
23
+ liascriptPath = path.resolve(path.join(node_modules, '@liascript/editor/dist'));
24
+ }
25
+ exports.init = init;
26
+ function start(port, hostname, input, responsiveVoice, liveReload, openInBrowser, testOnline) {
27
+ port = port || 3000;
28
+ hostname = hostname || 'localhost';
29
+ openInBrowser = openInBrowser || false;
30
+ input = input || '.';
31
+ liveReload = liveReload || false;
32
+ testOnline = testOnline || false;
33
+ var project = {
34
+ path: input,
35
+ readme: undefined
36
+ };
37
+ if (input) {
38
+ var stats = fs.lstatSync(input);
39
+ // Is it a directory?
40
+ if (stats.isDirectory()) {
41
+ project.path = input;
42
+ }
43
+ else if (stats.isFile()) {
44
+ project.path = path.dirname(input);
45
+ project.readme = path.basename(input);
46
+ }
47
+ }
48
+ app.set('view engine', 'hbs');
49
+ app.engine('hbs', handlebars({
50
+ layoutsDir: path.resolve(path.join(dirname, 'views/layouts')),
51
+ defaultLayout: 'main',
52
+ extname: 'hbs'
53
+ }));
54
+ app.set('views', path.resolve(path.join(dirname, 'views')));
55
+ app.get('/', function (req, res) {
56
+ res.redirect('/home');
57
+ });
58
+ app.get('/home*', function (req, res) {
59
+ var currentPath = project.path + '/' + req.params[0];
60
+ var stats = fs.lstatSync(currentPath);
61
+ // Is it a directory?
62
+ if (stats.isDirectory()) {
63
+ var files = fs.readdirSync(currentPath).filter(function (e) {
64
+ return e[0] !== '.';
65
+ });
66
+ var basePath = '/home';
67
+ var pathNames = req.params[0].split('/').filter(function (e) {
68
+ return e !== '';
69
+ });
70
+ var paths = [];
71
+ for (var i = 0; i < pathNames.length; i++) {
72
+ basePath += '/' + pathNames[i];
73
+ paths.push({ name: pathNames[i], href: basePath });
74
+ }
75
+ res.render('main', {
76
+ layout: 'index',
77
+ path: paths,
78
+ file: files
79
+ .map(function (file) {
80
+ return {
81
+ name: file,
82
+ href: "http://".concat(hostname, ":").concat(port, "/home").concat(req.params[0], "/").concat(file),
83
+ isDirectory: fs.lstatSync(currentPath + '/' + file).isDirectory()
84
+ };
85
+ })
86
+ .sort(function (a, b) {
87
+ if (a.isDirectory && !b.isDirectory) {
88
+ return -1;
89
+ }
90
+ else if (!a.isDirectory && b.isDirectory) {
91
+ return 1;
92
+ }
93
+ else {
94
+ if (a.name.toLocaleLowerCase() < b.name.toLocaleLowerCase()) {
95
+ return -1;
96
+ }
97
+ else {
98
+ return 1;
99
+ }
100
+ }
101
+ return 0;
102
+ })
103
+ });
104
+ }
105
+ else if (stats.isFile()) {
106
+ if (req.params[0].toLocaleLowerCase().endsWith('.md')) {
107
+ if (testOnline) {
108
+ res.redirect("https://LiaScript.github.io/course/?http://".concat(hostname, ":").concat(port, "/").concat(req.params[0]));
109
+ }
110
+ else {
111
+ res.redirect("/liascript/index.html?http://".concat(hostname, ":").concat(port, "/").concat(req.params[0]));
112
+ }
113
+ }
114
+ else {
115
+ res.sendFile(req.params[0], { root: project.path });
116
+ }
117
+ }
118
+ else {
119
+ res.send('ups, something went wrong');
120
+ }
121
+ });
122
+ app.get('/liascript/', function (req, res) {
123
+ res.redirect('/liascript/index.html');
124
+ });
125
+ app.get('/liascript/index.html', function (req, res) {
126
+ // ------------------------------------
127
+ if (liveReload && responsiveVoice) {
128
+ fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {
129
+ res.send(data.replace('</head>', "<script type='text/javascript' src='/reloader/reloader.js'></script>\n <script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=".concat(responsiveVoice, "'></script>\n </head>")));
130
+ });
131
+ }
132
+ // ------------------------------------
133
+ else if (liveReload) {
134
+ fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {
135
+ res.send(data.replace('</head>', "<script type='text/javascript' src='/reloader/reloader.js'></script></head>"));
136
+ });
137
+ }
138
+ // ------------------------------------
139
+ else if (responsiveVoice) {
140
+ fs.readFile(liascriptPath + '/index.html', 'utf8', function (err, data) {
141
+ res.send(data.replace('</head>', "<script type='text/javascript' src='https://code.responsivevoice.org/responsivevoice.js?key=".concat(responsiveVoice, "'></script></head>")));
142
+ });
143
+ }
144
+ // ------------------------------------
145
+ else {
146
+ res.sendFile(liascriptPath + '/index.html');
147
+ }
148
+ });
149
+ // load everything from the liascript folder
150
+ app.get('/liascript/*', function (req, res) {
151
+ res.sendFile(req.params[0], { root: liascriptPath });
152
+ });
153
+ // ignore this one
154
+ app.get('/sw.js', function (req, res) { });
155
+ app.get('/favicon.ico', function (req, res) { });
156
+ // pass the reloader, to be used for live updates
157
+ app.get('/reloader/reloader.js', function (req, res) {
158
+ res.sendFile(reloadPath);
159
+ });
160
+ // everything else comes from the current project folder
161
+ app.get('/*', cors(), function (req, res) {
162
+ res.sendFile(req.originalUrl, { root: project.path });
163
+ });
164
+ var localURL = 'http://' + hostname + ':' + port;
165
+ if (project.path && project.readme) {
166
+ localURL +=
167
+ '/liascript/index.html?http://' +
168
+ hostname +
169
+ ':' +
170
+ port +
171
+ '/' +
172
+ project.readme;
173
+ }
174
+ if (testOnline && project.readme) {
175
+ localURL =
176
+ 'https://LiaScript.github.io/course/?http://' +
177
+ hostname +
178
+ ':' +
179
+ port +
180
+ '/' +
181
+ project.readme;
182
+ }
183
+ var server = require('reloadsh.js')(app, liveReload ? [path.join(project.path, project.readme || '')] : []);
184
+ if (liveReload) {
185
+ console.log("\u2728 watching for changes on: \"".concat(path.join(project.path || '', project.readme || ''), "\""));
186
+ }
187
+ server.on('error', function (e) {
188
+ throw e;
189
+ });
190
+ server.listen(port);
191
+ if (openInBrowser) {
192
+ open(localURL);
193
+ }
194
+ console.log('📡 starting server');
195
+ console.log(" - local: ".concat(localURL));
196
+ console.log(" - on your network: ".concat(localURL.replace(hostname, ip.address())));
197
+ serverPointer = server;
198
+ }
199
+ exports.start = start;
200
+ function stop() {
201
+ if (serverPointer) {
202
+ serverPointer.close();
203
+ }
204
+ }
205
+ exports.stop = stop;
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@liascript/devserver",
3
- "version": "1.0.9--0.10.8",
3
+ "version": "1.0.12--0.10.8",
4
4
  "description": "Run a development server for LiaScript locally",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
- "build": "npx parcel build src/index.ts && npm run shebang",
7
+ "build": "npx parcel build src/index.ts && npm run shebang && npm run lib",
8
+ "lib": "tsc --module commonjs src/lib.ts --outDir dist",
8
9
  "shebang": "sed -i '1i #!/usr/bin/env node\\n' dist/index.js && chmod +x dist/index.js",
9
10
  "test": "echo \"Error: no test specified\" && exit 1"
10
11
  },
@@ -38,7 +39,7 @@
38
39
  "express-handlebars": "^5.3.5",
39
40
  "ip": "^1.1.5",
40
41
  "minimist": "^1.2.6",
41
- "open": "^7.4.2",
42
+ "open": "^8.4.0",
42
43
  "reloadsh.js": "^2.2.1"
43
44
  },
44
45
  "devDependencies": {
package/views/main.hbs CHANGED
@@ -7,7 +7,7 @@
7
7
  | |___| | (_| |___) | (__| | | | |_) | |_
8
8
  |_____|_|\__,_|____/ \___|_| |_| .__/ \__|
9
9
  |_|
10
- [ DevServer: 1.0.9--0.10.8 ]
10
+ [ DevServer: 1.0.12--0.10.8 ]
11
11
  </pre>
12
12
  </code>
13
13
  </h4>