You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@amoro.apache.org by cz...@apache.org on 2026/10/10 06:34:58 UTC

(amoro) branch 0.9.x updated (d63ef1d3a -> 743594a44)

This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a change to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git


    from d63ef1d3a Change project version to 0.9.0-incubating
     new 26062c23d [AMORO-4393][AMS] Fix shared state between AMS test classes (#4394)
     new 43a6c799b [AMORO-4400][AMS]Keep dashboard optimizing quota positive (#4403)
     new a655daafa [AMORO-4401][AMS]Validate optimizer list pagination parameters (#4404)
     new 728d6d72e [AMORO-4405][AMS]Report total file size for Iceberg snapshots (#4406)
     new 52616a2ad fix(ams): reject non-positive optimizer parallelism (#4398)
     new a64c849a0 [HOTFIX] Include ICU license in Flink JARs (#4429)
     new 9a80324cd [HOTFIX] Add amoro-web npm dependencies to LICENSE-binary and NOTICE-binary (#4430)
     new 709368a08 [hotfix][postgres] Fix org.postgresql.util.PSQLException: ERROR: column name must be qualified (#4396)
     new 743594a44 [AMORO-4407][Hudi]Preserve long Hudi snapshot file sizes (#4408)

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 LICENSE-binary                                     | 170 ++++++++
 NOTICE-binary                                      |  54 +++
 .../dashboard/MixedAndIcebergTableDescriptor.java  |   4 +-
 .../dashboard/controller/OptimizerController.java  |   4 +
 .../controller/OptimizerGroupController.java       |  30 +-
 .../server/dashboard/utils/OptimizingUtil.java     |   6 +-
 .../main/resources/postgres/ams-postgres-init.sql  |  14 +-
 .../server/TestInternalIcebergCatalogService.java  |  26 +-
 .../server/TestInternalMixedCatalogService.java    |  31 +-
 .../amoro/server/TestOptimizerController.java      |  65 +++
 .../amoro/server/TestOptimizerGroupController.java |  19 +
 .../server/dashboard/TestSnapshotFileSize.java     | 133 ++++++
 .../controller/TestOptimizerGroupPagination.java   | 224 +++++++++++
 .../dashboard/utils/TestTableOptimizingInfo.java   | 104 +++++
 .../TestIcebergV3OptimizingPlanning.java           |  62 ++-
 .../amoro/formats/hudi/HudiTableDescriptor.java    |   2 +-
 .../hudi/TestHudiTableDescriptorSnapshots.java     | 164 ++++++++
 .../src/main/appended-resources/META-INF/LICENSE   |  48 +++
 .../v1.18/amoro-mixed-flink-runtime-1.18/pom.xml   |   5 +
 .../v1.19/amoro-mixed-flink-runtime-1.19/pom.xml   |   5 +
 .../v1.20/amoro-mixed-flink-runtime-1.20/pom.xml   |   5 +
 .../{LICENSE-babel => LICENSE-@ant-design-colors}  |   4 +-
 .../{LICENSE-babel => LICENSE-@ant-design-icons}   |   4 +-
 .../{LICENSE-babel => LICENSE-@babel-runtime}      |   0
 ...ICENSE-babel => LICENSE-@babel-runtime-corejs3} |   0
 ...SE-@tsconfig-node18 => LICENSE-@ctrl-tinycolor} |   6 +-
 ...te-plugin-fake-server => LICENSE-@emotion-hash} |   2 +-
 ...lugin-fake-server => LICENSE-@emotion-unitless} |   2 +-
 ...LICENSE-vue-i18n => LICENSE-@intlify-core-base} |   2 +-
 ...-vue-i18n => LICENSE-@intlify-message-compiler} |   2 +-
 .../{LICENSE-vue-i18n => LICENSE-@intlify-shared}  |   2 +-
 ...LICENSE-echarts => LICENSE-@swagger-api-apidom} |  21 +-
 ...CENSE-echarts => LICENSE-@swaggerexpert-cookie} |  20 -
 ...echarts => LICENSE-@swaggerexpert-json-pointer} |  21 +-
 ...lugin-fake-server => LICENSE-@vue-devtools-api} |   2 +-
 .../{LICENSE-vue => LICENSE-@vue-reactivity}       |   4 +-
 .../{LICENSE-vue => LICENSE-@vue-runtime-core}     |   4 +-
 .../{LICENSE-vue => LICENSE-@vue-runtime-dom}      |   4 +-
 .../licenses/{LICENSE-vue => LICENSE-@vue-shared}  |   4 +-
 amoro-web/licenses/LICENSE-ant-design-vue          |   1 +
 amoro-web/licenses/LICENSE-apg-lite                |  28 ++
 .../{LICENSE-axios => LICENSE-async-validator}     |   4 +-
 .../licenses/{LICENSE-babel => LICENSE-autolinker} |   6 +-
 ...-fake-server => LICENSE-available-typed-arrays} |   2 +-
 .../licenses/{LICENSE-vue => LICENSE-base64-js}    |   4 +-
 amoro-web/licenses/{LICENSE-vue => LICENSE-buffer} |   4 +-
 ...NSE-vite-plugin-svg-icons => LICENSE-call-bind} |   2 +-
 ...-clipboard3 => LICENSE-call-bind-apply-helpers} |   2 +-
 .../{LICENSE-vue-clipboard3 => LICENSE-call-bound} |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-classnames}  |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-clipboard} |   2 +-
 ...ake-server => LICENSE-compute-scroll-into-view} |   2 +-
 ...lugin-fake-server => LICENSE-copy-to-clipboard} |   2 +-
 .../licenses/{LICENSE-vue => LICENSE-core-js-pure} |   7 +-
 .../licenses/{LICENSE-babel => LICENSE-css.escape} |   4 +-
 .../licenses/{LICENSE-vue => LICENSE-deepmerge}    |   4 +-
 ...vue-clipboard3 => LICENSE-define-data-property} |   2 +-
 .../licenses/{LICENSE-axios => LICENSE-dom-align}  |   4 +-
 .../{LICENSE-echarts => LICENSE-dompurify}         |  21 +-
 amoro-web/licenses/LICENSE-dompurify-MPL           | 373 +++++++++++++++++
 .../{LICENSE-monaco-editor => LICENSE-drange}      |   2 +-
 ...LICENSE-vue-clipboard3 => LICENSE-dunder-proto} |   2 +-
 amoro-web/licenses/LICENSE-echarts                 |   1 +
 amoro-web/licenses/LICENSE-echarts-d3              |  27 ++
 ...E-vue-clipboard3 => LICENSE-es-define-property} |   2 +-
 .../{LICENSE-vue-clipboard3 => LICENSE-es-errors}  |   2 +-
 ...ENSE-vue-clipboard3 => LICENSE-es-object-atoms} |   2 +-
 ...CENSE-sql-formatter => LICENSE-fast-deep-equal} |  12 +-
 .../{LICENSE-babel => LICENSE-fast-json-patch}     |  18 +-
 .../licenses/{LICENSE-babel => LICENSE-fault}      |  18 +-
 .../{LICENSE-monaco-editor => LICENSE-for-each}    |   3 +-
 amoro-web/licenses/{LICENSE-vue => LICENSE-format} |  10 +-
 .../{LICENSE-eslint => LICENSE-function-bind}      |   5 +-
 ...vite-plugin-svg-icons => LICENSE-get-intrinsic} |   2 +-
 .../{LICENSE-vue-clipboard3 => LICENSE-get-proto}  |   2 +-
 .../{LICENSE-vue-clipboard3 => LICENSE-gopd}       |   2 +-
 ...gable-plus => LICENSE-has-property-descriptors} |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-has-proto} |   2 +-
 ...{LICENSE-vue-clipboard3 => LICENSE-has-symbols} |   2 +-
 ...-plugin-fake-server => LICENSE-has-tostringtag} |   2 +-
 ...ENSE-vite-plugin-fake-server => LICENSE-hasown} |   2 +-
 .../licenses/LICENSE-highlight.js                  |  23 +-
 amoro-web/licenses/{LICENSE-qs => LICENSE-ieee754} |  10 +-
 ...NSE-vite-plugin-svg-icons => LICENSE-immutable} |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-is-callable} |   3 +-
 ...ICENSE-monaco-editor => LICENSE-is-typed-array} |   3 +-
 ...NSE-vite-plugin-fake-server => LICENSE-isarray} |   2 +-
 ...E-@tsconfig-node18 => LICENSE-js-file-download} |   6 +-
 .../licenses/{LICENSE-eslint => LICENSE-js-yaml}   |   6 +-
 .../licenses/{LICENSE-babel => LICENSE-lodash}     |  29 +-
 .../licenses/{LICENSE-babel => LICENSE-lodash-es}  |  29 +-
 .../{LICENSE-babel => LICENSE-lodash.debounce}     |  29 +-
 .../licenses/{LICENSE-babel => LICENSE-lowlight}   |  18 +-
 amoro-web/licenses/LICENSE-marked                  |  44 ++
 ...ENSE-vue-clipboard3 => LICENSE-math-intrinsics} |   2 +-
 .../licenses/{LICENSE-vue-i18n => LICENSE-minim}   |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-nearley}     |   2 +-
 ...ENSE-vue-draggable-plus => LICENSE-neotraverse} |   2 +-
 ...NSE-echarts => LICENSE-openapi-path-templating} |  21 +-
 ...harts => LICENSE-openapi-server-url-templating} |  21 +-
 amoro-web/licenses/LICENSE-pinia                   |   2 +-
 ...ipboard3 => LICENSE-possible-typed-array-names} |   2 +-
 ...-vite-plugin-fake-server => LICENSE-prop-types} |   2 +-
 ...ICENSE-monaco-editor => LICENSE-querystringify} |   3 +-
 amoro-web/licenses/{LICENSE-vue => LICENSE-ramda}  |   4 +-
 amoro-web/licenses/LICENSE-ramda-adjunct           |  25 ++
 .../licenses/{LICENSE-eslint => LICENSE-randexp}   |   6 +-
 ...CENSE-vite-plugin-fake-server => LICENSE-react} |   2 +-
 ...naco-editor => LICENSE-react-copy-to-clipboard} |   3 +-
 ...-monaco-editor => LICENSE-react-debounce-input} |   3 +-
 ...E-vite-plugin-fake-server => LICENSE-react-dom} |   2 +-
 ...co-editor => LICENSE-react-immutable-proptypes} |   3 +-
 ...itor => LICENSE-react-immutable-pure-component} |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-react-redux} |   2 +-
 ...clipboard3 => LICENSE-react-syntax-highlighter} |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-redux}       |   2 +-
 amoro-web/licenses/LICENSE-redux-immutable         |  24 ++
 .../licenses/{LICENSE-vue => LICENSE-remarkable}   |   5 +-
 .../{LICENSE-vue => LICENSE-repeat-string}         |   4 +-
 ...LICENSE-monaco-editor => LICENSE-requires-port} |   3 +-
 .../{LICENSE-monaco-editor => LICENSE-reselect}    |  42 +-
 ...aco-editor => LICENSE-resize-observer-polyfill} |  42 +-
 amoro-web/licenses/{LICENSE-eslint => LICENSE-ret} |   6 +-
 .../licenses/{LICENSE-vue => LICENSE-safe-buffer}  |   4 +-
 ...E-vite-plugin-fake-server => LICENSE-scheduler} |   2 +-
 ...e-server => LICENSE-scroll-into-view-if-needed} |   2 +-
 .../{LICENSE-axios => LICENSE-serialize-error}     |   4 +-
 ...gin-fake-server => LICENSE-set-function-length} |   2 +-
 amoro-web/licenses/LICENSE-sha.js                  |  49 +++
 ...LICENSE-monaco-editor => LICENSE-shallow-equal} |  16 +-
 amoro-web/licenses/LICENSE-short-unique-id         |  11 +
 .../{LICENSE-vue-clipboard3 => LICENSE-stylis}     |   2 +-
 .../{LICENSE-echarts => LICENSE-swagger-client}    |  21 +-
 .../{LICENSE-echarts => LICENSE-swagger-ui}        |  21 +-
 .../{LICENSE-echarts => LICENSE-swagger-ui-dist}   |  21 +-
 amoro-web/licenses/LICENSE-throttle-debounce       |  45 +++
 .../licenses/{LICENSE-vue => LICENSE-to-buffer}    |   4 +-
 ...plugin-fake-server => LICENSE-toggle-selection} |   2 +-
 .../{LICENSE-vue-clipboard3 => LICENSE-ts-mixer}   |   2 +-
 amoro-web/licenses/LICENSE-tslib                   |  12 +
 ...E-vue-clipboard3 => LICENSE-typed-array-buffer} |   2 +-
 amoro-web/licenses/LICENSE-unplugin-auto-import    |  21 -
 .../{LICENSE-monaco-editor => LICENSE-url-parse}   |   3 +-
 ...fake-server => LICENSE-use-sync-external-store} |   2 +-
 ...ake-server => LICENSE-vite-plugin-vue-devtools} |   2 +-
 amoro-web/licenses/LICENSE-vue-i18n                |   2 +-
 amoro-web/licenses/LICENSE-vue-router              |   2 +-
 .../{LICENSE-monaco-editor => LICENSE-vue-types}   |   2 +-
 ...in-fake-server => LICENSE-vue-virtual-scroller} |   2 +-
 ...NSE-monaco-editor => LICENSE-which-typed-array} |   3 +-
 ...ENSE-monaco-editor => LICENSE-xml-but-prettier} |   2 +-
 amoro-web/licenses/LICENSE-zenscroll               |  25 ++
 .../licenses/LICENSE-zrender                       |  21 +-
 amoro-web/licenses/NOTICE-@swagger-api-apidom      |  83 ++++
 .../licenses/NOTICE-@swaggerexpert-json-pointer    |  11 +
 amoro-web/licenses/NOTICE-monaco-editor            | 448 +++++++++++++++++++++
 amoro-web/licenses/NOTICE-openapi-path-templating  |   4 +
 .../licenses/NOTICE-openapi-server-url-templating  |   4 +
 amoro-web/pom.xml                                  |  12 +
 159 files changed, 2717 insertions(+), 476 deletions(-)
 create mode 100644 amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerController.java
 create mode 100644 amoro-ams/src/test/java/org/apache/amoro/server/dashboard/TestSnapshotFileSize.java
 create mode 100644 amoro-ams/src/test/java/org/apache/amoro/server/dashboard/controller/TestOptimizerGroupPagination.java
 create mode 100644 amoro-ams/src/test/java/org/apache/amoro/server/dashboard/utils/TestTableOptimizingInfo.java
 create mode 100644 amoro-format-hudi/src/test/java/org/apache/amoro/formats/hudi/TestHudiTableDescriptorSnapshots.java
 create mode 100644 amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/appended-resources/META-INF/LICENSE
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-@ant-design-colors} (92%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-@ant-design-icons} (92%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-@babel-runtime} (100%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-@babel-runtime-corejs3} (100%)
 copy amoro-web/licenses/{LICENSE-@tsconfig-node18 => LICENSE-@ctrl-tinycolor} (94%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-@emotion-hash} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-@emotion-unitless} (95%)
 copy amoro-web/licenses/{LICENSE-vue-i18n => LICENSE-@intlify-core-base} (96%)
 copy amoro-web/licenses/{LICENSE-vue-i18n => LICENSE-@intlify-message-compiler} (96%)
 copy amoro-web/licenses/{LICENSE-vue-i18n => LICENSE-@intlify-shared} (96%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-@swagger-api-apidom} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-@swaggerexpert-cookie} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-@swaggerexpert-json-pointer} (94%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-@vue-devtools-api} (97%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-@vue-reactivity} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-@vue-runtime-core} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-@vue-runtime-dom} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-@vue-shared} (92%)
 create mode 100644 amoro-web/licenses/LICENSE-apg-lite
 copy amoro-web/licenses/{LICENSE-axios => LICENSE-async-validator} (94%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-autolinker} (86%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-available-typed-arrays} (97%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-base64-js} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-buffer} (92%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-svg-icons => LICENSE-call-bind} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-call-bind-apply-helpers} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-call-bound} (96%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-classnames} (95%)
 copy amoro-web/licenses/{LICENSE-vue-draggable-plus => LICENSE-clipboard} (97%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-compute-scroll-into-view} (97%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-copy-to-clipboard} (95%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-core-js-pure} (89%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-css.escape} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-deepmerge} (92%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-define-data-property} (96%)
 copy amoro-web/licenses/{LICENSE-axios => LICENSE-dom-align} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-dompurify} (94%)
 create mode 100644 amoro-web/licenses/LICENSE-dompurify-MPL
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-drange} (95%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-dunder-proto} (96%)
 create mode 100644 amoro-web/licenses/LICENSE-echarts-d3
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-es-define-property} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-es-errors} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-es-object-atoms} (96%)
 copy amoro-web/licenses/{LICENSE-sql-formatter => LICENSE-fast-deep-equal} (75%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-fast-json-patch} (51%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-fault} (51%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-for-each} (95%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-format} (76%)
 copy amoro-web/licenses/{LICENSE-eslint => LICENSE-function-bind} (92%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-svg-icons => LICENSE-get-intrinsic} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-get-proto} (96%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-gopd} (96%)
 copy amoro-web/licenses/{LICENSE-vue-draggable-plus => LICENSE-has-property-descriptors} (97%)
 copy amoro-web/licenses/{LICENSE-vue-draggable-plus => LICENSE-has-proto} (97%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-has-symbols} (96%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-has-tostringtag} (97%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-hasown} (95%)
 copy licenses-binary/LICENSE.dnsjava => amoro-web/licenses/LICENSE-highlight.js (57%)
 copy amoro-web/licenses/{LICENSE-qs => LICENSE-ieee754} (59%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-svg-icons => LICENSE-immutable} (94%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-is-callable} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-is-typed-array} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-isarray} (94%)
 rename amoro-web/licenses/{LICENSE-@tsconfig-node18 => LICENSE-js-file-download} (94%)
 copy amoro-web/licenses/{LICENSE-eslint => LICENSE-js-yaml} (92%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-lodash} (52%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-lodash-es} (52%)
 copy amoro-web/licenses/{LICENSE-babel => LICENSE-lodash.debounce} (52%)
 rename amoro-web/licenses/{LICENSE-babel => LICENSE-lowlight} (51%)
 create mode 100644 amoro-web/licenses/LICENSE-marked
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-math-intrinsics} (96%)
 copy amoro-web/licenses/{LICENSE-vue-i18n => LICENSE-minim} (96%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-nearley} (93%)
 rename amoro-web/licenses/{LICENSE-vue-draggable-plus => LICENSE-neotraverse} (97%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-openapi-path-templating} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-openapi-server-url-templating} (94%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-possible-typed-array-names} (96%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-prop-types} (96%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-querystringify} (93%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-ramda} (92%)
 create mode 100644 amoro-web/licenses/LICENSE-ramda-adjunct
 copy amoro-web/licenses/{LICENSE-eslint => LICENSE-randexp} (92%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-react} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-react-copy-to-clipboard} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-react-debounce-input} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-react-dom} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-react-immutable-proptypes} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-react-immutable-pure-component} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-react-redux} (95%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-react-syntax-highlighter} (96%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-redux} (95%)
 create mode 100644 amoro-web/licenses/LICENSE-redux-immutable
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-remarkable} (90%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-repeat-string} (92%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-requires-port} (93%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-reselect} (93%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-resize-observer-polyfill} (95%)
 copy amoro-web/licenses/{LICENSE-eslint => LICENSE-ret} (92%)
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-safe-buffer} (92%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-scheduler} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-scroll-into-view-if-needed} (97%)
 copy amoro-web/licenses/{LICENSE-axios => LICENSE-serialize-error} (91%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-set-function-length} (95%)
 create mode 100644 amoro-web/licenses/LICENSE-sha.js
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-shallow-equal} (54%)
 create mode 100644 amoro-web/licenses/LICENSE-short-unique-id
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-stylis} (96%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-swagger-client} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-swagger-ui} (94%)
 copy amoro-web/licenses/{LICENSE-echarts => LICENSE-swagger-ui-dist} (94%)
 create mode 100644 amoro-web/licenses/LICENSE-throttle-debounce
 copy amoro-web/licenses/{LICENSE-vue => LICENSE-to-buffer} (92%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-toggle-selection} (95%)
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-ts-mixer} (96%)
 create mode 100644 amoro-web/licenses/LICENSE-tslib
 copy amoro-web/licenses/{LICENSE-vue-clipboard3 => LICENSE-typed-array-buffer} (96%)
 delete mode 100644 amoro-web/licenses/LICENSE-unplugin-auto-import
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-url-parse} (93%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-use-sync-external-store} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-vite-plugin-vue-devtools} (97%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-vue-types} (95%)
 copy amoro-web/licenses/{LICENSE-vite-plugin-fake-server => LICENSE-vue-virtual-scroller} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-which-typed-array} (95%)
 copy amoro-web/licenses/{LICENSE-monaco-editor => LICENSE-xml-but-prettier} (95%)
 create mode 100644 amoro-web/licenses/LICENSE-zenscroll
 copy licenses-binary/LICENSE.dnsjava => amoro-web/licenses/LICENSE-zrender (57%)
 create mode 100644 amoro-web/licenses/NOTICE-@swagger-api-apidom
 create mode 100644 amoro-web/licenses/NOTICE-@swaggerexpert-json-pointer
 create mode 100644 amoro-web/licenses/NOTICE-monaco-editor
 create mode 100644 amoro-web/licenses/NOTICE-openapi-path-templating
 create mode 100644 amoro-web/licenses/NOTICE-openapi-server-url-templating


