@wearejh/m2-pwa-webpack 0.10.2
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 +368 -0
- package/dist/browser/index.d.ts +22 -0
- package/dist/browser/index.js +71 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +9 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.js +50 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.js +3 -0
- package/dist/utils/alias.d.ts +4 -0
- package/dist/utils/alias.js +30 -0
- package/dist/utils/babel.d.ts +5 -0
- package/dist/utils/babel.js +84 -0
- package/dist/utils/compile.d.ts +8 -0
- package/dist/utils/compile.js +53 -0
- package/dist/utils/compileWatch.d.ts +3 -0
- package/dist/utils/compileWatch.js +36 -0
- package/dist/utils/dev-server.d.ts +22 -0
- package/dist/utils/dev-server.js +100 -0
- package/dist/utils/drop-peer-deps.d.ts +4 -0
- package/dist/utils/drop-peer-deps.js +20 -0
- package/dist/utils/getQueries.d.ts +2 -0
- package/dist/utils/getQueries.js +24 -0
- package/dist/utils/optimization.d.ts +8 -0
- package/dist/utils/optimization.js +44 -0
- package/dist/utils/output.d.ts +8 -0
- package/dist/utils/output.js +48 -0
- package/dist/utils/plugins.d.ts +5 -0
- package/dist/utils/plugins.js +60 -0
- package/dist/utils/processParams.d.ts +3 -0
- package/dist/utils/processParams.js +26 -0
- package/dist/utils/rules.d.ts +50 -0
- package/dist/utils/rules.js +134 -0
- package/dist/utils/watch.d.ts +17 -0
- package/dist/utils/watch.js +27 -0
- package/lib/browser/index.ts +71 -0
- package/lib/index.ts +3 -0
- package/lib/server/index.ts +47 -0
- package/lib/types.ts +33 -0
- package/lib/utils/alias.ts +32 -0
- package/lib/utils/babel.ts +86 -0
- package/lib/utils/compile.ts +53 -0
- package/lib/utils/compileWatch.ts +33 -0
- package/lib/utils/dev-server.ts +104 -0
- package/lib/utils/drop-peer-deps.ts +22 -0
- package/lib/utils/getQueries.ts +23 -0
- package/lib/utils/optimization.ts +42 -0
- package/lib/utils/output.ts +28 -0
- package/lib/utils/plugins.ts +62 -0
- package/lib/utils/processParams.ts +28 -0
- package/lib/utils/rules.ts +116 -0
- package/lib/utils/watch.ts +44 -0
- package/package.json +90 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var browser_1 = require("./browser");
|
|
4
|
+
Object.defineProperty(exports, "createBrowserWebpack", { enumerable: true, get: function () { return browser_1.createBrowserWebpack; } });
|
|
5
|
+
var server_1 = require("./server");
|
|
6
|
+
Object.defineProperty(exports, "createServerWebpack", { enumerable: true, get: function () { return server_1.createServerWebpack; } });
|
|
7
|
+
var compile_1 = require("./utils/compile");
|
|
8
|
+
Object.defineProperty(exports, "compile", { enumerable: true, get: function () { return compile_1.compile; } });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBaUQ7QUFBeEMsK0dBQUEsb0JBQW9CLE9BQUE7QUFDN0IsbUNBQStDO0FBQXRDLDZHQUFBLG1CQUFtQixPQUFBO0FBQzVCLDJDQUEwQztBQUFqQyxrR0FBQSxPQUFPLE9BQUEifQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServerWebpack = void 0;
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const webpack_1 = __importDefault(require("webpack"));
|
|
9
|
+
const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin"));
|
|
10
|
+
const m2_pwa_vars_1 = require("@wearejh/m2-pwa-vars");
|
|
11
|
+
const processParams_1 = require("../utils/processParams");
|
|
12
|
+
const rules_1 = require("../utils/rules");
|
|
13
|
+
const alias_1 = require("../utils/alias");
|
|
14
|
+
function createServerWebpack(params) {
|
|
15
|
+
const toolParams = processParams_1.processParams(params);
|
|
16
|
+
const { cwd, buildEnv } = toolParams;
|
|
17
|
+
return {
|
|
18
|
+
entry: {
|
|
19
|
+
[m2_pwa_vars_1.PWA_SSR_APP]: [path_1.resolve(cwd, m2_pwa_vars_1.PATH_SERVER_SRC, m2_pwa_vars_1.PWA_SSR_APP)],
|
|
20
|
+
},
|
|
21
|
+
target: 'node',
|
|
22
|
+
devtool: 'source-map',
|
|
23
|
+
stats: { children: false },
|
|
24
|
+
mode: 'development',
|
|
25
|
+
node: { fs: 'empty' },
|
|
26
|
+
output: {
|
|
27
|
+
path: path_1.join(cwd, m2_pwa_vars_1.PWA_SSR_PREFIX),
|
|
28
|
+
filename: '[name].js',
|
|
29
|
+
publicPath: `/${m2_pwa_vars_1.ASSET_PREFIX}/`,
|
|
30
|
+
libraryTarget: 'commonjs',
|
|
31
|
+
},
|
|
32
|
+
module: {
|
|
33
|
+
rules: rules_1.rules(toolParams),
|
|
34
|
+
},
|
|
35
|
+
resolve: {
|
|
36
|
+
alias: alias_1.alias(cwd, buildEnv),
|
|
37
|
+
extensions: ['.mjs', '.ts', '.tsx', '.js'],
|
|
38
|
+
},
|
|
39
|
+
plugins: [
|
|
40
|
+
new mini_css_extract_plugin_1.default({
|
|
41
|
+
filename: '[name]-[hash].css',
|
|
42
|
+
}),
|
|
43
|
+
new webpack_1.default.DefinePlugin({
|
|
44
|
+
__RENDER_ENV__: JSON.stringify('server'),
|
|
45
|
+
}),
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
exports.createServerWebpack = createServerWebpack;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtCQUFxQztBQUVyQyxzREFBaUQ7QUFDakQsc0ZBQTJEO0FBQzNELHNEQUFrRztBQUdsRywwREFBdUQ7QUFDdkQsMENBQXVDO0FBQ3ZDLDBDQUF1QztBQUV2QyxTQUFnQixtQkFBbUIsQ0FBQyxNQUEyQjtJQUMzRCxNQUFNLFVBQVUsR0FBRyw2QkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsVUFBVSxDQUFDO0lBRXJDLE9BQU87UUFDSCxLQUFLLEVBQUU7WUFDSCxDQUFDLHlCQUFXLENBQUMsRUFBRSxDQUFDLGNBQU8sQ0FBQyxHQUFHLEVBQUUsNkJBQWUsRUFBRSx5QkFBVyxDQUFDLENBQUM7U0FDOUQ7UUFDRCxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7UUFDMUIsSUFBSSxFQUFFLGFBQWE7UUFDbkIsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRTtRQUNyQixNQUFNLEVBQUU7WUFDSixJQUFJLEVBQUUsV0FBSSxDQUFDLEdBQUcsRUFBRSw0QkFBYyxDQUFDO1lBQy9CLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLDBCQUFZLEdBQUc7WUFDL0IsYUFBYSxFQUFFLFVBQVU7U0FDNUI7UUFDRCxNQUFNLEVBQUU7WUFDSixLQUFLLEVBQUUsYUFBSyxDQUFDLFVBQVUsQ0FBQztTQUMzQjtRQUNELE9BQU8sRUFBRTtZQUNMLEtBQUssRUFBRSxhQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztZQUMzQixVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUM7U0FDN0M7UUFDRCxPQUFPLEVBQUU7WUFDTCxJQUFJLGlDQUFvQixDQUFDO2dCQUNyQixRQUFRLEVBQUUsbUJBQW1CO2FBQ2hDLENBQUM7WUFDRixJQUFJLGlCQUFPLENBQUMsWUFBWSxDQUFDO2dCQUNyQixjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7YUFDM0MsQ0FBQztTQUNMO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFuQ0Qsa0RBbUNDIn0=
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import WebpackDevServer from 'webpack-dev-server';
|
|
2
|
+
export interface BuildEnv {
|
|
3
|
+
MONO_OVERIDE?: boolean;
|
|
4
|
+
PREACT_OVERIDE?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare type Modes = 'development' | 'production';
|
|
7
|
+
export declare type SelectMode<T extends any> = (selector: {
|
|
8
|
+
[key in Modes]?: T;
|
|
9
|
+
}) => T;
|
|
10
|
+
export declare type Targets = 'legacy' | 'modern';
|
|
11
|
+
export declare type SelectTarget<T extends any> = (selector: {
|
|
12
|
+
[key in Targets]?: T;
|
|
13
|
+
}) => T;
|
|
14
|
+
export declare type Envs = 'browser' | 'server';
|
|
15
|
+
export declare type SelectEnv<T extends any> = (selector: {
|
|
16
|
+
[key in Envs]?: T;
|
|
17
|
+
}) => T;
|
|
18
|
+
export declare type SelectDebug<T extends any, K extends any> = (on: T, off: K) => T | K;
|
|
19
|
+
export interface ToolFlags {
|
|
20
|
+
cypress?: boolean;
|
|
21
|
+
analyse?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ToolParams {
|
|
24
|
+
selectMode: SelectMode<any>;
|
|
25
|
+
selectTarget: SelectTarget<any>;
|
|
26
|
+
selectEnv: SelectEnv<any>;
|
|
27
|
+
selectDebug: SelectDebug<any, any>;
|
|
28
|
+
env: ToolFlags;
|
|
29
|
+
buildEnv: BuildEnv;
|
|
30
|
+
cwd: string;
|
|
31
|
+
backend: string;
|
|
32
|
+
version: string;
|
|
33
|
+
devServerBefore?: WebpackDevServer.Configuration['before'];
|
|
34
|
+
devServerHttps?: WebpackDevServer.Configuration['https'];
|
|
35
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.alias = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
function alias(cwd, buildEnv) {
|
|
6
|
+
return Object.assign(Object.assign({}, (() => {
|
|
7
|
+
if (!buildEnv.MONO_OVERIDE)
|
|
8
|
+
return undefined;
|
|
9
|
+
const pkg = require(path_1.resolve(cwd, 'package.json'));
|
|
10
|
+
const deps = pkg.dependencies;
|
|
11
|
+
const devDeps = pkg.devDependencies;
|
|
12
|
+
return Object.keys(deps)
|
|
13
|
+
.concat(Object.keys(devDeps))
|
|
14
|
+
.reduce((acc, name) => {
|
|
15
|
+
if (!name.match(/^@wearejh\//)) {
|
|
16
|
+
acc[name] = path_1.join(cwd, 'node_modules', name);
|
|
17
|
+
}
|
|
18
|
+
return acc;
|
|
19
|
+
}, {});
|
|
20
|
+
})()), (() => {
|
|
21
|
+
if (buildEnv.PREACT_OVERIDE) {
|
|
22
|
+
return {
|
|
23
|
+
react: 'preact/compat',
|
|
24
|
+
'react-dom': 'preact/compat',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
})());
|
|
28
|
+
}
|
|
29
|
+
exports.alias = alias;
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQXFDO0FBTXJDLFNBQWdCLEtBQUssQ0FBQyxHQUFXLEVBQUUsUUFBZTtJQUM5Qyx1Q0FDTyxDQUFDLEdBQUcsRUFBRTtRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxjQUFPLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3BDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBSSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDL0M7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxFQUFFLEdBQ0QsQ0FBQyxHQUFHLEVBQUU7UUFDTCxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDekIsT0FBTztnQkFDSCxLQUFLLEVBQUUsZUFBZTtnQkFDdEIsV0FBVyxFQUFFLGVBQWU7YUFDL0IsQ0FBQztTQUNMO0lBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFDTjtBQUNOLENBQUM7QUF6QkQsc0JBeUJDIn0=
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureBabel = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @param params
|
|
6
|
+
*/
|
|
7
|
+
function configureBabel(params) {
|
|
8
|
+
const { selectMode, selectTarget } = params;
|
|
9
|
+
const presetEnvConfig = selectTarget({
|
|
10
|
+
legacy: {
|
|
11
|
+
modules: false,
|
|
12
|
+
useBuiltIns: 'entry',
|
|
13
|
+
corejs: '3.6.4',
|
|
14
|
+
targets: {
|
|
15
|
+
browsers: ['> 1%', 'last 2 versions', 'Firefox ESR'],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
modern: {
|
|
19
|
+
modules: false,
|
|
20
|
+
useBuiltIns: 'entry',
|
|
21
|
+
corejs: '3.6.4',
|
|
22
|
+
targets: {
|
|
23
|
+
browsers: [
|
|
24
|
+
'last 2 Chrome versions',
|
|
25
|
+
'not Chrome < 60',
|
|
26
|
+
'last 2 Safari versions',
|
|
27
|
+
'not Safari < 10.1',
|
|
28
|
+
'last 2 iOS versions',
|
|
29
|
+
'not iOS < 10.3',
|
|
30
|
+
'last 2 Firefox versions',
|
|
31
|
+
'not Firefox < 54',
|
|
32
|
+
'last 2 Edge versions',
|
|
33
|
+
'not Edge < 15',
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
const presets = ['@babel/preset-react', '@babel/typescript', ['@babel/preset-env', presetEnvConfig]];
|
|
39
|
+
// define default plugin list
|
|
40
|
+
const plugins = [
|
|
41
|
+
'@babel/plugin-syntax-dynamic-import',
|
|
42
|
+
'@babel/plugin-syntax-jsx',
|
|
43
|
+
'@babel/plugin-proposal-class-properties',
|
|
44
|
+
'@babel/plugin-proposal-object-rest-spread',
|
|
45
|
+
'@babel/plugin-transform-react-jsx',
|
|
46
|
+
'@babel/plugin-proposal-optional-chaining',
|
|
47
|
+
'@babel/plugin-proposal-nullish-coalescing-operator',
|
|
48
|
+
'graphql-tag',
|
|
49
|
+
'import-graphql',
|
|
50
|
+
];
|
|
51
|
+
// define default babel options
|
|
52
|
+
const defaults = {
|
|
53
|
+
babelrc: false,
|
|
54
|
+
presets,
|
|
55
|
+
plugins,
|
|
56
|
+
};
|
|
57
|
+
const options = {
|
|
58
|
+
development: Object.assign({}, defaults, {
|
|
59
|
+
presets: defaults.presets,
|
|
60
|
+
plugins: defaults.plugins,
|
|
61
|
+
}),
|
|
62
|
+
production: Object.assign({}, defaults, {
|
|
63
|
+
presets: defaults.presets,
|
|
64
|
+
plugins: [
|
|
65
|
+
...defaults.plugins,
|
|
66
|
+
selectTarget({ modern: 'transform-react-remove-prop-types' }),
|
|
67
|
+
selectTarget({
|
|
68
|
+
modern: [
|
|
69
|
+
'@babel/plugin-transform-runtime',
|
|
70
|
+
{
|
|
71
|
+
corejs: false,
|
|
72
|
+
helpers: true,
|
|
73
|
+
regenerator: true,
|
|
74
|
+
useESModules: false,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
}),
|
|
78
|
+
].filter(Boolean),
|
|
79
|
+
}),
|
|
80
|
+
};
|
|
81
|
+
return selectMode(options);
|
|
82
|
+
}
|
|
83
|
+
exports.configureBabel = configureBabel;
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFiZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdXRpbHMvYmFiZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBa0I7SUFDN0MsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLE1BQU0sRUFBRTtZQUNKLE9BQU8sRUFBRSxLQUFLO1lBQ2QsV0FBVyxFQUFFLE9BQU87WUFDcEIsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUU7Z0JBQ0wsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsQ0FBQzthQUN2RDtTQUNKO1FBQ0QsTUFBTSxFQUFFO1lBQ0osT0FBTyxFQUFFLEtBQUs7WUFDZCxXQUFXLEVBQUUsT0FBTztZQUNwQixNQUFNLEVBQUUsT0FBTztZQUNmLE9BQU8sRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ04sd0JBQXdCO29CQUN4QixpQkFBaUI7b0JBQ2pCLHdCQUF3QjtvQkFDeEIsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtvQkFDaEIseUJBQXlCO29CQUN6QixrQkFBa0I7b0JBQ2xCLHNCQUFzQjtvQkFDdEIsZUFBZTtpQkFDbEI7YUFDSjtTQUNKO0tBQ0osQ0FBQyxDQUFDO0lBRUgsTUFBTSxPQUFPLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFFckcsNkJBQTZCO0lBQzdCLE1BQU0sT0FBTyxHQUFHO1FBQ1oscUNBQXFDO1FBQ3JDLDBCQUEwQjtRQUMxQix5Q0FBeUM7UUFDekMsMkNBQTJDO1FBQzNDLG1DQUFtQztRQUNuQywwQ0FBMEM7UUFDMUMsb0RBQW9EO1FBQ3BELGFBQWE7UUFDYixnQkFBZ0I7S0FDbkIsQ0FBQztJQUVGLCtCQUErQjtJQUMvQixNQUFNLFFBQVEsR0FBRztRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTztRQUNQLE9BQU87S0FDVixDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUc7UUFDWixXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFO1lBQ3JDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTztZQUN6QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87U0FDNUIsQ0FBQztRQUNGLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUU7WUFDcEMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO1lBQ3pCLE9BQU8sRUFBRTtnQkFDTCxHQUFHLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQztnQkFDN0QsWUFBWSxDQUFDO29CQUNULE1BQU0sRUFBRTt3QkFDSixpQ0FBaUM7d0JBQ2pDOzRCQUNJLE1BQU0sRUFBRSxLQUFLOzRCQUNiLE9BQU8sRUFBRSxJQUFJOzRCQUNiLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixZQUFZLEVBQUUsS0FBSzt5QkFDdEI7cUJBQ0o7aUJBQ0osQ0FBQzthQUNMLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNwQixDQUFDO0tBQ0wsQ0FBQztJQUVGLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFoRkQsd0NBZ0ZDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="webpack-dev-server" />
|
|
2
|
+
import { Compiler, Configuration, Stats } from 'webpack';
|
|
3
|
+
export interface CompileOutput {
|
|
4
|
+
stats: Stats;
|
|
5
|
+
warnings: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function compile(config: Configuration): () => Promise<CompileOutput>;
|
|
8
|
+
export declare function run(compiler: Compiler): Promise<CompileOutput>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.run = exports.compile = void 0;
|
|
7
|
+
const webpack_1 = __importDefault(require("webpack"));
|
|
8
|
+
const formatWebpackMessages_1 = __importDefault(require("react-dev-utils/formatWebpackMessages"));
|
|
9
|
+
function compile(config) {
|
|
10
|
+
const compiler = webpack_1.default(config);
|
|
11
|
+
return () => {
|
|
12
|
+
return run(compiler);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
exports.compile = compile;
|
|
16
|
+
function run(compiler) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
compiler.run((err, stats) => {
|
|
19
|
+
let messages;
|
|
20
|
+
if (err) {
|
|
21
|
+
if (!err.message) {
|
|
22
|
+
return reject(err);
|
|
23
|
+
}
|
|
24
|
+
let errMessage = err.message;
|
|
25
|
+
// Add additional information for postcss errors
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(err, 'postcssNode')) {
|
|
27
|
+
errMessage += '\nCompileError: Begins at CSS selector ' + err['postcssNode'].selector;
|
|
28
|
+
}
|
|
29
|
+
messages = formatWebpackMessages_1.default({
|
|
30
|
+
errors: [errMessage],
|
|
31
|
+
warnings: [],
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
messages = formatWebpackMessages_1.default(stats.toJson({ all: false, warnings: true, errors: true }));
|
|
36
|
+
}
|
|
37
|
+
if (messages.errors.length) {
|
|
38
|
+
// Only keep the first error. Others are often indicative
|
|
39
|
+
// of the same problem, but confuse the reader with noise.
|
|
40
|
+
if (messages.errors.length > 1) {
|
|
41
|
+
messages.errors.length = 1;
|
|
42
|
+
}
|
|
43
|
+
return reject(new Error(messages.errors.join('\n\n')));
|
|
44
|
+
}
|
|
45
|
+
return resolve({
|
|
46
|
+
stats,
|
|
47
|
+
warnings: messages.warnings,
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
exports.run = run;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHNEQUFrRTtBQUNsRSxrR0FBMEU7QUFPMUUsU0FBZ0IsT0FBTyxDQUFDLE1BQXFCO0lBQ3pDLE1BQU0sUUFBUSxHQUFHLGlCQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsT0FBTyxHQUFHLEVBQUU7UUFDUixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QixDQUFDLENBQUM7QUFDTixDQUFDO0FBTEQsMEJBS0M7QUFFRCxTQUFnQixHQUFHLENBQUMsUUFBa0I7SUFDbEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hCLElBQUksUUFBUSxDQUFDO1lBQ2IsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7b0JBQ2QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3RCO2dCQUVELElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7Z0JBRTdCLGdEQUFnRDtnQkFDaEQsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxFQUFFO29CQUMxRCxVQUFVLElBQUkseUNBQXlDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQztpQkFDekY7Z0JBRUQsUUFBUSxHQUFHLCtCQUFxQixDQUFDO29CQUM3QixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7b0JBQ3BCLFFBQVEsRUFBRSxFQUFFO2lCQUNmLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILFFBQVEsR0FBRywrQkFBcUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDaEc7WUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO2dCQUN4Qix5REFBeUQ7Z0JBQ3pELDBEQUEwRDtnQkFDMUQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQzVCLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztpQkFDOUI7Z0JBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFEO1lBQ0QsT0FBTyxPQUFPLENBQUM7Z0JBQ1gsS0FBSztnQkFDTCxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7YUFDOUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFyQ0Qsa0JBcUNDIn0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.compileWatch = void 0;
|
|
7
|
+
const webpack_1 = __importDefault(require("webpack"));
|
|
8
|
+
function compileWatch(config) {
|
|
9
|
+
const compiler = webpack_1.default(config);
|
|
10
|
+
return (options = {}) => {
|
|
11
|
+
compiler.watch(options, (err, stats) => {
|
|
12
|
+
if (err) {
|
|
13
|
+
console.error(err.stack || err);
|
|
14
|
+
if (err.details) {
|
|
15
|
+
console.error(err.details);
|
|
16
|
+
}
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const info = stats.toJson();
|
|
20
|
+
if (stats.hasErrors()) {
|
|
21
|
+
console.error('complete, with', info.errors.length, 'errors');
|
|
22
|
+
console.error(info.errors);
|
|
23
|
+
}
|
|
24
|
+
if (stats.hasWarnings()) {
|
|
25
|
+
console.warn('complete, with', info.warnings.length, 'warnings');
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
compiler.hooks.watchRun.tap('compileWatch', () => {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.log('re-compiling...');
|
|
31
|
+
});
|
|
32
|
+
return compiler;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
exports.compileWatch = compileWatch;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZVdhdGNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2NvbXBpbGVXYXRjaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzREFBb0U7QUFFcEUsU0FBZ0IsWUFBWSxDQUFDLE1BQXFCO0lBQzlDLE1BQU0sUUFBUSxHQUFHLGlCQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakMsT0FBTyxDQUFDLFVBQWdDLEVBQUUsRUFBRSxFQUFFO1FBQzFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ25DLElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDaEMsSUFBSyxHQUFXLENBQUMsT0FBTyxFQUFFO29CQUN0QixPQUFPLENBQUMsS0FBSyxDQUFFLEdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDdkM7Z0JBQ0QsT0FBTzthQUNWO1lBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRTVCLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUM5QjtZQUVELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3BFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUM3QyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQTlCRCxvQ0E4QkMifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ToolParams } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* @param params
|
|
5
|
+
*/
|
|
6
|
+
export declare function devServer(params: ToolParams): {
|
|
7
|
+
publicPath: any;
|
|
8
|
+
compress: boolean;
|
|
9
|
+
port: number;
|
|
10
|
+
host: string;
|
|
11
|
+
https: boolean | import("https").ServerOptions | undefined;
|
|
12
|
+
proxy: {
|
|
13
|
+
'/sw.js': {
|
|
14
|
+
target: string;
|
|
15
|
+
pathRewrite: {
|
|
16
|
+
'/sw.js': string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
before: (app: any, server: any, compiler: any) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare function DevServerReadyPlugin(): void;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DevServerReadyPlugin = exports.devServer = void 0;
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const http_proxy_middleware_1 = __importDefault(require("http-proxy-middleware"));
|
|
10
|
+
const serve_static_1 = __importDefault(require("serve-static"));
|
|
11
|
+
const graphql_playground_middleware_express_1 = __importDefault(require("graphql-playground-middleware-express"));
|
|
12
|
+
const body_parser_1 = __importDefault(require("body-parser"));
|
|
13
|
+
const connect_history_api_fallback_1 = __importDefault(require("connect-history-api-fallback"));
|
|
14
|
+
const getQueries_1 = __importDefault(require("./getQueries"));
|
|
15
|
+
/**
|
|
16
|
+
* This flag is used for Cypress so that it can poll the server
|
|
17
|
+
* and know when it's actually ready to be used in tests
|
|
18
|
+
* @type {boolean}
|
|
19
|
+
*/
|
|
20
|
+
let ready = false;
|
|
21
|
+
/**
|
|
22
|
+
* @param params
|
|
23
|
+
*/
|
|
24
|
+
function devServer(params) {
|
|
25
|
+
const { selectTarget, env, backend, version, cwd } = params;
|
|
26
|
+
const cypress = (env && env.cypress) || false;
|
|
27
|
+
return {
|
|
28
|
+
publicPath: selectTarget({ legacy: '/dist-legacy/', modern: '/dist/' }),
|
|
29
|
+
compress: false,
|
|
30
|
+
port: 9001,
|
|
31
|
+
host: '0.0.0.0',
|
|
32
|
+
https: params.devServerHttps,
|
|
33
|
+
proxy: {
|
|
34
|
+
'/sw.js': {
|
|
35
|
+
target: 'http://localhost:9001/',
|
|
36
|
+
pathRewrite: { '/sw.js': '/dist/sw.js' },
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
before: (app, server, compiler) => {
|
|
40
|
+
params.devServerBefore && params.devServerBefore(app, server, compiler);
|
|
41
|
+
const noop = () => { };
|
|
42
|
+
const mw = graphql_playground_middleware_express_1.default({
|
|
43
|
+
endpoint: '/graphql',
|
|
44
|
+
tabs: getQueries_1.default({}, { config: { cwd: cwd } }),
|
|
45
|
+
});
|
|
46
|
+
app.use(body_parser_1.default.urlencoded({ extended: true }));
|
|
47
|
+
app.post('/checkout/3ds-cypress', (_req, res) => {
|
|
48
|
+
return res.sendFile(path_1.join(cwd, 'static', 'html', '3ds-cypress.html'));
|
|
49
|
+
});
|
|
50
|
+
app.post('/checkout/3ds-return', (req, res) => {
|
|
51
|
+
const template = fs_1.readFileSync(path_1.join(cwd, 'static', 'html', '3ds-redirect.html'), 'utf-8');
|
|
52
|
+
const data = Object.assign(Object.assign({}, req.body), req.params);
|
|
53
|
+
const replaced = template.replace('{{data}}', JSON.stringify(data));
|
|
54
|
+
return res.send(replaced);
|
|
55
|
+
});
|
|
56
|
+
app.use('/__info', (_req, res) => res.send({ version }));
|
|
57
|
+
app.use('/__wait-on', (_req, res, next) => {
|
|
58
|
+
if (ready) {
|
|
59
|
+
return res.send('ok');
|
|
60
|
+
}
|
|
61
|
+
next();
|
|
62
|
+
});
|
|
63
|
+
app.use(function (req, res, next) {
|
|
64
|
+
if (req.url.startsWith('/static/')) {
|
|
65
|
+
return next();
|
|
66
|
+
}
|
|
67
|
+
if (req.url.endsWith('.html')) {
|
|
68
|
+
return res.sendFile(path_1.join(cwd, 'html', 'index.html'));
|
|
69
|
+
}
|
|
70
|
+
next();
|
|
71
|
+
});
|
|
72
|
+
app.get('/playground', (req, res) => mw(req, res, noop));
|
|
73
|
+
app.use('/sw-killswitch.js', serve_static_1.default(path_1.join(cwd, 'static', 'sw-killswitch.js')));
|
|
74
|
+
app.use(http_proxy_middleware_1.default(['/graphql', '/rest', '/media'], {
|
|
75
|
+
target: backend,
|
|
76
|
+
secure: false,
|
|
77
|
+
changeOrigin: true,
|
|
78
|
+
autoRewrite: true,
|
|
79
|
+
cookieDomainRewrite: '',
|
|
80
|
+
headers: {
|
|
81
|
+
'accept-encoding': 'identity',
|
|
82
|
+
},
|
|
83
|
+
}));
|
|
84
|
+
app.use(connect_history_api_fallback_1.default({
|
|
85
|
+
index: cypress
|
|
86
|
+
? '/html/index.test.html'
|
|
87
|
+
: selectTarget({ modern: '/html/index.html', legacy: '/html/index.legacy.html' }),
|
|
88
|
+
}));
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
exports.devServer = devServer;
|
|
93
|
+
function DevServerReadyPlugin() { }
|
|
94
|
+
exports.DevServerReadyPlugin = DevServerReadyPlugin;
|
|
95
|
+
DevServerReadyPlugin.prototype.apply = function (compiler) {
|
|
96
|
+
compiler.plugin('done', function () {
|
|
97
|
+
ready = true;
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2LXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91dGlscy9kZXYtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtCQUE0QjtBQUM1QiwyQkFBa0M7QUFFbEMsa0ZBQTBDO0FBQzFDLGdFQUF1QztBQUN2QyxrSEFBd0Y7QUFDeEYsOERBQXFDO0FBQ3JDLGdHQUF1RDtBQUl2RCw4REFBc0M7QUFFdEM7Ozs7R0FJRztBQUNILElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUVsQjs7R0FFRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxNQUFrQjtJQUN4QyxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzlDLE9BQU87UUFDSCxVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDdkUsUUFBUSxFQUFFLEtBQUs7UUFDZixJQUFJLEVBQUUsSUFBSTtRQUNWLElBQUksRUFBRSxTQUFTO1FBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjO1FBQzVCLEtBQUssRUFBRTtZQUNILFFBQVEsRUFBRTtnQkFDTixNQUFNLEVBQUUsd0JBQXdCO2dCQUNoQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO2FBQzNDO1NBQ0o7UUFDRCxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxH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
|