@anansi/core 0.7.4 → 0.8.0
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/CHANGELOG.md +12 -0
- package/dist/server.js +27 -23
- package/dist/server.js.map +1 -1
- package/lib/floodSpouts.d.ts +6 -0
- package/lib/floodSpouts.d.ts.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.server.d.ts +6 -0
- package/lib/index.server.d.ts.map +1 -0
- package/lib/laySpouts.d.ts +8 -0
- package/lib/laySpouts.d.ts.map +1 -0
- package/lib/scripts/index.d.ts +3 -0
- package/lib/scripts/index.d.ts.map +1 -0
- package/lib/scripts/index.js +15 -0
- package/lib/scripts/serve.d.ts +4 -0
- package/lib/scripts/serve.d.ts.map +1 -0
- package/lib/scripts/serve.js +162 -0
- package/lib/scripts/startDevserver.d.ts +4 -0
- package/lib/scripts/startDevserver.d.ts.map +1 -0
- package/lib/scripts/startDevserver.js +175 -164
- package/lib/scripts/types.d.ts +7 -0
- package/lib/scripts/types.d.ts.map +1 -0
- package/lib/spouts/DocumentComponent.d.ts +23 -0
- package/lib/spouts/DocumentComponent.d.ts.map +1 -0
- package/lib/spouts/DocumentComponent.js +10 -6
- package/lib/spouts/document.d.ts +13 -0
- package/lib/spouts/document.d.ts.map +1 -0
- package/lib/spouts/document.server.d.ts +18 -0
- package/lib/spouts/document.server.d.ts.map +1 -0
- package/lib/spouts/document.server.js +1 -1
- package/lib/spouts/prefetch.server.d.ts +8 -0
- package/lib/spouts/prefetch.server.d.ts.map +1 -0
- package/lib/spouts/restHooks.d.ts +8 -0
- package/lib/spouts/restHooks.d.ts.map +1 -0
- package/lib/spouts/restHooks.server.d.ts +9 -0
- package/lib/spouts/restHooks.server.d.ts.map +1 -0
- package/lib/spouts/router.d.ts +12 -0
- package/lib/spouts/router.d.ts.map +1 -0
- package/lib/spouts/router.server.d.ts +12 -0
- package/lib/spouts/router.server.d.ts.map +1 -0
- package/lib/spouts/types.d.ts +16 -0
- package/lib/spouts/types.d.ts.map +1 -0
- package/package.json +8 -3
- package/src/scripts/index.ts +2 -0
- package/src/scripts/serve.ts +168 -0
- package/src/scripts/startDevserver.ts +218 -202
- package/src/spouts/DocumentComponent.tsx +8 -2
- package/src/spouts/document.server.tsx +2 -0
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
5
|
|
|
6
|
+
exports.__esModule = true;
|
|
7
|
+
exports.default = startDevServer;
|
|
8
|
+
|
|
6
9
|
var _util = require("util");
|
|
7
10
|
|
|
8
11
|
var _fs = _interopRequireDefault(require("fs"));
|
|
@@ -29,204 +32,212 @@ var _runtime = _interopRequireDefault(require("webpack/lib/logging/runtime"));
|
|
|
29
32
|
|
|
30
33
|
require("cross-fetch/polyfill");
|
|
31
34
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
const webpackConfig = require(require.resolve( // TODO: use normal resolution algorithm to find webpack file
|
|
36
|
-
_path.default.join(process.cwd(), 'webpack.config')));
|
|
35
|
+
// run directly from node
|
|
36
|
+
if (require.main === module) {
|
|
37
|
+
const entrypoint = process.argv[2]; //process.env.WEBPACK_PUBLIC_HOST = `http://localhost:${PORT}`; this breaks compatibility with stackblitz
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
process.env.WEBPACK_PUBLIC_PATH = '/assets/';
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
if (!entrypoint) {
|
|
42
|
+
console.log(`Usage: start-anansi <entrypoint-file>`);
|
|
43
|
+
process.exit(-1);
|
|
44
|
+
}
|
|
41
45
|
|
|
42
|
-
|
|
43
|
-
console.log(`Usage: start-anansi <entrypoint-file>`);
|
|
44
|
-
process.exit(-1);
|
|
46
|
+
startDevServer(entrypoint);
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
|
|
49
|
+
function startDevServer(entrypoint, env = {}) {
|
|
50
|
+
var _webpackConfigs$, _webpackConfigs$$devS;
|
|
48
51
|
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
53
|
+
const webpackConfig = require(require.resolve( // TODO: use normal resolution algorithm to find webpack file
|
|
54
|
+
_path.default.join(process.cwd(), 'webpack.config')));
|
|
49
55
|
|
|
50
|
-
const
|
|
51
|
-
const fs = (0, _memfs.createFsFromVolume)(volume);
|
|
56
|
+
const log = _runtime.default.getLogger('anansi-devserver'); // Set up in memory filesystem
|
|
52
57
|
|
|
53
|
-
_unionfs.ufs.use(_fs.default).use(fs);
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
let server; // Generate a temporary file so we can hot reload from the root of the application
|
|
59
|
+
const volume = new _memfs.Volume();
|
|
60
|
+
const fs = (0, _memfs.createFsFromVolume)(volume);
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
// eslint-disable-next-line
|
|
61
|
-
// @ts-ignore for some reason it's not picking up that other options are optional
|
|
62
|
-
const generatedEntrypoint = _tmp.default.fileSync({
|
|
63
|
-
postfix: '.js'
|
|
64
|
-
});
|
|
62
|
+
_unionfs.ufs.use(_fs.default).use(fs);
|
|
65
63
|
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
(0, _fsMonkey.patchRequire)(_unionfs.ufs);
|
|
65
|
+
const readFile = (0, _util.promisify)(_unionfs.ufs.readFile);
|
|
66
|
+
let server; // Generate a temporary file so we can hot reload from the root of the application
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
function hotEntry(entryPath) {
|
|
69
|
+
// eslint-disable-next-line
|
|
70
|
+
// @ts-ignore for some reason it's not picking up that other options are optional
|
|
71
|
+
const generatedEntrypoint = _tmp.default.fileSync({
|
|
72
|
+
postfix: '.js'
|
|
73
|
+
});
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
+
_fs.default.writeSync(generatedEntrypoint.fd, `
|
|
76
|
+
import entry from "${_path.default.resolve(process.cwd(), entryPath)}";
|
|
75
77
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
+
if (module.hot) {
|
|
79
|
+
module.hot.accept();
|
|
80
|
+
}
|
|
78
81
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
name: 'client'
|
|
82
|
-
}, {
|
|
83
|
-
mode: 'development'
|
|
84
|
-
}), webpackConfig({
|
|
85
|
-
entrypath: entrypoint.replace('.tsx', '.server.tsx'),
|
|
86
|
-
name: 'server',
|
|
87
|
-
BROWSERSLIST_ENV: 'current node'
|
|
88
|
-
}, {
|
|
89
|
-
mode: 'development',
|
|
90
|
-
target: 'node'
|
|
91
|
-
})]; // only have one output for server so we can avoid cached modules
|
|
92
|
-
|
|
93
|
-
webpackConfigs[1].plugins.push(new _webpack.default.optimize.LimitChunkCountPlugin({
|
|
94
|
-
maxChunks: 1
|
|
95
|
-
})); // initialize the webpack compiler
|
|
96
|
-
|
|
97
|
-
const compiler = (0, _webpack.default)(webpackConfigs);
|
|
98
|
-
|
|
99
|
-
_sourceMapSupport.default.install({
|
|
100
|
-
hookRequire: true
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
function getServerBundle(serverStats) {
|
|
104
|
-
var _serverJson$outputPat;
|
|
105
|
-
|
|
106
|
-
const serverJson = serverStats.toJson({
|
|
107
|
-
assets: true
|
|
108
|
-
});
|
|
109
|
-
return _path.default.join((_serverJson$outputPat = serverJson.outputPath) != null ? _serverJson$outputPat : '', 'server.js');
|
|
110
|
-
}
|
|
82
|
+
export default entry;
|
|
83
|
+
`);
|
|
111
84
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
try {
|
|
115
|
-
return await fn(req, res);
|
|
116
|
-
} catch (x) {
|
|
117
|
-
next(x);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const initRender = [];
|
|
85
|
+
return generatedEntrypoint;
|
|
86
|
+
}
|
|
123
87
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
88
|
+
const webpackConfigs = [webpackConfig({ ...env,
|
|
89
|
+
entrypath: hotEntry(entrypoint).name,
|
|
90
|
+
name: 'client'
|
|
91
|
+
}, {
|
|
92
|
+
mode: 'development'
|
|
93
|
+
}), webpackConfig({ ...env,
|
|
94
|
+
entrypath: entrypoint.replace('.tsx', '.server.tsx'),
|
|
95
|
+
name: 'server',
|
|
96
|
+
BROWSERSLIST_ENV: 'current node'
|
|
97
|
+
}, {
|
|
98
|
+
mode: 'development',
|
|
99
|
+
target: 'node'
|
|
100
|
+
})]; // only have one output for server so we can avoid cached modules
|
|
101
|
+
|
|
102
|
+
webpackConfigs[1].plugins.push(new _webpack.default.optimize.LimitChunkCountPlugin({
|
|
103
|
+
maxChunks: 1
|
|
104
|
+
})); // initialize the webpack compiler
|
|
105
|
+
|
|
106
|
+
const compiler = (0, _webpack.default)(webpackConfigs);
|
|
107
|
+
|
|
108
|
+
_sourceMapSupport.default.install({
|
|
109
|
+
hookRequire: true
|
|
128
110
|
});
|
|
129
|
-
});
|
|
130
111
|
|
|
131
|
-
function
|
|
132
|
-
|
|
112
|
+
function getServerBundle(serverStats) {
|
|
113
|
+
var _serverJson$outputPat;
|
|
133
114
|
|
|
134
|
-
|
|
115
|
+
const serverJson = serverStats.toJson({
|
|
116
|
+
assets: true
|
|
117
|
+
});
|
|
118
|
+
return _path.default.join((_serverJson$outputPat = serverJson.outputPath) != null ? _serverJson$outputPat : '', 'server.js');
|
|
119
|
+
}
|
|
135
120
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
121
|
+
function handleErrors(fn) {
|
|
122
|
+
return async function (req, res, next) {
|
|
123
|
+
try {
|
|
124
|
+
return await fn(req, res);
|
|
125
|
+
} catch (x) {
|
|
126
|
+
next(x);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
}
|
|
139
130
|
|
|
140
|
-
|
|
141
|
-
} else {
|
|
142
|
-
log.info('Launching SSR');
|
|
143
|
-
} // ASSETS
|
|
131
|
+
const initRender = [];
|
|
144
132
|
|
|
133
|
+
let render = (...args) => new Promise(resolve => {
|
|
134
|
+
initRender.push({
|
|
135
|
+
args,
|
|
136
|
+
resolve
|
|
137
|
+
});
|
|
138
|
+
});
|
|
145
139
|
|
|
146
|
-
|
|
140
|
+
function importRender(stats) {
|
|
141
|
+
var _clientStats$compilat, _clientStats$compilat2, _serverStats$compilat, _serverStats$compilat2;
|
|
147
142
|
|
|
148
|
-
|
|
149
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
150
|
-
render = require(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
151
|
-
initRender.forEach(init => render(...init.args).then(init.resolve));
|
|
152
|
-
} else {
|
|
153
|
-
render = (0, _importFresh.default)(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
143
|
+
const [clientStats, serverStats] = stats;
|
|
156
144
|
|
|
157
|
-
|
|
158
|
-
|
|
145
|
+
if (clientStats !== null && clientStats !== void 0 && (_clientStats$compilat = clientStats.compilation) !== null && _clientStats$compilat !== void 0 && (_clientStats$compilat2 = _clientStats$compilat.errors) !== null && _clientStats$compilat2 !== void 0 && _clientStats$compilat2.length || serverStats !== null && serverStats !== void 0 && (_serverStats$compilat = serverStats.compilation) !== null && _serverStats$compilat !== void 0 && (_serverStats$compilat2 = _serverStats$compilat.errors) !== null && _serverStats$compilat2 !== void 0 && _serverStats$compilat2.length) {
|
|
146
|
+
log.error('Errors for client build: ' + clientStats.compilation.errors);
|
|
147
|
+
log.error('Errors for server build: ' + serverStats.compilation.errors); // TODO: handle more gracefully
|
|
148
|
+
|
|
149
|
+
process.exit(-1);
|
|
150
|
+
} else {
|
|
151
|
+
log.info('Launching SSR');
|
|
152
|
+
} // ASSETS
|
|
159
153
|
|
|
160
|
-
/*client: {
|
|
161
|
-
...webpackConfigs[0].devServer?.client,
|
|
162
|
-
webSocketURL: {
|
|
163
|
-
...webpackConfigs[0].devServer?.client.webSocketURL,
|
|
164
|
-
port: 8080,
|
|
165
|
-
},
|
|
166
|
-
},*/
|
|
167
|
-
devMiddleware: { ...((_webpackConfigs$ = webpackConfigs[0]) === null || _webpackConfigs$ === void 0 ? void 0 : (_webpackConfigs$$devS = _webpackConfigs$.devServer) === null || _webpackConfigs$$devS === void 0 ? void 0 : _webpackConfigs$$devS.devMiddleware),
|
|
168
|
-
outputFileSystem: { ...fs,
|
|
169
|
-
join: _path.default.join
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
setupMiddlewares: (middlewares, devServer) => {
|
|
173
|
-
var _devServer$app;
|
|
174
154
|
|
|
175
|
-
|
|
176
|
-
throw new Error('webpack-dev-server is not defined');
|
|
177
|
-
} // serve SSR for non-WEBPACK_PUBLIC_PATH
|
|
155
|
+
const clientManifest = clientStats.toJson(); // SERVER SIDE ENTRYPOINT
|
|
178
156
|
|
|
157
|
+
if (Array.isArray(initRender)) {
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
159
|
+
render = require(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
160
|
+
initRender.forEach(init => render(...init.args).then(init.resolve));
|
|
161
|
+
} else {
|
|
162
|
+
render = (0, _importFresh.default)(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
179
165
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
166
|
+
const devServer = new _webpackDevServer.default( // write to memory filesystem so we can import
|
|
167
|
+
{ ...webpackConfigs[0].devServer,
|
|
168
|
+
|
|
169
|
+
/*client: {
|
|
170
|
+
...webpackConfigs[0].devServer?.client,
|
|
171
|
+
webSocketURL: {
|
|
172
|
+
...webpackConfigs[0].devServer?.client.webSocketURL,
|
|
173
|
+
port: 8080,
|
|
174
|
+
},
|
|
175
|
+
},*/
|
|
176
|
+
devMiddleware: { ...((_webpackConfigs$ = webpackConfigs[0]) === null || _webpackConfigs$ === void 0 ? void 0 : (_webpackConfigs$$devS = _webpackConfigs$.devServer) === null || _webpackConfigs$$devS === void 0 ? void 0 : _webpackConfigs$$devS.devMiddleware),
|
|
177
|
+
outputFileSystem: { ...fs,
|
|
178
|
+
join: _path.default.join
|
|
186
179
|
}
|
|
180
|
+
},
|
|
181
|
+
setupMiddlewares: (middlewares, devServer) => {
|
|
182
|
+
var _webpackConfigs$0$dev, _webpackConfigs$0$dev2, _devServer$app;
|
|
187
183
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
await render(req, res);
|
|
192
|
-
}));
|
|
193
|
-
return middlewares;
|
|
194
|
-
}
|
|
195
|
-
}, compiler);
|
|
184
|
+
if (!devServer) {
|
|
185
|
+
throw new Error('webpack-dev-server is not defined');
|
|
186
|
+
}
|
|
196
187
|
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
188
|
+
const otherRoutes = [process.env.WEBPACK_PUBLIC_PATH, ...Object.keys((_webpackConfigs$0$dev = (_webpackConfigs$0$dev2 = webpackConfigs[0].devServer) === null || _webpackConfigs$0$dev2 === void 0 ? void 0 : _webpackConfigs$0$dev2.proxy) != null ? _webpackConfigs$0$dev : {})]; // serve SSR for non-WEBPACK_PUBLIC_PATH
|
|
189
|
+
|
|
190
|
+
(_devServer$app = devServer.app) === null || _devServer$app === void 0 ? void 0 : _devServer$app.get(new RegExp(`^(?!${otherRoutes.join('|')})`), handleErrors(async function (req, res) {
|
|
191
|
+
if (req.url.endsWith('favicon.ico')) {
|
|
192
|
+
res.statusCode = 404;
|
|
193
|
+
res.setHeader('Content-type', 'text/html');
|
|
194
|
+
res.send('not found');
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
res.socket.on('error', error => {
|
|
199
|
+
console.error('Fatal', error);
|
|
200
|
+
});
|
|
201
|
+
await render(req, res);
|
|
202
|
+
}));
|
|
203
|
+
return middlewares;
|
|
203
204
|
}
|
|
205
|
+
}, compiler);
|
|
206
|
+
|
|
207
|
+
const runServer = async () => {
|
|
208
|
+
await devServer.start();
|
|
209
|
+
devServer.compiler.hooks.done.tap('Anansi Server', multiStats => {
|
|
210
|
+
if (!multiStats) {
|
|
211
|
+
log.error('stats not send');
|
|
212
|
+
process.exit(-1);
|
|
213
|
+
}
|
|
204
214
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
215
|
+
if (!Object.hasOwn(multiStats, 'stats')) return;
|
|
216
|
+
|
|
217
|
+
if (multiStats.stats.length > 1) {
|
|
218
|
+
try {
|
|
219
|
+
importRender(multiStats.stats);
|
|
220
|
+
} catch (e) {
|
|
221
|
+
log.error('Failed to load serve entrypoint');
|
|
222
|
+
throw e;
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
log.error('Only compiler one stat');
|
|
213
226
|
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const stopServer = async () => {
|
|
231
|
+
log.info('Stopping server...');
|
|
232
|
+
await devServer.stop();
|
|
233
|
+
log.info('Server closed');
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
process.on('SIGINT', () => {
|
|
237
|
+
log.warn('Received SIGINT, devserver shutting down');
|
|
238
|
+
stopServer();
|
|
239
|
+
process.exit(-1);
|
|
217
240
|
});
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
const stopServer = async () => {
|
|
221
|
-
log.info('Stopping server...');
|
|
222
|
-
await devServer.stop();
|
|
223
|
-
log.info('Server closed');
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
process.on('SIGINT', () => {
|
|
227
|
-
log.warn('Received SIGINT, devserver shutting down');
|
|
228
|
-
stopServer();
|
|
229
|
-
process.exit(-1);
|
|
230
|
-
});
|
|
231
|
-
runServer();
|
|
232
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsImVudiIsIldFQlBBQ0tfUFVCTElDX1BBVEgiLCJjb25zb2xlIiwibG9nIiwiZXhpdCIsImxvZ2dpbmciLCJnZXRMb2dnZXIiLCJ2b2x1bWUiLCJWb2x1bWUiLCJmcyIsImNyZWF0ZUZzRnJvbVZvbHVtZSIsInVmcyIsInVzZSIsImRpc2tGcyIsInBhdGNoUmVxdWlyZSIsInJlYWRGaWxlIiwicHJvbWlzaWZ5Iiwic2VydmVyIiwiaG90RW50cnkiLCJlbnRyeVBhdGgiLCJnZW5lcmF0ZWRFbnRyeXBvaW50IiwidG1wIiwiZmlsZVN5bmMiLCJwb3N0Zml4Iiwid3JpdGVTeW5jIiwiZmQiLCJ3ZWJwYWNrQ29uZmlncyIsImVudHJ5cGF0aCIsIm5hbWUiLCJtb2RlIiwicmVwbGFjZSIsIkJST1dTRVJTTElTVF9FTlYiLCJ0YXJnZXQiLCJwbHVnaW5zIiwicHVzaCIsIndlYnBhY2siLCJvcHRpbWl6ZSIsIkxpbWl0Q2h1bmtDb3VudFBsdWdpbiIsIm1heENodW5rcyIsImNvbXBpbGVyIiwic291cmNlTWFwU3VwcG9ydCIsImluc3RhbGwiLCJob29rUmVxdWlyZSIsImdldFNlcnZlckJ1bmRsZSIsInNlcnZlclN0YXRzIiwic2VydmVySnNvbiIsInRvSnNvbiIsImFzc2V0cyIsIm91dHB1dFBhdGgiLCJoYW5kbGVFcnJvcnMiLCJmbiIsInJlcSIsInJlcyIsIm5leHQiLCJ4IiwiaW5pdFJlbmRlciIsInJlbmRlciIsImFyZ3MiLCJQcm9taXNlIiwiaW1wb3J0UmVuZGVyIiwic3RhdHMiLCJjbGllbnRTdGF0cyIsImNvbXBpbGF0aW9uIiwiZXJyb3JzIiwibGVuZ3RoIiwiZXJyb3IiLCJpbmZvIiwiY2xpZW50TWFuaWZlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJkZWZhdWx0IiwiYmluZCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJpbml0IiwidGhlbiIsImltcG9ydEZyZXNoIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwic2V0dXBNaWRkbGV3YXJlcyIsIm1pZGRsZXdhcmVzIiwiRXJyb3IiLCJhcHAiLCJnZXQiLCJSZWdFeHAiLCJ1cmwiLCJlbmRzV2l0aCIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJzZW5kIiwic29ja2V0Iiwib24iLCJydW5TZXJ2ZXIiLCJzdGFydCIsImhvb2tzIiwiZG9uZSIsInRhcCIsIm11bHRpU3RhdHMiLCJPYmplY3QiLCJoYXNPd24iLCJlIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHR5cGUgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IHBhdGNoUmVxdWlyZSB9IGZyb20gJ2ZzLW1vbmtleSc7XG5pbXBvcnQgdG1wIGZyb20gJ3RtcCc7XG5pbXBvcnQgc291cmNlTWFwU3VwcG9ydCBmcm9tICdzb3VyY2UtbWFwLXN1cHBvcnQnO1xuaW1wb3J0IHsgdWZzIH0gZnJvbSAndW5pb25mcyc7XG5pbXBvcnQgV2VicGFja0RldlNlcnZlciBmcm9tICd3ZWJwYWNrLWRldi1zZXJ2ZXInO1xuaW1wb3J0IGltcG9ydEZyZXNoIGZyb20gJ2ltcG9ydC1mcmVzaCc7XG5pbXBvcnQgbG9nZ2luZyBmcm9tICd3ZWJwYWNrL2xpYi9sb2dnaW5nL3J1bnRpbWUnO1xuXG5pbXBvcnQgJ2Nyb3NzLWZldGNoL3BvbHlmaWxsJztcbmltcG9ydCB7IEJvdW5kUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG4vL3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QgPSBgaHR0cDovL2xvY2FsaG9zdDoke1BPUlR9YDsgdGhpcyBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIHN0YWNrYmxpdHpcbnByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEggPSAnL2Fzc2V0cy8nO1xuXG5pZiAoIWVudHJ5cG9pbnQpIHtcbiAgY29uc29sZS5sb2coYFVzYWdlOiBzdGFydC1hbmFuc2kgPGVudHJ5cG9pbnQtZmlsZT5gKTtcbiAgcHJvY2Vzcy5leGl0KC0xKTtcbn1cblxuY29uc3QgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2FuYW5zaS1kZXZzZXJ2ZXInKTtcblxuLy8gU2V0IHVwIGluIG1lbW9yeSBmaWxlc3lzdGVtXG5jb25zdCB2b2x1bWUgPSBuZXcgVm9sdW1lKCk7XG5jb25zdCBmcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZSh2b2x1bWUpO1xudWZzLnVzZShkaXNrRnMpLnVzZShmcyBhcyBhbnkpO1xuXG5wYXRjaFJlcXVpcmUodWZzKTtcbmNvbnN0IHJlYWRGaWxlID0gcHJvbWlzaWZ5KHVmcy5yZWFkRmlsZSk7XG5sZXQgc2VydmVyOiBTZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbi8vIEdlbmVyYXRlIGEgdGVtcG9yYXJ5IGZpbGUgc28gd2UgY2FuIGhvdCByZWxvYWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgYXBwbGljYXRpb25cbmZ1bmN0aW9uIGhvdEVudHJ5KGVudHJ5UGF0aDogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvLyBAdHMtaWdub3JlIGZvciBzb21lIHJlYXNvbiBpdCdzIG5vdCBwaWNraW5nIHVwIHRoYXQgb3RoZXIgb3B0aW9ucyBhcmUgb3B0aW9uYWxcbiAgY29uc3QgZ2VuZXJhdGVkRW50cnlwb2ludCA9IHRtcC5maWxlU3luYyh7IHBvc3RmaXg6ICcuanMnIH0pO1xuICBkaXNrRnMud3JpdGVTeW5jKFxuICAgIGdlbmVyYXRlZEVudHJ5cG9pbnQuZmQsXG4gICAgYFxuaW1wb3J0IGVudHJ5IGZyb20gXCIke3BhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBlbnRyeVBhdGgpfVwiO1xuXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlbnRyeTtcbiAgYCxcbiAgKTtcbiAgcmV0dXJuIGdlbmVyYXRlZEVudHJ5cG9pbnQ7XG59XG5cbmNvbnN0IHdlYnBhY2tDb25maWdzID0gW1xuICB3ZWJwYWNrQ29uZmlnKFxuICAgIHtcbiAgICAgIGVudHJ5cGF0aDogaG90RW50cnkoZW50cnlwb2ludCkubmFtZSxcbiAgICAgIG5hbWU6ICdjbGllbnQnLFxuICAgIH0sXG4gICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnIH0sXG4gICksXG4gIHdlYnBhY2tDb25maWcoXG4gICAge1xuICAgICAgZW50cnlwYXRoOiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgICAgQlJPV1NFUlNMSVNUX0VOVjogJ2N1cnJlbnQgbm9kZScsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcsIHRhcmdldDogJ25vZGUnIH0sXG4gICksXG5dIGFzIGNvbnN0O1xuLy8gb25seSBoYXZlIG9uZSBvdXRwdXQgZm9yIHNlcnZlciBzbyB3ZSBjYW4gYXZvaWQgY2FjaGVkIG1vZHVsZXNcbndlYnBhY2tDb25maWdzWzFdLnBsdWdpbnMucHVzaChcbiAgbmV3IHdlYnBhY2sub3B0aW1pemUuTGltaXRDaHVua0NvdW50UGx1Z2luKHsgbWF4Q2h1bmtzOiAxIH0pLFxuKTtcbi8vIGluaXRpYWxpemUgdGhlIHdlYnBhY2sgY29tcGlsZXJcbmNvbnN0IGNvbXBpbGVyOiBNdWx0aUNvbXBpbGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlncyk7XG5cbnNvdXJjZU1hcFN1cHBvcnQuaW5zdGFsbCh7IGhvb2tSZXF1aXJlOiB0cnVlIH0pO1xuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHM6IHdlYnBhY2suU3RhdHMpIHtcbiAgY29uc3Qgc2VydmVySnNvbiA9IHNlcnZlclN0YXRzLnRvSnNvbih7IGFzc2V0czogdHJ1ZSB9KTtcbiAgcmV0dXJuIHBhdGguam9pbihzZXJ2ZXJKc29uLm91dHB1dFBhdGggPz8gJycsICdzZXJ2ZXIuanMnKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUVycm9yczxcbiAgRiBleHRlbmRzIChcbiAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICApID0+IFByb21pc2U8dm9pZD4sXG4+KGZuOiBGKSB7XG4gIHJldHVybiBhc3luYyBmdW5jdGlvbiAoXG4gICAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICAgIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZSxcbiAgICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4gICkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4ocmVxLCByZXMpO1xuICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgIG5leHQoeCk7XG4gICAgfVxuICB9O1xufVxuXG5jb25zdCBpbml0UmVuZGVyOlxuICB8IHsgYXJnczogUGFyYW1ldGVyczxCb3VuZFJlbmRlcj47IHJlc29sdmU6ICgpID0+IHZvaWQgfVtdXG4gIHwgdW5kZWZpbmVkID0gW107XG5sZXQgcmVuZGVyOiBCb3VuZFJlbmRlciA9ICguLi5hcmdzKSA9PlxuICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICBpbml0UmVuZGVyLnB1c2goeyBhcmdzLCByZXNvbHZlIH0pO1xuICB9KTtcblxuZnVuY3Rpb24gaW1wb3J0UmVuZGVyKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgaWYgKFxuICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICkge1xuICAgIGxvZy5lcnJvcignRXJyb3JzIGZvciBjbGllbnQgYnVpbGQ6ICcgKyBjbGllbnRTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgIGxvZy5lcnJvcignRXJyb3JzIGZvciBzZXJ2ZXIgYnVpbGQ6ICcgKyBzZXJ2ZXJTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgIC8vIFRPRE86IGhhbmRsZSBtb3JlIGdyYWNlZnVsbHlcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9IGVsc2Uge1xuICAgIGxvZy5pbmZvKCdMYXVuY2hpbmcgU1NSJyk7XG4gIH1cblxuICAvLyBBU1NFVFNcbiAgY29uc3QgY2xpZW50TWFuaWZlc3QgPSBjbGllbnRTdGF0cy50b0pzb24oKTtcblxuICAvLyBTRVJWRVIgU0lERSBFTlRSWVBPSU5UXG4gIGlmIChBcnJheS5pc0FycmF5KGluaXRSZW5kZXIpKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICByZW5kZXIgPSAocmVxdWlyZShnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHMpKSBhcyBhbnkpLmRlZmF1bHQuYmluZChcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGNsaWVudE1hbmlmZXN0LFxuICAgICk7XG4gICAgaW5pdFJlbmRlci5mb3JFYWNoKGluaXQgPT4gcmVuZGVyKC4uLmluaXQuYXJncykudGhlbihpbml0LnJlc29sdmUpKTtcbiAgfSBlbHNlIHtcbiAgICByZW5kZXIgPSAoaW1wb3J0RnJlc2goZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzKSkgYXMgYW55KS5kZWZhdWx0LmJpbmQoXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBjbGllbnRNYW5pZmVzdCxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gIHtcbiAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgLypjbGllbnQ6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LFxuICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LndlYlNvY2tldFVSTCxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgIH0sXG4gICAgfSwqL1xuICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgIC4uLmZzLFxuICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgIH0sXG4gICAgc2V0dXBNaWRkbGV3YXJlczogKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgIGlmICghZGV2U2VydmVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignd2VicGFjay1kZXYtc2VydmVyIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIHNlcnZlIFNTUiBmb3Igbm9uLVdFQlBBQ0tfUFVCTElDX1BBVEhcbiAgICAgIGRldlNlcnZlci5hcHA/LmdldChcbiAgICAgICAgbmV3IFJlZ0V4cChgXig/ISR7cHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSH0pYCksXG4gICAgICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICAgICAgaWYgKHJlcS51cmwuZW5kc1dpdGgoJ2Zhdmljb24uaWNvJykpIHtcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgcmVzLnNlbmQoJ25vdCBmb3VuZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXMuc29ja2V0Lm9uKCdlcnJvcicsIChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmF0YWwnLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBhd2FpdCByZW5kZXIocmVxLCByZXMpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBtaWRkbGV3YXJlcztcbiAgICB9LFxuICB9LFxuICBjb21waWxlcixcbik7XG5jb25zdCBydW5TZXJ2ZXIgPSBhc3luYyAoKSA9PiB7XG4gIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICBkZXZTZXJ2ZXIuY29tcGlsZXIuaG9va3MuZG9uZS50YXAoXG4gICAgJ0FuYW5zaSBTZXJ2ZXInLFxuICAgIChtdWx0aVN0YXRzOiB3ZWJwYWNrLk11bHRpU3RhdHMgfCB3ZWJwYWNrLlN0YXRzKSA9PiB7XG4gICAgICBpZiAoIW11bHRpU3RhdHMpIHtcbiAgICAgICAgbG9nLmVycm9yKCdzdGF0cyBub3Qgc2VuZCcpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24obXVsdGlTdGF0cywgJ3N0YXRzJykpIHJldHVybjtcbiAgICAgIGlmICgobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpbXBvcnRSZW5kZXIoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cyk7XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGxvZy5lcnJvcignRmFpbGVkIHRvIGxvYWQgc2VydmUgZW50cnlwb2ludCcpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5lcnJvcignT25seSBjb21waWxlciBvbmUgc3RhdCcpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG59O1xuY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgbG9nLmluZm8oJ1N0b3BwaW5nIHNlcnZlci4uLicpO1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICBsb2cuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xufTtcblxucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICBsb2cud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICBzdG9wU2VydmVyKCk7XG4g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
|
|
241
|
+
runServer();
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwibWFpbiIsIm1vZHVsZSIsImVudHJ5cG9pbnQiLCJwcm9jZXNzIiwiYXJndiIsImVudiIsIldFQlBBQ0tfUFVCTElDX1BBVEgiLCJjb25zb2xlIiwibG9nIiwiZXhpdCIsInN0YXJ0RGV2U2VydmVyIiwid2VicGFja0NvbmZpZyIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsImN3ZCIsImxvZ2dpbmciLCJnZXRMb2dnZXIiLCJ2b2x1bWUiLCJWb2x1bWUiLCJmcyIsImNyZWF0ZUZzRnJvbVZvbHVtZSIsInVmcyIsInVzZSIsImRpc2tGcyIsInBhdGNoUmVxdWlyZSIsInJlYWRGaWxlIiwicHJvbWlzaWZ5Iiwic2VydmVyIiwiaG90RW50cnkiLCJlbnRyeVBhdGgiLCJnZW5lcmF0ZWRFbnRyeXBvaW50IiwidG1wIiwiZmlsZVN5bmMiLCJwb3N0Zml4Iiwid3JpdGVTeW5jIiwiZmQiLCJ3ZWJwYWNrQ29uZmlncyIsImVudHJ5cGF0aCIsIm5hbWUiLCJtb2RlIiwicmVwbGFjZSIsIkJST1dTRVJTTElTVF9FTlYiLCJ0YXJnZXQiLCJwbHVnaW5zIiwicHVzaCIsIndlYnBhY2siLCJvcHRpbWl6ZSIsIkxpbWl0Q2h1bmtDb3VudFBsdWdpbiIsIm1heENodW5rcyIsImNvbXBpbGVyIiwic291cmNlTWFwU3VwcG9ydCIsImluc3RhbGwiLCJob29rUmVxdWlyZSIsImdldFNlcnZlckJ1bmRsZSIsInNlcnZlclN0YXRzIiwic2VydmVySnNvbiIsInRvSnNvbiIsImFzc2V0cyIsIm91dHB1dFBhdGgiLCJoYW5kbGVFcnJvcnMiLCJmbiIsInJlcSIsInJlcyIsIm5leHQiLCJ4IiwiaW5pdFJlbmRlciIsInJlbmRlciIsImFyZ3MiLCJQcm9taXNlIiwiaW1wb3J0UmVuZGVyIiwic3RhdHMiLCJjbGllbnRTdGF0cyIsImNvbXBpbGF0aW9uIiwiZXJyb3JzIiwibGVuZ3RoIiwiZXJyb3IiLCJpbmZvIiwiY2xpZW50TWFuaWZlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJkZWZhdWx0IiwiYmluZCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJpbml0IiwidGhlbiIsImltcG9ydEZyZXNoIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwic2V0dXBNaWRkbGV3YXJlcyIsIm1pZGRsZXdhcmVzIiwiRXJyb3IiLCJvdGhlclJvdXRlcyIsIk9iamVjdCIsImtleXMiLCJwcm94eSIsImFwcCIsImdldCIsIlJlZ0V4cCIsInVybCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNlbmQiLCJzb2NrZXQiLCJvbiIsInJ1blNlcnZlciIsInN0YXJ0IiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsImhhc093biIsImUiLCJzdG9wU2VydmVyIiwic3RvcCIsIndhcm4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9zdGFydERldnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IGRpc2tGcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB3ZWJwYWNrLCB7IE11bHRpQ29tcGlsZXIgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgVm9sdW1lIH0gZnJvbSAnbWVtZnMnO1xuaW1wb3J0IHsgU2VydmVyLCBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgdHlwZSB7IE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgcGF0Y2hSZXF1aXJlIH0gZnJvbSAnZnMtbW9ua2V5JztcbmltcG9ydCB0bXAgZnJvbSAndG1wJztcbmltcG9ydCBzb3VyY2VNYXBTdXBwb3J0IGZyb20gJ3NvdXJjZS1tYXAtc3VwcG9ydCc7XG5pbXBvcnQgeyB1ZnMgfSBmcm9tICd1bmlvbmZzJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBsb2dnaW5nIGZyb20gJ3dlYnBhY2svbGliL2xvZ2dpbmcvcnVudGltZSc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgQm91bmRSZW5kZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLy8gcnVuIGRpcmVjdGx5IGZyb20gbm9kZVxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIC8vcHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfSE9TVCA9IGBodHRwOi8vbG9jYWxob3N0OiR7UE9SVH1gOyB0aGlzIGJyZWFrcyBjb21wYXRpYmlsaXR5IHdpdGggc3RhY2tibGl0elxuICBwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIID0gJy9hc3NldHMvJztcblxuICBpZiAoIWVudHJ5cG9pbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgVXNhZ2U6IHN0YXJ0LWFuYW5zaSA8ZW50cnlwb2ludC1maWxlPmApO1xuICAgIHByb2Nlc3MuZXhpdCgtMSk7XG4gIH1cblxuICBzdGFydERldlNlcnZlcihlbnRyeXBvaW50KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnREZXZTZXJ2ZXIoXG4gIGVudHJ5cG9pbnQ6IHN0cmluZyxcbiAgZW52OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIGNvbnN0IHdlYnBhY2tDb25maWcgPSByZXF1aXJlKHJlcXVpcmUucmVzb2x2ZShcbiAgICAvLyBUT0RPOiB1c2Ugbm9ybWFsIHJlc29sdXRpb24gYWxnb3JpdGhtIHRvIGZpbmQgd2VicGFjayBmaWxlXG4gICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuICApKTtcblxuICBjb25zdCBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignYW5hbnNpLWRldnNlcnZlcicpO1xuXG4gIC8vIFNldCB1cCBpbiBtZW1vcnkgZmlsZXN5c3RlbVxuICBjb25zdCB2b2x1bWUgPSBuZXcgVm9sdW1lKCk7XG4gIGNvbnN0IGZzID0gY3JlYXRlRnNGcm9tVm9sdW1lKHZvbHVtZSk7XG4gIHVmcy51c2UoZGlza0ZzKS51c2UoZnMgYXMgYW55KTtcblxuICBwYXRjaFJlcXVpcmUodWZzKTtcbiAgY29uc3QgcmVhZEZpbGUgPSBwcm9taXNpZnkodWZzLnJlYWRGaWxlKTtcbiAgbGV0IHNlcnZlcjogU2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEdlbmVyYXRlIGEgdGVtcG9yYXJ5IGZpbGUgc28gd2UgY2FuIGhvdCByZWxvYWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgYXBwbGljYXRpb25cbiAgZnVuY3Rpb24gaG90RW50cnkoZW50cnlQYXRoOiBzdHJpbmcpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAvLyBAdHMtaWdub3JlIGZvciBzb21lIHJlYXNvbiBpdCdzIG5vdCBwaWNraW5nIHVwIHRoYXQgb3RoZXIgb3B0aW9ucyBhcmUgb3B0aW9uYWxcbiAgICBjb25zdCBnZW5lcmF0ZWRFbnRyeXBvaW50ID0gdG1wLmZpbGVTeW5jKHsgcG9zdGZpeDogJy5qcycgfSk7XG4gICAgZGlza0ZzLndyaXRlU3luYyhcbiAgICAgIGdlbmVyYXRlZEVudHJ5cG9pbnQuZmQsXG4gICAgICBgXG4gIGltcG9ydCBlbnRyeSBmcm9tIFwiJHtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlQYXRoKX1cIjtcblxuICBpZiAobW9kdWxlLmhvdCkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KCk7XG4gIH1cblxuICBleHBvcnQgZGVmYXVsdCBlbnRyeTtcbiAgICBgLFxuICAgICk7XG4gICAgcmV0dXJuIGdlbmVyYXRlZEVudHJ5cG9pbnQ7XG4gIH1cblxuICBjb25zdCB3ZWJwYWNrQ29uZmlncyA9IFtcbiAgICB3ZWJwYWNrQ29uZmlnKFxuICAgICAge1xuICAgICAgICAuLi5lbnYsXG4gICAgICAgIGVudHJ5cGF0aDogaG90RW50cnkoZW50cnlwb2ludCkubmFtZSxcbiAgICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgICB9LFxuICAgICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnIH0sXG4gICAgKSxcbiAgICB3ZWJwYWNrQ29uZmlnKFxuICAgICAge1xuICAgICAgICAuLi5lbnYsXG4gICAgICAgIGVudHJ5cGF0aDogZW50cnlwb2ludC5yZXBsYWNlKCcudHN4JywgJy5zZXJ2ZXIudHN4JyksXG4gICAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgICAgICBCUk9XU0VSU0xJU1RfRU5WOiAnY3VycmVudCBub2RlJyxcbiAgICAgIH0sXG4gICAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcsIHRhcmdldDogJ25vZGUnIH0sXG4gICAgKSxcbiAgXSBhcyBjb25zdDtcbiAgLy8gb25seSBoYXZlIG9uZSBvdXRwdXQgZm9yIHNlcnZlciBzbyB3ZSBjYW4gYXZvaWQgY2FjaGVkIG1vZHVsZXNcbiAgd2VicGFja0NvbmZpZ3NbMV0ucGx1Z2lucy5wdXNoKFxuICAgIG5ldyB3ZWJwYWNrLm9wdGltaXplLkxpbWl0Q2h1bmtDb3VudFBsdWdpbih7IG1heENodW5rczogMSB9KSxcbiAgKTtcbiAgLy8gaW5pdGlhbGl6ZSB0aGUgd2VicGFjayBjb21waWxlclxuICBjb25zdCBjb21waWxlcjogTXVsdGlDb21waWxlciA9IHdlYnBhY2sod2VicGFja0NvbmZpZ3MpO1xuXG4gIHNvdXJjZU1hcFN1cHBvcnQuaW5zdGFsbCh7IGhvb2tSZXF1aXJlOiB0cnVlIH0pO1xuXG4gIGZ1bmN0aW9uIGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0czogd2VicGFjay5TdGF0cykge1xuICAgIGNvbnN0IHNlcnZlckpzb24gPSBzZXJ2ZXJTdGF0cy50b0pzb24oeyBhc3NldHM6IHRydWUgfSk7XG4gICAgcmV0dXJuIHBhdGguam9pbihzZXJ2ZXJKc29uLm91dHB1dFBhdGggPz8gJycsICdzZXJ2ZXIuanMnKTtcbiAgfVxuICBmdW5jdGlvbiBoYW5kbGVFcnJvcnM8XG4gICAgRiBleHRlbmRzIChcbiAgICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICAgIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZSxcbiAgICApID0+IFByb21pc2U8dm9pZD4sXG4gID4oZm46IEYpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKFxuICAgICAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICAgICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgICAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuICAgICkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZuKHJlcSwgcmVzKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgbmV4dCh4KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgaW5pdFJlbmRlcjpcbiAgICB8IHsgYXJnczogUGFyYW1ldGVyczxCb3VuZFJlbmRlcj47IHJlc29sdmU6ICgpID0+IHZvaWQgfVtdXG4gICAgfCB1bmRlZmluZWQgPSBbXTtcbiAgbGV0IHJlbmRlcjogQm91bmRSZW5kZXIgPSAoLi4uYXJncykgPT5cbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGluaXRSZW5kZXIucHVzaCh7IGFyZ3MsIHJlc29sdmUgfSk7XG4gICAgfSk7XG5cbiAgZnVuY3Rpb24gaW1wb3J0UmVuZGVyKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgICBjb25zdCBbY2xpZW50U3RhdHMsIHNlcnZlclN0YXRzXSA9IHN0YXRzO1xuICAgIGlmIChcbiAgICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICAgIHNlcnZlclN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIGxvZy5lcnJvcignRXJyb3JzIGZvciBjbGllbnQgYnVpbGQ6ICcgKyBjbGllbnRTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgICAgbG9nLmVycm9yKCdFcnJvcnMgZm9yIHNlcnZlciBidWlsZDogJyArIHNlcnZlclN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgbW9yZSBncmFjZWZ1bGx5XG4gICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuaW5mbygnTGF1bmNoaW5nIFNTUicpO1xuICAgIH1cblxuICAgIC8vIEFTU0VUU1xuICAgIGNvbnN0IGNsaWVudE1hbmlmZXN0ID0gY2xpZW50U3RhdHMudG9Kc29uKCk7XG5cbiAgICAvLyBTRVJWRVIgU0lERSBFTlRSWVBPSU5UXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5pdFJlbmRlcikpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gICAgICByZW5kZXIgPSAocmVxdWlyZShnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHMpKSBhcyBhbnkpLmRlZmF1bHQuYmluZChcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBjbGllbnRNYW5pZmVzdCxcbiAgICAgICk7XG4gICAgICBpbml0UmVuZGVyLmZvckVhY2goaW5pdCA9PiByZW5kZXIoLi4uaW5pdC5hcmdzKS50aGVuKGluaXQucmVzb2x2ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXIgPSAoaW1wb3J0RnJlc2goZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzKSkgYXMgYW55KS5kZWZhdWx0LmJpbmQoXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgY2xpZW50TWFuaWZlc3QsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAgIC8vIHdyaXRlIHRvIG1lbW9yeSBmaWxlc3lzdGVtIHNvIHdlIGNhbiBpbXBvcnRcbiAgICB7XG4gICAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgICAvKmNsaWVudDoge1xuICAgICAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXI/LmNsaWVudCxcbiAgICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyPy5jbGllbnQud2ViU29ja2V0VVJMLFxuICAgICAgICAgIHBvcnQ6IDgwODAsXG4gICAgICAgIH0sXG4gICAgICB9LCovXG4gICAgICBkZXZNaWRkbGV3YXJlOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICAgIG91dHB1dEZpbGVTeXN0ZW06IHtcbiAgICAgICAgICAuLi5mcyxcbiAgICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgICB9IGFzIGFueSBhcyB0eXBlb2YgZnMsXG4gICAgICB9LFxuICAgICAgc2V0dXBNaWRkbGV3YXJlczogKG1pZGRsZXdhcmVzLCBkZXZTZXJ2ZXIpID0+IHtcbiAgICAgICAgaWYgKCFkZXZTZXJ2ZXIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dlYnBhY2stZGV2LXNlcnZlciBpcyBub3QgZGVmaW5lZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3RoZXJSb3V0ZXMgPSBbXG4gICAgICAgICAgcHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSCxcbiAgICAgICAgICAuLi5PYmplY3Qua2V5cyh3ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXI/LnByb3h5ID8/IHt9KSxcbiAgICAgICAgXTtcbiAgICAgICAgLy8gc2VydmUgU1NSIGZvciBub24tV0VCUEFDS19QVUJMSUNfUEFUSFxuICAgICAgICBkZXZTZXJ2ZXIuYXBwPy5nZXQoXG4gICAgICAgICAgbmV3IFJlZ0V4cChgXig/ISR7b3RoZXJSb3V0ZXMuam9pbignfCcpfSlgKSxcbiAgICAgICAgICBoYW5kbGVFcnJvcnMoYXN5bmMgZnVuY3Rpb24gKHJlcTogYW55LCByZXM6IGFueSkge1xuICAgICAgICAgICAgaWYgKHJlcS51cmwuZW5kc1dpdGgoJ2Zhdmljb24uaWNvJykpIHtcbiAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XG4gICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtdHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgICAgICAgcmVzLnNlbmQoJ25vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuc29ja2V0Lm9uKCdlcnJvcicsIChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCcsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBhd2FpdCByZW5kZXIocmVxLCByZXMpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBtaWRkbGV3YXJlcztcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjb21waWxlcixcbiAgKTtcbiAgY29uc3QgcnVuU2VydmVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgIGRldlNlcnZlci5jb21waWxlci5ob29rcy5kb25lLnRhcChcbiAgICAgICdBbmFuc2kgU2VydmVyJyxcbiAgICAgIChtdWx0aVN0YXRzOiB3ZWJwYWNrLk11bHRpU3RhdHMgfCB3ZWJwYWNrLlN0YXRzKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlTdGF0cykge1xuICAgICAgICAgIGxvZy5lcnJvcignc3RhdHMgbm90IHNlbmQnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFPYmplY3QuaGFzT3duKG11bHRpU3RhdHMsICdzdGF0cycpKSByZXR1cm47XG4gICAgICAgIGlmICgobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaW1wb3J0UmVuZGVyKChtdWx0aVN0YXRzIGFzIHdlYnBhY2suTXVsdGlTdGF0cykuc3RhdHMpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgbG9nLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBzZXJ2ZSBlbnRyeXBvaW50Jyk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ09ubHkgY29tcGlsZXIgb25lIHN0YXQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICB9O1xuICBjb25zdCBzdG9wU2VydmVyID0gYXN5bmMgKCkgPT4ge1xuICAgIGxvZy5pbmZvKCdTdG9wcGluZyBzZXJ2ZXIuLi4nKTtcbiAgICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICAgIGxvZy5pbmZvKCdTZXJ2ZXIgY2xvc2VkJyk7XG4gIH07XG5cbiAgcHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICAgIGxvZy53YXJuKCdSZWNlaXZlZCBTSUdJTlQsIGRldnNlcnZlciBzaHV0dGluZyBkb3duJyk7XG4gICAgc3RvcFNlcnZlcigpO1xuICAgIHByb2Nlc3MuZXhpdCgtMSk7XG4gIH0pO1xuXG4gIHJ1blNlcnZlcigpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFB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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ServerResponse, IncomingMessage } from 'http';
|
|
3
|
+
import { StatsCompilation } from 'webpack';
|
|
4
|
+
import { Request, Response } from 'express';
|
|
5
|
+
export declare type Render = (clientManifest: StatsCompilation, req: Request | IncomingMessage, res: Response | ServerResponse) => Promise<void>;
|
|
6
|
+
export declare type BoundRender = (req: Request | IncomingMessage, res: Response | ServerResponse) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scripts/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,oBAAY,MAAM,GAAG,CACnB,cAAc,EAAE,gBAAgB,EAChC,GAAG,EAAE,OAAO,GAAG,eAAe,EAC9B,GAAG,EAAE,QAAQ,GAAG,cAAc,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,oBAAY,WAAW,GAAG,CACxB,GAAG,EAAE,OAAO,GAAG,eAAe,EAC9B,GAAG,EAAE,QAAQ,GAAG,cAAc,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare type Props = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
assets: {
|
|
5
|
+
href: string;
|
|
6
|
+
as?: string;
|
|
7
|
+
rel?: string;
|
|
8
|
+
}[];
|
|
9
|
+
head: React.ReactNode;
|
|
10
|
+
title: string;
|
|
11
|
+
rootId: string;
|
|
12
|
+
charSet: string;
|
|
13
|
+
};
|
|
14
|
+
declare function Document({ assets, head, children, title, rootId, charSet, }: Props): JSX.Element;
|
|
15
|
+
declare namespace Document {
|
|
16
|
+
var defaultProps: {
|
|
17
|
+
head: JSX.Element;
|
|
18
|
+
charSet: string;
|
|
19
|
+
rootId: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export default Document;
|
|
23
|
+
//# sourceMappingURL=DocumentComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentComponent.d.ts","sourceRoot":"","sources":["../../src/spouts/DocumentComponent.tsx"],"names":[],"mappings":";AAAA,aAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,iBAAwB,QAAQ,CAAC,EAC/B,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,MAAM,EACN,OAAO,GACR,EAAE,KAAK,eA2BP;kBAlCuB,QAAQ;;;;;;;eAAR,QAAQ"}
|
|
@@ -9,14 +9,19 @@ var _jsx2 = _interopRequireDefault(require("@babel/runtime/helpers/jsx"));
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|
|
12
|
+
var _process$env$WEBPACK_;
|
|
13
|
+
|
|
12
14
|
function Document({
|
|
13
15
|
assets,
|
|
14
16
|
head,
|
|
15
17
|
children,
|
|
16
18
|
title,
|
|
17
|
-
rootId
|
|
19
|
+
rootId,
|
|
20
|
+
charSet
|
|
18
21
|
}) {
|
|
19
|
-
return /*#__PURE__*/(0, _jsx2.default)("html", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("head", {}, void 0,
|
|
22
|
+
return /*#__PURE__*/(0, _jsx2.default)("html", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("head", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("meta", {
|
|
23
|
+
charSet: charSet
|
|
24
|
+
}), head, assets.map((asset, i) => /*#__PURE__*/_react.default.createElement("link", {
|
|
20
25
|
key: i,
|
|
21
26
|
rel: "preload",
|
|
22
27
|
...asset
|
|
@@ -38,14 +43,13 @@ function Document({
|
|
|
38
43
|
|
|
39
44
|
Document.defaultProps = {
|
|
40
45
|
head: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/(0, _jsx2.default)("meta", {
|
|
41
|
-
charSet: "utf-8"
|
|
42
|
-
}), /*#__PURE__*/(0, _jsx2.default)("meta", {
|
|
43
46
|
name: "viewport",
|
|
44
47
|
content: "width=device-width, initial-scale=1"
|
|
45
48
|
}), /*#__PURE__*/(0, _jsx2.default)("link", {
|
|
46
49
|
rel: "shortcut icon",
|
|
47
|
-
href:
|
|
50
|
+
href: `${(_process$env$WEBPACK_ = process.env.WEBPACK_PUBLIC_PATH) != null ? _process$env$WEBPACK_ : '/'}favicon.ico`
|
|
48
51
|
})),
|
|
52
|
+
charSet: 'utf-8',
|
|
49
53
|
rootId: 'anansi-root'
|
|
50
54
|
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudCIsImFzc2V0cyIsImhlYWQiLCJjaGlsZHJlbiIsInRpdGxlIiwicm9vdElkIiwiY2hhclNldCIsIm1hcCIsImFzc2V0IiwiaSIsIl9faHRtbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaWx0ZXIiLCJocmVmIiwiZW5kc1dpdGgiLCJkZWZhdWx0UHJvcHMiLCJwcm9jZXNzIiwiZW52IiwiV0VCUEFDS19QVUJMSUNfUEFUSCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFzc2V0czogeyBocmVmOiBzdHJpbmc7IGFzPzogc3RyaW5nOyByZWw/OiBzdHJpbmcgfVtdO1xuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJvb3RJZDogc3RyaW5nO1xuICBjaGFyU2V0OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudCh7XG4gIGFzc2V0cyxcbiAgaGVhZCxcbiAgY2hpbGRyZW4sXG4gIHRpdGxlLFxuICByb290SWQsXG4gIGNoYXJTZXQsXG59OiBQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIDxtZXRhIGNoYXJTZXQ9e2NoYXJTZXR9IC8+XG4gICAgICAgIHtoZWFkfVxuICAgICAgICB7YXNzZXRzLm1hcCgoYXNzZXQsIGkpID0+IChcbiAgICAgICAgICA8bGluayBrZXk9e2l9IHJlbD1cInByZWxvYWRcIiB7Li4uYXNzZXR9IC8+XG4gICAgICAgICkpfVxuICAgICAgICA8dGl0bGU+e3RpdGxlfTwvdGl0bGU+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAgPGRpdiBpZD17cm9vdElkfT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICAgIHsvKiB0aGlzIGVuc3VyZXMgdGhlIGNsaWVudCBjYW4gaHlkcmF0ZSB0aGUgYXNzZXRzIHByb3AgKi99XG4gICAgICAgIDxzY3JpcHRcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiBgYXNzZXRNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXRzKX07YCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICB7YXNzZXRzXG4gICAgICAgICAgLmZpbHRlcigoeyBocmVmIH0pID0+IGhyZWYuZW5kc1dpdGgoJy5qcycpKVxuICAgICAgICAgIC5tYXAoKHsgaHJlZiB9LCBpKSA9PiAoXG4gICAgICAgICAgICA8c2NyaXB0IGtleT17aX0gc3JjPXtocmVmfSBhc3luYyAvPlxuICAgICAgICAgICkpfVxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbkRvY3VtZW50LmRlZmF1bHRQcm9wcyA9IHtcbiAgaGVhZDogKFxuICAgIDw+XG4gICAgICA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIiAvPlxuICAgICAgPGxpbmtcbiAgICAgICAgcmVsPVwic2hvcnRjdXQgaWNvblwiXG4gICAgICAgIGhyZWY9e2Ake3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEggPz8gJy8nfWZhdmljb24uaWNvYH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICksXG4gIGNoYXJTZXQ6ICd1dGYtOCcsXG4gIHJvb3RJZDogJ2FuYW5zaS1yb290Jyxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFTZSxTQUFTQSxRQUFULENBQWtCO0VBQy9CQyxNQUQrQjtFQUUvQkMsSUFGK0I7RUFHL0JDLFFBSCtCO0VBSS9CQyxLQUorQjtFQUsvQkMsTUFMK0I7RUFNL0JDO0FBTitCLENBQWxCLEVBT0w7RUFDUixvQkFDRSxvREFDRSxvREFDRTtJQUFNLE9BQU8sRUFBRUE7RUFBZixFQURGLEVBRUdKLElBRkgsRUFHR0QsTUFBTSxDQUFDTSxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0lBQU0sR0FBRyxFQUFFQSxDQUFYO0lBQWMsR0FBRyxFQUFDLFNBQWxCO0lBQUEsR0FBZ0NEO0VBQWhDLEVBREQsQ0FISCxlQU1FLHdDQUFRSixLQUFSLENBTkYsQ0FERixlQVNFLG9EQUNFO0lBQUssRUFBRSxFQUFFQztFQUFULFdBQWtCRixRQUFsQixDQURGLGVBR0U7SUFDRSx1QkFBdUIsRUFBRTtNQUN2Qk8sTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVYLE1BQWYsQ0FBdUI7SUFEM0I7RUFEM0IsRUFIRixFQVFHQSxNQUFNLENBQ0pZLE1BREYsQ0FDUyxDQUFDO0lBQUVDO0VBQUYsQ0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0lBQUVPO0VBQUYsQ0FBRCxFQUFXTCxDQUFYLGtCQUNIO0lBQWdCLEdBQUcsRUFBRUssSUFBckI7SUFBMkIsS0FBSztFQUFoQyxHQUFhTCxDQUFiLENBSEgsQ0FSSCxDQVRGLENBREY7QUEwQkQ7O0FBQ0RULFFBQVEsQ0FBQ2dCLFlBQVQsR0FBd0I7RUFDdEJkLElBQUksZUFDRix5RUFDRTtJQUFNLElBQUksRUFBQyxVQUFYO0lBQXNCLE9BQU8sRUFBQztFQUE5QixFQURGLGVBRUU7SUFDRSxHQUFHLEVBQUMsZUFETjtJQUVFLElBQUksRUFBRyxHQUFELHlCQUFHZSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsbUJBQWYsb0NBQXNDLEdBQUk7RUFGbEQsRUFGRixDQUZvQjtFQVV0QmIsT0FBTyxFQUFFLE9BVmE7RUFXdEJELE1BQU0sRUFBRTtBQVhjLENBQXhCIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Route } from '@anansi/router';
|
|
3
|
+
import type { ResolveProps } from './types';
|
|
4
|
+
declare type NeededProps = {
|
|
5
|
+
matchedRoutes: Route<any>[];
|
|
6
|
+
title?: string;
|
|
7
|
+
} & ResolveProps;
|
|
8
|
+
export default function documentSpout(options: {
|
|
9
|
+
head?: React.ReactNode;
|
|
10
|
+
title: string;
|
|
11
|
+
}): <T extends NeededProps>(next: () => Promise<T>) => () => Promise<T>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/spouts/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,aAAK,WAAW,GAAG;IACjB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,uEAQA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Route } from '@anansi/router';
|
|
3
|
+
import type { ServerProps, ResolveProps } from './types';
|
|
4
|
+
declare type NeededProps = {
|
|
5
|
+
matchedRoutes: Route<any>[];
|
|
6
|
+
title?: string;
|
|
7
|
+
charSet?: string;
|
|
8
|
+
} & ResolveProps;
|
|
9
|
+
export default function DocumentSpout(options: {
|
|
10
|
+
head?: React.ReactNode;
|
|
11
|
+
title: string;
|
|
12
|
+
rootId: string;
|
|
13
|
+
charSet: string;
|
|
14
|
+
}): <T extends NeededProps>(next: (props: ServerProps) => Promise<T>) => (props: ServerProps) => Promise<T & {
|
|
15
|
+
app: JSX.Element;
|
|
16
|
+
}>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=document.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.server.d.ts","sourceRoot":"","sources":["../../src/spouts/document.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzD,aAAK,WAAW,GAAG;IACjB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,YAAY,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,yCAEiB,WAAW,4BAEJ,WAAW;;GAkEnC"}
|