(amoro) 03/09: [AMORO-4401][AMS]Validate optimizer list pagination parameters (#4404)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit a655daafa4c3841b3d6f03cdc6932e0fd75ea5ef
Author: hutiefang76 <13...@users.noreply.github.com>
AuthorDate: Sat Oct 3 06:35:07 2026 +0800

    [AMORO-4401][AMS]Validate optimizer list pagination parameters (#4404)
    
    * [AMS] Validate optimizer list pagination parameters
    
    * [AMS] Cover optimizer pagination boundaries
    
    (cherry picked from commit eeaf68154125f4619aee417e72a7914ba5573a6e)
---
 .../controller/OptimizerGroupController.java       |  26 ++-
 .../controller/TestOptimizerGroupPagination.java   | 224 +++++++++++++++++++++
 2 files changed, 246 insertions(+), 4 deletions(-)

diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
index 2362018b6..586891d27 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
@@ -83,8 +83,17 @@ public class OptimizerGroupController {
     String optimizerGroup = ctx.pathParam("optimizerGroup");
     String dbFilterStr = ctx.queryParam("dbSearchInput");
     String tableFilterStr = ctx.queryParam("tableSearchInput");
-    Integer page = ctx.queryParamAsClass("page", Integer.class).getOrDefault(1);
-    Integer pageSize = ctx.queryParamAsClass("pageSize", Integer.class).getOrDefault(20);
+    Integer pageSize =
+        ctx.queryParamAsClass("pageSize", Integer.class)
+            .check(size -> size >= 1, "pageSize must be greater than 0")
+            .getOrDefault(20);
+    Integer page =
+        ctx.queryParamAsClass("page", Integer.class)
+            .check(value -> value >= 1, "page must be greater than 0")
+            .check(
+                value -> ((long) value - 1) * pageSize <= Integer.MAX_VALUE,
+                "page offset exceeds int range")
+            .getOrDefault(1);
     Set<String> actionFilter = new HashSet<>(ctx.queryParams("actions[]"));
     int offset = (page - 1) * pageSize;
 
@@ -120,8 +129,17 @@ public class OptimizerGroupController {
   /** get optimizers. */
   public void getOptimizers(Context ctx) {
     String optimizerGroup = ctx.pathParam("optimizerGroup");
-    Integer page = ctx.queryParamAsClass("page", Integer.class).getOrDefault(1);
-    Integer pageSize = ctx.queryParamAsClass("pageSize", Integer.class).getOrDefault(20);
+    Integer pageSize =
+        ctx.queryParamAsClass("pageSize", Integer.class)
+            .check(size -> size >= 1, "pageSize must be greater than 0")
+            .getOrDefault(20);
+    Integer page =
+        ctx.queryParamAsClass("page", Integer.class)
+            .check(value -> value >= 1, "page must be greater than 0")
+            .check(
+                value -> ((long) value - 1) * pageSize <= Integer.MAX_VALUE,
+                "page offset exceeds int range")
+            .getOrDefault(1);
 
     int offset = (page - 1) * pageSize;
     List<OptimizerInstance> optimizers;
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/controller/TestOptimizerGroupPagination.java b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/controller/TestOptimizerGroupPagination.java
new file mode 100644
index 000000000..78003053e
--- /dev/null
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/controller/TestOptimizerGroupPagination.java
@@ -0,0 +1,224 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.server.dashboard.controller;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
+
+import io.javalin.core.validation.ValidationException;
+import io.javalin.core.validation.Validator;
+import io.javalin.http.Context;
+import org.apache.amoro.server.dashboard.model.OptimizerInstanceInfo;
+import org.apache.amoro.server.dashboard.model.TableOptimizingInfo;
+import org.apache.amoro.server.dashboard.response.OkResponse;
+import org.apache.amoro.server.dashboard.response.PageResult;
+import org.apache.amoro.server.resource.OptimizerInstance;
+import org.apache.amoro.server.resource.OptimizerManager;
+import org.apache.amoro.server.table.TableManager;
+import org.apache.commons.lang3.tuple.Pair;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.junit.jupiter.params.provider.ValueSource;
+import org.mockito.ArgumentCaptor;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class TestOptimizerGroupPagination {
+
+  private TableManager tableManager;
+  private OptimizerManager optimizerManager;
+  private OptimizerGroupController controller;
+  private Context ctx;
+  private final Map<String, String> queryValues = new HashMap<>();
+
+  @BeforeEach
+  void setUp() {
+    tableManager = mock(TableManager.class);
+    optimizerManager = mock(OptimizerManager.class);
+    controller = new OptimizerGroupController(tableManager, optimizerManager);
+    ctx = mock(Context.class);
+    queryValues.clear();
+    when(ctx.pathParam("optimizerGroup")).thenReturn("all");
+    when(ctx.queryParams("actions[]")).thenReturn(Collections.emptyList());
+    when(ctx.queryParamAsClass(anyString(), eq(Integer.class)))
+        .thenAnswer(
+            invocation ->
+                Validator.create(
+                    Integer.class,
+                    queryValues.get(invocation.getArgument(0, String.class)),
+                    invocation.getArgument(0, String.class)));
+  }
+
+  private void usePagination(String page, String pageSize) {
+    queryValues.put("page", page);
+    queryValues.put("pageSize", pageSize);
+  }
+
+  private void stubEmptyTableQuery() {
+    when(tableManager.queryTableOptimizingInfo(any(), any(), any(), any(), anyInt(), anyInt()))
+        .thenReturn(Pair.of(Collections.<TableOptimizingInfo>emptyList(), 0));
+  }
+
+  @ParameterizedTest
+  @CsvSource({"0,20", "-1,20", "1,0", "1,-1", "2147483647,20"})
+  void getOptimizersRejectsInvalidPagination(String page, String pageSize) {
+    usePagination(page, pageSize);
+
+    assertThrows(ValidationException.class, () -> controller.getOptimizers(ctx));
+    verifyNoInteractions(optimizerManager, tableManager);
+  }
+
+  @ParameterizedTest
+  @CsvSource({"0,20", "-1,20", "1,0", "1,-1", "2147483647,20"})
+  void getOptimizerTablesRejectsInvalidPagination(String page, String pageSize) {
+    usePagination(page, pageSize);
+
+    assertThrows(ValidationException.class, () -> controller.getOptimizerTables(ctx));
+    verifyNoInteractions(optimizerManager, tableManager);
+  }
+
+  @Test
+  void getOptimizerTablesUsesDefaultPaginationAndFilters() {
+    stubEmptyTableQuery();
+
+    controller.getOptimizerTables(ctx);
+
+    verify(tableManager)
+        .queryTableOptimizingInfo(isNull(), isNull(), isNull(), isNull(), eq(20), eq(0));
+    PageResult<?> pageResult = responsePageResult();
+    assertEquals(0, pageResult.getTotal());
+    assertTrue(pageResult.getList().isEmpty());
+  }
+
+  @Test
+  void getOptimizerTablesPassesPageAndSizeAsLimitAndOffset() {
+    stubEmptyTableQuery();
+    usePagination("3", "2");
+
+    controller.getOptimizerTables(ctx);
+
+    verify(tableManager)
+        .queryTableOptimizingInfo(isNull(), isNull(), isNull(), isNull(), eq(2), eq(4));
+  }
+
+  @ParameterizedTest
+  @CsvSource({"2,2147483647,2147483647,2147483647", "2147483647,1,1,2147483646"})
+  void getOptimizerTablesAcceptsBoundaryPagination(
+      String page, String pageSize, int expectedLimit, int expectedOffset) {
+    stubEmptyTableQuery();
+    usePagination(page, pageSize);
+
+    controller.getOptimizerTables(ctx);
+
+    verify(tableManager)
+        .queryTableOptimizingInfo(
+            isNull(), isNull(), isNull(), isNull(), eq(expectedLimit), eq(expectedOffset));
+    PageResult<?> pageResult = responsePageResult();
+    assertEquals(0, pageResult.getTotal());
+    assertTrue(pageResult.getList().isEmpty());
+  }
+
+  @ParameterizedTest
+  @CsvSource({"2,2147483647", "2147483647,1"})
+  void getOptimizersAcceptsBoundaryPagination(String page, String pageSize) {
+    when(optimizerManager.listOptimizers()).thenReturn(Collections.emptyList());
+    usePagination(page, pageSize);
+
+    controller.getOptimizers(ctx);
+
+    PageResult<?> pageResult = responsePageResult();
+    assertEquals(0, pageResult.getTotal());
+    assertTrue(pageResult.getList().isEmpty());
+  }
+
+  @ParameterizedTest
+  @ValueSource(strings = {"all", "group1"})
+  void getOptimizersSortsAndPaginates(String optimizerGroup) {
+    when(ctx.pathParam("optimizerGroup")).thenReturn(optimizerGroup);
+    List<OptimizerInstance> unsorted =
+        Arrays.asList(optimizer("three", 3L), optimizer("one", 1L), optimizer("two", 2L));
+    if ("all".equals(optimizerGroup)) {
+      when(optimizerManager.listOptimizers()).thenReturn(unsorted);
+    } else {
+      when(optimizerManager.listOptimizers(optimizerGroup)).thenReturn(unsorted);
+    }
+    usePagination("2", "1");
+
+    controller.getOptimizers(ctx);
+
+    if ("all".equals(optimizerGroup)) {
+      verify(optimizerManager).listOptimizers();
+    } else {
+      verify(optimizerManager).listOptimizers(optimizerGroup);
+    }
+    PageResult<?> pageResult = responsePageResult();
+    assertEquals(3, pageResult.getTotal());
+    assertEquals(1, pageResult.getList().size());
+    assertEquals("two", optimizerToken(pageResult.getList().get(0)));
+  }
+
+  @Test
+  void getOptimizersReturnsFirstPageByDefault() {
+    List<OptimizerInstance> optimizers = Collections.singletonList(optimizer("one", 1L));
+    when(optimizerManager.listOptimizers()).thenReturn(optimizers);
+
+    controller.getOptimizers(ctx);
+
+    PageResult<?> pageResult = responsePageResult();
+    assertEquals(1, pageResult.getTotal());
+    assertEquals(1, pageResult.getList().size());
+    assertEquals("one", optimizerToken(pageResult.getList().get(0)));
+  }
+
+  private static OptimizerInstance optimizer(String token, long startTime) {
+    OptimizerInstance instance = mock(OptimizerInstance.class);
+    when(instance.getToken()).thenReturn(token);
+    when(instance.getStartTime()).thenReturn(startTime);
+    return instance;
+  }
+
+  private static String optimizerToken(Object info) {
+    return ((OptimizerInstanceInfo) info).getToken();
+  }
+
+  private PageResult<?> responsePageResult() {
+    ArgumentCaptor<Object> jsonCaptor = ArgumentCaptor.forClass(Object.class);
+    verify(ctx).json(jsonCaptor.capture());
+    Object payload = jsonCaptor.getValue();
+    assertNotNull(payload);
+    return (PageResult<?>) ((OkResponse<?>) payload).getResult();
+  }
+}


(amoro) 09/09: [AMORO-4407][Hudi]Preserve long Hudi snapshot file sizes (#4408)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 743594a44ae13f63a90fe44c95e4a0fcd356d96a
Author: hutiefang76 <13...@users.noreply.github.com>
AuthorDate: Fri Oct 9 04:45:29 2026 -0700

    [AMORO-4407][Hudi]Preserve long Hudi snapshot file sizes (#4408)
    
    [Hudi] Preserve snapshot file sizes as long
    
    (cherry picked from commit 6eba347f0bde52de25899fb8b486eef61e607fe6)
---
 .../amoro/formats/hudi/HudiTableDescriptor.java    |   2 +-
 .../hudi/TestHudiTableDescriptorSnapshots.java     | 164 +++++++++++++++++++++
 2 files changed, 165 insertions(+), 1 deletion(-)

diff --git a/amoro-format-hudi/src/main/java/org/apache/amoro/formats/hudi/HudiTableDescriptor.java b/amoro-format-hudi/src/main/java/org/apache/amoro/formats/hudi/HudiTableDescriptor.java
index 7f1a35880..4379a6d7b 100644
--- a/amoro-format-hudi/src/main/java/org/apache/amoro/formats/hudi/HudiTableDescriptor.java
+++ b/amoro-format-hudi/src/main/java/org/apache/amoro/formats/hudi/HudiTableDescriptor.java
@@ -244,7 +244,7 @@ public class HudiTableDescriptor implements FormatTableDescriptor {
               snapshotsOfTable.setSnapshotId(s.getSnapshotId());
               snapshotsOfTable.setCommitTime(s.getCommitTimestamp());
               snapshotsOfTable.setFileCount(s.getTotalFileCount());
-              snapshotsOfTable.setFileSize((int) s.getTotalFileSize());
+              snapshotsOfTable.setFileSize(s.getTotalFileSize());
               snapshotsOfTable.setSummary(s.getSummary());
               snapshotsOfTable.setOperation(s.getOperation());
               Map<String, String> fileSummary = new HashMap<>();
diff --git a/amoro-format-hudi/src/test/java/org/apache/amoro/formats/hudi/TestHudiTableDescriptorSnapshots.java b/amoro-format-hudi/src/test/java/org/apache/amoro/formats/hudi/TestHudiTableDescriptorSnapshots.java
new file mode 100644
index 000000000..fd4523744
--- /dev/null
+++ b/amoro-format-hudi/src/test/java/org/apache/amoro/formats/hudi/TestHudiTableDescriptorSnapshots.java
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.formats.hudi;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.apache.amoro.table.descriptor.AmoroSnapshotsOfTable;
+import org.apache.amoro.table.descriptor.OperationType;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+
+/**
+ * Tests for {@link HudiTableDescriptor#getSnapshots} with real {@link HudiSnapshot} instances, only
+ * the external Hudi table access ({@link HudiTable#getSnapshotList(ExecutorService)}) is mocked
+ * with a mocked {@link ExecutorService}, so no real Hudi I/O happens.
+ */
+public class TestHudiTableDescriptorSnapshots {
+
+  private static final ExecutorService IO_EXECUTOR = mock(ExecutorService.class);
+
+  private HudiTable hudiTable;
+  private HudiTableDescriptor descriptor;
+
+  private void mockSnapshotList(List<HudiSnapshot> snapshots) {
+    hudiTable = mock(HudiTable.class);
+    when(hudiTable.getSnapshotList(IO_EXECUTOR)).thenReturn(snapshots);
+    descriptor = new HudiTableDescriptor();
+    descriptor.withIoExecutor(IO_EXECUTOR);
+  }
+
+  private List<AmoroSnapshotsOfTable> getSnapshots(OperationType operationType) {
+    return descriptor.getSnapshots(hudiTable, null, operationType);
+  }
+
+  private static HudiSnapshot snapshot(
+      String snapshotId,
+      long commitTimestamp,
+      String operationType,
+      String operation,
+      long totalFileSize) {
+    Map<String, String> summary = new HashMap<>();
+    summary.put("instant", snapshotId);
+    summary.put("total-size", String.valueOf(totalFileSize));
+    return new HudiSnapshot(
+        snapshotId,
+        commitTimestamp,
+        operationType,
+        operation,
+        5,
+        3,
+        2,
+        totalFileSize,
+        100L,
+        summary);
+  }
+
+  @ParameterizedTest
+  @ValueSource(longs = {0L, 1024L, 1048576L, 2147483647L, 2147483648L, 3221225472L, 5368709120L})
+  public void testOriginalFileSizeIsNotTruncated(long fileSize) {
+    mockSnapshotList(
+        Collections.singletonList(
+            snapshot("20240101000000", 1704067200000L, "NON_OPTIMIZING", "commit", fileSize)));
+
+    List<AmoroSnapshotsOfTable> snapshots = getSnapshots(OperationType.ALL);
+
+    assertEquals(1, snapshots.size());
+    assertEquals(
+        fileSize,
+        snapshots.get(0).getOriginalFileSize(),
+        "original file size " + fileSize + " must not be truncated");
+  }
+
+  @Test
+  public void testSnapshotFieldsAreMapped() {
+    Map<String, String> summary = new HashMap<>();
+    summary.put("total-records", "42");
+    HudiSnapshot hudiSnapshot =
+        new HudiSnapshot(
+            "20240101010101",
+            1704067261000L,
+            "OPTIMIZING",
+            "compaction",
+            7,
+            4,
+            3,
+            3L * 1024 * 1024 * 1024,
+            100L,
+            summary);
+    mockSnapshotList(Collections.singletonList(hudiSnapshot));
+
+    List<AmoroSnapshotsOfTable> snapshots = getSnapshots(OperationType.ALL);
+
+    assertEquals(1, snapshots.size());
+    AmoroSnapshotsOfTable snapshot = snapshots.get(0);
+    assertEquals("20240101010101", snapshot.getSnapshotId());
+    assertEquals(1704067261000L, snapshot.getCommitTime());
+    assertEquals(7, snapshot.getFileCount());
+    assertEquals(3221225472L, snapshot.getOriginalFileSize());
+    assertEquals(summary, snapshot.getSummary());
+    assertEquals("compaction", snapshot.getOperation());
+    Map<String, String> filesSummary = snapshot.getFilesSummaryForChart();
+    assertEquals("0", filesSummary.get("delta-files"));
+    assertEquals("4", filesSummary.get("data-files"));
+    assertEquals("3", filesSummary.get("changelogs"));
+  }
+
+  @Test
+  public void testSnapshotFilteringByOperationType() {
+    mockSnapshotList(
+        Arrays.asList(
+            snapshot("1", 1L, "NON_OPTIMIZING", "commit", 1L),
+            snapshot("2", 2L, "OPTIMIZING", "compaction", 2L),
+            snapshot("3", 3L, "OPTIMIZING", "clustering", 3L)));
+
+    List<AmoroSnapshotsOfTable> allSnapshots = getSnapshots(OperationType.ALL);
+    assertEquals(3, allSnapshots.size());
+
+    List<AmoroSnapshotsOfTable> optimizingSnapshots = getSnapshots(OperationType.OPTIMIZING);
+    assertEquals(2, optimizingSnapshots.size());
+    assertEquals("compaction", optimizingSnapshots.get(0).getOperation());
+    assertEquals("clustering", optimizingSnapshots.get(1).getOperation());
+
+    List<AmoroSnapshotsOfTable> nonOptimizingSnapshots = getSnapshots(OperationType.NON_OPTIMIZING);
+    assertEquals(1, nonOptimizingSnapshots.size());
+    assertEquals("commit", nonOptimizingSnapshots.get(0).getOperation());
+    assertEquals(1L, nonOptimizingSnapshots.get(0).getOriginalFileSize());
+  }
+
+  @Test
+  public void testEmptySnapshotList() {
+    mockSnapshotList(Collections.emptyList());
+
+    assertTrue(getSnapshots(OperationType.ALL).isEmpty());
+    assertTrue(getSnapshots(OperationType.OPTIMIZING).isEmpty());
+    assertTrue(getSnapshots(OperationType.NON_OPTIMIZING).isEmpty());
+  }
+}


(amoro) 08/09: [hotfix][postgres] Fix org.postgresql.util.PSQLException: ERROR: column name must be qualified (#4396)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 709368a0880e8317dfed65d18c1fa3bc522de300
Author: Nikita Ryanov <ry...@gmail.com>
AuthorDate: Fri Oct 9 14:45:13 2026 +0300

    [hotfix][postgres] Fix org.postgresql.util.PSQLException: ERROR: column name must be qualified (#4396)
    
    (cherry picked from commit ac9a343df0fb873a184815e31ddd9bb40afe10f1)
---
 .../src/main/resources/postgres/ams-postgres-init.sql      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/amoro-ams/src/main/resources/postgres/ams-postgres-init.sql b/amoro-ams/src/main/resources/postgres/ams-postgres-init.sql
index 5f1494bc0..4dd8098f8 100644
--- a/amoro-ams/src/main/resources/postgres/ams-postgres-init.sql
+++ b/amoro-ams/src/main/resources/postgres/ams-postgres-init.sql
@@ -470,10 +470,10 @@ CREATE TABLE IF NOT EXISTS bucket_assignments (
 
 CREATE INDEX IF NOT EXISTS idx_bucket_assignments_cluster ON bucket_assignments (cluster_name);
 
-COMMENT ON COLUMN service_name IS 'Service name (AMS/TABLE_SERVICE/OPTIMIZING_SERVICE)';
-COMMENT ON COLUMN node_id IS 'Unique node identifier (host:port:uuid)';
-COMMENT ON COLUMN node_ip IS 'Node IP address';
-COMMENT ON COLUMN server_info_json IS 'JSON encoded server info (AmsServerInfo)';
-COMMENT ON COLUMN lease_expire_ts IS 'Lease expiration timestamp (ms since epoch)';
-COMMENT ON COLUMN version IS 'Optimistic lock version of the lease row';
-COMMENT ON COLUMN updated_at IS 'Last update timestamp (ms since epoch)';
+COMMENT ON COLUMN ha_lease.service_name IS 'Service name (AMS/TABLE_SERVICE/OPTIMIZING_SERVICE)';
+COMMENT ON COLUMN ha_lease.node_id IS 'Unique node identifier (host:port:uuid)';
+COMMENT ON COLUMN ha_lease.node_ip IS 'Node IP address';
+COMMENT ON COLUMN ha_lease.server_info_json IS 'JSON encoded server info (AmsServerInfo)';
+COMMENT ON COLUMN ha_lease.lease_expire_ts IS 'Lease expiration timestamp (ms since epoch)';
+COMMENT ON COLUMN ha_lease.version IS 'Optimistic lock version of the lease row';
+COMMENT ON COLUMN ha_lease.updated_at IS 'Last update timestamp (ms since epoch)';


(amoro) 04/09: [AMORO-4405][AMS]Report total file size for Iceberg snapshots (#4406)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 728d6d72e5f7c77e3929af17dc4dc4f743a2a21e
Author: hutiefang76 <13...@users.noreply.github.com>
AuthorDate: Sat Oct 3 06:35:19 2026 +0800

    [AMORO-4405][AMS]Report total file size for Iceberg snapshots (#4406)
    
    [AMS] Report total size for table snapshots
    
    (cherry picked from commit 061eb724e93592fe87cf44b61af34c1d799f5db6)
---
 .../dashboard/MixedAndIcebergTableDescriptor.java  |   4 +-
 .../server/dashboard/TestSnapshotFileSize.java     | 133 +++++++++++++++++++++
 2 files changed, 134 insertions(+), 3 deletions(-)

diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/MixedAndIcebergTableDescriptor.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/MixedAndIcebergTableDescriptor.java
index f6c1dd8d3..2db674fd5 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/MixedAndIcebergTableDescriptor.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/MixedAndIcebergTableDescriptor.java
@@ -319,9 +319,7 @@ public class MixedAndIcebergTableDescriptor extends PersistentBase
                             summary, SnapshotSummary.TOTAL_DATA_FILES_PROP, 0);
                 amoroSnapshotsOfTable.setFileCount(fileCount);
                 amoroSnapshotsOfTable.setFileSize(
-                    PropertyUtil.propertyAsLong(summary, SnapshotSummary.ADDED_FILE_SIZE_PROP, 0L)
-                        + PropertyUtil.propertyAsLong(
-                            summary, SnapshotSummary.REMOVED_FILE_SIZE_PROP, 0L));
+                    PropertyUtil.propertyAsLong(summary, SnapshotSummary.TOTAL_FILE_SIZE_PROP, 0L));
                 long totalRecords =
                     PropertyUtil.propertyAsLong(summary, SnapshotSummary.TOTAL_RECORDS_PROP, 0L);
                 amoroSnapshotsOfTable.setRecords(totalRecords);
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/TestSnapshotFileSize.java b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/TestSnapshotFileSize.java
new file mode 100644
index 000000000..3c07f9b60
--- /dev/null
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/TestSnapshotFileSize.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.server.dashboard;
+
+import org.apache.amoro.AmoroTable;
+import org.apache.amoro.formats.iceberg.IcebergTable;
+import org.apache.amoro.table.TableIdentifier;
+import org.apache.amoro.table.TableMetaStore;
+import org.apache.amoro.table.descriptor.AmoroSnapshotsOfTable;
+import org.apache.amoro.table.descriptor.OperationType;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.iceberg.DataFile;
+import org.apache.iceberg.DataFiles;
+import org.apache.iceberg.PartitionSpec;
+import org.apache.iceberg.Schema;
+import org.apache.iceberg.Table;
+import org.apache.iceberg.hadoop.HadoopTables;
+import org.apache.iceberg.types.Types;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Verifies the snapshot file statistics reported by {@link
+ * MixedAndIcebergTableDescriptor#getSnapshots(AmoroTable, String, OperationType)} against a real
+ * Iceberg table.
+ */
+public class TestSnapshotFileSize {
+
+  private static final Schema SCHEMA =
+      new Schema(Types.NestedField.required(1, "id", Types.IntegerType.get()));
+
+  @TempDir File warehouse;
+
+  @Test
+  public void testAppendSnapshotsReportTotalFileSize() {
+    Table icebergTable = newIcebergTable("append");
+    icebergTable.newAppend().appendFile(dataFile("data-a.parquet", 100)).commit();
+    long firstSnapshotId = icebergTable.currentSnapshot().snapshotId();
+    icebergTable.newAppend().appendFile(dataFile("data-b.parquet", 200)).commit();
+    long secondSnapshotId = icebergTable.currentSnapshot().snapshotId();
+
+    List<AmoroSnapshotsOfTable> snapshots = getSnapshots(icebergTable);
+    Assertions.assertEquals(2, snapshots.size());
+
+    AmoroSnapshotsOfTable firstSnapshot = findSnapshot(snapshots, firstSnapshotId);
+    Assertions.assertEquals(100L, firstSnapshot.getOriginalFileSize());
+    Assertions.assertEquals(1, firstSnapshot.getFileCount());
+    Assertions.assertEquals(10L, firstSnapshot.getRecords());
+
+    AmoroSnapshotsOfTable secondSnapshot = findSnapshot(snapshots, secondSnapshotId);
+    Assertions.assertEquals(300L, secondSnapshot.getOriginalFileSize());
+    Assertions.assertEquals(2, secondSnapshot.getFileCount());
+    Assertions.assertEquals(20L, secondSnapshot.getRecords());
+  }
+
+  @Test
+  public void testRemoveSnapshotReportsRemainingTotalFileSize() {
+    Table icebergTable = newIcebergTable("remove");
+    DataFile removed = dataFile("data-a.parquet", 100);
+    icebergTable.newAppend().appendFile(removed).commit();
+    icebergTable.newAppend().appendFile(dataFile("data-b.parquet", 200)).commit();
+    icebergTable.newDelete().deleteFile(removed).commit();
+    long deleteSnapshotId = icebergTable.currentSnapshot().snapshotId();
+
+    List<AmoroSnapshotsOfTable> snapshots = getSnapshots(icebergTable);
+
+    AmoroSnapshotsOfTable deleteSnapshot = findSnapshot(snapshots, deleteSnapshotId);
+    Assertions.assertEquals(200L, deleteSnapshot.getOriginalFileSize());
+    Assertions.assertEquals(1, deleteSnapshot.getFileCount());
+    Assertions.assertEquals(10L, deleteSnapshot.getRecords());
+  }
+
+  @Test
+  public void testEmptyTableHasNoSnapshots() {
+    Table icebergTable = newIcebergTable("empty");
+    Assertions.assertTrue(getSnapshots(icebergTable).isEmpty());
+  }
+
+  private Table newIcebergTable(String name) {
+    HadoopTables tables = new HadoopTables(new Configuration());
+    return tables.create(
+        SCHEMA, PartitionSpec.unpartitioned(), new File(warehouse, name).getAbsolutePath());
+  }
+
+  private DataFile dataFile(String path, long sizeInBytes) {
+    return DataFiles.builder(PartitionSpec.unpartitioned())
+        .withPath(path)
+        .withFileSizeInBytes(sizeInBytes)
+        .withRecordCount(10)
+        .build();
+  }
+
+  private List<AmoroSnapshotsOfTable> getSnapshots(Table icebergTable) {
+    AmoroTable<?> amoroTable =
+        IcebergTable.newIcebergTable(
+            TableIdentifier.of("catalog", "db", icebergTable.name()),
+            icebergTable,
+            TableMetaStore.builder().withConfiguration(new Configuration()).build(),
+            Collections.emptyMap());
+    MixedAndIcebergTableDescriptor descriptor = new MixedAndIcebergTableDescriptor();
+    return descriptor.getSnapshots(amoroTable, null, OperationType.ALL);
+  }
+
+  /** Commit timestamps may tie, so snapshots are located by snapshot id. */
+  private AmoroSnapshotsOfTable findSnapshot(
+      List<AmoroSnapshotsOfTable> snapshots, long snapshotId) {
+    return snapshots.stream()
+        .filter(snapshot -> String.valueOf(snapshotId).equals(snapshot.getSnapshotId()))
+        .findFirst()
+        .orElseThrow(() -> new AssertionError("snapshot " + snapshotId + " is missing"));
+  }
+}


(amoro) 02/09: [AMORO-4400][AMS]Keep dashboard optimizing quota positive (#4403)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 43a6c799b21dba54f91e56b39c86442812e0551f
Author: hutiefang76 <13...@users.noreply.github.com>
AuthorDate: Sat Oct 3 06:34:54 2026 +0800

    [AMORO-4400][AMS]Keep dashboard optimizing quota positive (#4403)
    
    [AMS] Keep dashboard optimizing quota positive
    
    (cherry picked from commit 488b2e34c48d0160af4638478958406d29416870)
---
 .../server/dashboard/utils/OptimizingUtil.java     |   6 +-
 .../dashboard/utils/TestTableOptimizingInfo.java   | 104 +++++++++++++++++++++
 2 files changed, 109 insertions(+), 1 deletion(-)

diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/OptimizingUtil.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/OptimizingUtil.java
index 17e91f4c8..b597f74bd 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/OptimizingUtil.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/utils/OptimizingUtil.java
@@ -62,8 +62,12 @@ public class OptimizingUtil {
         TableConfigurations.parseTableConfig(tableRuntimeMeta.getTableConfig());
     OptimizingConfig optimizingConfig = tableConfig.getOptimizingConfig();
     double targetQuota = optimizingConfig.getTargetQuota();
+    // A non-positive target quota must not make the occupation ratio NaN; clamp to 1 like
+    // DefaultTableRuntime.calculateQuotaOccupy does.
     tableOptimizeInfo.setQuota(
-        targetQuota > 1 ? (int) targetQuota : (int) Math.ceil(targetQuota * threadCount));
+        targetQuota > 1
+            ? (int) targetQuota
+            : (int) Math.max(1, Math.ceil(targetQuota * threadCount)));
 
     long endTime = System.currentTimeMillis();
     long startTime = System.currentTimeMillis() - AmoroServiceConstants.QUOTA_LOOK_BACK_TIME;
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/utils/TestTableOptimizingInfo.java b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/utils/TestTableOptimizingInfo.java
new file mode 100644
index 000000000..94bb18b1a
--- /dev/null
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/dashboard/utils/TestTableOptimizingInfo.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.server.dashboard.utils;
+
+import org.apache.amoro.ServerTableIdentifier;
+import org.apache.amoro.TableFormat;
+import org.apache.amoro.server.AmoroServiceConstants;
+import org.apache.amoro.server.dashboard.model.TableOptimizingInfo;
+import org.apache.amoro.server.optimizing.OptimizingStatus;
+import org.apache.amoro.server.optimizing.OptimizingTaskMeta;
+import org.apache.amoro.server.optimizing.TaskRuntime;
+import org.apache.amoro.server.persistence.TableRuntimeMeta;
+import org.apache.amoro.table.TableProperties;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** Tests for {@link OptimizingUtil#buildTableOptimizeInfo}. */
+public class TestTableOptimizingInfo {
+
+  private static final int THREAD_COUNT = 4;
+
+  @Test
+  public void testZeroQuota() {
+    TableOptimizingInfo tableOptimizingInfo =
+        buildOptimizingInfo("0", OptimizingStatus.PENDING, null);
+    Assertions.assertEquals(1.0, tableOptimizingInfo.getQuota());
+    Assertions.assertEquals(0.0, tableOptimizingInfo.getQuotaOccupation());
+  }
+
+  @Test
+  public void testNegativeQuota() {
+    TableOptimizingInfo tableOptimizingInfo =
+        buildOptimizingInfo("-0.5", OptimizingStatus.IDLE, null);
+    Assertions.assertEquals(1.0, tableOptimizingInfo.getQuota());
+    Assertions.assertTrue(Double.isFinite(tableOptimizingInfo.getQuotaOccupation()));
+  }
+
+  @Test
+  public void testFractionalQuota() {
+    TableOptimizingInfo tableOptimizingInfo =
+        buildOptimizingInfo("0.5", OptimizingStatus.PENDING, null);
+    Assertions.assertEquals(2.0, tableOptimizingInfo.getQuota());
+  }
+
+  @Test
+  public void testQuotaGreaterThanOne() {
+    TableOptimizingInfo tableOptimizingInfo =
+        buildOptimizingInfo("3", OptimizingStatus.PENDING, null);
+    Assertions.assertEquals(3.0, tableOptimizingInfo.getQuota());
+  }
+
+  @Test
+  public void testQuotaOccupationWithRunningTask() {
+    long taskStartTime =
+        System.currentTimeMillis() - AmoroServiceConstants.QUOTA_LOOK_BACK_TIME / 2;
+    OptimizingTaskMeta taskMeta = new OptimizingTaskMeta();
+    taskMeta.setStatus(TaskRuntime.Status.ACKED);
+    taskMeta.setStartTime(taskStartTime);
+    taskMeta.setCostTime(AmoroServiceConstants.QUOTA_LOOK_BACK_TIME / 2);
+
+    TableOptimizingInfo tableOptimizingInfo =
+        buildOptimizingInfo("0.25", OptimizingStatus.PENDING, Collections.singletonList(taskMeta));
+    Assertions.assertEquals(1.0, tableOptimizingInfo.getQuota());
+    Assertions.assertEquals(0.5, tableOptimizingInfo.getQuotaOccupation());
+  }
+
+  private TableOptimizingInfo buildOptimizingInfo(
+      String quota, OptimizingStatus status, List<OptimizingTaskMeta> processTasks) {
+    Map<String, String> tableConfig = new HashMap<>();
+    tableConfig.put(TableProperties.SELF_OPTIMIZING_QUOTA, quota);
+    TableRuntimeMeta tableRuntimeMeta = new TableRuntimeMeta();
+    tableRuntimeMeta.setTableId(1L);
+    tableRuntimeMeta.setGroupName("test");
+    tableRuntimeMeta.setStatusCode(status.getCode());
+    tableRuntimeMeta.setTableConfig(tableConfig);
+    return OptimizingUtil.buildTableOptimizeInfo(
+        ServerTableIdentifier.of(1L, "catalog", "database", "table", TableFormat.ICEBERG),
+        tableRuntimeMeta,
+        processTasks,
+        null,
+        THREAD_COUNT);
+  }
+}


(amoro) 07/09: [HOTFIX] Add amoro-web npm dependencies to LICENSE-binary and NOTICE-binary (#4430)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 9a80324cd249d143f48403784906082347a10c37
Author: ZhouJinsong <zh...@163.com>
AuthorDate: Fri Oct 9 11:26:33 2026 +0800

    [HOTFIX] Add amoro-web npm dependencies to LICENSE-binary and NOTICE-binary (#4430)
    
    * Add amoro-web npm dependencies to LICENSE-binary and NOTICE-binary
    
    - Add a 'npm packages bundled into the dashboard (amoro-web)' section to
      LICENSE-binary covering all bundled frontend libraries (MIT and Apache-2.0)
    - Add NOTICE-binary entries for the Apache-2.0 bundled packages
      (echarts, swagger-ui)
    - Ship the amoro-web/licenses directory inside the dashboard jar so the
      third-party license texts are distributed with the artifacts
    - Sync the licenses directory with package.json: add missing entries
      (vue-virtual-scroller, @vue/devtools-api, swagger-ui, swagger-ui-dist,
      vite-plugin-vue-devtools) and remove stale ones (@tsconfig/node18, babel,
      unplugin-auto-import, vue-draggable-plus)
    
    * Address review: fix resources override, cover transitive deps, correct qs license
    
    - Restore src/main/resources as a <resource> entry: declaring <resources>
      silently dropped the default directory and the built jar shipped no
      static assets (60 files were missing). Verified the jar now packages
      both static assets and the licenses directory.
    - Collect licenses for transitive npm dependencies actually present in
      the dashboard bundle (verified by scanning built assets): zrender,
      tslib, clipboard, react, react-dom, react-redux, redux,
      react-copy-to-clipboard, react-debounce-input, react-syntax-highlighter,
      prop-types, classnames, immutable, reselect, serialize-error, randexp,
      js-yaml, dompurify, remarkable, zenscroll, swagger-client, sha.js,
      async-validator, @emotion/hash, @emotion/unitless, shallow-equal,
      @intlify/core-base, @intlify/shared, marked, nearley, @ctrl/tinycolor
      (detected via its color-name table, e.g. 'aliceblue')
    - Add NOTICE entry for swagger-client (upstream NOTICE exists)
    - Move qs (BSD-3-Clause) from the MIT group to the BSD 3-Clause group
    - Group transitive deps by their actual licenses: zrender/qs -> BSD-3,
      tslib -> 0BSD, zenscroll -> Unlicense, dompurify -> MPL-2.0 OR Apache-2.0,
      swagger-client -> Apache-2.0, sha.js noted as MIT AND BSD-3-Clause
    
    * Collect complete license coverage for all npm packages in the dashboard bundle
    
    Switch from string-pattern scanning (which missed packages) to an
    authoritative extraction: build the dashboard with sourcemaps and
    enumerate every module from the sourcemap 'sources' field, resolving
    each to its exact pnpm-installed version.
    
    The bundle contains 137 distinct packages. Compared to the previous
    round this adds ~90 missing declarations, including the ones spotted
    in review (@babel/runtime, buffer, ieee754, redux-immutable,
    highlight.js) plus the @swagger-api/apidom-* family, ramda,
    core-js-pure, safe-buffer, scheduler, lodash*, and the es-shims
    call-bind family.
    
    - LICENSE-binary: regroup all npm declarations by actual license and
      split into direct/transitive sections (MIT 107, Apache-2.0 19,
      BSD-3-Clause 6 incl. qs, BSD-2-Clause 1, 0BSD 1, Unlicense 1,
      MPL-2.0 OR Apache-2.0 1)
    - NOTICE-binary: add entries for ApiDOM (SmartBear, with pointer to
      the full upstream NOTICE shipped in the jar),
      openapi-path-templating and openapi-server-url-templating
      (Vladimír Gorej) whose upstream NOTICE files exist
    - licenses/: collect texts for all bundled packages; for packages
      that ship no license file (@swagger-api/apidom-*, css.escape,
      format, short-unique-id, toggle-selection, @ant-design/icons-svg)
      fetch from upstream repositories or reconstruct with provenance
      notes; remove the swagger-ui-dist-only leftovers
    
    Verified: the dashboard jar contains 92 static assets and 155 license
    files; RAT check passes.
    
    * Add embedded-code notices for bundled npm packages
    
    Address the remaining items from the completed recheck: attributions
    for code embedded inside bundled packages that their top-level license
    files do not cover.
    
    - @swaggerexpert/json-pointer: ship the upstream NOTICE, which
      attributes the bundled RFC 6901 ABNF grammar to the IETF Trust
      (Simplified BSD License) in addition to Vladimír Gorej
    - monaco-editor: ship ThirdPartyNotices.txt; base/common/path.js is
      the nodejs path library (Copyright Joyent, Inc. and other Node
      contributors, MIT) and its attribution was missing
    - echarts: ship LICENSES/LICENSE-d3 (BSD-3-Clause, Mike Bostock) for
      the retained d3 quantile implementation
    - fast-json-patch: preserve the embedded fast-deep-equal MIT notice
      (Copyright 2017 Evgeny Poberezkin) from module/core.mjs, whose
      _areEquals implementation is bundled while the package LICENSE only
      credits Joachim Wester
    
    All four texts are added to NOTICE-binary and packaged in the
    dashboard jar under licenses/ (now 159 entries, together with 92
    static assets; RAT passes).
    
    * Update amoro-web/licenses/LICENSE-fast-deep-equal
    
    Co-authored-by: Xu Bai <to...@gmail.com>
    
    ---------
    
    Co-authored-by: Xu Bai <to...@gmail.com>
    (cherry picked from commit 342d83e63459a20c8ba040496579f96b8097d8de)
---
 LICENSE-binary                                     | 170 ++++++++
 NOTICE-binary                                      |  54 +++
 .../{LICENSE-babel => LICENSE-@ant-design-colors}  |   4 +-
 .../{LICENSE-babel => LICENSE-@ant-design-icons}   |   4 +-
 .../{LICENSE-babel => LICENSE-@babel-runtime}      |   0
 ...ICENSE-babel => LICENSE-@babel-runtime-corejs3} |   0
 ...SE-@tsconfig-node18 => LICENSE-@ctrl-tinycolor} |   6 +-
 ...-unplugin-auto-import => LICENSE-@emotion-hash} |   4 +-
 ...ue-draggable-plus => LICENSE-@emotion-unitless} |   2 +-
 ...LICENSE-vue-i18n => LICENSE-@intlify-core-base} |   2 +-
 ...-vue-i18n => LICENSE-@intlify-message-compiler} |   2 +-
 .../{LICENSE-vue-i18n => LICENSE-@intlify-shared}  |   2 +-
 ...LICENSE-echarts => LICENSE-@swagger-api-apidom} |  21 +-
 ...CENSE-echarts => LICENSE-@swaggerexpert-cookie} |  20 -
 ...echarts => LICENSE-@swaggerexpert-json-pointer} |  21 +-
 ...ue-draggable-plus => LICENSE-@vue-devtools-api} |   2 +-
 .../{LICENSE-pinia => LICENSE-@vue-reactivity}     |  10 +-
 .../{LICENSE-pinia => LICENSE-@vue-runtime-core}   |  10 +-
 .../{LICENSE-pinia => LICENSE-@vue-runtime-dom}    |  10 +-
 .../{LICENSE-pinia => LICENSE-@vue-shared}         |  10 +-
 amoro-web/licenses/LICENSE-ant-design-vue          |   1 +
 amoro-web/licenses/LICENSE-apg-lite                |  28 ++
 ...SE-@tsconfig-node18 => LICENSE-async-validator} |   6 +-
 .../licenses/{LICENSE-babel => LICENSE-autolinker} |   6 +-
 ...aggable-plus => LICENSE-available-typed-arrays} |   2 +-
 .../licenses/{LICENSE-pinia => LICENSE-base64-js}  |  10 +-
 .../licenses/{LICENSE-pinia => LICENSE-buffer}     |  10 +-
 ...ICENSE-vue-draggable-plus => LICENSE-call-bind} |   2 +-
 ...ggable-plus => LICENSE-call-bind-apply-helpers} |   2 +-
 ...CENSE-vue-draggable-plus => LICENSE-call-bound} |   2 +-
 ...CENSE-vue-draggable-plus => LICENSE-classnames} |   4 +-
 ...ICENSE-vue-draggable-plus => LICENSE-clipboard} |   2 +-
 ...gable-plus => LICENSE-compute-scroll-into-view} |   2 +-
 ...ue-draggable-plus => LICENSE-copy-to-clipboard} |   2 +-
 ...NSE-vue-draggable-plus => LICENSE-core-js-pure} |  13 +-
 .../licenses/{LICENSE-babel => LICENSE-css.escape} |   4 +-
 .../licenses/{LICENSE-pinia => LICENSE-deepmerge}  |  10 +-
 ...draggable-plus => LICENSE-define-data-property} |   2 +-
 ...{LICENSE-@tsconfig-node18 => LICENSE-dom-align} |   6 +-
 .../{LICENSE-echarts => LICENSE-dompurify}         |  21 +-
 amoro-web/licenses/LICENSE-dompurify-MPL           | 373 +++++++++++++++++
 .../{LICENSE-vue-draggable-plus => LICENSE-drange} |   4 +-
 ...NSE-vue-draggable-plus => LICENSE-dunder-proto} |   2 +-
 amoro-web/licenses/LICENSE-echarts                 |   1 +
 amoro-web/licenses/LICENSE-echarts-d3              |  27 ++
 ...e-draggable-plus => LICENSE-es-define-property} |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-es-errors} |   2 +-
 ...-vue-draggable-plus => LICENSE-es-object-atoms} |   2 +-
 .../{LICENSE-pinia => LICENSE-fast-deep-equal}     |  12 +-
 .../{LICENSE-babel => LICENSE-fast-json-patch}     |  18 +-
 .../licenses/{LICENSE-babel => LICENSE-fault}      |  18 +-
 ...LICENSE-vue-draggable-plus => LICENSE-for-each} |   5 +-
 .../licenses/{LICENSE-pinia => LICENSE-format}     |  16 +-
 ...SE-vue-draggable-plus => LICENSE-function-bind} |  13 +-
 ...SE-vue-draggable-plus => LICENSE-get-intrinsic} |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-get-proto} |   2 +-
 .../{LICENSE-vue-draggable-plus => LICENSE-gopd}   |   2 +-
 ...gable-plus => LICENSE-has-property-descriptors} |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-has-proto} |   2 +-
 ...ENSE-vue-draggable-plus => LICENSE-has-symbols} |   2 +-
 ...-vue-draggable-plus => LICENSE-has-tostringtag} |   2 +-
 .../{LICENSE-vue-draggable-plus => LICENSE-hasown} |   2 +-
 amoro-web/licenses/LICENSE-highlight.js            |  29 ++
 amoro-web/licenses/LICENSE-ieee754                 |  11 +
 ...ICENSE-vue-draggable-plus => LICENSE-immutable} |   2 +-
 ...ENSE-vue-draggable-plus => LICENSE-is-callable} |   5 +-
 ...E-vue-draggable-plus => LICENSE-is-typed-array} |   5 +-
 ...{LICENSE-vue-draggable-plus => LICENSE-isarray} |   2 +-
 ...E-@tsconfig-node18 => LICENSE-js-file-download} |   6 +-
 ...{LICENSE-vue-draggable-plus => LICENSE-js-yaml} |  12 +-
 .../licenses/{LICENSE-babel => LICENSE-lodash}     |  29 +-
 .../licenses/{LICENSE-babel => LICENSE-lodash-es}  |  29 +-
 .../{LICENSE-babel => LICENSE-lodash.debounce}     |  29 +-
 .../licenses/{LICENSE-babel => LICENSE-lowlight}   |  18 +-
 amoro-web/licenses/LICENSE-marked                  |  44 ++
 ...-vue-draggable-plus => LICENSE-math-intrinsics} |   2 +-
 .../licenses/{LICENSE-vue-i18n => LICENSE-minim}   |   2 +-
 .../licenses/{LICENSE-pinia => LICENSE-nearley}    |   4 +-
 ...ENSE-vue-draggable-plus => LICENSE-neotraverse} |   2 +-
 ...NSE-echarts => LICENSE-openapi-path-templating} |  21 +-
 ...harts => LICENSE-openapi-server-url-templating} |  21 +-
 amoro-web/licenses/LICENSE-pinia                   |   2 +-
 ...ble-plus => LICENSE-possible-typed-array-names} |   2 +-
 ...CENSE-vue-draggable-plus => LICENSE-prop-types} |   2 +-
 .../{LICENSE-pinia => LICENSE-querystringify}      |   5 +-
 .../licenses/{LICENSE-pinia => LICENSE-ramda}      |  10 +-
 amoro-web/licenses/LICENSE-ramda-adjunct           |  25 ++
 ...{LICENSE-vue-draggable-plus => LICENSE-randexp} |  10 +-
 .../{LICENSE-vue-draggable-plus => LICENSE-react}  |   2 +-
 ...ggable-plus => LICENSE-react-copy-to-clipboard} |   5 +-
 ...draggable-plus => LICENSE-react-debounce-input} |   5 +-
 ...ICENSE-vue-draggable-plus => LICENSE-react-dom} |   2 +-
 ...able-plus => LICENSE-react-immutable-proptypes} |   5 +-
 ...inia => LICENSE-react-immutable-pure-component} |   4 +-
 ...ENSE-vue-draggable-plus => LICENSE-react-redux} |   4 +-
 ...gable-plus => LICENSE-react-syntax-highlighter} |   2 +-
 .../{LICENSE-vue-draggable-plus => LICENSE-redux}  |   4 +-
 amoro-web/licenses/LICENSE-redux-immutable         |  24 ++
 .../licenses/{LICENSE-pinia => LICENSE-remarkable} |  11 +-
 .../{LICENSE-pinia => LICENSE-repeat-string}       |  10 +-
 .../{LICENSE-pinia => LICENSE-requires-port}       |   5 +-
 .../licenses/{LICENSE-pinia => LICENSE-reselect}   |  42 +-
 ...ENSE-pinia => LICENSE-resize-observer-polyfill} |  42 +-
 .../{LICENSE-vue-draggable-plus => LICENSE-ret}    |  10 +-
 .../{LICENSE-pinia => LICENSE-safe-buffer}         |  10 +-
 ...ICENSE-vue-draggable-plus => LICENSE-scheduler} |   2 +-
 ...ble-plus => LICENSE-scroll-into-view-if-needed} |   2 +-
 ...SE-@tsconfig-node18 => LICENSE-serialize-error} |   4 +-
 ...-draggable-plus => LICENSE-set-function-length} |   2 +-
 amoro-web/licenses/LICENSE-sha.js                  |  49 +++
 .../{LICENSE-pinia => LICENSE-shallow-equal}       |  18 +-
 amoro-web/licenses/LICENSE-short-unique-id         |  11 +
 .../{LICENSE-vue-draggable-plus => LICENSE-stylis} |   2 +-
 .../{LICENSE-echarts => LICENSE-swagger-client}    |  21 +-
 .../{LICENSE-echarts => LICENSE-swagger-ui}        |  21 +-
 .../{LICENSE-echarts => LICENSE-swagger-ui-dist}   |  21 +-
 amoro-web/licenses/LICENSE-throttle-debounce       |  45 +++
 .../licenses/{LICENSE-pinia => LICENSE-to-buffer}  |  10 +-
 ...vue-draggable-plus => LICENSE-toggle-selection} |   2 +-
 ...LICENSE-vue-draggable-plus => LICENSE-ts-mixer} |   2 +-
 amoro-web/licenses/LICENSE-tslib                   |  12 +
 ...e-draggable-plus => LICENSE-typed-array-buffer} |   2 +-
 .../licenses/{LICENSE-pinia => LICENSE-url-parse}  |   5 +-
 ...ggable-plus => LICENSE-use-sync-external-store} |   2 +-
 ...gable-plus => LICENSE-vite-plugin-vue-devtools} |   2 +-
 amoro-web/licenses/LICENSE-vue-i18n                |   2 +-
 amoro-web/licenses/LICENSE-vue-router              |   2 +-
 ...ICENSE-vue-draggable-plus => LICENSE-vue-types} |   4 +-
 ...draggable-plus => LICENSE-vue-virtual-scroller} |   2 +-
 ...ue-draggable-plus => LICENSE-which-typed-array} |   5 +-
 ...vue-draggable-plus => LICENSE-xml-but-prettier} |   4 +-
 amoro-web/licenses/LICENSE-zenscroll               |  25 ++
 amoro-web/licenses/LICENSE-zrender                 |  29 ++
 amoro-web/licenses/NOTICE-@swagger-api-apidom      |  83 ++++
 .../licenses/NOTICE-@swaggerexpert-json-pointer    |  11 +
 amoro-web/licenses/NOTICE-monaco-editor            | 448 +++++++++++++++++++++
 amoro-web/licenses/NOTICE-openapi-path-templating  |   4 +
 .../licenses/NOTICE-openapi-server-url-templating  |   4 +
 amoro-web/pom.xml                                  |  12 +
 139 files changed, 1912 insertions(+), 474 deletions(-)

