Compare commits

...

3 Commits

8 changed files with 1461 additions and 1360 deletions

View File

@ -1,3 +1,11 @@
## 6.5.5
* Removed the custom element registration enhancement for strict CSP builds so that they won't contain `new Function`.
## 6.5.4
* Cleaned up the `console.log` call sneaked in by mistake.
## 6.5.3 ## 6.5.3
* Fixed default behavior for `notMerge` option (#691). * Fixed default behavior for `notMerge` option (#691).

View File

@ -227,7 +227,7 @@ Drop `<script>` inside your HTML file and access the component via `window.VueEC
```html ```html
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.45"></script> <script src="https://cdn.jsdelivr.net/npm/vue@3.2.45"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.3"></script> <script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.4"></script>
``` ```
<!-- vue3Scripts:end --> <!-- vue3Scripts:end -->
@ -247,7 +247,7 @@ app.component('v-chart', VueECharts)
```html ```html
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.3"></script> <script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.4"></script>
``` ```
<!-- vue2Scripts:end --> <!-- vue2Scripts:end -->

View File

@ -227,7 +227,7 @@ import "echarts";
```html ```html
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.45"></script> <script src="https://cdn.jsdelivr.net/npm/vue@3.2.45"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.3"></script> <script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.4"></script>
``` ```
<!-- vue3Scripts:end --> <!-- vue3Scripts:end -->
@ -247,7 +247,7 @@ app.component('v-chart', VueECharts)
```html ```html
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script> <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14"></script>
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.3"></script> <script src="https://cdn.jsdelivr.net/npm/vue-echarts@6.5.4"></script>
``` ```
<!-- vue2Scripts:end --> <!-- vue2Scripts:end -->

View File

@ -1,6 +1,6 @@
{ {
"name": "vue-echarts", "name": "vue-echarts",
"version": "6.5.3", "version": "6.5.5",
"description": "Vue.js component for Apache ECharts.", "description": "Vue.js component for Apache ECharts.",
"author": "GU Yiling <justice360@gmail.com>", "author": "GU Yiling <justice360@gmail.com>",
"scripts": { "scripts": {
@ -28,6 +28,7 @@
"devDependencies": { "devDependencies": {
"@babel/core": "^7.18.6", "@babel/core": "^7.18.6",
"@rollup/plugin-node-resolve": "^11.2.1", "@rollup/plugin-node-resolve": "^11.2.1",
"@rollup/plugin-replace": "^5.0.2",
"@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/eslint-plugin": "^4.33.0",
"@typescript-eslint/parser": "^4.33.0", "@typescript-eslint/parser": "^4.33.0",
"@vue/cli-plugin-babel": "^5.0.7", "@vue/cli-plugin-babel": "^5.0.7",

2760
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,25 +1,28 @@
import typescript from "rollup-plugin-ts"; import typescript from "rollup-plugin-ts";
import { terser } from "rollup-plugin-terser"; import { terser } from "rollup-plugin-terser";
import resolve from "@rollup/plugin-node-resolve"; import resolve from "@rollup/plugin-node-resolve";
import replace from "@rollup/plugin-replace";
import styles from "rollup-plugin-styles"; import styles from "rollup-plugin-styles";
import { injectVueDemi } from "./scripts/rollup"; import { injectVueDemi } from "./scripts/rollup";
/** /**
* Convert Rollup option to a style extracted/injected version * Modifies the Rollup options for a build to support strict CSP
* @param {import('rollup').RollupOptions} option * @param {import('rollup').RollupOptions} options the original options
* @param {boolean} extract * @param {boolean} csp whether to support strict CSP
* @returns {import('rollup').RollupOptions} * @returns {import('rollup').RollupOptions} the modified options
*/ */
function handleStyle(option, extract) { function configBuild(options, csp) {
// inject styles plugin const result = { ...options };
const result = { ...option };
const { plugins, output } = result; const { plugins, output } = result;
result.plugins = (plugins || []).concat(
extract ? styles({ mode: ["extract", "style.css"] }) : styles() result.plugins = [
); ...(csp ? [replace({ __CSP__: `${csp}`, preventAssignment: true })] : []),
...plugins,
csp ? styles({ mode: ["extract", "style.css"] }) : styles()
];
// modify output file names // modify output file names
if (extract && output) { if (csp && output) {
result.output = (Array.isArray(output) ? output : [output]).map(output => { result.output = (Array.isArray(output) ? output : [output]).map(output => {
return { return {
...output, ...output,
@ -33,7 +36,7 @@ function handleStyle(option, extract) {
} }
/** @type {import('rollup').RollupOptions[]} */ /** @type {import('rollup').RollupOptions[]} */
const options = [ const builds = [
{ {
input: "src/index.ts", input: "src/index.ts",
plugins: [ plugins: [
@ -133,6 +136,6 @@ const options = [
]; ];
export default [ export default [
...options.map(option => handleStyle(option, false)), ...builds.map(options => configBuild(options, false)),
...options.map(option => handleStyle(option, true)) ...builds.map(options => configBuild(options, true))
]; ];

View File

@ -41,7 +41,8 @@ import { omitOn, unwrapInjected } from "./utils";
import { register, TAG_NAME, type EChartsElement } from "./wc"; import { register, TAG_NAME, type EChartsElement } from "./wc";
import "./style.css"; import "./style.css";
const wcRegistered = register(); const __CSP__ = false;
const wcRegistered = __CSP__ ? false : register();
if (Vue2) { if (Vue2) {
Vue2.config.ignoredElements.push(TAG_NAME); Vue2.config.ignoredElements.push(TAG_NAME);
@ -232,7 +233,6 @@ export default defineComponent({
if (!chart.value) { if (!chart.value) {
init(); init();
} else { } else {
console.log(`notMerge: ${option !== oldOption}`);
chart.value.setOption(option, { chart.value.setOption(option, {
// mutating `option` will lead to `notMerge: false` and // mutating `option` will lead to `notMerge: false` and
// replacing it with new reference will lead to `notMerge: true` // replacing it with new reference will lead to `notMerge: true`

View File

@ -21,6 +21,13 @@ module.exports = {
.test(/\.svg$/) .test(/\.svg$/)
.use("raw-loader") .use("raw-loader")
.loader("raw-loader"); .loader("raw-loader");
config.plugin("define").tap(([options]) => [
{
...options,
__CSP__: "false"
}
]);
}, },
devServer: { devServer: {
allowedHosts: "all" allowedHosts: "all"