zrender-nightly 5.6.1-dev.20240717 → 5.6.1-dev.20240718

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/build/build.js ADDED
@@ -0,0 +1,118 @@
1
+ // const typescript = require('@rollup/plugin-typescript');
2
+ const typescript = require('rollup-plugin-typescript2');
3
+ const replace = require('@rollup/plugin-replace');
4
+ const rollup = require('rollup');
5
+ const path = require('path');
6
+ const processs = require('process');
7
+ const chalk = require('chalk');
8
+ const progress = require('./progress');
9
+ const UglifyJS = require('uglify-js');
10
+ const fs = require('fs');
11
+
12
+ function current() {
13
+ return (new Date()).toLocaleString();
14
+ }
15
+
16
+ function createInputOption(env, isWatch) {
17
+ return {
18
+ input: path.resolve(__dirname, '../index.ts'),
19
+ plugins: [
20
+ typescript({
21
+ clean: !isWatch,
22
+ tsconfigOverride: {
23
+ compilerOptions: {
24
+ // Rollup don't use CommonJS by default.
25
+ module: 'ES2015',
26
+ sourceMap: true,
27
+ // Use the esm d.ts
28
+ declaration: false
29
+ }
30
+ }
31
+ }),
32
+ replace({
33
+ preventAssignment: true,
34
+ 'process.env.NODE_ENV': JSON.stringify(env)
35
+ }),
36
+ progress({
37
+ scope: {
38
+ total: 0
39
+ }
40
+ })
41
+ ]
42
+ };
43
+ }
44
+
45
+ const outputOption = {
46
+ format: 'umd',
47
+ file: path.resolve(__dirname, '../dist/zrender.js'),
48
+ sourcemap: true,
49
+ name: 'zrender'
50
+ };
51
+
52
+ function minify(outPath) {
53
+ const code = fs.readFileSync(outPath, 'utf-8');
54
+ const uglifyResult = UglifyJS.minify(code);
55
+ if (uglifyResult.error) {
56
+ throw new Error(uglifyResult.error);
57
+ }
58
+ fs.writeFileSync(outPath, uglifyResult.code, 'utf-8');
59
+ }
60
+
61
+ if (processs.argv.includes('--watch')) {
62
+ const watcher = rollup.watch({
63
+ ...createInputOption('development', true),
64
+ output: [outputOption],
65
+ watch: {
66
+ clearScreen: true
67
+ }
68
+ });
69
+ watcher.on('event', event => {
70
+ switch(event.code) {
71
+ // case 'START':
72
+ // console.log(chalk.green('Begin to watch'));
73
+ // break;
74
+ case 'BUNDLE_START':
75
+ console.log(
76
+ chalk.gray(current()),
77
+ chalk.blue('File changed. Begin to bundle')
78
+ );
79
+ break;
80
+ case 'BUNDLE_END':
81
+ console.log(
82
+ chalk.gray(current()),
83
+ chalk.green('Finished bundle')
84
+ );
85
+ break;
86
+ case 'ERROR':
87
+ console.log(
88
+ chalk.gray(current()),
89
+ chalk.red(event.error)
90
+ );
91
+ break;
92
+ }
93
+ });
94
+ }
95
+ else {
96
+ // Unminified
97
+ rollup.rollup({
98
+ ...createInputOption('development', false)
99
+ }).then(bundle => {
100
+ bundle.write(outputOption)
101
+ .then(() => {
102
+ // Minified
103
+ if (process.argv.indexOf('--minify') >= 0) {
104
+ rollup.rollup({
105
+ ...createInputOption('production', false)
106
+ }).then(bundle => {
107
+ const file = outputOption.file.replace(/.js$/, '.min.js');
108
+ bundle.write(Object.assign(outputOption, {
109
+ file,
110
+ sourcemap: false
111
+ })).then(function () {
112
+ minify(file);
113
+ });
114
+ });
115
+ }
116
+ });
117
+ });
118
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,48 @@
1
+ const fs = require('fs');
2
+ const { execSync } = require('child_process');
3
+
4
+ const packageJsonPath = __dirname + '/../package.json';
5
+ const nightlyPackageName = 'zrender-nightly';
6
+
7
+ function updateVersion(version) {
8
+ const isNext = process.argv.includes('--next');
9
+ const parts = /(\d+)\.(\d+)\.(\d+)($|\-)/.exec(version);
10
+ if (!parts) {
11
+ throw new Error(`Invalid version number ${version}`);
12
+ }
13
+ // Add date to version.
14
+ const major = +parts[1];
15
+ let minor = +parts[2];
16
+ let patch = +parts[3];
17
+ const isStable = !parts[4];
18
+ if (isStable) {
19
+ // It's previous stable version. Dev version should be higher.
20
+ if (isNext) {
21
+ // Increase minor version for next branch.
22
+ minor++;
23
+ patch = 0;
24
+ }
25
+ else {
26
+ // Increase main version for master branch.
27
+ patch++;
28
+ }
29
+ }
30
+
31
+ const date = new Date().toISOString().replace(/:|T|\.|-/g, '').slice(0, 8);
32
+ return `${major}.${minor}.${patch}-dev.${date}`;
33
+ }
34
+
35
+
36
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
37
+ packageJson.name = nightlyPackageName;
38
+ const version = updateVersion(packageJson.version);
39
+
40
+ fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
41
+
42
+ // Update version in package.json and package-lock.json
43
+ execSync(`npm version ${version} --git-tag-version=false`);
44
+
45
+ const entryPath = __dirname + '/../src/zrender.ts';
46
+ const entryFile = fs.readFileSync(entryPath, 'utf-8')
47
+ .replace(/export const version = '\S+'/, `export const version = '${version}'`);
48
+ fs.writeFileSync(entryPath, entryFile, 'utf-8');
@@ -0,0 +1,88 @@
1
+ const fs = require('fs-extra');
2
+ const chalk = require('chalk');
3
+ const ignore = require('ignore');
4
+ const { execSync } = require('node:child_process');
5
+
6
+ console.log();
7
+ console.log(chalk.yellowBright(`⚠️ You should have run ${chalk.bold('`npm run release`')} before running this script!`));
8
+ console.log();
9
+
10
+ // check versions in key dist files
11
+
12
+ console.log(chalk.yellow('🔎 Checking versions in dist files...'));
13
+
14
+ const fileVersions = [
15
+ 'package.json',
16
+ 'package-lock.json',
17
+ 'dist/zrender.js',
18
+ 'dist/zrender.min.js'
19
+ ].map(filePath => ({
20
+ file: filePath,
21
+ version: require('../' + filePath).version
22
+ }));
23
+
24
+ ['lib/zrender.js', 'src/zrender.ts'].forEach(filePath => {
25
+ const version = fs.readFileSync(filePath, 'utf-8').match(/export (?:var|const) version = '(\S+)'/)[1];
26
+ fileVersions.push({
27
+ file: filePath,
28
+ version: version
29
+ });
30
+ });
31
+
32
+ const versions = fileVersions.map(({ file, version }) => {
33
+ console.log(` ∟ The version in [${chalk.blueBright(file)}] is ${chalk.cyanBright.bold(version)}`);
34
+ return version;
35
+ });
36
+
37
+ if (new Set(versions).size !== 1) {
38
+ console.log();
39
+ console.error(chalk.red('❌ Version does not match! Please check and rerun the release script via:'));
40
+ console.log();
41
+ console.error(chalk.yellow(' npm run release'));
42
+ console.log();
43
+ process.exit(-1);
44
+ }
45
+
46
+ console.log();
47
+ console.log(chalk.green('✔️ Versions are all the same.'));
48
+ console.log();
49
+
50
+ console.log(chalk.yellow('🔎 Checking unexpected files that probably shouldn\'t be published...\n'));
51
+
52
+ // check if there are unexpected files that not in .npmignore
53
+ const npmignore = fs.readFileSync('.npmignore', 'utf-8');
54
+ const npmignorePatterns = npmignore
55
+ .split(/\r?\n/)
56
+ .filter(item => item && !item.startsWith('#'));
57
+
58
+ const untrackedFiles = execSync('git ls-files --others --exclude-standard', { encoding: 'utf-8' })
59
+ .trim()
60
+ .split('\n')
61
+ .map(escapeOctal);
62
+
63
+ if (untrackedFiles.length) {
64
+ const maybeUnexpectedFiles = ignore().add(npmignorePatterns).filter(untrackedFiles);
65
+ if (maybeUnexpectedFiles.length) {
66
+ console.error(chalk.red(`❌ Found ${maybeUnexpectedFiles.length} file(s) that are neither tracked by git nor ignored by .npmignore! Please double-check before publishing them to npm.`));
67
+ maybeUnexpectedFiles.forEach(filePath => {
68
+ console.log(' ∟ ' + filePath);
69
+ });
70
+ console.log();
71
+ process.exit(-1);
72
+ }
73
+ }
74
+
75
+ console.log(chalk.green('✔️ No unexpected files found.'));
76
+ console.log();
77
+
78
+ function escapeOctal(str) {
79
+ const matches = str.match(/(\\\d{3}){3}/g);
80
+ if (matches) {
81
+ matches.forEach(match => {
82
+ let encoded = '';
83
+ match.split('\\').forEach(code => !code || (encoded += '%' + parseInt(code, 8).toString(16)));
84
+ str = str.replace(match, decodeURI(encoded));
85
+ });
86
+ }
87
+ return str;
88
+ }
@@ -0,0 +1,67 @@
1
+ // Porcess generated lib files.
2
+ // Like adding js extension in the import statement.
3
+
4
+ const { transformImport } = require('./transformImport');
5
+ const globby = require('globby');
6
+ const path = require('path');
7
+ const fs = require('fs');
8
+ const chalk = require('chalk');
9
+ const rollup = require('rollup');
10
+ const nodeResolve = require('@rollup/plugin-node-resolve').default;
11
+
12
+ function addJsExtension(moduleName) {
13
+ // Ignore 'tslib'
14
+ if (!(moduleName.startsWith('.'))) {
15
+ return moduleName;
16
+ }
17
+ if (moduleName.endsWith('.ts')) {
18
+ // Replace ts with js
19
+ return moduleName.replace(/\.ts$/, '.js');
20
+ }
21
+ else if (moduleName.endsWith('.js')) {
22
+ return moduleName;
23
+ }
24
+ else {
25
+ return moduleName + '.js'
26
+ }
27
+ }
28
+
29
+ async function transform() {
30
+ const libFiles = await globby([
31
+ '**/*.js'
32
+ ], {
33
+ cwd: path.join(__dirname, '../lib'),
34
+ absolute: true
35
+ });
36
+
37
+ if (libFiles.length === 0) {
38
+ throw new Error('No lib files found.')
39
+ }
40
+
41
+ for (let file of libFiles) {
42
+ const code = fs.readFileSync(file, 'utf-8');
43
+ fs.writeFileSync(file, transformImport(code, addJsExtension), 'utf-8');
44
+ }
45
+
46
+ // Transform index;
47
+ const indexFile = path.join(__dirname, '../index.js');
48
+ fs.writeFileSync(
49
+ indexFile,
50
+ transformImport(
51
+ fs.readFileSync(indexFile, 'utf-8'),
52
+ (mduleName) => addJsExtension(mduleName).replace('./src', './lib')
53
+ )
54
+ )
55
+ }
56
+
57
+ transform().then(() => {
58
+ console.log(chalk.green('Added .js extensions.'));
59
+ console.log(chalk.gray('Start testing generated libs...'));
60
+ }).then(() => {
61
+ return rollup.rollup({
62
+ input: path.resolve(__dirname, '../index.js'),
63
+ plugins: [nodeResolve()]
64
+ });
65
+ }).then(() => {
66
+ console.log(chalk.green('Libs can be bundled!'));
67
+ });
@@ -0,0 +1,65 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+ const chalk = require('chalk');
20
+ const path = require('path');
21
+
22
+ module.exports = function progress(options = {}) {
23
+ const scope = options.scope || {};
24
+ scope.finished = scope.finished || 0;
25
+ scope.total = scope.total || 0;
26
+
27
+ return {
28
+ name: 'progress',
29
+
30
+ buildStart() {
31
+ scope.finished = 0;
32
+ scope.total = 0;
33
+ },
34
+
35
+ load() {
36
+ // TODO More accurate total number
37
+ scope.total++;
38
+ },
39
+
40
+ transform(code, id) {
41
+ scope.finished++;
42
+ const filePath = path.relative(process.cwd(), id).split(path.sep).join('/');
43
+
44
+ const output = `[${scope.finished}/${scope.total}]: ${chalk.grey(filePath)}`;
45
+ if (process.stdout.isTTY) {
46
+ process.stdout.clearLine();
47
+ process.stdout.cursorTo(0);
48
+ process.stdout.write(output);
49
+ }
50
+ else {
51
+ console.log(output);
52
+ }
53
+ },
54
+
55
+ buildEnd() {
56
+ if (process.stdout.isTTY) {
57
+ process.stdout.clearLine();
58
+ process.stdout.cursorTo(0);
59
+ }
60
+ else {
61
+ console.log('');
62
+ }
63
+ }
64
+ };
65
+ };
@@ -0,0 +1,115 @@
1
+ // adding js extension in the import statement.
2
+
3
+ // Reference:
4
+ // https://regexr.com/47jlq
5
+ // https://gist.github.com/manekinekko/7e58a17bc62a9be47172
6
+ const regexp = /((?:(?:import)|(?:export))\s+?(?:(?:(?:[\w*\s{},\/]*)\s+from\s+?)|))(?:(?:"(.*?)")|(?:'(.*?)'))([\s]*?(?:;|$|))/g;
7
+
8
+ module.exports.transformImport = function (code, processModuleName) {
9
+ return code.replace(regexp, (str, prefix, moduleNameA, moduleNameB, postfix) => {
10
+ let moduleName = (moduleNameA === undefined ? moduleNameB : moduleNameA).trim();
11
+ const quote = moduleNameA === undefined ? "'" : '"';
12
+ return prefix + quote + processModuleName(moduleName) + quote + postfix;
13
+ // Not support other extensions.
14
+ });
15
+ }
16
+
17
+
18
+ const testCases = `import videos from './videos/index.js'
19
+
20
+ export default (socket, context) => {
21
+ // dynamically importing all the socket.io handler (it's dynamic import that happen at run time)
22
+ import {
23
+ something
24
+ } from "./test/okbb"
25
+
26
+ const f = 2;
27
+
28
+ import test from 'obb'
29
+
30
+
31
+ import {
32
+ Component
33
+ } from '@angular2/core';
34
+
35
+ import defaultMember from "module-0";
36
+
37
+ import * as name from "module-1 ";
38
+
39
+ import { member } from " module-2";
40
+
41
+ import { member as alias } from "module-3";
42
+
43
+ import { member1 , member2 } from "module-4";
44
+
45
+ import { member1 , member2 as alias2 , member3 as alias3 } from "module-5";
46
+
47
+ import defaultMember, { member, member } from "module-6";
48
+
49
+ import defaultMember, * as name from "module-7";
50
+
51
+ import "module-8";
52
+
53
+ import "module-9" // comment no problem
54
+
55
+ import {
56
+ AAAA,
57
+ // BBB
58
+ } from 'module-10';
59
+
60
+ import "module-b' // doesn't match -> the opening and closing quation mark are different
61
+
62
+ importing hya from 'ttt'
63
+
64
+ import fbsfrom ''
65
+
66
+
67
+ // Export expressions.
68
+ export { aaa };
69
+
70
+ export * from "module-11";
71
+
72
+ export { aaa } from "module-12";
73
+
74
+ // Should not be parsed
75
+ export default aaa;
76
+
77
+ export function bbb () {
78
+ };
79
+ `
80
+
81
+ module.exports.runTest = function () {
82
+ const expected = [
83
+ './videos/index.js',
84
+ './test/okbb',
85
+ 'obb',
86
+ '@angular2/core',
87
+ 'module-0',
88
+ 'module-1',
89
+ 'module-2',
90
+ 'module-3',
91
+ 'module-4',
92
+ 'module-5',
93
+ 'module-6',
94
+ 'module-7',
95
+ 'module-8',
96
+ 'module-9',
97
+ 'module-10',
98
+ 'module-11',
99
+ 'module-12'
100
+ ]
101
+ let cursor = 0;
102
+ module.exports.transformImport(testCases, (moduleName) => {
103
+ if (expected[cursor] !== moduleName) {
104
+ throw new Error(`Expected ${expected[cursor]}. Actual ${moduleName}`);
105
+ }
106
+ cursor++;
107
+ return moduleName;
108
+ })
109
+ if (cursor !== expected.length) {
110
+ throw new Error('Test failed');
111
+ }
112
+ console.log('All test passed!')
113
+ }
114
+
115
+ // module.exports.runTest();
package/dist/zrender.js CHANGED
@@ -7337,7 +7337,7 @@
7337
7337
  function registerSSRDataGetter(getter) {
7338
7338
  ssrDataGetter = getter;
7339
7339
  }
7340
- var version = '5.6.1-dev.20240717';
7340
+ var version = '5.6.1-dev.20240718';
7341
7341
 
7342
7342
  var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));
7343
7343
  var DEFAULT_COMMON_STYLE = {