diff --git a/LICENSE-binary b/LICENSE-binary
index 016a1fe48..076423c21 100644
--- a/LICENSE-binary
+++ b/LICENSE-binary
@@ -373,6 +373,31 @@ org.jetbrains.kotlin:kotlin-*
 ./charts/amoro/templates/common/_ingress.tpl
 ./charts/amoro/templates/common/_labels.tpl
 
+npm packages bundled into the dashboard (amoro-web):
+
+direct dependencies:
+echarts
+swagger-ui
+
+transitive dependencies:
+@swagger-api/apidom-ast
+@swagger-api/apidom-core
+@swagger-api/apidom-error
+@swagger-api/apidom-ns-json-schema-2019-09
+@swagger-api/apidom-ns-json-schema-2020-12
+@swagger-api/apidom-ns-json-schema-draft-4
+@swagger-api/apidom-ns-json-schema-draft-6
+@swagger-api/apidom-ns-json-schema-draft-7
+@swagger-api/apidom-ns-openapi-3-0
+@swagger-api/apidom-ns-openapi-3-1
+@swagger-api/apidom-reference
+@swaggerexpert/cookie
+@swaggerexpert/json-pointer
+openapi-path-templating
+openapi-server-url-templating
+short-unique-id
+swagger-client
+
 The BSD License
 --------------
 com.thoughtworks.paranamer:paranamer
