@soleil-se/build-app 2.3.3 → 2.4.0-next.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 CHANGED
@@ -4,14 +4,6 @@ title: Changelog
4
4
 
5
5
  Baseras på [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) och använder [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- ## [2.3.3] - 2025-06-12
8
-
9
- - Läs inte in targets för Babel om browserslist är angivet.
10
-
11
- ## [2.3.2] - 2025-05-28
12
-
13
- - Kontrollera att `./dist/src/index.js` finns innan den uppdateras.
14
-
15
7
  ## [2.3.1] - 2025-05-26
16
8
 
17
9
  - Ta bort hydration markers för en app som renderas på servern, då det inte är nödvändigt.
package/LICENSE.md ADDED
@@ -0,0 +1 @@
1
+ (c) Copyright 2021 Soleil AB, all rights reserved.
package/bin/index.js CHANGED
File without changes
package/config/index.js CHANGED
@@ -6,12 +6,12 @@ export default function config({ src, dest, cache, debug }) {
6
6
  return [
7
7
  copy({ src: [`${src}/index.html`, `${src}/config.css`], dest, deep: false }),
8
8
  server({
9
- input: `${src}/index.js`,
9
+ input: `${src}/index.{js,ts}`,
10
10
  output: `${dest}/index.js`,
11
11
  debug,
12
12
  }),
13
13
  client({
14
- input: `${src}/config.js`,
14
+ input: `${src}/config.{js,ts}`,
15
15
  output: `${dest}/config.js`,
16
16
  globals: { jquery: 'jQuery' },
17
17
  showSize: false,
package/index.js CHANGED
@@ -6,6 +6,7 @@ import watch from '@soleil-se/build-utils/watch';
6
6
  import { logError, logStartup, logEnviroment, logTimestamp } from '@soleil-se/build-utils/log';
7
7
  import createChecksumChecker from '@soleil-se/build-utils/createChecksumChecker';
8
8
  import { env, rollup } from '@soleil-se/build-config';
9
+ import { globSync } from 'glob';
9
10
 
10
11
  import { readManifest } from './manifest.js';
11
12
  import { clean, copy, files, zip, eslint } from './utils/index.js';
@@ -38,40 +39,40 @@ async function main() {
38
39
  }
39
40
  const tasks = [
40
41
  task('clean', clean({ dir: './dist' })),
41
- args.eslint && task('eslint', eslint({ src: ['./**/*.{js,svelte}'] })),
42
+ args.eslint && task('eslint', eslint({ src: ['./**/*.{js,ts,svelte}'] })),
42
43
  task('copy', [
43
44
  copy({ src: './manifest.json', dest: './dist/src' }),
44
45
  copy({ src: ['./src/manifest.json', './src/appDataDefaults.json', './src/i18n/*.json', './src/config', './src/resource'], dest: './dist' }),
45
46
  ]),
46
47
  task('server', server({
47
- input: './src/index.js',
48
+ input: './src/index.{js,ts}',
48
49
  output: './dist/src/index.js',
49
50
  debug: args.debug,
50
51
  cache: args.cache,
51
52
  extractCss: true,
52
- }), () => fse.existsSync('./src/index.js')),
53
+ }), () => globSync('./src/index.{js,ts}').length),
53
54
  task('client', client({
54
- input: './src/main.js',
55
+ input: './src/main.{js,ts}',
55
56
  output: './dist/src/main.js',
56
57
  globals: rollup?.client?.globals,
57
58
  debug: args.debug,
58
59
  cache: args.cache,
59
60
  extractCss: true,
60
- }), () => fse.existsSync('./src/main.js')),
61
+ }), () => globSync('./src/main.{js,ts}').length),
61
62
  task('headless', server({
62
- input: './src/headless.js',
63
+ input: './src/headless.{js,ts}',
63
64
  output: './dist/src/headless.js',
64
65
  debug: args.debug,
65
66
  cache: args.cache,
66
67
  extractCss: true,
67
- }), () => fse.existsSync('./src/headless.js')),
68
+ }), () => globSync('./src/headless.{js,ts}').length),
68
69
  task('hooks', server({
69
- input: './src/hooks.js',
70
+ input: './src/hooks.{js,ts}',
70
71
  output: './dist/src/hooks.js',
71
72
  debug: args.debug,
72
73
  cache: args.cache,
73
74
  extractCss: true,
74
- }), () => fse.existsSync('./src/hooks.js')),
75
+ }), () => globSync('./src/hooks.{js,ts}').length),
75
76
  task('config', config({
76
77
  src: './config',
77
78
  dest: './dist/src/config',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@soleil-se/build-app",
3
3
  "description": "Script for building WebApps, RESTApps and Widgets with Svelte in Sitevision.",
4
- "version": "2.3.3",
4
+ "version": "2.4.0-next.2",
5
5
  "bin": {
6
6
  "build-app": "./bin/index.js",
7
7
  "sv-app-build": "./bin/index.js"
@@ -10,14 +10,21 @@
10
10
  "author": "Soleil AB",
11
11
  "license": "UNLICENSED",
12
12
  "type": "module",
13
- "keywords": ["sitevision", "webapp", "restapp", "widget", "svelte"],
13
+ "keywords": [
14
+ "sitevision",
15
+ "webapp",
16
+ "restapp",
17
+ "widget",
18
+ "svelte"
19
+ ],
14
20
  "engines": {
15
- "node": ">=20.0.0"
21
+ "node": ">=20.0.0",
22
+ "npm": "Do not use npm to manage this package, use pnpm instead."
16
23
  },
17
24
  "homepage": "https://docs.soleil.se/build/app",
18
25
  "dependencies": {
19
- "@babel/core": "7.26.10",
20
- "@babel/preset-env": "7.26.9",
26
+ "@babel/core": "7.27.1",
27
+ "@babel/preset-env": "7.27.2",
21
28
  "@rollup/plugin-alias": "5.1.1",
22
29
  "@rollup/plugin-babel": "6.0.4",
23
30
  "@rollup/plugin-commonjs": "28.0.3",
@@ -25,15 +32,14 @@
25
32
  "@rollup/plugin-node-resolve": "16.0.1",
26
33
  "@rollup/plugin-replace": "6.0.2",
27
34
  "@rollup/plugin-terser": "0.4.4",
28
- "@soleil-se/build-config": "workspace:^",
29
- "@soleil-se/build-utils": "workspace:^",
35
+ "@rollup/plugin-typescript": "^12.1.2",
30
36
  "archiver": "7.0.1",
31
37
  "chalk": "5.4.1",
32
38
  "find-up": "7.0.0",
33
39
  "form-data": "4.0.2",
34
40
  "fs-extra": "11.3.0",
35
41
  "glob": "^11.0.1",
36
- "got": "14.4.6",
42
+ "got": "14.4.7",
37
43
  "gzip-size": "7.0.0",
38
44
  "lodash-es": "4.17.21",
39
45
  "minimist": "^1.2.8",
@@ -42,20 +48,22 @@
42
48
  "postcss-pxtorem": "6.1.0",
43
49
  "pretty-bytes": "6.1.1",
44
50
  "prompts": "2.4.2",
45
- "rollup": "4.37.0",
51
+ "rollup": "4.41.0",
46
52
  "rollup-plugin-postcss": "4.0.2",
47
53
  "rollup-plugin-string": "3.0.0",
48
54
  "rollup-plugin-svelte": "7.2.2",
49
55
  "slash": "5.1.0",
50
- "svelte-preprocess": "6.0.3"
56
+ "svelte-preprocess": "6.0.3",
57
+ "tslib": "^2.8.1",
58
+ "@soleil-se/build-config": "^1.3.0",
59
+ "@soleil-se/build-utils": "^1.8.3"
51
60
  },
52
61
  "devDependencies": {
53
- "svelte": "^5.6.2"
54
- },
55
- "scripts": {
56
- "postpublish": "node ../../scripts/postpublish"
62
+ "svelte": "^5.33.1",
63
+ "typescript": "^5.8.3"
57
64
  },
58
65
  "publishConfig": {
59
66
  "access": "public"
60
- }
61
- }
67
+ },
68
+ "scripts": {}
69
+ }
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line import/no-unresolved
2
1
  import got from 'got';
3
2
  import config from '@soleil-se/build-config';
4
3
 
@@ -1,31 +1,25 @@
1
1
  import { babel } from '@rollup/plugin-babel';
2
- import fse from 'fs-extra';
3
- import { findUpSync } from 'find-up';
4
2
 
5
3
  const commonOptions = {
6
4
  babelrc: false,
7
- extensions: ['.js', '.mjs', '.html', '.svelte', '.cjs'],
5
+ extensions: ['.js', '.mjs', '.html', '.svelte', '.cjs', 'ts'],
8
6
  babelHelpers: 'bundled',
9
7
  };
10
8
 
11
- function hasBrowserslist() {
12
- return !!findUpSync('.browserslistrc') || !!fse.readJSONSync('./package.json')?.browserslist;
13
- }
14
-
15
9
  export function getBabelClientPlugin() {
16
10
  return babel({
17
11
  ...commonOptions,
18
12
  presets: [
19
13
  ['@babel/preset-env', {
20
14
  shippedProposals: true,
21
- targets: hasBrowserslist() ? [] : [
15
+ targets: [
22
16
  'last 2 chrome major versions',
23
17
  'last 2 firefox major versions',
24
- 'last 4 ios_saf major versions',
18
+ 'last 2 ios_saf major versions',
25
19
  'last 2 edge major versions',
26
- 'last 4 safari major versions',
20
+ 'last 2 safari major versions',
27
21
  'last 2 and_chr major versions',
28
- ]
22
+ ],
29
23
  }],
30
24
  ],
31
25
  });
@@ -1,4 +1,4 @@
1
- import nodeResolve from '@rollup/plugin-node-resolve';
1
+ import { nodeResolve } from '@rollup/plugin-node-resolve';
2
2
  import { findUpSync } from 'find-up';
3
3
 
4
4
  export default function getNodeResolvePlugin({ input, context = 'server', debug = false } = {}) {
package/rollup/client.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { rollup } from 'rollup';
2
2
  import json from '@rollup/plugin-json';
3
- import fse from 'fs-extra';
3
+ import typescript from '@rollup/plugin-typescript';
4
+ import { globSync } from 'glob';
4
5
 
5
6
  import onwarn from './utils/onwarn.js';
6
7
  import getSitevisionClientPackages from './utils/getSitevisionClientPackages.js';
@@ -34,16 +35,19 @@ export default function rollupClient({
34
35
  let plugins;
35
36
 
36
37
  return async () => {
37
- if (!fse.existsSync(input)) return Promise.resolve();
38
+ const inputs = globSync(input);
39
+ if (inputs.length === 0) return Promise.resolve();
40
+ if (inputs.length > 1) throw new Error(`Multiple files found for input: ${inputs.join(', ').replace(/\\/g, '/')}`);
38
41
 
39
42
  plugins = plugins || [
40
43
  format === 'amd' && amdGlobalsPlugin({ globals }),
41
44
  sitevisionPlugin({ context: 'client' }),
45
+ typescript(),
42
46
  getReplaceClientPlugin(),
43
47
  getAliasClientPlugin(),
44
- getNodeResolvePlugin({ input, context: 'client', debug }),
48
+ getNodeResolvePlugin({ input: inputs[0], context: 'client', debug }),
45
49
  getCommonjsPlugin(),
46
- await getSveltePlugin({ input, debug, extractCss, hydratable }),
50
+ await getSveltePlugin({ input: inputs[0], debug, extractCss, hydratable }),
47
51
  getPostcssPlugin({ extractCss, debug }),
48
52
  getBabelClientPlugin(),
49
53
  json(),
@@ -55,7 +59,7 @@ export default function rollupClient({
55
59
  try {
56
60
  const bundle = await rollup({
57
61
  external: getSitevisionClientPackages(),
58
- input,
62
+ input: inputs[0],
59
63
  plugins,
60
64
  onwarn,
61
65
  cache: bundleCache,
package/rollup/server.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { rollup } from 'rollup';
2
2
  import json from '@rollup/plugin-json';
3
- import fse from 'fs-extra';
3
+ import typescript from '@rollup/plugin-typescript';
4
+ import { globSync } from 'glob';
4
5
 
5
6
  import onwarn from './utils/onwarn.js';
6
7
 
@@ -27,17 +28,20 @@ export default function rollupServer({
27
28
  let plugins;
28
29
 
29
30
  return async () => {
30
- if (!fse.existsSync(input)) return Promise.resolve();
31
+ const inputs = globSync(input);
32
+ if (inputs.length === 0) return Promise.resolve();
33
+ if (inputs.length > 1) throw new Error(`Multiple files found for input: ${inputs.join(', ').replace(/\\/g, '/')}`);
31
34
 
32
35
  plugins = plugins || [
33
36
  getReplaceServerPlugin(),
34
37
  getAliasServerPlugin(),
35
38
  sitevision({ context: 'server' }),
39
+ typescript(),
36
40
  json(),
37
41
  getStringPlugin(),
38
- getNodeResolvePlugin({ input, debug }),
42
+ getNodeResolvePlugin({ input: inputs[0], debug }),
39
43
  getCommonjsPlugin(),
40
- await getSveltePlugin({ input, extractCss, ssr: true }),
44
+ await getSveltePlugin({ input: inputs[0], extractCss, ssr: true }),
41
45
  getPostcssPlugin({ extractCss, debug }),
42
46
  getBabelServerPlugin(),
43
47
  getTerserPlugin({ debug }),
@@ -45,7 +49,7 @@ export default function rollupServer({
45
49
 
46
50
  try {
47
51
  const bundle = await rollup({
48
- input,
52
+ input: inputs[0],
49
53
  plugins,
50
54
  onwarn,
51
55
  cache: bundleCache,
@@ -6,6 +6,8 @@ export default function onwarn(warning) {
6
6
 
7
7
  if (warning.code === 'PLUGIN_WARNING') {
8
8
  if (warning.pluginCode && warning.pluginCode === 'a11y-no-onchange') return;
9
+ if (warning.pluginCode && warning.pluginCode === 'TS6053') return;
10
+ if (warning.pluginCode && warning.pluginCode === 'TS2307') return;
9
11
  }
10
12
 
11
13
  if (warning.code === 'MISSING_NODE_BUILTINS') {
package/tsconfig.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "exclude": [
3
+ "node_modules",
4
+ "dist"
5
+ ],
6
+ "compilerOptions": {
7
+ "target": "ES2022",
8
+ "module": "ES2022",
9
+ "esModuleInterop": true,
10
+ "forceConsistentCasingInFileNames": true,
11
+ "strict": true,
12
+ "skipLibCheck": true,
13
+ "lib": ["ES2022", "DOM"],
14
+ "moduleResolution": "node",
15
+ "outDir": "dist",
16
+ "verbatimModuleSyntax": true,
17
+ "isolatedModules": true,
18
+ }
19
+ }
package/utils/eslint.js CHANGED
@@ -10,7 +10,7 @@ let ESLint;
10
10
  export default function createESLint({ src }) {
11
11
  return async () => {
12
12
  try {
13
- // eslint-disable-next-line import/no-extraneous-dependencies,node/no-extraneous-import
13
+ // eslint-disable-next-line import/no-extraneous-dependencies
14
14
  ESLint = ESLint || await import('eslint').then((pkg) => pkg.ESLint);
15
15
  } catch (e) {
16
16
  logNotInstalledWarning();
package/utils/files.js CHANGED
@@ -13,10 +13,8 @@ const indexContent = `(function() {
13
13
  * @returns {Promise<void>}
14
14
  */
15
15
  async function removeHydrationMarkers(src) {
16
- if(fse.existsSync(src)) {
17
- const content = await fse.readFile(src);
18
- await fse.writeFile(src, content.toString().replace(/(\\x3c!----\\x3e|\\x3c!--\[--\\x3e|\\x3c!--]--\\x3e)/gm, ''));
19
- }
16
+ const content = await fse.readFile(src);
17
+ await fse.writeFile(src, content.toString().replace(/(\\x3c!----\\x3e|\\x3c!--\[--\\x3e|\\x3c!--]--\\x3e)/gm, ''));
20
18
  }
21
19
 
22
20
  async function createMain(dest) {