@merkur/create-widget 0.34.6 → 0.35.1

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 (51) hide show
  1. package/bin/createWidget.mjs +1 -1
  2. package/package.json +2 -2
  3. package/template/jest.config.js +4 -0
  4. package/template/merkur.config.mjs +3 -0
  5. package/template/package.json +16 -21
  6. package/template/server/__integration__/appSpec.js +1 -7
  7. package/template/server/app.js +8 -17
  8. package/template/server/config/default.json +0 -4
  9. package/template/server/config/production.json +0 -3
  10. package/template/server/routes/widgetAPI/widgetAPI.js +14 -8
  11. package/template/server/server.js +6 -7
  12. package/template/src/widget.js +4 -6
  13. package/views/preact/template/jest.config.js +3 -0
  14. package/views/preact/template/merkur.config.mjs +5 -0
  15. package/views/preact/template/src/slots/HeadlineSlot.jsx +0 -8
  16. package/views/preact/template/src/views/View.jsx +1 -19
  17. package/views/preact/template/src/views/__tests__/ViewSpec.jsx +1 -1
  18. package/views/preact/template/src/widget.js +56 -0
  19. package/views/preact/template.json +3 -5
  20. package/views/svelte/template/merkur.config.mjs +5 -0
  21. package/views/svelte/template/src/widget.js +56 -0
  22. package/views/svelte/template/webpack.config.js +18 -42
  23. package/views/svelte/template.json +5 -5
  24. package/views/uhtml/template/merkur.config.mjs +5 -0
  25. package/views/uhtml/template/src/slots/HeadlineSlot.js +0 -8
  26. package/views/uhtml/template/src/views/View.js +0 -18
  27. package/views/uhtml/template/src/widget.js +56 -0
  28. package/views/uhtml/template/webpack.config.js +9 -3
  29. package/views/uhtml/template.json +4 -4
  30. package/views/vanilla/template/src/{client.js → entries/client.js} +4 -4
  31. package/views/vanilla/template/src/{server.js → entries/server.js} +2 -2
  32. package/views/vanilla/template.json +3 -2
  33. package/template/nodemon.json +0 -14
  34. package/template/server/routes/playground/index.js +0 -3
  35. package/template/server/routes/playground/playground.ejs +0 -46
  36. package/template/server/routes/playground/playground.js +0 -48
  37. package/template/server/routes/utils.js +0 -14
  38. package/template/src/lib/utils.js +0 -39
  39. package/template/src/polyfill.es5.js +0 -0
  40. package/template/src/polyfill.es9.js +0 -0
  41. package/views/preact/template/babel.config.js +0 -13
  42. package/views/preact/template/src/client.js +0 -56
  43. package/views/preact/template/src/server.js +0 -31
  44. package/views/preact/template/webpack.config.js +0 -60
  45. package/views/svelte/template/src/client.js +0 -65
  46. package/views/svelte/template/src/server.js +0 -32
  47. package/views/svelte/template/src/slots/headlineSlotFactory.js +0 -10
  48. package/views/svelte/template/src/views/viewFactory.js +0 -19
  49. package/views/uhtml/template/src/client.js +0 -51
  50. package/views/uhtml/template/src/server.js +0 -31
  51. package/views/vanilla/template/webpack.config.js +0 -16