@@ -396,6 +421,9 @@ BSD 2-Clause License
 com.github.luben:zstd-jni
 jline:jline:2.12
 
+npm packages bundled into the dashboard (amoro-web):
+apg-lite (transitive dependency)
+
 BSD 3-Clause License
 --------------------
 com.esotericsoftware:kryo
@@ -406,6 +434,18 @@ org.abego.treelayout:org.abego.treelayout.core
 org.fusesource.leveldbjni:leveldbjni-all
 org.threeten:threeten-extra
 
+npm packages bundled into the dashboard (amoro-web):
+
+direct dependencies:
+qs
+
+transitive dependencies:
+highlight.js
+ieee754
+ramda-adjunct
+redux-immutable
+zrender
+
 New BSD License
 ---------------
 com.esotericsoftware:minlog
@@ -444,6 +484,124 @@ org.checkerframework:checker-qual
 org.codehaus.mojo:animal-sniffer-annotations
 com.github.pagehelper:pagehelper
 
+npm packages bundled into the dashboard (amoro-web):
+
+direct dependencies:
+@ant-design/icons-vue
+@vue/devtools-api
+ant-design-vue
+axios
+dayjs
+monaco-editor
+pinia
+sql-formatter
+swagger-ui-dist
+vue
+vue-clipboard3
+vue-i18n
+vue-router
+vue-virtual-scroller
+
+transitive dependencies:
+@ant-design/colors
+@ant-design/icons-svg
+@babel/runtime
+@babel/runtime-corejs3
+@ctrl/tinycolor
+@emotion/hash
+@emotion/unitless
+@intlify/core-base
+@intlify/message-compiler
+@intlify/shared
+async-validator
+autolinker
+available-typed-arrays
+base64-js
+buffer
+call-bind
+call-bind-apply-helpers
+call-bound
+classnames
+clipboard
+compute-scroll-into-view
+copy-to-clipboard
+core-js-pure
+css.escape
+deepmerge
+define-data-property
+dom-align
+drange
+dunder-proto
+es-define-property
+es-errors
+es-object-atoms
+fast-json-patch
+fault
+for-each
+format
+function-bind
+get-intrinsic
+get-proto
+gopd
+has-property-descriptors
+has-proto
+has-symbols
+has-tostringtag
+hasown
+immutable
+is-callable
+is-typed-array
+isarray
+js-file-download
+js-yaml
+lodash
+lodash-es
+lodash.debounce
+lowlight
+marked
+math-intrinsics
+minim
+nearley
+neotraverse
+possible-typed-array-names
+prop-types
+querystringify
+ramda
+randexp
+react
+react-copy-to-clipboard
+react-debounce-input
+react-dom
+react-immutable-proptypes
+react-immutable-pure-component
+react-redux
+react-syntax-highlighter
+redux
+remarkable
+repeat-string
+requires-port
+reselect
+resize-observer-polyfill
+ret
+safe-buffer
+scheduler
+scroll-into-view-if-needed
+serialize-error
+set-function-length
+shallow-equal
+sha.js (MIT AND BSD-3-Clause)
+stylis
+throttle-debounce
+to-buffer
+toggle-selection
+ts-mixer
+typed-array-buffer
+url-parse
+use-sync-external-store
+vue-types
+which-typed-array
+xml-but-prettier
+
 Common Development and Distribution License (CDDL) 1.0
 ------------------------------------------------------
 javax.activation:activation
