@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.
Files changed (53) hide show
  1. package/CHANGELOG.md +368 -0
  2. package/dist/browser/index.d.ts +22 -0
  3. package/dist/browser/index.js +71 -0
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.js +9 -0
  6. package/dist/server/index.d.ts +4 -0
  7. package/dist/server/index.js +50 -0
  8. package/dist/types.d.ts +35 -0
  9. package/dist/types.js +3 -0
  10. package/dist/utils/alias.d.ts +4 -0
  11. package/dist/utils/alias.js +30 -0
  12. package/dist/utils/babel.d.ts +5 -0
  13. package/dist/utils/babel.js +84 -0
  14. package/dist/utils/compile.d.ts +8 -0
  15. package/dist/utils/compile.js +53 -0
  16. package/dist/utils/compileWatch.d.ts +3 -0
  17. package/dist/utils/compileWatch.js +36 -0
  18. package/dist/utils/dev-server.d.ts +22 -0
  19. package/dist/utils/dev-server.js +100 -0
  20. package/dist/utils/drop-peer-deps.d.ts +4 -0
  21. package/dist/utils/drop-peer-deps.js +20 -0
  22. package/dist/utils/getQueries.d.ts +2 -0
  23. package/dist/utils/getQueries.js +24 -0
  24. package/dist/utils/optimization.d.ts +8 -0
  25. package/dist/utils/optimization.js +44 -0
  26. package/dist/utils/output.d.ts +8 -0
  27. package/dist/utils/output.js +48 -0
  28. package/dist/utils/plugins.d.ts +5 -0
  29. package/dist/utils/plugins.js +60 -0
  30. package/dist/utils/processParams.d.ts +3 -0
  31. package/dist/utils/processParams.js +26 -0
  32. package/dist/utils/rules.d.ts +50 -0
  33. package/dist/utils/rules.js +134 -0
  34. package/dist/utils/watch.d.ts +17 -0
  35. package/dist/utils/watch.js +27 -0
  36. package/lib/browser/index.ts +71 -0
  37. package/lib/index.ts +3 -0
  38. package/lib/server/index.ts +47 -0
  39. package/lib/types.ts +33 -0
  40. package/lib/utils/alias.ts +32 -0
  41. package/lib/utils/babel.ts +86 -0
  42. package/lib/utils/compile.ts +53 -0
  43. package/lib/utils/compileWatch.ts +33 -0
  44. package/lib/utils/dev-server.ts +104 -0
  45. package/lib/utils/drop-peer-deps.ts +22 -0
  46. package/lib/utils/getQueries.ts +23 -0
  47. package/lib/utils/optimization.ts +42 -0
  48. package/lib/utils/output.ts +28 -0
  49. package/lib/utils/plugins.ts +62 -0
  50. package/lib/utils/processParams.ts +28 -0
  51. package/lib/utils/rules.ts +116 -0
  52. package/lib/utils/watch.ts +44 -0
  53. package/package.json +90 -0
@@ -0,0 +1,3 @@
1
+ export { createBrowserWebpack } from './browser';
2
+ export { createServerWebpack } from './server';
3
+ export { compile } from './utils/compile';
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,4 @@
1
+ /// <reference types="webpack-dev-server" />
2
+ import { Configuration } from 'webpack';
3
+ import { CreateWebpackParams } from '../browser';
4
+ export declare function createServerWebpack(params: CreateWebpackParams): Configuration;
@@ -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=
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,4 @@
1
+ import { BuildEnv } from '../types';
2
+ declare type Input = Pick<BuildEnv, 'MONO_OVERIDE' | 'PREACT_OVERIDE'>;
3
+ export declare function alias(cwd: string, buildEnv: Input): {};
4
+ export {};
@@ -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,5 @@
1
+ import { ToolParams } from '../types';
2
+ /**
3
+ * @param params
4
+ */
5
+ export declare function configureBabel(params: ToolParams): any;
@@ -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,3 @@
1
+ /// <reference types="webpack-dev-server" />
2
+ import { Compiler, Configuration, Options } from 'webpack';
3
+ export declare function compileWatch(config: Configuration): (options?: Options.WatchOptions) => Compiler;
@@ -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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