@@ -13,7 +13,7 @@ const { argv } = yargs(hideBin(process.argv));
13
13
  if (argv._.length === 0) {
14
14
  // eslint-disable-next-line no-console
15
15
  console.log(`
16
- Please specify your new project directory:
16
+ Please specify your new project directory:
17
17
  ${chalk.blue('@merkur/create-widget')} ${chalk.green('<project-directory>')}
18
18
  For example:
19
19
  ${chalk.blue('@merkur/create-widget')} ${chalk.green('my-widget')}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/create-widget",
3
- "version": "0.34.6",
3
+ "version": "0.35.1",
4
4
  "description": "CLI for creating merkur widget easily.",
5
5
  "bin": {
6
6
  "merkur-create-widget": "./bin/createWidget.mjs"
@@ -44,5 +44,5 @@
44
44
  "inquirer": "9.2.2",
45
45
  "yargs": "^17.7.2"
46
46
  },
47
- "gitHead": "f835d930e7736a67658c7411730266fd677bb780"
47
+ "gitHead": "bc934c6a61b706062dd1fc11c9805457900e8d72"
48
48
  }
@@ -1,5 +1,9 @@
1
1
  const config = require('@merkur/tools/jest.config.js');
2
2
 
3
+ config.transform = {
4
+ '^.+\\.[t|j]sx?$': 'esbuild-jest2',
5
+ };
6
+
3
7
  module.exports = {
4
8
  ...config,
5
9
  };
@@ -0,0 +1,3 @@
1
+ export default function () {
2
+ return {};
3
+ }
@@ -3,44 +3,39 @@
3
3
  "version": "0.0.1",
4
4
  "description": "",
5
5
  "scripts": {
6
- "dev:server": "cross-env NODE_CONFIG_DIR='./server/config' NODE_ENV=development nodemon server/server.js --config nodemon.json",
7
6
  "test": "npm run test:all",
8
- "test:unit": "cross-env TEST_GROUP='unit' jest -c ./jest.config.js",
9
- "test:integration": "cross-env TEST_GROUP='integration' NODE_CONFIG_DIR='./server/config' jest -c ./jest.config.js",
10
- "test:all": "npm run build && cross-env TEST_GROUP='all' NODE_CONFIG_DIR='./server/config' jest -c ./jest.config.js",
11
- "test:watch": "cross-env TEST_GROUP='unit' jest -c ./jest.config.js --watchAll",
7
+ "test:unit": "cross-env TEST_GROUP='unit' merkur test",
8
+ "test:integration": "cross-env TEST_GROUP='integration' merkur test",
9
+ "test:all": "npm run build && cross-env TEST_GROUP='all' merkur test",
10
+ "test:watch": "cross-env TEST_GROUP='unit' merkur test --watchAll",
12
11
  "lint": "eslint -c ./.eslintrc.js --ignore-path ./.prettierignore './**/*.{js,jsx}'",
13
- "dev": "cross-env NODE_ENV=development webpack --config ./webpack.config.js --watch",
14
- "build": "cross-env NODE_ENV=production webpack --config ./webpack.config.js",
15
- "start": "cross-env NODE_CONFIG_DIR='./server/config' NODE_ENV=production node server/server.js"
12
+ "dev": "merkur dev",
13
+ "build": "merkur build",
14
+ "start": "merkur start"
16
15
  },
17
16
  "author": "",
18
17
  "license": "ISC",
19
18
  "dependencies": {
20
- "@merkur/core": "0.34.0",
21
- "@merkur/integration": "0.34.0",
22
- "@merkur/plugin-component": "0.34.0",
23
- "@merkur/plugin-error": "0.34.4",
24
- "@merkur/plugin-event-emitter": "0.34.0",
19
+ "@merkur/cli": "0.35.1",
20
+ "@merkur/core": "0.35.0",
21
+ "@merkur/integration": "0.35.0",
22
+ "@merkur/plugin-component": "0.35.0",
23
+ "@merkur/plugin-error": "0.35.0",
24
+ "@merkur/plugin-event-emitter": "0.35.0",
25
25
  "compression": "^1.7.4",
26
26
  "config": "^3.3.7",
27
27
  "cors": "^2.8.5",
28
28
  "cross-env": "^7.0.3",
29
- "ejs": "^3.1.6",
30
29
  "express": "^4.17.3",
31
30
  "express-static-gzip": "^2.1.5",
32
- "got": "^11.8.2",
33
31
  "helmet": "^5.0.2",
34
32
  "morgan": "^1.10.0"
35
33
  },
36
34
  "devDependencies": {
37
- "@merkur/tools": "0.34.0",
38
- "@merkur/tool-webpack": "0.34.0",
39
- "nodemon": "^2.0.15",
40
- "webpack": "^5.72.0",
41
- "webpack-cli": "^4.9.2"
35
+ "@merkur/tools": "0.35.0",
36
+ "esbuild-jest2": "^0.6.5"
42
37
  },
43
38
  "engines": {
44
- "node": ">=14.0.0"
39
+ "node": ">=20.0.0"
45
40
  }
46
41
  }
@@ -9,7 +9,7 @@ describe('Widget', () => {
9
9
  expect(res.statusCode).toEqual(200);
10
10
  expect(res.body.assets.length).toBeGreaterThan(0);
11
11
  delete res.body.assets;
12
- expect(res.body).toMatchInlineSnapshot();
12
+ expect(res.body).toMatchSnapshot();
13
13
  });
14
14
 
15
15
  it('should return 404 for not defined route', async () => {
@@ -18,10 +18,4 @@ describe('Widget', () => {
18
18
  expect(res.statusCode).toEqual(404);
19
19
  expect(res.body.error.status).toEqual(404);
20
20
  });
21
-
22
- it('should return 200 for playground page', async () => {
23
- const res = await request(app).get('/');
24
-
25
- expect(res.statusCode).toEqual(200);
26
- });
27
21
  });
@@ -1,5 +1,3 @@
1
- const path = require('path');
2
-
3
1
  const compression = require('compression');
4
2
  const cors = require('cors');
5
3
  const express = require('express');
@@ -7,17 +5,19 @@ const expressStaticGzip = require('express-static-gzip');
7
5
  const helmet = require('helmet');
8
6
  const morgan = require('morgan');
9
7
 
8
+ const { resolveConfig } = require('@merkur/cli/server');
9
+
10
+ const { merkurConfig } = resolveConfig();
11
+
10
12
  const {
11
13
  apiErrorMiddleware,
12
14
  logErrorMiddleware,
13
15
  } = require('@merkur/plugin-error/server');
14
16
 
15
17
  const errorRouteFactory = require('./routes/error');
16
- const playgroundRouteFactory = require('./routes/playground');
17
18
  const widgetAPIRouteFactory = require('./routes/widgetAPI');
18
19
 
19
20
  const error = errorRouteFactory();
20
- const playground = playgroundRouteFactory();
21
21
  const widgetAPI = widgetAPIRouteFactory();
22
22
 
23
23
  const expressStaticConfig = {
@@ -28,8 +28,6 @@ const expressStaticConfig = {
28
28
  };
29
29
 
30
30
  const app = express();
31
- app.set('view engine', 'ejs');
32
- app.set('trust proxy', true);
33
31
 
34
32
  app
35
33
  .use(morgan('dev'))
@@ -43,24 +41,17 @@ app
43
41
  .use(cors())
44
42
  .use(compression())
45
43
  .use(
46
- '/static',
47
- expressStaticGzip(path.join(__dirname, 'static'), expressStaticConfig),
44
+ merkurConfig.widgetServer.staticPath,
45
+ express.static(merkurConfig.widgetServer.staticFolder),
48
46
  )
49
47
  .use(
50
- '/static',
48
+ merkurConfig.widgetServer.staticPath,
51
49
  expressStaticGzip(
52
- path.join(__dirname, '../build/static'),
50
+ merkurConfig.widgetServer.staticFolder,
53
51
  expressStaticConfig,
54
52
  ),
55
53
  )
56
- .use(
57
- '/@merkur/tools/static/',
58
- express.static(
59
- path.join(__dirname, '../node_modules/@merkur/tools/static'),
60
- ),
61
- )
62
54
  .use(widgetAPI.router)
63
- .use(playground.router)
64
55
  .use(error.router)
65
56
  .use(logErrorMiddleware())
66
57
  .use(apiErrorMiddleware());
@@ -1,9 +1,5 @@
1
1
  {
2
2
  "environment": "development",
3
- "server": {
4
- "port": 4444,
5
- "clusters": 0
6
- },
7
3
  "widget": {
8
4
  "apiUrl": "https://api.github.dev/"
9
5
  }
@@ -1,8 +1,5 @@
1
1
  {
2
2
  "environment": "production",
3
- "server": {
4
- "clusters": 3
5
- },
6
3
  "widget": {
7
4
  "apiUrl": "https://api.github.com/"
8
5
  }
@@ -1,17 +1,26 @@
1
1
  const config = require('config');
2
2
  const express = require('express');
3
3
 
4
- const { createAssets, memo } = require('@merkur/integration/server');
4
+ const { resolveConfig } = require('@merkur/cli/server');
5
+ const {
6
+ asyncMiddleware,
7
+ createAssets,
8
+ memo,
9
+ requireUncached,
10
+ } = require('@merkur/integration/server');
5
11
  const memoCreateAssets = memo(createAssets);
6
12
 
13
+ const { merkurConfig } = resolveConfig();
14
+ const { staticFolder, buildFolder, protocol, host, staticPath } =
15
+ merkurConfig.widgetServer;
16
+
7
17
  const widgetEnvironment = config.get('widget');
8
- const merkurModule = require('../../../build/widget.cjs');
9
- const { asyncMiddleware, getServerUrl } = require('../utils');
10
18
 
11
19
  const router = express.Router();
12
20
  router.get(
13
21
  '/widget',
14
22
  asyncMiddleware(async (req, res) => {
23
+ const merkurModule = requireUncached(`${buildFolder}/widget.cjs`);
15
24
  const widget = await merkurModule.createWidget({
16
25
  props: {
17
26
  name: req.query.name,
@@ -22,14 +31,11 @@ router.get(
22
31
  const { html, slot = {} } = await widget.mount();
23
32
  const info = await widget.info();
24
33
 
25
- const staticFolder = `${__dirname}/../../../build/static`;
26
- const staticBaseUrl = `${getServerUrl(req)}/static`;
27
-
28
34
  info.assets = await memoCreateAssets({
29
35
  assets: info.assets,
30
36
  staticFolder,
31
- staticBaseUrl,
32
- folders: ['es11', 'es9'],
37
+ staticBaseUrl: `${protocol}//${host}${staticPath}`,
38
+ folders: Object.keys(merkurConfig.task),
33
39
  });