@@ -463,3 +621,15 @@ com.google.re2j
 ICU License (ICU 58 and later)
 ------------------------------
 com.ibm.icu:icu4j
+
+Zero-Clause BSD License (0BSD)
+------------------------------
+tslib (npm package bundled into the dashboard, amoro-web)
+
+The Unlicense
+-------------
+zenscroll (npm package bundled into the dashboard, amoro-web)
+
+Mozilla Public License 2.0 OR Apache License 2.0
+------------------------------------------------
+dompurify (npm package bundled into the dashboard, amoro-web)
diff --git a/NOTICE-binary b/NOTICE-binary
index d46b70372..adfb59d11 100644
--- a/NOTICE-binary
+++ b/NOTICE-binary
@@ -424,3 +424,57 @@ modified April 2001  by Iris Van den Broeke, Daniel Deville.
 Permission to use, copy, modify and distribute UnixCrypt
 for non-commercial or commercial purposes and without fee is
 granted provided that the copyright notice appears in all copies.
+
+------
+Dashboard (amoro-web) bundled npm packages
+
+Apache ECharts
+Copyright 2017-2026 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
+
+swagger-ui
+Copyright 2020-2021 SmartBear Software Inc.
+
+swagger-js/swagger-client
+Copyright 2020-2021 SmartBear Software Inc.
+
+ApiDOM (@swagger-api/apidom-* packages bundled with the dashboard)
+Copyright 2020 SmartBear Software Inc.
+The full upstream NOTICE, including attribution for embedded portions
+originally from json-schema-ref-parser, graphql-js, refract-spec,
+api-elements, deepmerge and the OpenAPI/AsyncAPI/JSON Schema
+specifications, is distributed in the dashboard jar
+(licenses/NOTICE-@swagger-api-apidom).
+
+openapi-path-templating
+Copyright 2023, Vladimír Gorej
+
+openapi-server-url-templating
+Copyright 2024, Vladimír Gorej
+
+@swaggerexpert/json-pointer
+Copyright 2025, Vladimír Gorej
+This product includes the JSON Pointer (RFC 6901) ABNF grammar and
+related text.
+Copyright (c) 2013 IETF Trust and the persons identified as the document
+authors. All rights reserved. https://datatracker.ietf.org/doc/html/rfc6901
+Licensed under the Simplified BSD License. The full upstream NOTICE is
+distributed in the dashboard jar
+(licenses/NOTICE-@swaggerexpert-json-pointer).
+
+nodejs path library (bundled inside monaco-editor base/common/path.js)
+Copyright Joyent, Inc. and other Node contributors.
+Licensed under the MIT License. The monaco-editor ThirdPartyNotices.txt
+is distributed in the dashboard jar (licenses/NOTICE-monaco-editor).
+
+d3 quantile implementation (bundled inside echarts)
+Copyright (c) Mike Bostock
+Licensed under the BSD 3-Clause License. The license text is distributed
+in the dashboard jar (licenses/LICENSE-echarts-d3).
+
+fast-deep-equal _areEquals implementation (bundled inside fast-json-patch)
+Copyright (c) 2017 Evgeny Poberezkin
+Licensed under the MIT License. The notice is preserved in the dashboard
+jar (licenses/LICENSE-fast-deep-equal).
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-@ant-design-colors
similarity index 92%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-@ant-design-colors
index f31575ec7..dfe5c2183 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-@ant-design-colors
@@ -1,6 +1,6 @@
-MIT License
+MIT LICENSE
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2018-present Ant UED, https://xtech.antfin.com/
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-@ant-design-icons
similarity index 92%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-@ant-design-icons
index f31575ec7..dfe5c2183 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-@ant-design-icons
@@ -1,6 +1,6 @@
-MIT License
+MIT LICENSE
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2018-present Ant UED, https://xtech.antfin.com/
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-@babel-runtime
similarity index 100%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-@babel-runtime
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-@babel-runtime-corejs3
similarity index 100%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-@babel-runtime-corejs3
diff --git a/amoro-web/licenses/LICENSE-@tsconfig-node18 b/amoro-web/licenses/LICENSE-@ctrl-tinycolor
similarity index 94%
copy from amoro-web/licenses/LICENSE-@tsconfig-node18
copy to amoro-web/licenses/LICENSE-@ctrl-tinycolor
index 8ddd17886..6d15a9e3b 100644
--- a/amoro-web/licenses/LICENSE-@tsconfig-node18
+++ b/amoro-web/licenses/LICENSE-@ctrl-tinycolor
@@ -1,9 +1,7 @@
-MIT License
-
-Copyright (c) Microsoft Corporation.
+Copyright (c) Scott Cooper <sc...@gmail.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
\ No newline at end of file
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-unplugin-auto-import b/amoro-web/licenses/LICENSE-@emotion-hash
similarity index 93%
rename from amoro-web/licenses/LICENSE-unplugin-auto-import
rename to amoro-web/licenses/LICENSE-@emotion-hash
index 19f0b7e5a..56e808dea 100644
--- a/amoro-web/licenses/LICENSE-unplugin-auto-import
+++ b/amoro-web/licenses/LICENSE-@emotion-hash
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2021-PRESENT Anthony Fu <https://github.com/antfu>
+Copyright (c) Emotion team and other contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-@emotion-unitless
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-@emotion-unitless
index fc7e52e7d..56e808dea 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-@emotion-unitless
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Emotion team and other contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-i18n b/amoro-web/licenses/LICENSE-@intlify-core-base
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-i18n
copy to amoro-web/licenses/LICENSE-@intlify-core-base
index 398540b34..c02ff3ea6 100644
--- a/amoro-web/licenses/LICENSE-vue-i18n
+++ b/amoro-web/licenses/LICENSE-@intlify-core-base
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 kazuya kawaguchi
+Copyright (c) 2020 kazuya kawaguchi
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/amoro-web/licenses/LICENSE-vue-i18n b/amoro-web/licenses/LICENSE-@intlify-message-compiler
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-i18n
copy to amoro-web/licenses/LICENSE-@intlify-message-compiler
index 398540b34..c02ff3ea6 100644
--- a/amoro-web/licenses/LICENSE-vue-i18n
+++ b/amoro-web/licenses/LICENSE-@intlify-message-compiler
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 kazuya kawaguchi
+Copyright (c) 2020 kazuya kawaguchi
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/amoro-web/licenses/LICENSE-vue-i18n b/amoro-web/licenses/LICENSE-@intlify-shared
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-i18n
copy to amoro-web/licenses/LICENSE-@intlify-shared
index 398540b34..c02ff3ea6 100644
--- a/amoro-web/licenses/LICENSE-vue-i18n
+++ b/amoro-web/licenses/LICENSE-@intlify-shared
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 kazuya kawaguchi
+Copyright (c) 2020 kazuya kawaguchi
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-@swagger-api-apidom
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-@swagger-api-apidom
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-@swagger-api-apidom
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-@swaggerexpert-cookie
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-@swaggerexpert-cookie
index 3b2402618..261eeb9e9 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-@swaggerexpert-cookie
@@ -199,23 +199,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-@swaggerexpert-json-pointer
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-@swaggerexpert-json-pointer
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-@swaggerexpert-json-pointer
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-@vue-devtools-api
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-@vue-devtools-api
index fc7e52e7d..102207d37 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-@vue-devtools-api
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2023 webfansplz
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-@vue-reactivity
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-@vue-reactivity
index 6e1123909..15f1f7e7a 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-@vue-reactivity
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2018-present, Yuxi (Evan) You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-@vue-runtime-core
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-@vue-runtime-core
index 6e1123909..15f1f7e7a 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-@vue-runtime-core
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2018-present, Yuxi (Evan) You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-@vue-runtime-dom
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-@vue-runtime-dom
index 6e1123909..15f1f7e7a 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-@vue-runtime-dom
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2018-present, Yuxi (Evan) You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-@vue-shared
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-@vue-shared
index 6e1123909..15f1f7e7a 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-@vue-shared
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2018-present, Yuxi (Evan) You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-ant-design-vue b/amoro-web/licenses/LICENSE-ant-design-vue
index 6d539696d..dda252e82 100644
--- a/amoro-web/licenses/LICENSE-ant-design-vue
+++ b/amoro-web/licenses/LICENSE-ant-design-vue
@@ -1,3 +1,4 @@
+
 MIT License
 
 Copyright (c) 2017-present ant-design-vue
diff --git a/amoro-web/licenses/LICENSE-apg-lite b/amoro-web/licenses/LICENSE-apg-lite
new file mode 100644
index 000000000..d474f45d9
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-apg-lite
@@ -0,0 +1,28 @@
+## [2-Clause BSD License](https://opensource.org/licenses/BSD-2-Clause)
+
+<p>
+Copyright (c) 2023 Lowell D. Thomas<br>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+</p>
diff --git a/amoro-web/licenses/LICENSE-@tsconfig-node18 b/amoro-web/licenses/LICENSE-async-validator
similarity index 93%
copy from amoro-web/licenses/LICENSE-@tsconfig-node18
copy to amoro-web/licenses/LICENSE-async-validator
index 8ddd17886..1f5a0d9d8 100644
--- a/amoro-web/licenses/LICENSE-@tsconfig-node18
+++ b/amoro-web/licenses/LICENSE-async-validator
@@ -1,9 +1,9 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) Microsoft Corporation.
+Copyright (c) 2014-present yiminghe
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
\ No newline at end of file
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-autolinker
similarity index 86%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-autolinker
index f31575ec7..3ff145b9f 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-autolinker
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2014 Gregory Jacobs (http://greg-jacobs.com)
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-available-typed-arrays
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-available-typed-arrays
index fc7e52e7d..707437b57 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-available-typed-arrays
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2020 Inspect JS
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-base64-js
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-base64-js
index 6e1123909..6d52b8acf 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-base64-js
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2014 Jameson Little
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-buffer
similarity index 86%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-buffer
index 6e1123909..d6bf75dcf 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-buffer
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) Feross Aboukhadijeh, and other contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-call-bind
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-call-bind
index fc7e52e7d..48f05d01d 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-call-bind
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2020 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-call-bind-apply-helpers
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-call-bind-apply-helpers
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-call-bind-apply-helpers
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-call-bound
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-call-bound
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-call-bound
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-classnames
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-classnames
index fc7e52e7d..4117bfae0 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-classnames
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2018 Jed Watson
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-clipboard
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-clipboard
index fc7e52e7d..01cdf0799 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-clipboard
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Zeno Rocha
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-compute-scroll-into-view
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-compute-scroll-into-view
index fc7e52e7d..ab721cd4a 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-compute-scroll-into-view
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2022 Cody Olsen
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-copy-to-clipboard
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-copy-to-clipboard
index fc7e52e7d..4a7395ee8 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-copy-to-clipboard
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2017 sudodoki <sm...@gmail.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-core-js-pure
similarity index 82%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-core-js-pure
index fc7e52e7d..22bbc01bb 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-core-js-pure
@@ -1,6 +1,5 @@
-MIT License
-
-Copyright (c) 2023 丶远方
+Copyright (c) 2013–2025 Denis Pushkarev (zloirock.ru)
+Copyright (c) 2025–2026 CoreJS Company (core-js.io)
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +8,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-css.escape
similarity index 92%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-css.escape
index f31575ec7..a41e0a7ef 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-css.escape
@@ -1,6 +1,4 @@
-MIT License
-
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright Mathias Bynens <https://mathiasbynens.be/>
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-deepmerge
similarity index 86%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-deepmerge
index 6e1123909..500307871 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-deepmerge
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2012 James Halliday, Josh Duff, and other contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-define-data-property
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-define-data-property
index fc7e52e7d..b4213ac64 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-define-data-property
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2023 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-@tsconfig-node18 b/amoro-web/licenses/LICENSE-dom-align
similarity index 93%
copy from amoro-web/licenses/LICENSE-@tsconfig-node18
copy to amoro-web/licenses/LICENSE-dom-align
index 8ddd17886..1f5a0d9d8 100644
--- a/amoro-web/licenses/LICENSE-@tsconfig-node18
+++ b/amoro-web/licenses/LICENSE-dom-align
@@ -1,9 +1,9 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) Microsoft Corporation.
+Copyright (c) 2014-present yiminghe
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
\ No newline at end of file
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-dompurify
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-dompurify
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-dompurify
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-dompurify-MPL b/amoro-web/licenses/LICENSE-dompurify-MPL
new file mode 100644
index 000000000..14e2f777f
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-dompurify-MPL
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in 
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-drange
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-drange
index fc7e52e7d..afe05c7dc 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-drange
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2014 David Tudury
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-dunder-proto
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-dunder-proto
index fc7e52e7d..34995e79d 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-dunder-proto
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 ECMAScript Shims
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-echarts
index 3b2402618..c63376530 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-echarts
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
diff --git a/amoro-web/licenses/LICENSE-echarts-d3 b/amoro-web/licenses/LICENSE-echarts-d3
new file mode 100644
index 000000000..721bd22ec
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-echarts-d3
@@ -0,0 +1,27 @@
+Copyright 2010-2016 Mike Bostock
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the author nor the names of contributors may be used to
+  endorse or promote products derived from this software without specific prior
+  written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-es-define-property
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-es-define-property
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-es-define-property
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-es-errors
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-es-errors
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-es-errors
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-es-object-atoms
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-es-object-atoms
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-es-object-atoms
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-fast-deep-equal
similarity index 74%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-fast-deep-equal
index 6e1123909..760f7802e 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-fast-deep-equal
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2017 Evgeny Poberezkin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -11,11 +11,17 @@ furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
-
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
+---
+Note: the _areEquals implementation bundled in the dashboard is embedded
+inside fast-json-patch (module/core.mjs, based on
+https://github.com/epoberezkin/fast-deep-equal). The shipped
+fast-json-patch LICENSE file only credits its primary author, so this
+embedded notice is preserved separately here.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-fast-json-patch
similarity index 51%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-fast-json-patch
index f31575ec7..e2562ca62 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-fast-json-patch
@@ -1,10 +1,10 @@
-MIT License
+(The MIT License)
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2013, 2014, 2020 Joachim Wester
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
+'Software'), to deal in the Software without restriction, including
 without limitation the rights to use, copy, modify, merge, publish,
 distribute, sublicense, and/or sell copies of the Software, and to
 permit persons to whom the Software is furnished to do so, subject to
@@ -13,10 +13,10 @@ the following conditions:
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-fault
similarity index 51%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-fault
index f31575ec7..32e7a3d93 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-fault
@@ -1,10 +1,10 @@
-MIT License
+(The MIT License)
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2015 Titus Wormer <ti...@gmail.com>
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
+'Software'), to deal in the Software without restriction, including
 without limitation the rights to use, copy, modify, merge, publish,
 distribute, sublicense, and/or sell copies of the Software, and to
 permit persons to whom the Software is furnished to do so, subject to
@@ -13,10 +13,10 @@ the following conditions:
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-for-each
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-for-each
index fc7e52e7d..53f19aa77 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-for-each
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2012 Raynos.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-format
similarity index 70%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-format
index 6e1123909..814e47a95 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-format
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) Sami Samhuri, http://samhuri.net
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,19 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+---
+Note: the npm package "format" does not ship a license file. This text was
+reconstructed from the license declaration in its package.json
+([{"type":"MIT","url":"http://sjs.mit-license.org"}]) and the copyright
+holder's MIT license page at the referenced URL.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-function-bind
similarity index 87%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-function-bind
index fc7e52e7d..62d6d237f 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-function-bind
@@ -1,6 +1,4 @@
-MIT License
-
-Copyright (c) 2023 丶远方
+Copyright (c) 2013 Raynos.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +7,14 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-get-intrinsic
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-get-intrinsic
index fc7e52e7d..48f05d01d 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-get-intrinsic
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2020 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-get-proto
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-get-proto
index fc7e52e7d..eeabd1c37 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-get-proto
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2025 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-gopd
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-gopd
index fc7e52e7d..6abfe1434 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-gopd
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2022 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-has-property-descriptors
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-has-property-descriptors
index fc7e52e7d..2e7b9a3ea 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-has-property-descriptors
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2022 Inspect JS
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-has-proto
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-has-proto
index fc7e52e7d..2e7b9a3ea 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-has-proto
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2022 Inspect JS
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-has-symbols
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-has-symbols
index fc7e52e7d..df31cbf3c 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-has-symbols
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2016 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-has-tostringtag
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-has-tostringtag
index fc7e52e7d..7948bc02a 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-has-tostringtag
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2021 Inspect JS
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-hasown
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-hasown
index fc7e52e7d..031492907 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-hasown
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Jordan Harband and contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-highlight.js b/amoro-web/licenses/LICENSE-highlight.js
new file mode 100644
index 000000000..2250cc7ec
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-highlight.js
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2006, Ivan Sagalaev.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/amoro-web/licenses/LICENSE-ieee754 b/amoro-web/licenses/LICENSE-ieee754
new file mode 100644
index 000000000..5aac82c78
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-ieee754
@@ -0,0 +1,11 @@
+Copyright 2008 Fair Oaks Labs, Inc.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROF [...]
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-immutable
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-immutable
index fc7e52e7d..1e3c4f39c 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-immutable
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2014-present, Lee Byron and other contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-is-callable
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-is-callable
index fc7e52e7d..b43df444e 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-is-callable
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-is-typed-array
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-is-typed-array
index fc7e52e7d..b43df444e 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-is-typed-array
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-isarray
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-isarray
index fc7e52e7d..de3226673 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-isarray
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2013 Julian Gruber <ju...@juliangruber.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-@tsconfig-node18 b/amoro-web/licenses/LICENSE-js-file-download
similarity index 94%
copy from amoro-web/licenses/LICENSE-@tsconfig-node18
copy to amoro-web/licenses/LICENSE-js-file-download
index 8ddd17886..767b92ac9 100644
--- a/amoro-web/licenses/LICENSE-@tsconfig-node18
+++ b/amoro-web/licenses/LICENSE-js-file-download
@@ -1,9 +1,7 @@
-MIT License
-
-Copyright (c) Microsoft Corporation.
+Copyright 2017 Kenneth Jiang
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
\ No newline at end of file
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-js-yaml
similarity index 86%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-js-yaml
index fc7e52e7d..09d3a29e9 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-js-yaml
@@ -1,6 +1,6 @@
-MIT License
+(The MIT License)
 
