张艾宸

node调用录制

  1 +node_modules
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="JavaScriptSettings">
  4 + <option name="languageLevel" value="ES6" />
  5 + </component>
  6 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="ProjectModuleManager">
  4 + <modules>
  5 + <module fileurl="file://$PROJECT_DIR$/.idea/webScreen.iml" filepath="$PROJECT_DIR$/.idea/webScreen.iml" />
  6 + </modules>
  7 + </component>
  8 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project version="4">
  3 + <component name="VcsDirectoryMappings">
  4 + <mapping directory="$PROJECT_DIR$" vcs="Git" />
  5 + </component>
  6 +</project>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<module type="WEB_MODULE" version="4">
  3 + <component name="NewModuleRootManager">
  4 + <content url="file://$MODULE_DIR$">
  5 + <excludeFolder url="file://$MODULE_DIR$/.tmp" />
  6 + <excludeFolder url="file://$MODULE_DIR$/temp" />
  7 + <excludeFolder url="file://$MODULE_DIR$/tmp" />
  8 + </content>
  9 + <orderEntry type="inheritedJdk" />
  10 + <orderEntry type="sourceFolder" forTests="false" />
  11 + </component>
  12 +</module>
  1 +node调用录制文件
  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 +
  9 +var app = express();
  10 +
  11 +// view engine setup
  12 +app.set('views', path.join(__dirname, 'views'));
  13 +app.set('view engine', 'jade');
  14 +
  15 +app.use(logger('dev'));
  16 +app.use(express.json());
  17 +app.use(express.urlencoded({ extended: false }));
  18 +app.use(cookieParser());
  19 +app.use(express.static(path.join(__dirname, 'public')));
  20 +
  21 +app.use('/', indexRouter);
  22 +
  23 +// catch 404 and forward to error handler
  24 +app.use(function(req, res, next) {
  25 + next(createError(404));
  26 +});
  27 +
  28 +// error handler
  29 +app.use(function(err, req, res, next) {
  30 + // set locals, only providing error in development
  31 + res.locals.message = err.message;
  32 + res.locals.error = req.app.get('env') === 'development' ? err : {};
  33 +
  34 + // render the error page
  35 + res.status(err.status || 500);
  36 + res.render('error');
  37 +});
  38 +
  39 +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')('webscreen: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 +const GETCLASSURL = "http://139.196.126.156:8081/getLogs/recordClassList"
  2 +const GETCLASSURLPARAMETER = {
  3 + siteId:["talk915","kuaikuenglish"],
  4 + key:"xdymp4record20191225"
  5 +}
  6 +
  7 +const PROJECTWINCATALOG = "E:/project/web_capture_release/win-x64"
  8 +
  9 +const PROJECTCATALOG = "E:/project/web_capture_release"
  10 +
  11 +const BACKMEDIACONFIG = {
  12 + url : "https://pclive.xuedianyun.com/pcBase/pclive2/dev/index.html",
  13 + classId:"",
  14 + userId:0,
  15 + userName:"",
  16 + userRole:"normal",
  17 + portalIP:"saas.xuedianyun.com",
  18 + portalPort:80,
  19 + channels:2,
  20 + playRecord:1,
  21 + d:3000,
  22 + s:0,
  23 + fa:15
  24 +}
  25 +module.exports = {
  26 + GETCLASSURL,
  27 + GETCLASSURLPARAMETER,
  28 + PROJECTWINCATALOG,
  29 + PROJECTCATALOG,
  30 + BACKMEDIACONFIG
  31 +}
  1 +const axios = require('axios');
  2 +
  3 +const methods = {
  4 + YesterdayTime() {
  5 + let YesterdayTime = (new Date).getTime() - 24 * 60 * 60 * 1000
  6 + let YesterdayTimeDate = new Date(YesterdayTime)
  7 + let year = YesterdayTimeDate.getFullYear()
  8 + let month = YesterdayTimeDate.getMonth() + 1
  9 + let date = YesterdayTimeDate.getDate()
  10 + let startTime = new Date(year + "-" + month + "-" + date + " 5:30:00").getTime()
  11 + let endTime = new Date(year + "-" + month + "-" + date + " 23:59:00").getTime()
  12 + return {
  13 + startTime,
  14 + endTime
  15 + }
  16 + },
  17 + async getRequestClassIds(url, siteId, key, startTime, endTime) {
  18 + let axiosUrl = `${url}?siteId=${siteId}&key=${key}&from=${startTime}&to=${endTime}`
  19 + let result = await axios.get(axiosUrl)
  20 + return result
  21 + },
  22 +}
  23 +
  24 +module.exports = methods
  25 +
  1 +{
  2 + "name": "webscreen",
  3 + "version": "0.0.0",
  4 + "lockfileVersion": 1,
  5 + "requires": true,
  6 + "dependencies": {
  7 + "accepts": {
  8 + "version": "1.3.7",
  9 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
  10 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
  11 + "requires": {
  12 + "mime-types": "~2.1.24",
  13 + "negotiator": "0.6.2"
  14 + }
  15 + },
  16 + "acorn": {
  17 + "version": "2.7.0",
  18 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
  19 + "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
  20 + },
  21 + "acorn-globals": {
  22 + "version": "1.0.9",
  23 + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
  24 + "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
  25 + "requires": {
  26 + "acorn": "^2.1.0"
  27 + }
  28 + },
  29 + "align-text": {
  30 + "version": "0.1.4",
  31 + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
  32 + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
  33 + "requires": {
  34 + "kind-of": "^3.0.2",
  35 + "longest": "^1.0.1",
  36 + "repeat-string": "^1.5.2"
  37 + }
  38 + },
  39 + "amdefine": {
  40 + "version": "1.0.1",
  41 + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
  42 + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
  43 + },
  44 + "array-flatten": {
  45 + "version": "1.1.1",
  46 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
  47 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
  48 + },
  49 + "asap": {
  50 + "version": "1.0.0",
  51 + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
  52 + "integrity": "sha1-sqRdpf36ILBJb8N2jMJ8EvqRan0="
  53 + },
  54 + "axios": {
  55 + "version": "0.19.0",
  56 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
  57 + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
  58 + "requires": {
  59 + "follow-redirects": "1.5.10",
  60 + "is-buffer": "^2.0.2"
  61 + },
  62 + "dependencies": {
  63 + "is-buffer": {
  64 + "version": "2.0.4",
  65 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
  66 + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A=="
  67 + }
  68 + }
  69 + },
  70 + "balanced-match": {
  71 + "version": "1.0.0",
  72 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
  73 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
  74 + },
  75 + "basic-auth": {
  76 + "version": "2.0.1",
  77 + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
  78 + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
  79 + "requires": {
  80 + "safe-buffer": "5.1.2"
  81 + }
  82 + },
  83 + "body-parser": {
  84 + "version": "1.18.3",
  85 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
  86 + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
  87 + "requires": {
  88 + "bytes": "3.0.0",
  89 + "content-type": "~1.0.4",
  90 + "debug": "2.6.9",
  91 + "depd": "~1.1.2",
  92 + "http-errors": "~1.6.3",
  93 + "iconv-lite": "0.4.23",
  94 + "on-finished": "~2.3.0",
  95 + "qs": "6.5.2",
  96 + "raw-body": "2.3.3",
  97 + "type-is": "~1.6.16"
  98 + }
  99 + },
  100 + "brace-expansion": {
  101 + "version": "1.1.11",
  102 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
  103 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
  104 + "requires": {
  105 + "balanced-match": "^1.0.0",
  106 + "concat-map": "0.0.1"
  107 + }
  108 + },
  109 + "bytes": {
  110 + "version": "3.0.0",
  111 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
  112 + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
  113 + },
  114 + "camelcase": {
  115 + "version": "1.2.1",
  116 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
  117 + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
  118 + },
  119 + "center-align": {
  120 + "version": "0.1.3",
  121 + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
  122 + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
  123 + "requires": {
  124 + "align-text": "^0.1.3",
  125 + "lazy-cache": "^1.0.3"
  126 + }
  127 + },
  128 + "character-parser": {
  129 + "version": "1.2.1",
  130 + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz",
  131 + "integrity": "sha1-wN3kqxgnE7kZuXCVmhI+zBow/NY="
  132 + },
  133 + "child_process": {
  134 + "version": "1.0.2",
  135 + "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz",
  136 + "integrity": "sha1-sffn/HPSXn/R1FWtyU4UODAYK1o="
  137 + },
  138 + "clean-css": {
  139 + "version": "3.4.28",
  140 + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
  141 + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=",
  142 + "requires": {
  143 + "commander": "2.8.x",
  144 + "source-map": "0.4.x"
  145 + },
  146 + "dependencies": {
  147 + "commander": {
  148 + "version": "2.8.1",
  149 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
  150 + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
  151 + "requires": {
  152 + "graceful-readlink": ">= 1.0.0"
  153 + }
  154 + }
  155 + }
  156 + },
  157 + "cliui": {
  158 + "version": "2.1.0",
  159 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
  160 + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
  161 + "requires": {
  162 + "center-align": "^0.1.1",
  163 + "right-align": "^0.1.1",
  164 + "wordwrap": "0.0.2"
  165 + },
  166 + "dependencies": {
  167 + "wordwrap": {
  168 + "version": "0.0.2",
  169 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
  170 + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
  171 + }
  172 + }
  173 + },
  174 + "commander": {
  175 + "version": "2.6.0",
  176 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
  177 + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0="
  178 + },
  179 + "concat-map": {
  180 + "version": "0.0.1",
  181 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
  182 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
  183 + },
  184 + "constantinople": {
  185 + "version": "3.0.2",
  186 + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz",
  187 + "integrity": "sha1-S5RdmTeQe82Y7ldRIsOBdRZUQUE=",
  188 + "requires": {
  189 + "acorn": "^2.1.0"
  190 + }
  191 + },
  192 + "content-disposition": {
  193 + "version": "0.5.2",
  194 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
  195 + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
  196 + },
  197 + "content-type": {
  198 + "version": "1.0.4",
  199 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
  200 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
  201 + },
  202 + "cookie": {
  203 + "version": "0.3.1",
  204 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
  205 + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
  206 + },
  207 + "cookie-parser": {
  208 + "version": "1.4.4",
  209 + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.4.tgz",
  210 + "integrity": "sha512-lo13tqF3JEtFO7FyA49CqbhaFkskRJ0u/UAiINgrIXeRCY41c88/zxtrECl8AKH3B0hj9q10+h3Kt8I7KlW4tw==",
  211 + "requires": {
  212 + "cookie": "0.3.1",
  213 + "cookie-signature": "1.0.6"
  214 + }
  215 + },
  216 + "cookie-signature": {
  217 + "version": "1.0.6",
  218 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
  219 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
  220 + },
  221 + "css": {
  222 + "version": "1.0.8",
  223 + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz",
  224 + "integrity": "sha1-k4aBHKgrzMnuf7WnMrHioxfIo+c=",
  225 + "requires": {
  226 + "css-parse": "1.0.4",
  227 + "css-stringify": "1.0.5"
  228 + }
  229 + },
  230 + "css-parse": {
  231 + "version": "1.0.4",
  232 + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz",
  233 + "integrity": "sha1-OLBQP7+dqfVOnB29pg4UXHcRe90="
  234 + },
  235 + "css-stringify": {
  236 + "version": "1.0.5",
  237 + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz",
  238 + "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE="
  239 + },
  240 + "debug": {
  241 + "version": "2.6.9",
  242 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
  243 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
  244 + "requires": {
  245 + "ms": "2.0.0"
  246 + }
  247 + },
  248 + "decamelize": {
  249 + "version": "1.2.0",
  250 + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
  251 + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
  252 + },
  253 + "define-properties": {
  254 + "version": "1.1.3",
  255 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
  256 + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
  257 + "requires": {
  258 + "object-keys": "^1.0.12"
  259 + }
  260 + },
  261 + "depd": {
  262 + "version": "1.1.2",
  263 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
  264 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
  265 + },
  266 + "destroy": {
  267 + "version": "1.0.4",
  268 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
  269 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
  270 + },
  271 + "ee-first": {
  272 + "version": "1.1.1",
  273 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
  274 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
  275 + },
  276 + "encodeurl": {
  277 + "version": "1.0.2",
  278 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
  279 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
  280 + },
  281 + "es-abstract": {
  282 + "version": "1.17.0",
  283 + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz",
  284 + "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==",
  285 + "requires": {
  286 + "es-to-primitive": "^1.2.1",
  287 + "function-bind": "^1.1.1",
  288 + "has": "^1.0.3",
  289 + "has-symbols": "^1.0.1",
  290 + "is-callable": "^1.1.5",
  291 + "is-regex": "^1.0.5",
  292 + "object-inspect": "^1.7.0",
  293 + "object-keys": "^1.1.1",
  294 + "object.assign": "^4.1.0",
  295 + "string.prototype.trimleft": "^2.1.1",
  296 + "string.prototype.trimright": "^2.1.1"
  297 + }
  298 + },
  299 + "es-to-primitive": {
  300 + "version": "1.2.1",
  301 + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
  302 + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
  303 + "requires": {
  304 + "is-callable": "^1.1.4",
  305 + "is-date-object": "^1.0.1",
  306 + "is-symbol": "^1.0.2"
  307 + }
  308 + },
  309 + "escape-html": {
  310 + "version": "1.0.3",
  311 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
  312 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
  313 + },
  314 + "etag": {
  315 + "version": "1.8.1",
  316 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
  317 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
  318 + },
  319 + "express": {
  320 + "version": "4.16.4",
  321 + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz",
  322 + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==",
  323 + "requires": {
  324 + "accepts": "~1.3.5",
  325 + "array-flatten": "1.1.1",
  326 + "body-parser": "1.18.3",
  327 + "content-disposition": "0.5.2",
  328 + "content-type": "~1.0.4",
  329 + "cookie": "0.3.1",
  330 + "cookie-signature": "1.0.6",
  331 + "debug": "2.6.9",
  332 + "depd": "~1.1.2",
  333 + "encodeurl": "~1.0.2",
  334 + "escape-html": "~1.0.3",
  335 + "etag": "~1.8.1",
  336 + "finalhandler": "1.1.1",
  337 + "fresh": "0.5.2",
  338 + "merge-descriptors": "1.0.1",
  339 + "methods": "~1.1.2",
  340 + "on-finished": "~2.3.0",
  341 + "parseurl": "~1.3.2",
  342 + "path-to-regexp": "0.1.7",
  343 + "proxy-addr": "~2.0.4",
  344 + "qs": "6.5.2",
  345 + "range-parser": "~1.2.0",
  346 + "safe-buffer": "5.1.2",
  347 + "send": "0.16.2",
  348 + "serve-static": "1.13.2",
  349 + "setprototypeof": "1.1.0",
  350 + "statuses": "~1.4.0",
  351 + "type-is": "~1.6.16",
  352 + "utils-merge": "1.0.1",
  353 + "vary": "~1.1.2"
  354 + }
  355 + },
  356 + "finalhandler": {
  357 + "version": "1.1.1",
  358 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
  359 + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
  360 + "requires": {
  361 + "debug": "2.6.9",
  362 + "encodeurl": "~1.0.2",
  363 + "escape-html": "~1.0.3",
  364 + "on-finished": "~2.3.0",
  365 + "parseurl": "~1.3.2",
  366 + "statuses": "~1.4.0",
  367 + "unpipe": "~1.0.0"
  368 + }
  369 + },
  370 + "follow-redirects": {
  371 + "version": "1.5.10",
  372 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
  373 + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
  374 + "requires": {
  375 + "debug": "=3.1.0"
  376 + },
  377 + "dependencies": {
  378 + "debug": {
  379 + "version": "3.1.0",
  380 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  381 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  382 + "requires": {
  383 + "ms": "2.0.0"
  384 + }
  385 + }
  386 + }
  387 + },
  388 + "forwarded": {
  389 + "version": "0.1.2",
  390 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
  391 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
  392 + },
  393 + "fresh": {
  394 + "version": "0.5.2",
  395 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
  396 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
  397 + },
  398 + "fs.realpath": {
  399 + "version": "1.0.0",
  400 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
  401 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
  402 + },
  403 + "function-bind": {
  404 + "version": "1.1.1",
  405 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
  406 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
  407 + },
  408 + "glob": {
  409 + "version": "7.1.6",
  410 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
  411 + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
  412 + "requires": {
  413 + "fs.realpath": "^1.0.0",
  414 + "inflight": "^1.0.4",
  415 + "inherits": "2",
  416 + "minimatch": "^3.0.4",
  417 + "once": "^1.3.0",
  418 + "path-is-absolute": "^1.0.0"
  419 + }
  420 + },
  421 + "graceful-readlink": {
  422 + "version": "1.0.1",
  423 + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
  424 + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
  425 + },
  426 + "has": {
  427 + "version": "1.0.3",
  428 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
  429 + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
  430 + "requires": {
  431 + "function-bind": "^1.1.1"
  432 + }
  433 + },
  434 + "has-symbols": {
  435 + "version": "1.0.1",
  436 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
  437 + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
  438 + },
  439 + "http-errors": {
  440 + "version": "1.6.3",
  441 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
  442 + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
  443 + "requires": {
  444 + "depd": "~1.1.2",
  445 + "inherits": "2.0.3",
  446 + "setprototypeof": "1.1.0",
  447 + "statuses": ">= 1.4.0 < 2"
  448 + }
  449 + },
  450 + "iconv-lite": {
  451 + "version": "0.4.23",
  452 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
  453 + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
  454 + "requires": {
  455 + "safer-buffer": ">= 2.1.2 < 3"
  456 + }
  457 + },
  458 + "inflight": {
  459 + "version": "1.0.6",
  460 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
  461 + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
  462 + "requires": {
  463 + "once": "^1.3.0",
  464 + "wrappy": "1"
  465 + }
  466 + },
  467 + "inherits": {
  468 + "version": "2.0.3",
  469 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
  470 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
  471 + },
  472 + "interpret": {
  473 + "version": "1.2.0",
  474 + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
  475 + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="
  476 + },
  477 + "ipaddr.js": {
  478 + "version": "1.9.0",
  479 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
  480 + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
  481 + },
  482 + "is-arguments": {
  483 + "version": "1.0.4",
  484 + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
  485 + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA=="
  486 + },
  487 + "is-buffer": {
  488 + "version": "1.1.6",
  489 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
  490 + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
  491 + },
  492 + "is-callable": {
  493 + "version": "1.1.5",
  494 + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
  495 + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="
  496 + },
  497 + "is-date-object": {
  498 + "version": "1.0.2",
  499 + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
  500 + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
  501 + },
  502 + "is-generator-function": {
  503 + "version": "1.0.7",
  504 + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz",
  505 + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw=="
  506 + },
  507 + "is-promise": {
  508 + "version": "2.1.0",
  509 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
  510 + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
  511 + },
  512 + "is-regex": {
  513 + "version": "1.0.5",
  514 + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
  515 + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
  516 + "requires": {
  517 + "has": "^1.0.3"
  518 + }
  519 + },
  520 + "is-symbol": {
  521 + "version": "1.0.3",
  522 + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
  523 + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
  524 + "requires": {
  525 + "has-symbols": "^1.0.1"
  526 + }
  527 + },
  528 + "jade": {
  529 + "version": "1.11.0",
  530 + "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz",
  531 + "integrity": "sha1-nIDlOMEtP7lcjZu5VZ+gzAQEBf0=",
  532 + "requires": {
  533 + "character-parser": "1.2.1",
  534 + "clean-css": "^3.1.9",
  535 + "commander": "~2.6.0",
  536 + "constantinople": "~3.0.1",
  537 + "jstransformer": "0.0.2",
  538 + "mkdirp": "~0.5.0",
  539 + "transformers": "2.1.0",
  540 + "uglify-js": "^2.4.19",
  541 + "void-elements": "~2.0.1",
  542 + "with": "~4.0.0"
  543 + }
  544 + },
  545 + "jstransformer": {
  546 + "version": "0.0.2",
  547 + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz",
  548 + "integrity": "sha1-eq4pqQPRls+glz2IXT5HlH7Ndqs=",
  549 + "requires": {
  550 + "is-promise": "^2.0.0",
  551 + "promise": "^6.0.1"
  552 + }
  553 + },
  554 + "kind-of": {
  555 + "version": "3.2.2",
  556 + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
  557 + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
  558 + "requires": {
  559 + "is-buffer": "^1.1.5"
  560 + }
  561 + },
  562 + "lazy-cache": {
  563 + "version": "1.0.4",
  564 + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz",
  565 + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
  566 + },
  567 + "longest": {
  568 + "version": "1.0.1",
  569 + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
  570 + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
  571 + },
  572 + "media-typer": {
  573 + "version": "0.3.0",
  574 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
  575 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
  576 + },
  577 + "merge-descriptors": {
  578 + "version": "1.0.1",
  579 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
  580 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
  581 + },
  582 + "methods": {
  583 + "version": "1.1.2",
  584 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
  585 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
  586 + },
  587 + "mime": {
  588 + "version": "1.4.1",
  589 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
  590 + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
  591 + },
  592 + "mime-db": {
  593 + "version": "1.42.0",
  594 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
  595 + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ=="
  596 + },
  597 + "mime-types": {
  598 + "version": "2.1.25",
  599 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
  600 + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
  601 + "requires": {
  602 + "mime-db": "1.42.0"
  603 + }
  604 + },
  605 + "minimatch": {
  606 + "version": "3.0.4",
  607 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
  608 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
  609 + "requires": {
  610 + "brace-expansion": "^1.1.7"
  611 + }
  612 + },
  613 + "minimist": {
  614 + "version": "0.0.8",
  615 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
  616 + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
  617 + },
  618 + "mkdirp": {
  619 + "version": "0.5.1",
  620 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
  621 + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
  622 + "requires": {
  623 + "minimist": "0.0.8"
  624 + }
  625 + },
  626 + "morgan": {
  627 + "version": "1.9.1",
  628 + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
  629 + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==",
  630 + "requires": {
  631 + "basic-auth": "~2.0.0",
  632 + "debug": "2.6.9",
  633 + "depd": "~1.1.2",
  634 + "on-finished": "~2.3.0",
  635 + "on-headers": "~1.0.1"
  636 + }
  637 + },
  638 + "ms": {
  639 + "version": "2.0.0",
  640 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
  641 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
  642 + },
  643 + "negotiator": {
  644 + "version": "0.6.2",
  645 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
  646 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
  647 + },
  648 + "object-inspect": {
  649 + "version": "1.7.0",
  650 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
  651 + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
  652 + },
  653 + "object-keys": {
  654 + "version": "1.1.1",
  655 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
  656 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
  657 + },
  658 + "object.assign": {
  659 + "version": "4.1.0",
  660 + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
  661 + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
  662 + "requires": {
  663 + "define-properties": "^1.1.2",
  664 + "function-bind": "^1.1.1",
  665 + "has-symbols": "^1.0.0",
  666 + "object-keys": "^1.0.11"
  667 + }
  668 + },
  669 + "object.entries": {
  670 + "version": "1.1.1",
  671 + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
  672 + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==",
  673 + "requires": {
  674 + "define-properties": "^1.1.3",
  675 + "es-abstract": "^1.17.0-next.1",
  676 + "function-bind": "^1.1.1",
  677 + "has": "^1.0.3"
  678 + }
  679 + },
  680 + "on-finished": {
  681 + "version": "2.3.0",
  682 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
  683 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
  684 + "requires": {
  685 + "ee-first": "1.1.1"
  686 + }
  687 + },
  688 + "on-headers": {
  689 + "version": "1.0.2",
  690 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
  691 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
  692 + },
  693 + "once": {
  694 + "version": "1.4.0",
  695 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
  696 + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
  697 + "requires": {
  698 + "wrappy": "1"
  699 + }
  700 + },
  701 + "optimist": {
  702 + "version": "0.3.7",
  703 + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
  704 + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
  705 + "requires": {
  706 + "wordwrap": "~0.0.2"
  707 + }
  708 + },
  709 + "parseurl": {
  710 + "version": "1.3.3",
  711 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
  712 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
  713 + },
  714 + "path-is-absolute": {
  715 + "version": "1.0.1",
  716 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
  717 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
  718 + },
  719 + "path-parse": {
  720 + "version": "1.0.6",
  721 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
  722 + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
  723 + },
  724 + "path-to-regexp": {
  725 + "version": "0.1.7",
  726 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
  727 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
  728 + },
  729 + "promise": {
  730 + "version": "6.1.0",
  731 + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
  732 + "integrity": "sha1-LOcp9rlLRcJoka0GAsXJDgTG7vY=",
  733 + "requires": {
  734 + "asap": "~1.0.0"
  735 + }
  736 + },
  737 + "proxy-addr": {
  738 + "version": "2.0.5",
  739 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
  740 + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
  741 + "requires": {
  742 + "forwarded": "~0.1.2",
  743 + "ipaddr.js": "1.9.0"
  744 + }
  745 + },
  746 + "qs": {
  747 + "version": "6.5.2",
  748 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
  749 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
  750 + },
  751 + "range-parser": {
  752 + "version": "1.2.1",
  753 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
  754 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
  755 + },
  756 + "raw-body": {
  757 + "version": "2.3.3",
  758 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
  759 + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
  760 + "requires": {
  761 + "bytes": "3.0.0",
  762 + "http-errors": "1.6.3",
  763 + "iconv-lite": "0.4.23",
  764 + "unpipe": "1.0.0"
  765 + }
  766 + },
  767 + "rechoir": {
  768 + "version": "0.6.2",
  769 + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
  770 + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
  771 + "requires": {
  772 + "resolve": "^1.1.6"
  773 + }
  774 + },
  775 + "repeat-string": {
  776 + "version": "1.6.1",
  777 + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
  778 + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
  779 + },
  780 + "resolve": {
  781 + "version": "1.14.1",
  782 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz",
  783 + "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==",
  784 + "requires": {
  785 + "path-parse": "^1.0.6"
  786 + }
  787 + },
  788 + "right-align": {
  789 + "version": "0.1.3",
  790 + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
  791 + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
  792 + "requires": {
  793 + "align-text": "^0.1.1"
  794 + }
  795 + },
  796 + "safe-buffer": {
  797 + "version": "5.1.2",
  798 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
  799 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
  800 + },
  801 + "safer-buffer": {
  802 + "version": "2.1.2",
  803 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
  804 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
  805 + },
  806 + "send": {
  807 + "version": "0.16.2",
  808 + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
  809 + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
  810 + "requires": {
  811 + "debug": "2.6.9",
  812 + "depd": "~1.1.2",
  813 + "destroy": "~1.0.4",
  814 + "encodeurl": "~1.0.2",
  815 + "escape-html": "~1.0.3",
  816 + "etag": "~1.8.1",
  817 + "fresh": "0.5.2",
  818 + "http-errors": "~1.6.2",
  819 + "mime": "1.4.1",
  820 + "ms": "2.0.0",
  821 + "on-finished": "~2.3.0",
  822 + "range-parser": "~1.2.0",
  823 + "statuses": "~1.4.0"
  824 + }
  825 + },
  826 + "serve-static": {
  827 + "version": "1.13.2",
  828 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
  829 + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
  830 + "requires": {
  831 + "encodeurl": "~1.0.2",
  832 + "escape-html": "~1.0.3",
  833 + "parseurl": "~1.3.2",
  834 + "send": "0.16.2"
  835 + }
  836 + },
  837 + "setprototypeof": {
  838 + "version": "1.1.0",
  839 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
  840 + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
  841 + },
  842 + "shelljs": {
  843 + "version": "0.8.3",
  844 + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz",
  845 + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==",
  846 + "requires": {
  847 + "glob": "^7.0.0",
  848 + "interpret": "^1.0.0",
  849 + "rechoir": "^0.6.2"
  850 + }
  851 + },
  852 + "source-map": {
  853 + "version": "0.4.4",
  854 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
  855 + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
  856 + "requires": {
  857 + "amdefine": ">=0.0.4"
  858 + }
  859 + },
  860 + "statuses": {
  861 + "version": "1.4.0",
  862 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
  863 + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
  864 + },
  865 + "string.prototype.trimleft": {
  866 + "version": "2.1.1",
  867 + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
  868 + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
  869 + "requires": {
  870 + "define-properties": "^1.1.3",
  871 + "function-bind": "^1.1.1"
  872 + }
  873 + },
  874 + "string.prototype.trimright": {
  875 + "version": "2.1.1",
  876 + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
  877 + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
  878 + "requires": {
  879 + "define-properties": "^1.1.3",
  880 + "function-bind": "^1.1.1"
  881 + }
  882 + },
  883 + "transformers": {
  884 + "version": "2.1.0",
  885 + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz",
  886 + "integrity": "sha1-XSPLNVYd2F3Gf7hIIwm0fVPM6ac=",
  887 + "requires": {
  888 + "css": "~1.0.8",
  889 + "promise": "~2.0",
  890 + "uglify-js": "~2.2.5"
  891 + },
  892 + "dependencies": {
  893 + "is-promise": {
  894 + "version": "1.0.1",
  895 + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz",
  896 + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU="
  897 + },
  898 + "promise": {
  899 + "version": "2.0.0",
  900 + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz",
  901 + "integrity": "sha1-RmSKqdYFr10ucMMCS/WUNtoCuA4=",
  902 + "requires": {
  903 + "is-promise": "~1"
  904 + }
  905 + },
  906 + "source-map": {
  907 + "version": "0.1.43",
  908 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
  909 + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=",
  910 + "requires": {
  911 + "amdefine": ">=0.0.4"
  912 + }
  913 + },
  914 + "uglify-js": {
  915 + "version": "2.2.5",
  916 + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz",
  917 + "integrity": "sha1-puAqcNg5eSuXgEiLe4sYTAlcmcc=",
  918 + "requires": {
  919 + "optimist": "~0.3.5",
  920 + "source-map": "~0.1.7"
  921 + }
  922 + }
  923 + }
  924 + },
  925 + "type-is": {
  926 + "version": "1.6.18",
  927 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
  928 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
  929 + "requires": {
  930 + "media-typer": "0.3.0",
  931 + "mime-types": "~2.1.24"
  932 + }
  933 + },
  934 + "uglify-js": {
  935 + "version": "2.8.29",
  936 + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
  937 + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
  938 + "requires": {
  939 + "source-map": "~0.5.1",
  940 + "uglify-to-browserify": "~1.0.0",
  941 + "yargs": "~3.10.0"
  942 + },
  943 + "dependencies": {
  944 + "source-map": {
  945 + "version": "0.5.7",
  946 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
  947 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
  948 + }
  949 + }
  950 + },
  951 + "uglify-to-browserify": {
  952 + "version": "1.0.2",
  953 + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
  954 + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
  955 + "optional": true
  956 + },
  957 + "unpipe": {
  958 + "version": "1.0.0",
  959 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
  960 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
  961 + },
  962 + "util": {
  963 + "version": "0.12.1",
  964 + "resolved": "https://registry.npmjs.org/util/-/util-0.12.1.tgz",
  965 + "integrity": "sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ==",
  966 + "requires": {
  967 + "inherits": "^2.0.3",
  968 + "is-arguments": "^1.0.4",
  969 + "is-generator-function": "^1.0.7",
  970 + "object.entries": "^1.1.0",
  971 + "safe-buffer": "^5.1.2"
  972 + }
  973 + },
  974 + "utils-merge": {
  975 + "version": "1.0.1",
  976 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
  977 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
  978 + },
  979 + "vary": {
  980 + "version": "1.1.2",
  981 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
  982 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
  983 + },
  984 + "void-elements": {
  985 + "version": "2.0.1",
  986 + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
  987 + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
  988 + },
  989 + "window-size": {
  990 + "version": "0.1.0",
  991 + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
  992 + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
  993 + },
  994 + "with": {
  995 + "version": "4.0.3",
  996 + "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz",
  997 + "integrity": "sha1-7v0VTp550sjTQXtkeo8U2f7M4U4=",
  998 + "requires": {
  999 + "acorn": "^1.0.1",
  1000 + "acorn-globals": "^1.0.3"
  1001 + },
  1002 + "dependencies": {
  1003 + "acorn": {
  1004 + "version": "1.2.2",
  1005 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
  1006 + "integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ="
  1007 + }
  1008 + }
  1009 + },
  1010 + "wordwrap": {
  1011 + "version": "0.0.3",
  1012 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
  1013 + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
  1014 + },
  1015 + "wrappy": {
  1016 + "version": "1.0.2",
  1017 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
  1018 + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
  1019 + },
  1020 + "yargs": {
  1021 + "version": "3.10.0",
  1022 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz",
  1023 + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
  1024 + "requires": {
  1025 + "camelcase": "^1.0.2",
  1026 + "cliui": "^2.1.0",
  1027 + "decamelize": "^1.0.0",
  1028 + "window-size": "0.1.0"
  1029 + }
  1030 + }
  1031 + }
  1032 +}
  1 +{
  2 + "name": "webscreen",
  3 + "version": "0.0.0",
  4 + "private": true,
  5 + "scripts": {
  6 + "start": "nodemon ./bin/www"
  7 + },
  8 + "dependencies": {
  9 + "axios": "^0.19.0",
  10 + "child_process": "^1.0.2",
  11 + "cookie-parser": "~1.4.4",
  12 + "debug": "~2.6.9",
  13 + "express": "~4.16.1",
  14 + "http-errors": "~1.6.3",
  15 + "jade": "~1.11.0",
  16 + "morgan": "~1.9.1",
  17 + "shelljs": "^0.8.3",
  18 + "util": "^0.12.1"
  19 + }
  20 +}
  1 +body {
  2 + padding: 50px;
  3 + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
  4 +}
  5 +
  6 +a {
  7 + color: #00B7FF;
  8 +}
  1 +var express = require('express');
  2 +var router = express.Router();
  3 +const { spawn } = require('child_process');
  4 +const fs = require("fs");
  5 +
  6 +const method = require("../config/method")
  7 +const config = require("../config/config")
  8 +
  9 +const { GETCLASSURL, GETCLASSURLPARAMETER, PROJECTCATALOG, PROJECTWINCATALOG, BACKMEDIACONFIG } = config
  10 +const { YesterdayTime, getRequestClassIds } = method
  11 +
  12 +const { startTime, endTime } = YesterdayTime()
  13 +let siteIds = GETCLASSURLPARAMETER.siteId
  14 +
  15 +let classid = []
  16 +let className = ""
  17 +
  18 +/**
  19 + *
  20 + * @param {*} id 课堂id
  21 + */
  22 +function mediaCreat(id) {
  23 + let mediaDir = PROJECTCATALOG+"/media/"
  24 + let dir = PROJECTCATALOG+"/media/"+className
  25 + if (!fs.existsSync(mediaDir)){
  26 + fs.mkdirSync(mediaDir);
  27 + }
  28 + if (!fs.existsSync(dir)){
  29 + fs.mkdirSync(dir);
  30 + }
  31 + let url = `web_capture_c -o=../media/${className}/${id}.mp4 -u="${BACKMEDIACONFIG.url}?classId=${id}&userId=${BACKMEDIACONFIG.userId}&userName=${BACKMEDIACONFIG.userName}&userRole=${BACKMEDIACONFIG.userRole}&portalIP=${BACKMEDIACONFIG.portalIP}&portalPort=${BACKMEDIACONFIG.portalPort}&channels=${BACKMEDIACONFIG.channels}&playRecord=${BACKMEDIACONFIG.playRecord}" -d=${BACKMEDIACONFIG.d} -s=${BACKMEDIACONFIG.s} -fa=${BACKMEDIACONFIG.fa}`
  32 + var workerProcess = spawn(url, { cwd: PROJECTWINCATALOG, shell: true })
  33 + workerProcess.stdout.on('data', async function (data) {
  34 + if(classid.length){
  35 + let id = classid.shift()
  36 + mediaCreat(id['classId'])
  37 + }else{
  38 + if (siteIds.length) {
  39 + // 如果有多家需要录制,继续录制下一家
  40 + className = siteIds.shift()
  41 + let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime)
  42 + if (result.data && result.data.code == 0) {
  43 + // 返回成功
  44 + classid = result.data.data.list
  45 + if(classid.length){
  46 + let id = classid.shift()
  47 + mediaCreat(id['classId'])
  48 + }
  49 + }
  50 + }
  51 + }
  52 + });
  53 + // workerProcess.stderr.on('data', function (data) {
  54 + // console.log('stderr: ' + data);
  55 + // });
  56 +
  57 + // workerProcess.on('close', function (code) {
  58 + // console.log('子进程已退出,退出码 '+code);
  59 + // });
  60 +}
  61 +
  62 +router.get('/', async function (req, res, next) {
  63 + className = siteIds.shift()
  64 + let result = await getRequestClassIds(GETCLASSURL, className, GETCLASSURLPARAMETER.key, startTime, endTime)
  65 + if (result.data && result.data.code == 0) {
  66 + // 成功
  67 + classid = result.data.data.list
  68 + if (classid.length) {
  69 + for (let i = 0; i < 10; i++) {
  70 + let id = classid.shift()
  71 + if (id) {
  72 + mediaCreat(id['classId'])
  73 + }else{
  74 + return false
  75 + }
  76 + }
  77 + }
  78 + }
  79 + res.render('index', { title: 'Express' });
  80 +});
  81 +
  82 +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 +extends layout
  2 +
  3 +block content
  4 + h1= message
  5 + h2= error.status
  6 + pre #{error.stack}
  1 +extends layout
  2 +
  3 +block content
  4 + h1= title
  5 + p Welcome to #{title}
  1 +doctype html
  2 +html
  3 + head
  4 + title= title
  5 + link(rel='stylesheet', href='/stylesheets/style.css')
  6 + body
  7 + block content