34
40
 
35
41
  const status = info?.error?.status ?? 200;
@@ -1,11 +1,12 @@
1
1
  const cluster = require('cluster');
2
2
  const os = require('os');
3
3
 
4
- const config = require('config');
4
+ const { resolveConfig } = require('@merkur/cli/server');
5
+ const { merkurConfig } = resolveConfig();
5
6
 
6
7
  const { app } = require('./app');
7
8
 
8
- const serverConfig = config.get('server');
9
+ const { widgetServer } = merkurConfig;
9
10
 
10
11
  process.on('uncaughtException', (error) => {
11
12
  console.error(error);
@@ -15,10 +16,8 @@ process.on('unhandledRejection', (error) => {
15
16
  console.error(error);
16
17
  });
17
18
 
18
- if (!serverConfig.clusters || !cluster.isMaster) {
19
- const server = app.listen(config.get('server.port'), () => {
20
- console.log(`listen on localhost:${config.get('server.port')}`); // eslint-disable-line no-console
21
- });
19
+ if (!widgetServer.clusters || !cluster.isMaster) {
20
+ const server = app.listen(widgetServer.port);
22
21
 
23
22
  const handleExit = () => {
24
23
  server.close(() => {
@@ -30,7 +29,7 @@ if (!serverConfig.clusters || !cluster.isMaster) {
30
29
  process.on('SIGQUIT', handleExit);
31
30
  process.on('SIGTERM', handleExit);
32
31
  } else {
33
- let cpuCount = serverConfig.clusters || os.cpus().length;
32
+ let cpuCount = widgetServer.clusters || os.cpus().length;
34
33
 
35
34
  for (let i = 0; i < cpuCount; i += 1) {
36
35
  cluster.fork();
@@ -1,18 +1,16 @@
1
+ import { defineWidget } from '@merkur/core';
1
2
  import { componentPlugin } from '@merkur/plugin-component';
2
3
  import { errorPlugin } from '@merkur/plugin-error';
3
4
  import { eventEmitterPlugin } from '@merkur/plugin-event-emitter';
4
5
 
5
6
  import pkg from '../package.json';
7
+ import './style.css';
6
8
 
7
- export default {
9
+ export default defineWidget({
8
10
  name: pkg.name,
9
11
  version: pkg.version,
10
12
  $plugins: [componentPlugin, eventEmitterPlugin, errorPlugin],
11
13
  assets: [
12
- {
13
- name: 'polyfill.js',
14
- type: 'script',
15
- },
16
14
  {
17
15
  name: 'widget.js',
18
16
  type: 'script',
@@ -38,4 +36,4 @@ export default {
38
36
  ...restProps,
39
37
  };
40
38
  },
41
- };
39
+ });
@@ -2,6 +2,9 @@ const config = require('@merkur/tools/jest.config.js');
2
2
 
3
3
  config.setupFilesAfterEnv = ['./jest.setup.js'];
4
4
  config.snapshotSerializers = ['enzyme-to-json/serializer'];
5
+ config.transform = {
6
+ '^.+\\.[t|j]sx?$': 'esbuild-jest2',
7
+ };
5
8
 
6
9
  module.exports = {
7
10
  ...config,
@@ -0,0 +1,5 @@
1
+ export default function () {
2
+ return {
3
+ extends: ['@merkur/preact/cli'],
4
+ };
5
+ }
@@ -2,13 +2,6 @@ import Welcome from '../components/Welcome';
2
2
  import WidgetContext from '../components/WidgetContext';
3
3
  import WidgetDescription from '../components/WidgetDescription';
4
4
 
5
- async function headlineSlotFactory() {
6
- return {
7
- name: 'headline',
8
- View: HeadlineSlot,
9
- };
10
- }
11
-
12
5
  function HeadlineSlot(widget) {
13
6
  if (widget.error && widget.error.status) {
14
7
  return null;
@@ -27,5 +20,4 @@ function HeadlineSlot(widget) {
27
20
  );
28
21
  }
29
22
 
30
- export { headlineSlotFactory };
31
23
  export default HeadlineSlot;
@@ -1,23 +1,6 @@
1
+ import ErrorView from './ErrorView';
1
2
  import Counter from '../components/Counter';
2
3
  import WidgetContext from '../components/WidgetContext';
3
- import { headlineSlotFactory } from '../slots/HeadlineSlot';
4
- import ErrorView from './ErrorView';
5
-
6
- async function viewFactory(widget) {
7
- const slot = (await Promise.all([headlineSlotFactory(widget)])).reduce(
8
- (acc, cur) => {
9
- acc[cur.name] = cur;
10
-
11
- return acc;
12
- },
13
- {},
14
- );
15
-
16
- return {
17
- View,
18
- slot,
19
- };
20
- }
21
4
 
22
5
  function View(widget) {
23
6
  if (widget.error && widget.error.status) {
@@ -35,5 +18,4 @@ function View(widget) {
35
18
  );
36
19
  }
37
20
 
38
- export { viewFactory };
39
21
  export default View;
@@ -24,6 +24,6 @@ describe('View', () => {
24
24
  it('should display main view', async () => {
25
25
  const wrapper = await widget.mount();
26
26
 
27
- expect(wrapper).toMatchInlineSnapshot();
27
+ expect(wrapper).toMatchSnapshot();
28
28
  });
29
29
  });
@@ -0,0 +1,56 @@
1
+ /* eslint-disable no-unused-vars */
2
+ import { defineWidget } from '@merkur/core';
3
+ import {
4
+ componentPlugin,
5
+ createViewFactory,
6
+ createSlotFactory,
7
+ } from '@merkur/plugin-component';
8
+ import { errorPlugin } from '@merkur/plugin-error';
9
+ import { eventEmitterPlugin } from '@merkur/plugin-event-emitter';
10
+
11
+ import HeadlineSlot from './slots/HeadlineSlot';
12
+ import View from './views/View';
13
+
14
+ import pkg from '../package.json';
15
+
16
+ import './style.css';
17
+
18
+ export default defineWidget({
19
+ name: pkg.name,
20
+ version: pkg.version,
21
+ viewFactory: createViewFactory((widget) => ({
22
+ View,
23
+ slotFactories: [
24
+ createSlotFactory((widget) => ({
25
+ name: 'headline',
26
+ View: HeadlineSlot,
27
+ })),
28
+ ],
29
+ })),
30
+ $plugins: [componentPlugin, eventEmitterPlugin, errorPlugin],
31
+ assets: [
32
+ {
33
+ name: 'widget.js',
34
+ type: 'script',
35
+ },
36
+ {
37
+ name: 'widget.css',
38
+ type: 'stylesheet',
39
+ },
40
+ ],
41
+ onClick(widget) {
42
+ widget.setState({ counter: widget.state.counter + 1 });
43
+ },
44
+ onReset(widget) {
45
+ widget.setState({ counter: 0 });
46
+ },
47
+ load(widget) {
48
+ // We don't want to set environment into app state
49
+ const { environment, ...restProps } = widget.props;
50
+
51
+ return {
52
+ counter: 0,
53
+ ...restProps,
54
+ };
55
+ },
56
+ });
@@ -1,13 +1,11 @@
1
1
  {
2
2
  "dependencies": {
3
- "preact": "10.13.2",
4
- "preact-render-to-string": "6.0.3"
3
+ "@merkur/preact": "0.35.0"
5
4
  },
6
5
  "devDependencies": {
7
- "@babel/preset-react": "7.18.6",
8
- "babel-loader": "9.1.2",
9
6
  "enzyme": "3.11.0",
7
+ "identity-obj-proxy": "^3.0.0",
10
8
  "enzyme-adapter-preact-pure": "4.1.0",
11
9
  "enzyme-to-json": "3.6.2"
12
10
  }
13
- }
11
+ }
@@ -0,0 +1,5 @@
1
+ export default function () {
2
+ return {
3
+ extends: ['@merkur/svelte/cli'],
4
+ };
5
+ }
@@ -0,0 +1,56 @@
1
+ /* eslint-disable no-unused-vars */
2
+ import { defineWidget } from '@merkur/core';
3
+ import {
4
+ componentPlugin,
5
+ createViewFactory,
6
+ createSlotFactory,
7
+ } from '@merkur/plugin-component';
8
+ import { errorPlugin } from '@merkur/plugin-error';
9
+ import { eventEmitterPlugin } from '@merkur/plugin-event-emitter';
10
+
11
+ import HeadlineSlot from './slots/HeadlineSlot.svelte';
12
+ import View from './views/View.svelte';
13
+
14
+ import pkg from '../package.json';
15
+
16
+ import './style.css';
17
+
18
+ export default defineWidget({
19
+ name: pkg.name,
20
+ version: pkg.version,
21
+ viewFactory: createViewFactory((widget) => ({
22
+ View,
23
+ slotFactories: [
24
+ createSlotFactory((widget) => ({
25
+ name: 'headline',
26
+ View: HeadlineSlot,
27
+ })),
28
+ ],
29
+ })),
30
+ $plugins: [componentPlugin, eventEmitterPlugin, errorPlugin],
31
+ assets: [
32
+ {
33
+ name: 'widget.js',
34
+ type: 'script',
35
+ },
36
+ {
37
+ name: 'widget.css',
38
+ type: 'stylesheet',
39
+ },
40
+ ],
41
+ onClick(widget) {
42
+ widget.setState({ counter: widget.state.counter + 1 });
43
+ },
44
+ onReset(widget) {
45
+ widget.setState({ counter: 0 });
46
+ },
47
+ load(widget) {
48
+ // We don't want to set environment into app state
49
+ const { environment, ...restProps } = widget.props;
50
+
51
+ return {
52
+ counter: 0,
53
+ ...restProps,
54
+ };
55
+ },
56
+ });
@@ -5,57 +5,33 @@ const {
5
5
  applyES9Transformation,
6
6
  applyStyleLoaders,
7
7
  pipe,
8
- webpackMode,
9
8
  } = require('@merkur/tool-webpack');
10
-
11
- function applySvelteWeb(config) {
12
- config.module.rules.push({
13
- test: /\.(svelte|html)$/,
14
- use: {
15
- loader: 'svelte-loader',
16
- options: {
17
- compilerOptions: {
18
- dev: webpackMode,
19
- generate: 'dom',
20
- hydratable: true,
21
- },
22
- emitCss: true,
23
- hotReload: false,
24
- },
25
- },
26
- });
27
-
28
- return config;
29
- }
30
-
31
- function applySvelteNode(config) {
32
- config.module.rules.push({
33
- test: /\.(svelte|html)$/,
34
- use: {
35
- loader: 'svelte-loader',
36
- options: {
37
- compilerOptions: {
38
- css: false,
39
- generate: 'ssr',
40
- dev: webpackMode,
41
- hydratable: true,
42
- },
43
- },
44
- },
45
- });
46
-
47
- return config;
48
- }
9
+ const {
10
+ applySvelteConfig,
11
+ applySvelteWeb,
12
+ applySvelteNode,
13
+ } = require('@merkur/svelte/webpack');
49
14
 
50
15
  module.exports = createLiveReloadServer().then(() =>
51
16
  Promise.all([
52
- pipe(createWebConfig, applyStyleLoaders, applySvelteWeb)(),
53
17
  pipe(
54
18
  createWebConfig,
19
+ applySvelteConfig,
20
+ applyStyleLoaders,
21
+ applySvelteWeb,
22
+ )(),
23
+ pipe(
24
+ createWebConfig,
25
+ applySvelteConfig,
55
26
  applyStyleLoaders,
56
27
  applySvelteWeb,
57
28
  applyES9Transformation,
58
29
  )(),
59
- pipe(createNodeConfig, applyStyleLoaders, applySvelteNode)(),
30
+ pipe(
31
+ createNodeConfig,
32
+ applySvelteConfig,
33
+ applyStyleLoaders,
34
+ applySvelteNode,
35
+ )(),
60
36
  ]),
61
37
  );
@@ -1,6 +1,6 @@
1
1
  {
2
- "devDependencies": {
3
- "svelte": "^3.59.1",
4
- "svelte-loader": "^3.1.7"
5
- }
6
- }
2
+ "dependencies": {
3
+ "@merkur/svelte": "0.35.0"
4
+ },
5
+ "devDependencies": {}
6
+ }
@@ -0,0 +1,5 @@
1
+ export default function () {
2
+ return {
3
+ extends: ['@merkur/uhtml/cli'],
4
+ };
5
+ }
@@ -2,13 +2,6 @@ import Welcome from '../components/Welcome';
2
2
  import WidgetDescription from '../components/WidgetDescription';
3
3
  import ErrorView from '../views/ErrorView';
4
4
 
5
- async function headlineSlotFactory() {
6
- return {
7
- name: 'headline',
8
- View: HeadlineSlot,
9
- };
10
- }
11
-
12
5
  function HeadlineSlot(widget) {
13
6
  if (widget.error && widget.error.status) {
14
7
  return ErrorView(widget);
@@ -27,5 +20,4 @@ function HeadlineSlot(widget) {
27
20
  `;
28
21
  }
29
22
 
30
- export { headlineSlotFactory };
31
23
  export default HeadlineSlot;