-Copyright (c) 2023 丶远方
+Copyright (C) 2011-2015 by Vitaly Puzrin
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-lodash
similarity index 52%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-lodash
index f31575ec7..77c42f140 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-lodash
@@ -1,6 +1,16 @@
-MIT License
+Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -20,3 +30,18 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-lodash-es
similarity index 52%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-lodash-es
index f31575ec7..77c42f140 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-lodash-es
@@ -1,6 +1,16 @@
-MIT License
+Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -20,3 +30,18 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-lodash.debounce
similarity index 52%
copy from amoro-web/licenses/LICENSE-babel
copy to amoro-web/licenses/LICENSE-lodash.debounce
index f31575ec7..e0c69d560 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-lodash.debounce
@@ -1,6 +1,16 @@
-MIT License
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
@@ -20,3 +30,18 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/amoro-web/licenses/LICENSE-babel b/amoro-web/licenses/LICENSE-lowlight
similarity index 51%
rename from amoro-web/licenses/LICENSE-babel
rename to amoro-web/licenses/LICENSE-lowlight
index f31575ec7..8d8660d36 100644
--- a/amoro-web/licenses/LICENSE-babel
+++ b/amoro-web/licenses/LICENSE-lowlight
@@ -1,10 +1,10 @@
-MIT License
+(The MIT License)
 
-Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2016 Titus Wormer <ti...@gmail.com>
 
 Permission is hereby granted, free of charge, to any person obtaining
 a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
+'Software'), to deal in the Software without restriction, including
 without limitation the rights to use, copy, modify, merge, publish,
 distribute, sublicense, and/or sell copies of the Software, and to
 permit persons to whom the Software is furnished to do so, subject to
@@ -13,10 +13,10 @@ the following conditions:
 The above copyright notice and this permission notice shall be
 included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-marked b/amoro-web/licenses/LICENSE-marked
new file mode 100644
index 000000000..4bd2d4a08
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-marked
@@ -0,0 +1,44 @@
+# License information
+
+## Contribution License Agreement
+
+If you contribute code to this project, you are implicitly allowing your code
+to be distributed under the MIT license. You are also implicitly verifying that
+all code is your original work. `</legalese>`
+
+## Marked
+
+Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
+Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+## Markdown
+
+Copyright © 2004, John Gruber
+http://daringfireball.net/
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profi [...]
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-math-intrinsics
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-math-intrinsics
index fc7e52e7d..34995e79d 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-math-intrinsics
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 ECMAScript Shims
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-i18n b/amoro-web/licenses/LICENSE-minim
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-i18n
copy to amoro-web/licenses/LICENSE-minim
index 398540b34..86b766dec 100644
--- a/amoro-web/licenses/LICENSE-vue-i18n
+++ b/amoro-web/licenses/LICENSE-minim
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 kazuya kawaguchi
+Copyright (c) 2014 Stephen Mizell
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-nearley
similarity index 92%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-nearley
index 6e1123909..8ed282a18 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-nearley
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019 Kartik Chandra, Tim Radvan
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-neotraverse
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-neotraverse
index fc7e52e7d..b42e4317f 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-neotraverse
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Puru Vijay
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-openapi-path-templating
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-openapi-path-templating
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-openapi-path-templating
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-openapi-server-url-templating
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-openapi-server-url-templating
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-openapi-server-url-templating
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-pinia
index 6e1123909..0c77562be 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-pinia
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-possible-typed-array-names
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-possible-typed-array-names
index fc7e52e7d..f82f38963 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-possible-typed-array-names
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-prop-types
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-prop-types
index fc7e52e7d..188fb2b0b 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-prop-types
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2013-present, Facebook, Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-querystringify
similarity index 93%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-querystringify
index 6e1123909..6dc9316a6 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-querystringify
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,5 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-ramda
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-ramda
index 6e1123909..f1c024ef3 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-ramda
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2013-2024 Scott Sauyet and Michael Hurley
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-ramda-adjunct b/amoro-web/licenses/LICENSE-ramda-adjunct
new file mode 100644
index 000000000..2a7d16409
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-ramda-adjunct
@@ -0,0 +1,25 @@
+BSD 3-Clause License
+
+Copyright 2017-2019 Vladimír Gorej and the Ramda Adjunct contributors
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, 
+   this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, 
+   this list of conditions and the following disclaimer in the documentation and/or
+   other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used
+   to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-randexp
similarity index 89%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-randexp
index fc7e52e7d..defc2bf3a 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-randexp
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (C) 2011 by fent
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. 
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react
index fc7e52e7d..b96dcb048 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Facebook, Inc. and its affiliates.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-copy-to-clipboard
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-copy-to-clipboard
index fc7e52e7d..833e42217 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-copy-to-clipboard
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2016 Nik Butenko
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-debounce-input
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-debounce-input
index fc7e52e7d..833e42217 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-debounce-input
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2016 Nik Butenko
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-dom
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-dom
index fc7e52e7d..b96dcb048 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-dom
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Facebook, Inc. and its affiliates.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-immutable-proptypes
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-immutable-proptypes
index fc7e52e7d..9d0ec37d4 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-immutable-proptypes
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015 James Burnett
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-react-immutable-pure-component
similarity index 94%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-react-immutable-pure-component
index 6e1123909..477ed53b2 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-react-immutable-pure-component
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2017 Piotr Tomasz Monarski
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-redux
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-redux
index fc7e52e7d..55bc8dfbe 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-redux
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015-present Dan Abramov
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-react-syntax-highlighter
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-react-syntax-highlighter
index fc7e52e7d..c90c5fd71 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-react-syntax-highlighter
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2019 Conor Hastings
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-redux
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-redux
index fc7e52e7d..55bc8dfbe 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-redux
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015-present Dan Abramov
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-redux-immutable b/amoro-web/licenses/LICENSE-redux-immutable
new file mode 100644
index 000000000..7e84ea3af
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-redux-immutable
@@ -0,0 +1,24 @@
+Copyright (c) 2016, Gajus Kuizinas (http://gajus.com/)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the Gajus Kuizinas (http://gajus.com/) nor the
+      names of its contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL ANUARY BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-remarkable
similarity index 84%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-remarkable
index 6e1123909..193b5ebce 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-remarkable
@@ -1,6 +1,7 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2014-2016, Jon Schlinkert
+Copyright (c) 2014 Jon Schlinkert, Vitaly Puzrin.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +10,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-repeat-string
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-repeat-string
index 6e1123909..39245ac1c 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-repeat-string
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2014-2016, Jon Schlinkert.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-requires-port
similarity index 93%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-requires-port
index 6e1123909..6dc9316a6 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-requires-port
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,5 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-reselect
similarity index 93%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-reselect
index 6e1123909..2a957b490 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-reselect
@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) 2019-present Eduardo San Martin Morote
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+The MIT License (MIT)
+
+Copyright (c) 2015-2018 Reselect Contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-resize-observer-polyfill
similarity index 94%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-resize-observer-polyfill
index 6e1123909..3a568dc69 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-resize-observer-polyfill
@@ -1,21 +1,21 @@
-The MIT License (MIT)
-
-Copyright (c) 2019-present Eduardo San Martin Morote
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+The MIT License (MIT)
+
+Copyright (c) 2016 Denis Rul
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-ret
similarity index 89%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-ret
index fc7e52e7d..defc2bf3a 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-ret
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (C) 2011 by fent
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. 
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-safe-buffer
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-safe-buffer
index 6e1123909..0c068ceec 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-safe-buffer
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) Feross Aboukhadijeh
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-scheduler
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-scheduler
index fc7e52e7d..b96dcb048 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-scheduler
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Facebook, Inc. and its affiliates.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-scroll-into-view-if-needed
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-scroll-into-view-if-needed
index fc7e52e7d..ab721cd4a 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-scroll-into-view-if-needed
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2022 Cody Olsen
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-@tsconfig-node18 b/amoro-web/licenses/LICENSE-serialize-error
similarity index 91%
rename from amoro-web/licenses/LICENSE-@tsconfig-node18
rename to amoro-web/licenses/LICENSE-serialize-error
index 8ddd17886..fa7ceba3e 100644
--- a/amoro-web/licenses/LICENSE-@tsconfig-node18
+++ b/amoro-web/licenses/LICENSE-serialize-error
@@ -1,9 +1,9 @@
 MIT License
 
-Copyright (c) Microsoft Corporation.
+Copyright (c) Sindre Sorhus <si...@gmail.com> (https://sindresorhus.com)
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
\ No newline at end of file
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-set-function-length
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-set-function-length
index fc7e52e7d..031492907 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-set-function-length
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Jordan Harband and contributors
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-sha.js b/amoro-web/licenses/LICENSE-sha.js
new file mode 100644
index 000000000..11888c135
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-sha.js
@@ -0,0 +1,49 @@
+Copyright (c) 2013-2018 sha.js contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+Copyright (c) 1998 - 2009, Paul Johnston & Contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
+
+Neither the name of the author nor the names of its contributors may be used to
+endorse or promote products derived from this software without specific prior
+written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-shallow-equal
similarity index 53%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-shallow-equal
index 6e1123909..f8d348670 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-shallow-equal
@@ -1,21 +1,21 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright © 2016 Misha Moroshko
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the “Software”), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all
 copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-short-unique-id b/amoro-web/licenses/LICENSE-short-unique-id
new file mode 100644
index 000000000..50333bdf5
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-short-unique-id
@@ -0,0 +1,11 @@
+Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+The full Apache License, Version 2.0 text is included in the LICENSE-binary
+file of this distribution under the "Apache License Version 2.0" section.
+
+---
+Note: the npm package "short-unique-id" declares "license": "Apache-2.0" in
+its package.json but does not ship the license text. The project is
+maintained at https://github.com/jeanlescure/short-unique-id.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-stylis
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-stylis
index fc7e52e7d..f0b1a9a46 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-stylis
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2016-present Sultan Tarimo
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-swagger-client
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-swagger-client
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-swagger-client
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-swagger-ui
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-swagger-ui
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-swagger-ui
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-echarts b/amoro-web/licenses/LICENSE-swagger-ui-dist
similarity index 94%
copy from amoro-web/licenses/LICENSE-echarts
copy to amoro-web/licenses/LICENSE-swagger-ui-dist
index 3b2402618..d64569567 100644
--- a/amoro-web/licenses/LICENSE-echarts
+++ b/amoro-web/licenses/LICENSE-swagger-ui-dist
@@ -1,3 +1,4 @@
+
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
@@ -199,23 +200,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
diff --git a/amoro-web/licenses/LICENSE-throttle-debounce b/amoro-web/licenses/LICENSE-throttle-debounce
new file mode 100644
index 000000000..334eee988
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-throttle-debounce
@@ -0,0 +1,45 @@
+Copyright (c) Ivan Nikolić <http://ivannikolic.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+---
+
+Copyright (c) 2010 "Cowboy" Ben Alman
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-to-buffer
similarity index 87%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-to-buffer
index 6e1123909..bae9da7bf 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-to-buffer
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2016 Mathias Buus
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 copies of the Software, and to permit persons to whom the Software is
 furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-toggle-selection
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-toggle-selection
index fc7e52e7d..4a7395ee8 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-toggle-selection
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2017 sudodoki <sm...@gmail.com>
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-ts-mixer
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-ts-mixer
index fc7e52e7d..cc033dd65 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-ts-mixer
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2024 Tanner Nielsen
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-tslib b/amoro-web/licenses/LICENSE-tslib
new file mode 100644
index 000000000..bfe6430cb
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-tslib
@@ -0,0 +1,12 @@
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
\ No newline at end of file
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-typed-array-buffer
similarity index 96%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-typed-array-buffer
index fc7e52e7d..b4213ac64 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-typed-array-buffer
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2023 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-pinia b/amoro-web/licenses/LICENSE-url-parse
similarity index 93%
copy from amoro-web/licenses/LICENSE-pinia
copy to amoro-web/licenses/LICENSE-url-parse
index 6e1123909..6dc9316a6 100644
--- a/amoro-web/licenses/LICENSE-pinia
+++ b/amoro-web/licenses/LICENSE-url-parse
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2019-present Eduardo San Martin Morote
+Copyright (c) 2015 Unshift.io, Arnout Kazemier,  the Contributors.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,5 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-use-sync-external-store
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-use-sync-external-store
index fc7e52e7d..b93be9051 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-use-sync-external-store
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) Meta Platforms, Inc. and affiliates.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-vite-plugin-vue-devtools
similarity index 97%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-vite-plugin-vue-devtools
index fc7e52e7d..102207d37 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-vite-plugin-vue-devtools
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2023 webfansplz
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-i18n b/amoro-web/licenses/LICENSE-vue-i18n
index 398540b34..c02ff3ea6 100644
--- a/amoro-web/licenses/LICENSE-vue-i18n
+++ b/amoro-web/licenses/LICENSE-vue-i18n
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2016 kazuya kawaguchi
+Copyright (c) 2020 kazuya kawaguchi
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/amoro-web/licenses/LICENSE-vue-router b/amoro-web/licenses/LICENSE-vue-router
index 6e1123909..0c77562be 100644
--- a/amoro-web/licenses/LICENSE-vue-router
+++ b/amoro-web/licenses/LICENSE-vue-router
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-vue-types
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-vue-types
index fc7e52e7d..0fa04d59e 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-vue-types
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2016-2017 Marco Solazzi
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-vue-virtual-scroller
similarity index 95%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-vue-virtual-scroller
index fc7e52e7d..b56c4585b 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-vue-virtual-scroller
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2020 guillaume.b.chau@gmail.com
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-which-typed-array
similarity index 94%
copy from amoro-web/licenses/LICENSE-vue-draggable-plus
copy to amoro-web/licenses/LICENSE-which-typed-array
index fc7e52e7d..b43df444e 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-which-typed-array
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015 Jordan Harband
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
+
diff --git a/amoro-web/licenses/LICENSE-vue-draggable-plus b/amoro-web/licenses/LICENSE-xml-but-prettier
similarity index 94%
rename from amoro-web/licenses/LICENSE-vue-draggable-plus
rename to amoro-web/licenses/LICENSE-xml-but-prettier
index fc7e52e7d..aa4c7e779 100644
--- a/amoro-web/licenses/LICENSE-vue-draggable-plus
+++ b/amoro-web/licenses/LICENSE-xml-but-prettier
@@ -1,6 +1,6 @@
-MIT License
+The MIT License (MIT)
 
