This is an automated email from the ASF dual-hosted git repository.
nicholasjiang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-paimon-webui.git
The following commit(s) were added to refs/heads/main by this push:
new b2ebaa9 [Improvement] Support generate license script and update
gitignore (#184)
b2ebaa9 is described below
commit b2ebaa9f1435c03e1afe8c7e989db3af3bc45193
Author: xiaomo <[email protected]>
AuthorDate: Thu Feb 1 14:17:40 2024 +0800
[Improvement] Support generate license script and update gitignore (#184)
---
.gitignore | 12 +--
paimon-web-ui/.eslintignore | 3 +-
paimon-web-ui/.eslintrc-auto-import.json | 85 ---------------------
paimon-web-ui/README.md | 7 ++
paimon-web-ui/apiWeb.json | 4 -
paimon-web-ui/auto-imports.d.ts | 94 -----------------------
paimon-web-ui/components.d.ts | 31 --------
paimon-web-ui/httpData/.gitignore | 6 --
paimon-web-ui/httpData/apiWeb.json | 4 -
paimon-web-ui/license.node.js | 125 +++++++++++++++++++++++++++++++
paimon-web-ui/package.json | 3 +-
paimon-web-ui/pom.xml | 98 ++++++++++++++++++++++++
paimon-web-ui/src/assets/logo.svg | 18 +++++
paimon-web-ui/tsconfig.node.json | 3 +-
14 files changed, 261 insertions(+), 232 deletions(-)
diff --git a/.gitignore b/.gitignore
index af5d853..594e5a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,13 @@ target/
.vim
.tmp
node/
+paimon-web-ui/.idea
+paimon-web-ui/.vscode
+paimon-web-ui/auto-imports.d.ts
+paimon-web-ui/components.d.ts
+paimon-web-ui/.eslintrc-auto-import.json
+paimon-web-ui/httpData
+paimon-web-ui/apiWeb.json
logs/*
.mvn/
.www
@@ -67,8 +74,3 @@ coverage
*.njsproj
*.sln
*.sw?
-
-# paimon-web-ui
-paimon-web-ui/auto-imports.d.ts
-paimon-web-ui/httpData
-paimon-web-ui/apiWeb.json
diff --git a/paimon-web-ui/.eslintignore b/paimon-web-ui/.eslintignore
index a0c8ea1..4493cbd 100644
--- a/paimon-web-ui/.eslintignore
+++ b/paimon-web-ui/.eslintignore
@@ -15,4 +15,5 @@
* limitations under the License.
*/
-mock/**.js
+mock
+license.node.js
diff --git a/paimon-web-ui/.eslintrc-auto-import.json
b/paimon-web-ui/.eslintrc-auto-import.json
deleted file mode 100644
index 883b20f..0000000
--- a/paimon-web-ui/.eslintrc-auto-import.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "globals": {
- "Component": true,
- "ComponentPublicInstance": true,
- "ComputedRef": true,
- "EffectScope": true,
- "InjectionKey": true,
- "PropType": true,
- "Ref": true,
- "VNode": true,
- "WritableComputedRef": true,
- "acceptHMRUpdate": true,
- "computed": true,
- "createApp": true,
- "createPinia": true,
- "customRef": true,
- "defineAsyncComponent": true,
- "defineComponent": true,
- "defineStore": true,
- "effectScope": true,
- "getActivePinia": true,
- "getCurrentInstance": true,
- "getCurrentScope": true,
- "h": true,
- "inject": true,
- "isProxy": true,
- "isReactive": true,
- "isReadonly": true,
- "isRef": true,
- "mapActions": true,
- "mapGetters": true,
- "mapState": true,
- "mapStores": true,
- "mapWritableState": true,
- "markRaw": true,
- "nextTick": true,
- "onActivated": true,
- "onBeforeMount": true,
- "onBeforeRouteLeave": true,
- "onBeforeRouteUpdate": true,
- "onBeforeUnmount": true,
- "onBeforeUpdate": true,
- "onDeactivated": true,
- "onErrorCaptured": true,
- "onMounted": true,
- "onRenderTracked": true,
- "onRenderTriggered": true,
- "onScopeDispose": true,
- "onServerPrefetch": true,
- "onUnmounted": true,
- "onUpdated": true,
- "provide": true,
- "reactive": true,
- "readonly": true,
- "ref": true,
- "resolveComponent": true,
- "setActivePinia": true,
- "setMapStoreSuffix": true,
- "shallowReactive": true,
- "shallowReadonly": true,
- "shallowRef": true,
- "storeToRefs": true,
- "toRaw": true,
- "toRef": true,
- "toRefs": true,
- "toValue": true,
- "triggerRef": true,
- "unref": true,
- "useAttrs": true,
- "useCssModule": true,
- "useCssVars": true,
- "useLink": true,
- "useRoute": true,
- "useRouter": true,
- "useSlots": true,
- "watch": true,
- "watchEffect": true,
- "watchPostEffect": true,
- "watchSyncEffect": true,
- "useDialog": true,
- "useLoadingBar": true,
- "useMessage": true,
- "useNotification": true
- }
-}
diff --git a/paimon-web-ui/README.md b/paimon-web-ui/README.md
index f0c8e16..32992dd 100644
--- a/paimon-web-ui/README.md
+++ b/paimon-web-ui/README.md
@@ -62,3 +62,10 @@ pnpm lint
# License
[Apache 2.0 License.](/LICENSE)
+
+You can run this command to automatically generate the corresponding protocol
before commit.
+
+```sh
+pnpm run gen:license
+```
+
diff --git a/paimon-web-ui/apiWeb.json b/paimon-web-ui/apiWeb.json
deleted file mode 100644
index b576de9..0000000
--- a/paimon-web-ui/apiWeb.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "paths": {},
- "disable": []
-}
\ No newline at end of file
diff --git a/paimon-web-ui/auto-imports.d.ts b/paimon-web-ui/auto-imports.d.ts
deleted file mode 100644
index 92e4ec9..0000000
--- a/paimon-web-ui/auto-imports.d.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-/* eslint-disable */
-/* prettier-ignore */
-// @ts-nocheck
-// noinspection JSUnusedGlobalSymbols
-// Generated by unplugin-auto-import
-export {}
-declare global {
- const EffectScope: typeof import('vue')['EffectScope']
- const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
- const computed: typeof import('vue')['computed']
- const createApp: typeof import('vue')['createApp']
- const createNewCatalog: typeof
import('./src/api/models/catalog/index')['createNewCatalog']
- const createPinia: typeof import('pinia')['createPinia']
- const customRef: typeof import('vue')['customRef']
- const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
- const defineComponent: typeof import('vue')['defineComponent']
- const defineStore: typeof import('pinia')['defineStore']
- const effectScope: typeof import('vue')['effectScope']
- const getActivePinia: typeof import('pinia')['getActivePinia']
- const getAllCatalogs: typeof
import('./src/api/models/catalog/index')['getAllCatalogs']
- const getCurrentInstance: typeof import('vue')['getCurrentInstance']
- const getCurrentScope: typeof import('vue')['getCurrentScope']
- const getDatabasesByCatalogId: typeof
import('./src/api/models/catalog/index')['getDatabasesByCatalogId']
- const h: typeof import('vue')['h']
- const inject: typeof import('vue')['inject']
- const isProxy: typeof import('vue')['isProxy']
- const isReactive: typeof import('vue')['isReactive']
- const isReadonly: typeof import('vue')['isReadonly']
- const isRef: typeof import('vue')['isRef']
- const mapActions: typeof import('pinia')['mapActions']
- const mapGetters: typeof import('pinia')['mapGetters']
- const mapState: typeof import('pinia')['mapState']
- const mapStores: typeof import('pinia')['mapStores']
- const mapWritableState: typeof import('pinia')['mapWritableState']
- const markRaw: typeof import('vue')['markRaw']
- const nextTick: typeof import('vue')['nextTick']
- const onActivated: typeof import('vue')['onActivated']
- const onBeforeMount: typeof import('vue')['onBeforeMount']
- const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
- const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
- const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
- const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
- const onDeactivated: typeof import('vue')['onDeactivated']
- const onErrorCaptured: typeof import('vue')['onErrorCaptured']
- const onLogin: typeof import('./src/api/models/login/index')['onLogin']
- const onLogout: typeof import('./src/api/models/login/index')['onLogout']
- const onMounted: typeof import('vue')['onMounted']
- const onRenderTracked: typeof import('vue')['onRenderTracked']
- const onRenderTriggered: typeof import('vue')['onRenderTriggered']
- const onScopeDispose: typeof import('vue')['onScopeDispose']
- const onServerPrefetch: typeof import('vue')['onServerPrefetch']
- const onUnmounted: typeof import('vue')['onUnmounted']
- const onUpdated: typeof import('vue')['onUpdated']
- const provide: typeof import('vue')['provide']
- const reactive: typeof import('vue')['reactive']
- const readonly: typeof import('vue')['readonly']
- const ref: typeof import('vue')['ref']
- const request: typeof import('./src/api/request')['default']
- const resolveComponent: typeof import('vue')['resolveComponent']
- const setActivePinia: typeof import('pinia')['setActivePinia']
- const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
- const shallowReactive: typeof import('vue')['shallowReactive']
- const shallowReadonly: typeof import('vue')['shallowReadonly']
- const shallowRef: typeof import('vue')['shallowRef']
- const storeToRefs: typeof import('pinia')['storeToRefs']
- const toRaw: typeof import('vue')['toRaw']
- const toRef: typeof import('vue')['toRef']
- const toRefs: typeof import('vue')['toRefs']
- const toValue: typeof import('vue')['toValue']
- const triggerRef: typeof import('vue')['triggerRef']
- const types: typeof import('./src/api/types')['default']
- const unref: typeof import('vue')['unref']
- const useAttrs: typeof import('vue')['useAttrs']
- const useCssModule: typeof import('vue')['useCssModule']
- const useCssVars: typeof import('vue')['useCssVars']
- const useDialog: typeof import('naive-ui')['useDialog']
- const useLink: typeof import('vue-router')['useLink']
- const useLoadingBar: typeof import('naive-ui')['useLoadingBar']
- const useLocaleHooks: typeof
import('./src/composables/locales')['useLocaleHooks']
- const useMessage: typeof import('naive-ui')['useMessage']
- const useNotification: typeof import('naive-ui')['useNotification']
- const useRoute: typeof import('vue-router')['useRoute']
- const useRouter: typeof import('vue-router')['useRouter']
- const useSlots: typeof import('vue')['useSlots']
- const watch: typeof import('vue')['watch']
- const watchEffect: typeof import('vue')['watchEffect']
- const watchPostEffect: typeof import('vue')['watchPostEffect']
- const watchSyncEffect: typeof import('vue')['watchSyncEffect']
-}
-// for type re-export
-declare global {
- // @ts-ignore
- export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey,
PropType, Ref, VNode, WritableComputedRef } from 'vue'
-}
diff --git a/paimon-web-ui/components.d.ts b/paimon-web-ui/components.d.ts
deleted file mode 100644
index f5a670e..0000000
--- a/paimon-web-ui/components.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/* 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. */
-
-/* eslint-disable */
-/* prettier-ignore */
-// @ts-nocheck
-// generated by unplugin-vue-components
-// We suggest you to commit this file into source control
-// Read more: https://github.com/vuejs/core/pull/3399
-export {}
-
-declare module 'vue' {
- export interface GlobalComponents {
- RouterLink: typeof import('vue-router')['RouterLink']
- RouterView: typeof import('vue-router')['RouterView']
- }
-}
diff --git a/paimon-web-ui/httpData/.gitignore
b/paimon-web-ui/httpData/.gitignore
deleted file mode 100644
index fb1e814..0000000
--- a/paimon-web-ui/httpData/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-openApiHistory/
-request/
-db.json
-httpHistory.json
-log.err.txt
-store.json
\ No newline at end of file
diff --git a/paimon-web-ui/httpData/apiWeb.json
b/paimon-web-ui/httpData/apiWeb.json
deleted file mode 100644
index b576de9..0000000
--- a/paimon-web-ui/httpData/apiWeb.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "paths": {},
- "disable": []
-}
\ No newline at end of file
diff --git a/paimon-web-ui/license.node.js b/paimon-web-ui/license.node.js
new file mode 100644
index 0000000..f9e16e3
--- /dev/null
+++ b/paimon-web-ui/license.node.js
@@ -0,0 +1,125 @@
+/* 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. */
+
+const fs = require('fs');
+const path = require('path');
+
+const filePath = path.resolve(__dirname, './src');
+
+const xmlLicenses = `
+<!--
+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.
+-->
+`
+
+const tsLicenses = `
+/* 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. */
+`
+
+function fileDisplay(filePath) {
+ fs.readdir(filePath, function (err, files) {
+ if (err) {
+ console.warn('get file list error: ' + err);
+ } else {
+ for (let index = 0; index < files.length; index++) {
+ const filename = files[index];
+ const filedir = path.join(filePath, filename);
+ fs.stat(filedir, function (eror, stats) {
+ if (eror) {
+ console.warn('get file stat error: ' + eror);
+ } else {
+ const isFile = stats.isFile();
+ const isDir = stats.isDirectory();
+ if (isFile) {
+ const res = read(filedir);
+ const fileName = path.basename(filedir);
+ res && console.log('success file: ' + fileName);
+ }
+ if (isDir) {
+ fileDisplay(filedir)
+ }
+ }
+ })
+ }
+ }
+ });
+}
+
+function read(fPath) {
+ var data = fs.readFileSync(fPath, "utf-8");
+ return write(data, fPath)
+}
+
+function write(data, fPath) {
+ if (data.includes('Apache') && data.includes('License')) {
+ return true
+ }
+
+ const fileName = path.basename(fPath);
+ let license;
+ if (fileName.endsWith('.ts') || fileName.endsWith('.js') ||
fileName.endsWith('.css') || fileName.endsWith('.scss')) {
+ license = tsLicenses
+ }
+ if (fileName.endsWith('.vue') || fileName.endsWith('.html')) {
+ license = xmlLicenses
+ }
+
+
+ if (license) {
+ const newFile = `${license}\n${data}`
+
+ fs.writeFileSync(`${fPath}`, newFile, { encoding: 'utf-8' });
+ return true
+ }
+
+ else {
+ console.error(`not found license in file: ${fPath}. Please add more
license manually!`)
+ return false
+ }
+}
+
+fileDisplay(filePath);
diff --git a/paimon-web-ui/package.json b/paimon-web-ui/package.json
index e5105cc..ebb6a17 100644
--- a/paimon-web-ui/package.json
+++ b/paimon-web-ui/package.json
@@ -10,7 +10,8 @@
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix
--ignore-path .gitignore",
+ "lint": "eslint src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts
--fix",
+ "gen:license": "node ./license.node.js",
"format": "prettier --write src/"
},
"dependencies": {
diff --git a/paimon-web-ui/pom.xml b/paimon-web-ui/pom.xml
new file mode 100644
index 0000000..4ea96da
--- /dev/null
+++ b/paimon-web-ui/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.paimon</groupId>
+ <artifactId>paimon-webui</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>paimon-web-ui</artifactId>
+ <packaging>pom</packaging>
+ <name>Paimon : Web : UI</name>
+
+ <properties>
+ <node.version>v18.0.0</node.version>
+ <npm.version>9.4.1</npm.version>
+ <frontend-maven-plugin.version>1.12.0</frontend-maven-plugin.version>
+ </properties>
+
+ <profiles>
+ <profile>
+ <id>web</id>
+ <build>
+ <finalName>${project.artifactId}-${project.version}</finalName>
+ <plugins>
+ <plugin>
+ <groupId>com.github.eirslett</groupId>
+ <artifactId>frontend-maven-plugin</artifactId>
+ <version>${frontend-maven-plugin.version}</version>
+ <executions>
+ <execution>
+ <id>install node and npm</id>
+ <goals>
+ <goal>install-node-and-npm</goal>
+ </goals>
+ <configuration>
+ <nodeVersion>${node.version}</nodeVersion>
+ <npmVersion>${npm.version}</npmVersion>
+ </configuration>
+ </execution>
+ <execution>
+ <id>npm install</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <arguments>install --force</arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>npm fund</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <arguments>fund</arguments>
+ </configuration>
+ </execution>
+ <execution>
+ <id>npm run build</id>
+ <goals>
+ <goal>npm</goal>
+ </goals>
+ <configuration>
+ <arguments>run build</arguments>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
\ No newline at end of file
diff --git a/paimon-web-ui/src/assets/logo.svg
b/paimon-web-ui/src/assets/logo.svg
index ffb904f..3fe437b 100644
--- a/paimon-web-ui/src/assets/logo.svg
+++ b/paimon-web-ui/src/assets/logo.svg
@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
<svg id="_图层_2" data-name="图层 2" xmlns="http://www.w3.org/2000/svg" viewBox="0
0 307.34 218.61">
<defs>
<style>
diff --git a/paimon-web-ui/tsconfig.node.json b/paimon-web-ui/tsconfig.node.json
index dee96be..7dde418 100644
--- a/paimon-web-ui/tsconfig.node.json
+++ b/paimon-web-ui/tsconfig.node.json
@@ -12,5 +12,6 @@
"module": "ESNext",
"moduleResolution": "Bundler",
"types": ["node"]
- }
+ },
+ "exclude": ["./license.node.js"]
}