-Copyright (c) 2023 丶远方
+Copyright (c) 2015 Jonathan Persson
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/amoro-web/licenses/LICENSE-zenscroll b/amoro-web/licenses/LICENSE-zenscroll
new file mode 100644
index 000000000..a84c39566
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-zenscroll
@@ -0,0 +1,25 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org>
+
diff --git a/amoro-web/licenses/LICENSE-zrender b/amoro-web/licenses/LICENSE-zrender
new file mode 100644
index 000000000..66348cbf8
--- /dev/null
+++ b/amoro-web/licenses/LICENSE-zrender
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2017, Baidu Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/amoro-web/licenses/NOTICE-@swagger-api-apidom b/amoro-web/licenses/NOTICE-@swagger-api-apidom
new file mode 100644
index 000000000..55dbb9b26
--- /dev/null
+++ b/amoro-web/licenses/NOTICE-@swagger-api-apidom
@@ -0,0 +1,83 @@
+ApiDOM
+Copyright 2020 SmartBear Software Inc.
+ApiDOM is licensed under Apache 2.0 license.
+Copy of the Apache 2.0 license can be found in `LICENSES/Apache-2.0.txt` file.
+
+json-schema-ref-parser
+Copyright (c) 2015 James Messinger
+File packages/apidom-reference/src/util/url.ts (the file) was originally created under MIT license in https://github.com/APIDevTools/json-schema-ref-parser repository.
+The file has been copied into this project and modified. All modifications are licensed under Apache 2.0 License.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+
+graphql-js
+Copyright (c) GraphQL Contributors
+File packages/apidom-ast/src/traversal/visitor.ts (the file) was originally created under MIT license in https://github.com/graphql/graphql-js repository.
+The file has been copied into this project and modified. All modifications are licensed under Apache 2.0 License.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+
+babel-plugin-add-import-extension
+Copyright (c) 2019 Karl Prieb
+File scripts/babel-plugin-add-import-extension.cjs (the file) was originally created under MIT license in https://codeberg.org/karl/babel-plugin-add-import-extension.
+The file has been copied into this project and modified. All modifications are licensed under Apache 2.0 License.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+
+refract-spec
+Copyright (c) 2015 refractproject
+Specific texts in README.md (the file) were originally created under MIT license in https://github.com/refractproject/refract-spec repository.
+Specific texts have been copied into this project and modified. All modifications are licensed under Apache 2.0 License.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+
+api-elements
+Copyright (c) 2015 Apiary Inc.
+Specific texts in README.md (the file) were originally created under MIT license in https://github.com/refractproject/refract-spec repository.
+Specific texts have been copied into this project and modified. All modifications are licensed under Apache 2.0 License.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+
+deepmerge
+Copyright (c) 2012 James Halliday, Josh Duff, and other contributors
+- File packages/apidom-core/src/deepmerge.ts contains algorithms that we originally created
+  in https://github.com/TehShrike/deepmerge/blob/master/index.js to handle deep merging of JavaScript Objects and Arrays.
+  These algorithms have been reverse engineered and adapted to support deep merging of ApiDOM structures.
+- File packages/apidom-core/test/deepmerge.ts contains tests and fixtures that were originally created
+  in https://github.com/TehShrike/deepmerge/blob/master/test/merge.js to test deep merging of JavaScript Objects and Arrays.
+  These tests have been adapted to support testing deep merging of ApiDOM structures.
+- File packages/apidom-core/README.md contains text fragments that were originally created
+  in https://github.com/TehShrike/deepmerge/blob/master/readme.md to document deepmerge library.
+  These text fragments have been amended to describe merging of ApiDOM structures.
+Copy of the MIT license can be found in `LICENSES/MIT.txt` file.
+All modifications are licensed under Apache 2.0 License.
+
+OpenAPI Specification 2.0
+Copyright The Linux Foundation
+Fragments of the specification text are embedded in packages/apidom-ls/src/config/openapi.
+Copy of the Apache 2.0 license can be found in `LICENSES/Apache-2.0.txt` file.
+
+OpenAPI Specification 3.0.x
+Copyright The Linux Foundation
+Fragments of the specification text are embedded in packages/apidom-ls/src/config/openapi.
+Copy of the Apache 2.0 license can be found in `LICENSES/Apache-2.0.txt` file.
+
+OpenAPI Specification 3.1.x
+Copyright The Linux Foundation
+Fragments of the specification text are embedded in packages/apidom-ls/src/config/openapi.
+Copy of the Apache 2.0 license can be found in `LICENSES/Apache-2.0.txt` file.
+
+AsyncAPI Specification 2.x / AsyncAPI Initiative
+Copyright The Linux Foundation
+Fragments of the specification text are embedded in packages/apidom-ls/src/config/asyncapi.
+Copy of the Apache 2.0 license can be found in `LICENSES/Apache-2.0.txt` file.
+
+JSON Schema Specification (Draft 4/5 -> 2020-12)
+Copyright (c) 2022 JSON Schema Specification Authors
+Fragments of the specification text are embedded in packages/apidom-ls/src/config/common.
+Copy of the BSD 3-Clause "New" or "Revised" License can be found in `LICENSES/BSD-3-Clause.txt` file.
+Copy of the Academic Free License v3.0 can be found in `LICENSES/AFL-3.0.txt` file.
+
+---
+
+If the SPDX-FileCopyrightText and SPDX-License-Identifier tags are not present in the file,
+it is assumed that these tags have following implicit value:
+
+SPDX-FileCopyrightText: Copyright 2020-2021 SmartBear Software Inc.
+SPDX-License-Identifier: Apache-2.0
+
diff --git a/amoro-web/licenses/NOTICE-@swaggerexpert-json-pointer b/amoro-web/licenses/NOTICE-@swaggerexpert-json-pointer
new file mode 100644
index 000000000..c77291f7e
--- /dev/null
+++ b/amoro-web/licenses/NOTICE-@swaggerexpert-json-pointer
@@ -0,0 +1,11 @@
+@swaggerexpert/json-pointer
+Copyright 2025, Vladimír Gorej
+@swaggerexpert/json-pointer is licensed under Apache 2.0 license.
+Copy of the Apache 2.0 license can be found in `LICENSE` file.
+
+JavaScript Object Notation (JSON) Pointer
+Copyright (c) 2013 IETF Trust and the persons identified as the document authors.  All rights reserved.
+https://datatracker.ietf.org/doc/html/rfc6901
+Majority of ABNF grammar (grammar.bnf) and certain texts within the README.md file
+are licensed under Simplified BSD License - https://spdx.org/licenses/BSD-2-Clause.html.
+
diff --git a/amoro-web/licenses/NOTICE-monaco-editor b/amoro-web/licenses/NOTICE-monaco-editor
new file mode 100644
index 000000000..0e9b56a53
--- /dev/null
+++ b/amoro-web/licenses/NOTICE-monaco-editor
@@ -0,0 +1,448 @@
+THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+This project incorporates components from the projects listed below. The original copyright notices and the licenses
+under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted
+herein, whether by implication, estoppel or otherwise.
+
+
+
+%% nodejs path library (https://github.com/nodejs/node/tree/43dd49c9782848c25e5b03448c8a0f923f13c158)
+=========================================
+Copyright Joyent, Inc. and other Node contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF nodejs path library NOTICES AND INFORMATION
+
+
+
+
+%% markedjs NOTICES AND INFORMATION BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
+Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF markedjs NOTICES AND INFORMATION
+
+
+
+%% typescript version 4.4.4 (https://github.com/microsoft/TypeScript)
+=========================================
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or it [...]
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combin [...]
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, w [...]
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the [...]
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limit [...]
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor h [...]
+
+END OF TERMS AND CONDITIONS
+
+
+The TypeScript software incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.
+
+
+------------------- DefinitelyTyped --------------------
+This file is based on or incorporates material from the projects listed below (collectively "Third Party Code"). Microsoft is not the original author of the Third Party Code. The original copyright notice and the license, under which Microsoft received such Third Party Code, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft, not the third party, licenses the Third Party Code to you under the terms set forth in the EULA for the Microsof [...]
+DefinitelyTyped
+This project is licensed under the MIT license. Copyrights are respective of each contributor listed at the beginning of each definition file. Provided for Informational Purposes Only
+
+MIT License
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ""Software""), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+--------------------------------------------------------------------------------------
+
+------------------- Unicode --------------------
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
+http://www.unicode.org/utility/trac/browser/.
+
+Unicode Data Files do not include PDF online code charts under the
+directory http://www.unicode.org/Public/.
+
+Software includes any source code published in the Unicode Standard
+or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/,
+http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
+http://www.unicode.org/utility/trac/browser/.
+
+NOTICE TO USER: Carefully read the following legal agreement.
+BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
+YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT.
+IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
+THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1991-2017 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+-------------------------------------------------------------------------------------
+
+-------------------Document Object Model-----------------------------
+DOM
+
+W3C License
+This work is being provided by the copyright holders under the following license.
+By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
+Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following
+on ALL copies of the work or portions thereof, including modifications:
+* The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
+* Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
+* Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived
+from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
+Disclaimers
+THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
+FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission.
+Title to copyright in this work will at all times remain with copyright holders.
+
+---------
+
+DOM
+Copyright © 2018 WHATWG (Apple, Google, Mozilla, Microsoft). This work is licensed under a Creative Commons Attribution 4.0 International License: Attribution 4.0 International
+=======================================================================
+Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all  [...]
+
+wiki.creativecommons.org/Considerations_for_licensors Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is not necessary for any reason--for example, because of any applicable exception or limitation to copyright--then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights  [...]
+Creative Commons Attribution 4.0 International Public License By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration  [...]
+
+--------------------------------------------------------------------------------
+
+----------------------Web Background Synchronization------------------------------
+
+Web Background Synchronization Specification
+Portions of spec © by W3C
+
+W3C Community Final Specification Agreement
+To secure commitments from participants for the full text of a Community or Business Group Report, the group may call for voluntary commitments to the following terms; a "summary" is
+available. See also the related "W3C Community Contributor License Agreement".
+1. The Purpose of this Agreement.
+This Agreement sets forth the terms under which I make certain copyright and patent rights available to you for your implementation of the Specification.
+Any other capitalized terms not specifically defined herein have the same meaning as those terms have in the "W3C Patent Policy", and if not defined there, in the "W3C Process Document".
+2. Copyrights.
+2.1. Copyright Grant. I grant to you a perpetual (for the duration of the applicable copyright), worldwide, non-exclusive, no-charge, royalty-free, copyright license, without any obligation for accounting to me, to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, distribute, and implement the Specification to the full extent of my copyright interest in the Specification.
+2.2. Attribution. As a condition of the copyright grant, you must include an attribution to the Specification in any derivative work you make based on the Specification. That attribution must include, at minimum, the Specification name and version number.
+3. Patents.
+3.1. Patent Licensing Commitment. I agree to license my Essential Claims under the W3C Community RF Licensing Requirements. This requirement includes Essential Claims that I own and any that I have the right to license without obligation of payment or other consideration to an unrelated third party. W3C Community RF Licensing Requirements obligations made concerning the Specification and described in this policy are binding on me for the life of the patents in question and encumber the p [...]
+3.2. Optional, Additional Patent Grant. In addition to the provisions of Section 3.1, I may also, at my option, make certain intellectual property rights infringed by implementations of the Specification, including Essential Claims, available by providing those terms via the W3C Web site.
+4. No Other Rights. Except as specifically set forth in this Agreement, no other express or implied patent, trademark, copyright, or other property rights are granted under this Agreement, including by implication, waiver, or estoppel.
+5. Antitrust Compliance. I acknowledge that I may compete with other participants, that I am under no obligation to implement the Specification, that each participant is free to develop competing technologies and standards, and that each party is free to license its patent rights to third parties, including for the purpose of enabling competing technologies and standards.
+6. Non-Circumvention. I agree that I will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing my obligations under this Agreement.
+7. Transition to W3C Recommendation Track. The Specification developed by the Project may transition to the W3C Recommendation Track. The W3C Team is responsible for notifying me that a Corresponding Working Group has been chartered. I have no obligation to join the Corresponding Working Group. If the Specification developed by the Project transitions to the W3C Recommendation Track, the following terms apply:
+7.1. If I join the Corresponding Working Group. If I join the Corresponding Working Group, I will be subject to all W3C rules, obligations, licensing commitments, and policies that govern that Corresponding Working Group.
+7.2. If I Do Not Join the Corresponding Working Group.
+7.2.1. Licensing Obligations to Resulting Specification. If I do not join the Corresponding Working Group, I agree to offer patent licenses according to the W3C Royalty-Free licensing requirements described in Section 5 of the W3C Patent Policy for the portions of the Specification included in the resulting Recommendation. This licensing commitment does not extend to any portion of an implementation of the Recommendation that was not included in the Specification. This licensing commitme [...]
+7.2.2. No Disclosure Obligation. If I do not join the Corresponding Working Group, I have no patent disclosure obligations outside of those set forth in Section 6 of the W3C Patent Policy.
+8. Conflict of Interest. I will disclose significant relationships when those relationships might reasonably be perceived as creating a conflict of interest with my role. I will notify W3C of any change in my affiliation using W3C-provided mechanisms.
+9. Representations, Warranties and Disclaimers. I represent and warrant that I am legally entitled to grant the rights and promises set forth in this Agreement. IN ALL OTHER RESPECTS THE SPECIFICATION IS PROVIDED “AS IS.” The entire risk as to implementing or otherwise using the Specification is assumed by the implementer and user. Except as stated herein, I expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringeme [...]
+10. Definitions.
+10.1. Agreement. “Agreement” means this W3C Community Final Specification Agreement.
+10.2. Corresponding Working Group. “Corresponding Working Group” is a W3C Working Group that is chartered to develop a Recommendation, as defined in the W3C Process Document, that takes the Specification as an input.
+10.3. Essential Claims. “Essential Claims” shall mean all claims in any patent or patent application in any jurisdiction in the world that would necessarily be infringed by implementation of the Specification. A claim is necessarily infringed hereunder only when it is not possible to avoid infringing it because there is no non-infringing alternative for implementing the normative portions of the Specification. Existence of a non-infringing alternative shall be judged based on the state o [...]
+10.3.1. any claims other than as set forth above even if contained in the same patent as Essential Claims; and
+10.3.2. claims which would be infringed only by:
+portions of an implementation that are not specified in the normative portions of the Specification, or
+enabling technologies that may be necessary to make or use any product or portion thereof that complies with the Specification and are not themselves expressly set forth in the Specification (e.g., semiconductor manufacturing technology, compiler technology, object-oriented technology, basic operating system technology, and the like); or
+the implementation of technology developed elsewhere and merely incorporated by reference in the body of the Specification.
+10.3.3. design patents and design registrations.
+For purposes of this definition, the normative portions of the Specification shall be deemed to include only architectural and interoperability requirements. Optional features in the RFC 2119 sense are considered normative unless they are specifically identified as informative. Implementation examples or any other material that merely illustrate the requirements of the Specification are informative, rather than normative.
+10.4. I, Me, or My. “I,” “me,” or “my” refers to the signatory.
+10.5 Project. “Project” means the W3C Community Group or Business Group for which I executed this Agreement.
+10.6. Specification. “Specification” means the Specification identified by the Project as the target of this agreement in a call for Final Specification Commitments. W3C shall provide the authoritative mechanisms for the identification of this Specification.
+10.7. W3C Community RF Licensing Requirements. “W3C Community RF Licensing Requirements” license shall mean a non-assignable, non-sublicensable license to make, have made, use, sell, have sold, offer to sell, import, and distribute and dispose of implementations of the Specification that:
+10.7.1. shall be available to all, worldwide, whether or not they are W3C Members;
+10.7.2. shall extend to all Essential Claims owned or controlled by me;
+10.7.3. may be limited to implementations of the Specification, and to what is required by the Specification;
+10.7.4. may be conditioned on a grant of a reciprocal RF license (as defined in this policy) to all Essential Claims owned or controlled by the licensee. A reciprocal license may be required to be available to all, and a reciprocal license may itself be conditioned on a further reciprocal license from all.
+10.7.5. may not be conditioned on payment of royalties, fees or other consideration;
+10.7.6. may be suspended with respect to any licensee when licensor issued by licensee for infringement of claims essential to implement the Specification or any W3C Recommendation;
+10.7.7. may not impose any further conditions or restrictions on the use of any technology, intellectual property rights, or other restrictions on behavior of the licensee, but may include reasonable, customary terms relating to operation or maintenance of the license relationship such as the following: choice of law and dispute resolution;
+10.7.8. shall not be considered accepted by an implementer who manifests an intent not to accept the terms of the W3C Community RF Licensing Requirements license as offered by the licensor.
+10.7.9. The RF license conforming to the requirements in this policy shall be made available by the licensor as long as the Specification is in effect. The term of such license shall be for the life of the patents in question.
+I am encouraged to provide a contact from which licensing information can be obtained and other relevant licensing information. Any such information will be made publicly available.
+10.8. You or Your. “You,” “you,” or “your” means any person or entity who exercises copyright or patent rights granted under this Agreement, and any person that person or entity controls.
+
+-------------------------------------------------------------------------------------
+
+------------------- WebGL -----------------------------
+Copyright (c) 2018 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+------------------------------------------------------
+
+
+=========================================
+END OF typescript NOTICES AND INFORMATION
+
+
+
+
+%% HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/)
+=========================================
+Copyright © 2015 W3C® (MIT, ERCIM, Keio, Beihang). This software or document includes material copied
+from or derived from HTML 5.1 W3C Working Draft (http://www.w3.org/TR/2015/WD-html51-20151008/.)
+
+THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
+NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF
+THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
+PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS THEREOF.
+
+The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to this document or its contents
+without specific, written prior permission. Title to copyright in this document will at all times remain with copyright holders.
+=========================================
+END OF HTML 5.1 W3C Working Draft NOTICES AND INFORMATION
+
+
+
+
+%% JS Beautifier version 1.6.2 (https://github.com/beautify-web/js-beautify)
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2007-2017 Einar Lielmanis, Liam Newman, and contributors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF js-beautify NOTICES AND INFORMATION
+
+
+
+
+%% Ionic documentation version 1.2.4 (https://github.com/driftyco/ionic-site)
+=========================================
+Copyright Drifty Co. http://drifty.com/.
+
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or it [...]
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combin [...]
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, w [...]
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the [...]
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limit [...]
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor h [...]
+
+END OF TERMS AND CONDITIONS
+=========================================
+END OF Ionic documentation NOTICES AND INFORMATION
+
+
+
+
+%% vscode-swift version 0.0.1 (https://github.com/owensd/vscode-swift)
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2015 David Owens II
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF vscode-swift NOTICES AND INFORMATION
+
diff --git a/amoro-web/licenses/NOTICE-openapi-path-templating b/amoro-web/licenses/NOTICE-openapi-path-templating
new file mode 100644
index 000000000..429d4480e
--- /dev/null
+++ b/amoro-web/licenses/NOTICE-openapi-path-templating
@@ -0,0 +1,4 @@
+openapi-path-templating
+Copyright 2023, Vladimír Gorej
+openapi-path-templating is licensed under Apache 2.0 license.
+Copy of the Apache 2.0 license can be found in `LICENSE` file.
diff --git a/amoro-web/licenses/NOTICE-openapi-server-url-templating b/amoro-web/licenses/NOTICE-openapi-server-url-templating
new file mode 100644
index 000000000..7920c078f
--- /dev/null
+++ b/amoro-web/licenses/NOTICE-openapi-server-url-templating
@@ -0,0 +1,4 @@
+openapi-server-url-templating
+Copyright 2024, Vladimír Gorej
+openapi-server-url-templating is licensed under Apache 2.0 license.
+Copy of the Apache 2.0 license can be found in `LICENSE` file.
diff --git a/amoro-web/pom.xml b/amoro-web/pom.xml
index bc737208b..31cf06725 100644
--- a/amoro-web/pom.xml
+++ b/amoro-web/pom.xml
@@ -40,6 +40,18 @@
 
     <build>
         <finalName>amoro-web-${project.version}</finalName>
+        <resources>
+            <!-- Retain the default resource directory; declaring <resources> overrides it. -->
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+            <!-- Ship third-party npm license texts with the dashboard jar so downstream
+                 users can verify the bundled frontend dependencies. -->
+            <resource>
+                <directory>licenses</directory>
+                <targetPath>licenses</targetPath>
+            </resource>
+        </resources>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>


(amoro) 05/09: fix(ams): reject non-positive optimizer parallelism (#4398)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 52616a2add93e7f7b60c6b66b1b418b8e65f47d3
Author: Sivakumar Mahalingam <36...@users.noreply.github.com>
AuthorDate: Thu Oct 8 09:36:52 2026 +0300

    fix(ams): reject non-positive optimizer parallelism (#4398)
    
    Co-authored-by: Xu Bai <to...@gmail.com>
    (cherry picked from commit 13364ef2f2aab6e2b897ce848bdaeca0ee5b0de4)
---
 .../dashboard/controller/OptimizerController.java  |  4 ++
 .../controller/OptimizerGroupController.java       |  4 ++
 .../amoro/server/TestOptimizerController.java      | 65 ++++++++++++++++++++++
 .../amoro/server/TestOptimizerGroupController.java | 19 +++++++
 4 files changed, 92 insertions(+)

diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
index 071f7c58b..4476fe175 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerController.java
@@ -18,6 +18,7 @@
 
 package org.apache.amoro.server.dashboard.controller;
 
+import io.javalin.http.BadRequestResponse;
 import io.javalin.http.Context;
 import org.apache.amoro.resource.Resource;
 import org.apache.amoro.resource.ResourceContainer;
@@ -78,6 +79,9 @@ public class OptimizerController {
   public void createOptimizer(Context ctx) {
     Map<String, Object> map = ctx.bodyAsClass(Map.class);
     int parallelism = Integer.parseInt(map.get("parallelism").toString());
+    if (parallelism <= 0) {
+      throw new BadRequestResponse("Parallelism must be greater than 0.");
+    }
     String optimizerGroup = map.get("optimizerGroup").toString();
     ResourceGroup resourceGroup = optimizerManager.getResourceGroup(optimizerGroup);
     Resource resource =
diff --git a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
index 586891d27..4e005f86c 100644
--- a/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
+++ b/amoro-ams/src/main/java/org/apache/amoro/server/dashboard/controller/OptimizerGroupController.java
@@ -18,6 +18,7 @@
 
 package org.apache.amoro.server.dashboard.controller;
 
+import io.javalin.http.BadRequestResponse;
 import io.javalin.http.Context;
 import org.apache.amoro.resource.Resource;
 import org.apache.amoro.resource.ResourceContainer;
@@ -208,6 +209,9 @@ public class OptimizerGroupController {
     String optimizerGroup = ctx.pathParam("optimizerGroup");
     Map<String, Integer> map = ctx.bodyAsClass(Map.class);
     int parallelism = map.get("parallelism");
+    if (parallelism <= 0) {
+      throw new BadRequestResponse("Parallelism must be greater than 0.");
+    }
 
     ResourceGroup resourceGroup = optimizerManager.getResourceGroup(optimizerGroup);
     Resource resource =
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerController.java b/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerController.java
new file mode 100644
index 000000000..81f9a504c
--- /dev/null
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerController.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.amoro.server;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
+
+import io.javalin.http.BadRequestResponse;
+import io.javalin.http.Context;
+import org.apache.amoro.server.dashboard.controller.OptimizerController;
+import org.apache.amoro.server.resource.OptimizerManager;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class TestOptimizerController {
+
+  private OptimizerManager optimizerManager;
+  private OptimizerController controller;
+  private Context ctx;
+
+  @BeforeEach
+  void setUp() {
+    optimizerManager = mock(OptimizerManager.class);
+    controller = new OptimizerController(optimizerManager);
+    ctx = mock(Context.class);
+  }
+
+  @ParameterizedTest
+  @ValueSource(ints = {0, -1})
+  void createOptimizerWithInvalidParallelism(int parallelism) {
+    Map<String, Object> requestBody = new HashMap<>();
+    requestBody.put("parallelism", parallelism);
+    requestBody.put("optimizerGroup", "group1");
+
+    when(ctx.bodyAsClass(Map.class)).thenReturn(requestBody);
+
+    BadRequestResponse exception =
+        assertThrows(BadRequestResponse.class, () -> controller.createOptimizer(ctx));
+    assertEquals(400, exception.getStatus());
+    verifyNoInteractions(optimizerManager);
+  }
+}
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerGroupController.java b/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerGroupController.java
index a4dfa4290..7fddb1ea2 100644
--- a/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerGroupController.java
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/TestOptimizerGroupController.java
@@ -18,12 +18,15 @@
 
 package org.apache.amoro.server;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
 import static org.mockito.Mockito.when;
 
+import io.javalin.http.BadRequestResponse;
 import io.javalin.http.Context;
 import org.apache.amoro.OptimizerProperties;
 import org.apache.amoro.resource.ResourceGroup;
@@ -34,6 +37,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.params.provider.ValueSource;
 
 import javax.ws.rs.BadRequestException;
 
@@ -83,6 +87,21 @@ public class TestOptimizerGroupController {
     assertThrows(BadRequestException.class, () -> controller.createResourceGroup(ctx));
   }
 
+  @ParameterizedTest
+  @ValueSource(ints = {0, -1})
+  void scaleOutOptimizerWithInvalidParallelism(int parallelism) {
+    Map<String, Integer> requestBody = new HashMap<>();
+    requestBody.put("parallelism", parallelism);
+
+    when(ctx.pathParam("optimizerGroup")).thenReturn("group1");
+    when(ctx.bodyAsClass(Map.class)).thenReturn(requestBody);
+
+    BadRequestResponse exception =
+        assertThrows(BadRequestResponse.class, () -> controller.scaleOutOptimizer(ctx));
+    assertEquals(400, exception.getStatus());
+    verifyNoInteractions(optimizerManager);
+  }
+
   private Map<String, Object> groupRequest(String name, Map<String, String> properties) {
     Map<String, Object> requestBody = new HashMap<>();
     requestBody.put("name", name);


(amoro) 01/09: [AMORO-4393][AMS] Fix shared state between AMS test classes (#4394)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit 26062c23dd9ca9a560d748d0115b4b2360260d04
Author: Sivakumar Mahalingam <36...@users.noreply.github.com>
AuthorDate: Tue Sep 29 08:04:03 2026 +0400

    [AMORO-4393][AMS] Fix shared state between AMS test classes (#4394)
    
    AMS test classes share one AMS instance and Derby database, so state left by one test class broke others depending on execution order.
    
    - TestIcebergV3OptimizingPlanning: delete only rows for tables it created instead of truncating the shared database; initialize DerbyPersistence only when run standalone.
    - TestInternalMixedCatalogService: drop residual tables and test_ns before each test; assert on test_ns presence instead of an empty catalog.
    - TestInternalIcebergCatalogService: reload through REST and reapply the catalog update if the background catalog scan overwrote it.
    
    (cherry picked from commit 9442f8c0fe86f3199c77c21b730e1d9cf6cfe984)
---
 .../server/TestInternalIcebergCatalogService.java  | 26 ++++++---
 .../server/TestInternalMixedCatalogService.java    | 31 +++++++++--
 .../TestIcebergV3OptimizingPlanning.java           | 62 ++++++++++++++++++++--
 3 files changed, 102 insertions(+), 17 deletions(-)

diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalIcebergCatalogService.java b/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalIcebergCatalogService.java
index 3ba804d90..1ddae1f79 100644
--- a/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalIcebergCatalogService.java
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalIcebergCatalogService.java
@@ -93,18 +93,28 @@ public class TestInternalIcebergCatalogService extends RestCatalogServiceTestBas
       CatalogMeta oldMeta = meta.deepCopy();
       meta.putToCatalogProperties("cache-enabled", "false");
       meta.putToCatalogProperties("cache.expiration-interval-ms", "10000");
-      catalogManager.updateCatalog(meta);
-      // Force a cache reload after invalidation to prevent the background catalog-scan task from
-      // overwriting the cache with a stale DB snapshot it read before the update completed.
-      CatalogMeta updatedMeta = catalogManager.getCatalogMeta(catalogName());
-      String warehouseInAMS =
-          updatedMeta.getCatalogProperties().get(CatalogMetaProperties.KEY_WAREHOUSE);
 
       Map<String, String> clientSideConfiguration = Maps.newHashMap();
       clientSideConfiguration.put("cache-enabled", "true");
 
-      try (RESTCatalog catalog = loadIcebergCatalog(clientSideConfiguration)) {
-        Map<String, String> finallyConfigs = catalog.properties();
+      try {
+        Map<String, String> finallyConfigs = Maps.newHashMap();
+        for (int attempt = 0; attempt < 3; attempt++) {
+          catalogManager.updateCatalog(meta.deepCopy());
+          // A concurrent catalog scan may have read the old metadata before this update and reload
+          // it afterward. Reload through REST and reapply the update if that race occurred.
+          try (RESTCatalog catalog = loadIcebergCatalog(clientSideConfiguration)) {
+            finallyConfigs = catalog.properties();
+          }
+          if ("10000".equals(finallyConfigs.get("cache.expiration-interval-ms"))) {
+            break;
+          }
+        }
+        String warehouseInAMS =
+            catalogManager
+                .getCatalogMeta(catalogName())
+                .getCatalogProperties()
+                .get(CatalogMetaProperties.KEY_WAREHOUSE);
         // overwrites properties using value from ams
         Assertions.assertEquals(warehouseInAMS, finallyConfigs.get("warehouse"));
         // default properties using value from client then properties.
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalMixedCatalogService.java b/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalMixedCatalogService.java
index 3e24e42b6..745ae6716 100644
--- a/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalMixedCatalogService.java
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/TestInternalMixedCatalogService.java
@@ -34,6 +34,7 @@ import org.apache.amoro.shade.guava32.com.google.common.collect.Maps;
 import org.apache.amoro.shade.guava32.com.google.common.collect.Sets;
 import org.apache.amoro.table.MixedTable;
 import org.apache.amoro.table.TableBuilder;
+import org.apache.amoro.table.TableIdentifier;
 import org.apache.amoro.table.UnkeyedTable;
 import org.apache.amoro.utils.CatalogUtil;
 import org.apache.amoro.utils.MixedTableUtil;
@@ -140,6 +141,26 @@ public class TestInternalMixedCatalogService extends RestCatalogServiceTestBase
   @BeforeEach
   public void setMixedCatalog() {
     catalog = loadMixedIcebergCatalog();
+    // The AMS instance is shared, so drop anything a previous test left behind.
+    dropTestDatabaseIfExists(catalog);
+  }
+
+  private void dropTestDatabaseIfExists(MixedFormatCatalog target) {
+    try {
+      if (!target.listDatabases().contains(database)) {
+        return;
+      }
+      for (TableIdentifier identifier : target.listTables(database)) {
+        try {
+          target.dropTable(identifier, true);
+        } catch (Exception e) {
+          LOG.warn("Failed to drop residual table {}", identifier, e);
+        }
+      }
+      target.dropDatabase(database);
+    } catch (Exception e) {
+      LOG.warn("Failed to drop residual database {}", database, e);
+    }
   }
 
   @Override
@@ -165,16 +186,16 @@ public class TestInternalMixedCatalogService extends RestCatalogServiceTestBase
       MixedFormatCatalog catalog = loadMixedIcebergCatalog();
       Assertions.assertEquals(
           InternalMixedIcebergCatalog.class.getName(), catalog.getClass().getName());
-      Assertions.assertTrue(catalog.listDatabases().isEmpty());
+      Assertions.assertFalse(catalog.listDatabases().contains(database));
 
       catalog.createDatabase(database);
-      Assertions.assertEquals(1, catalog.listDatabases().size());
       Assertions.assertTrue(catalog.listDatabases().contains(database));
-      Assertions.assertEquals(1, nsCatalog.listNamespaces(Namespace.of()).size());
+      Assertions.assertTrue(
+          nsCatalog.listNamespaces(Namespace.of()).contains(Namespace.of(database)));
 
       catalog.dropDatabase(database);
-      Assertions.assertTrue(catalog.listDatabases().isEmpty());
-      Assertions.assertTrue(nsCatalog.listNamespaces().isEmpty());
+      Assertions.assertFalse(catalog.listDatabases().contains(database));
+      Assertions.assertFalse(nsCatalog.listNamespaces().contains(Namespace.of(database)));
     }
   }
 
diff --git a/amoro-ams/src/test/java/org/apache/amoro/server/optimizing/TestIcebergV3OptimizingPlanning.java b/amoro-ams/src/test/java/org/apache/amoro/server/optimizing/TestIcebergV3OptimizingPlanning.java
index 6bad7f4db..bff12d7fe 100644
--- a/amoro-ams/src/test/java/org/apache/amoro/server/optimizing/TestIcebergV3OptimizingPlanning.java
+++ b/amoro-ams/src/test/java/org/apache/amoro/server/optimizing/TestIcebergV3OptimizingPlanning.java
@@ -44,6 +44,7 @@ import org.apache.amoro.process.ProcessStatus;
 import org.apache.amoro.resource.ResourceGroup;
 import org.apache.amoro.server.catalog.CatalogManager;
 import org.apache.amoro.server.persistence.PersistentBase;
+import org.apache.amoro.server.persistence.SqlSessionFactoryProvider;
 import org.apache.amoro.server.persistence.TableRuntimeMeta;
 import org.apache.amoro.server.persistence.mapper.TableMetaMapper;
 import org.apache.amoro.server.persistence.mapper.TableProcessMapper;
@@ -60,6 +61,7 @@ import org.apache.amoro.table.TableProperties;
 import org.apache.amoro.table.UnkeyedTable;
 import org.apache.amoro.utils.SerializationUtil;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.ibatis.session.SqlSession;
 import org.apache.iceberg.DeleteFile;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
@@ -69,23 +71,43 @@ import org.junit.jupiter.params.provider.CsvSource;
 import org.junit.jupiter.params.provider.ValueSource;
 
 import java.nio.file.Path;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 class TestIcebergV3OptimizingPlanning extends PersistentBase {
   @TempDir private Path temp;
 
+  // Preserve standalone execution without loading DerbyPersistence when the shared AMS test
+  // environment has already initialized persistence. Loading it would truncate the shared DB.
+  @SuppressWarnings("unused")
+  private final DerbyPersistence standalonePersistence = initializePersistence();
+
   private final TestPersistence persistence = new TestPersistence();
   private final CatalogManager catalogManager = mock(CatalogManager.class);
+  private final Set<Long> tableIds = new HashSet<>();
   private OptimizingQueue queue;
 
+  private static DerbyPersistence initializePersistence() {
+    try {
+      SqlSessionFactoryProvider.getInstance().get();
+      return null;
+    } catch (IllegalStateException e) {
+      return new DerbyPersistence();
+    }
+  }
+
   @AfterEach
   void cleanUp() {
     if (queue != null) {
       queue.dispose();
     }
-    persistence.cleanUp();
+    persistence.cleanUp(tableIds);
+    tableIds.clear();
   }
 
   @Test
@@ -394,6 +416,7 @@ class TestIcebergV3OptimizingPlanning extends PersistentBase {
     meta.setGroupName("default");
     meta.setStatusCode(initialStatus.getCode());
     doAs(TableMetaMapper.class, mapper -> mapper.insertTable(identifier));
+    tableIds.add(identifier.getId());
     meta.setTableId(identifier.getId());
     doAs(TableRuntimeMapper.class, mapper -> mapper.insertRuntime(meta));
     DefaultTableRuntimeStore store =
@@ -437,9 +460,40 @@ class TestIcebergV3OptimizingPlanning extends PersistentBase {
     };
   }
 
-  private static class TestPersistence extends DerbyPersistence {
-    void cleanUp() {
-      super.after();
+  private static class TestPersistence {
+    private static final String[] TABLES_WITH_TABLE_ID = {
+      "task_runtime",
+      "optimizing_task_quota",
+      "optimizing_process_state",
+      "table_process_state",
+      "table_process",
+      "table_runtime_state",
+      "table_runtime",
+      "table_metadata",
+      "table_identifier"
+    };
+
+    void cleanUp(Set<Long> tableIds) {
+      if (tableIds.isEmpty()) {
+        return;
+      }
+
+      try (SqlSession session = SqlSessionFactoryProvider.getInstance().get().openSession(true)) {
+        for (String table : TABLES_WITH_TABLE_ID) {
+          try (PreparedStatement statement =
+              session
+                  .getConnection()
+                  .prepareStatement("DELETE FROM " + table + " WHERE table_id = ?")) {
+            for (Long tableId : tableIds) {
+              statement.setLong(1, tableId);
+              statement.addBatch();
+            }
+            statement.executeBatch();
+          }
+        }
+      } catch (SQLException e) {
+        throw new RuntimeException("Failed to clean up optimizing planning test data", e);
+      }
     }
   }
 }


(amoro) 06/09: [HOTFIX] Include ICU license in Flink JARs (#4429)

Posted by cz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

czy006 pushed a commit to branch 0.9.x
in repository https://gitbox.apache.org/repos/asf/amoro.git

commit a64c849a07dcf295d7320e9adaf4132796680b8a
Author: Xu Bai <to...@gmail.com>
AuthorDate: Thu Oct 8 20:00:01 2026 +0800

    [HOTFIX] Include ICU license in Flink JARs (#4429)
    
    Hotfix: append LICENSE file and update pom.xml for org/apache/amoro/flink/lookup/ByteArrayWrapper.java
    (cherry picked from commit 2c85dcbabbf2c14532acb1ad697e5de04164bb15)
---
 .../src/main/appended-resources/META-INF/LICENSE   | 48 ++++++++++++++++++++++
 .../v1.18/amoro-mixed-flink-runtime-1.18/pom.xml   |  5 +++
 .../v1.19/amoro-mixed-flink-runtime-1.19/pom.xml   |  5 +++
 .../v1.20/amoro-mixed-flink-runtime-1.20/pom.xml   |  5 +++
 4 files changed, 63 insertions(+)

diff --git a/amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/appended-resources/META-INF/LICENSE b/amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/appended-resources/META-INF/LICENSE
new file mode 100644
index 000000000..0f447af2f
--- /dev/null
+++ b/amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/appended-resources/META-INF/LICENSE
@@ -0,0 +1,48 @@
+
+This product includes software developed at The ICU Project
+   (https://github.com/unicode-org/icu).
+
+   org/apache/amoro/flink/lookup/ByteArrayWrapper.java
+   is derived from com.ibm.icu.util.ByteArrayWrapper from ICU4J. The
+   upstream file carries the following copyright notices:
+
+   Copyright (C) 1996-2016, International Business Machines Corporation
+   and others. All Rights Reserved.
+   Copyright (c) 2016 and later: Unicode, Inc. and others.
+
+   The file is licensed under the ICU License:
+
+   COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
+
+   Copyright © 1991-2020 Unicode, Inc. All rights reserved.
+   Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of the Unicode data files and any associated documentation
+   (the "Data Files") or Unicode software and any associated documentation
+   (the "Software") to deal in the Data Files or Software
+   without restriction, including without limitation the rights to use,
+   copy, modify, merge, publish, distribute, and/or sell copies of
+   the Data Files or Software, and to permit persons to whom the Data Files
+   or Software are furnished to do so, provided that either
+   (a) this copyright and permission notice appear with all copies
+   of the Data Files or Software, or
+   (b) this copyright and permission notice appear in associated
+   Documentation.
+
+   THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+   ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+   WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+   IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+   NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+   DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+   DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+   TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+   PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+   Except as contained in this notice, the name of a copyright holder
+   shall not be used in advertising or otherwise to promote the sale,
+   use or other dealings in these Data Files or Software without prior
+   written authorization of the copyright holder.
+
diff --git a/amoro-format-mixed/amoro-mixed-flink/v1.18/amoro-mixed-flink-runtime-1.18/pom.xml b/amoro-format-mixed/amoro-mixed-flink/v1.18/amoro-mixed-flink-runtime-1.18/pom.xml
index 2bceff044..007532321 100644
--- a/amoro-format-mixed/amoro-mixed-flink/v1.18/amoro-mixed-flink-runtime-1.18/pom.xml
+++ b/amoro-format-mixed/amoro-mixed-flink/v1.18/amoro-mixed-flink-runtime-1.18/pom.xml
@@ -88,6 +88,11 @@
                                     </excludes>
                                 </filter>
                             </filters>
+                            <transformers combine.children="append">
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    <resource>META-INF/LICENSE</resource>
+                                </transformer>
+                            </transformers>
                             <createDependencyReducedPom>false</createDependencyReducedPom>
                             <artifactSet>
                                 <includes combine.children="append">
diff --git a/amoro-format-mixed/amoro-mixed-flink/v1.19/amoro-mixed-flink-runtime-1.19/pom.xml b/amoro-format-mixed/amoro-mixed-flink/v1.19/amoro-mixed-flink-runtime-1.19/pom.xml
index ec44f3495..b7c2a821f 100644
--- a/amoro-format-mixed/amoro-mixed-flink/v1.19/amoro-mixed-flink-runtime-1.19/pom.xml
+++ b/amoro-format-mixed/amoro-mixed-flink/v1.19/amoro-mixed-flink-runtime-1.19/pom.xml
@@ -88,6 +88,11 @@
                                     </excludes>
                                 </filter>
                             </filters>
+                            <transformers combine.children="append">
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    <resource>META-INF/LICENSE</resource>
+                                </transformer>
+                            </transformers>
                             <createDependencyReducedPom>false</createDependencyReducedPom>
                             <artifactSet>
                                 <includes combine.children="append">
diff --git a/amoro-format-mixed/amoro-mixed-flink/v1.20/amoro-mixed-flink-runtime-1.20/pom.xml b/amoro-format-mixed/amoro-mixed-flink/v1.20/amoro-mixed-flink-runtime-1.20/pom.xml
index 5d14542c2..3d1f589e1 100644
--- a/amoro-format-mixed/amoro-mixed-flink/v1.20/amoro-mixed-flink-runtime-1.20/pom.xml
+++ b/amoro-format-mixed/amoro-mixed-flink/v1.20/amoro-mixed-flink-runtime-1.20/pom.xml
@@ -88,6 +88,11 @@
                                     </excludes>
                                 </filter>
                             </filters>
+                            <transformers combine.children="append">
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                    <resource>META-INF/LICENSE</resource>
+                                </transformer>
+                            </transformers>
                             <createDependencyReducedPom>false</createDependencyReducedPom>
                             <artifactSet>
                                 <includes combine.children="append">