mysqlsyncr 1.0.42 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +44 -44
- package/src/index.js +6 -1
- package/ui/.editorconfig +7 -7
- package/ui/.prettierrc.json +5 -5
- package/ui/README.md +40 -40
- package/ui/dist/spa/assets/{MainLayout-CJQ1jgg8.js → MainLayout-Cft1OeWe.js} +1 -1
- package/ui/dist/spa/assets/axios-CNk6rzlZ.js +1 -0
- package/ui/dist/spa/assets/index-DomDZ6ci.js +30 -0
- package/ui/dist/spa/assets/{index-BvnAI_tZ.css → index-kXpA8n8r.css} +2 -2
- package/ui/dist/spa/index.html +2 -2
- package/ui/eslint.config.js +73 -73
- package/ui/index.html +21 -21
- package/ui/jsconfig.json +2 -2
- package/ui/package.json +42 -42
- package/ui/postcss.config.js +29 -29
- package/ui/quasar.config.js +216 -216
- package/ui/src/App.vue +7 -7
- package/ui/src/assets/quasar-logo-vertical.svg +14 -14
- package/ui/src/boot/axios.js +6 -14
- package/ui/src/components/EssentialLink.vue +44 -44
- package/ui/src/components/FolderBrowser.vue +2 -3
- package/ui/src/css/app.scss +1 -1
- package/ui/src/css/quasar.variables.scss +25 -25
- package/ui/src/layouts/MainLayout.vue +13 -13
- package/ui/src/pages/ApplyChanges.vue +46 -46
- package/ui/src/pages/CompareDatabase.vue +57 -57
- package/ui/src/pages/DatabaseManager.vue +42 -42
- package/ui/src/pages/DumpDatabase.vue +41 -41
- package/ui/src/pages/ErrorNotFound.vue +27 -27
- package/ui/src/pages/MainComponent copy.vue +322 -322
- package/ui/src/pages/MainComponent.vue +36 -23
- package/ui/src/router/index.js +30 -30
- package/ui/src/router/routes.js +20 -20
- package/ui/src/stores/example-store.js +21 -21
- package/ui/src/stores/index.js +20 -20
- package/ui/dist/spa/assets/axios-DrqNXj9v.js +0 -1
- package/ui/dist/spa/assets/index-NGPmhjJD.js +0 -30
package/package.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "mysqlsyncr",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "src/index.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"test": "jest",
|
|
9
|
-
"test:watch": "jest --watch",
|
|
10
|
-
"start": "node src/index.js"
|
|
11
|
-
},
|
|
12
|
-
"bin": {
|
|
13
|
-
"mysqlsyncr": "src/index.js"
|
|
14
|
-
},
|
|
15
|
-
"author": "",
|
|
16
|
-
"license": "ISC",
|
|
17
|
-
"repository": {
|
|
18
|
-
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/Craigzyc/mysqlsyncr.git"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"cors": "^2.8.5",
|
|
23
|
-
"express": "^4.21.2",
|
|
24
|
-
"mysql2": "^3.12.0",
|
|
25
|
-
"open": "^10.1.0",
|
|
26
|
-
"yargs": "^17.7.2"
|
|
27
|
-
},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"@babel/preset-env": "^7.26.0",
|
|
30
|
-
"babel-jest": "^29.7.0",
|
|
31
|
-
"jest": "^29.0.0"
|
|
32
|
-
},
|
|
33
|
-
"babel": {
|
|
34
|
-
"presets": [
|
|
35
|
-
"@babel/preset-env"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
"jest": {
|
|
39
|
-
"transform": {
|
|
40
|
-
"^.+\\.js$": "babel-jest"
|
|
41
|
-
},
|
|
42
|
-
"testEnvironment": "node"
|
|
43
|
-
}
|
|
44
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mysqlsyncr",
|
|
3
|
+
"version": "1.0.46",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"test": "jest",
|
|
9
|
+
"test:watch": "jest --watch",
|
|
10
|
+
"start": "node src/index.js"
|
|
11
|
+
},
|
|
12
|
+
"bin": {
|
|
13
|
+
"mysqlsyncr": "src/index.js"
|
|
14
|
+
},
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/Craigzyc/mysqlsyncr.git"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"cors": "^2.8.5",
|
|
23
|
+
"express": "^4.21.2",
|
|
24
|
+
"mysql2": "^3.12.0",
|
|
25
|
+
"open": "^10.1.0",
|
|
26
|
+
"yargs": "^17.7.2"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@babel/preset-env": "^7.26.0",
|
|
30
|
+
"babel-jest": "^29.7.0",
|
|
31
|
+
"jest": "^29.0.0"
|
|
32
|
+
},
|
|
33
|
+
"babel": {
|
|
34
|
+
"presets": [
|
|
35
|
+
"@babel/preset-env"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"jest": {
|
|
39
|
+
"transform": {
|
|
40
|
+
"^.+\\.js$": "babel-jest"
|
|
41
|
+
},
|
|
42
|
+
"testEnvironment": "node"
|
|
43
|
+
}
|
|
44
|
+
}
|
package/src/index.js
CHANGED
|
@@ -9,6 +9,7 @@ import { dumpAllDatabases } from './dump.js';
|
|
|
9
9
|
import { compareAllDatabases } from './compare.js';
|
|
10
10
|
import { startApiServer } from './socketServer.js'; // Import the new socket server
|
|
11
11
|
import open from 'open';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
12
13
|
|
|
13
14
|
class DBStructureChecker {
|
|
14
15
|
constructor(config, targetDatabase = null) {
|
|
@@ -48,8 +49,12 @@ class DBStructureChecker {
|
|
|
48
49
|
export { DBStructureChecker, dumpAllDatabases, compareAllDatabases, startApiServer };
|
|
49
50
|
|
|
50
51
|
// Only run this if this is the main module
|
|
51
|
-
|
|
52
|
+
const isMain = fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
|
|
53
|
+
|
|
54
|
+
if (isMain) {
|
|
52
55
|
(async () => {
|
|
56
|
+
console.log(`meta: ${import.meta.url}`)
|
|
57
|
+
console.log(`argv: ${process.argv[1]}`)
|
|
53
58
|
const { command, config, argv } = cli();
|
|
54
59
|
console.log("MySQLsyncr started via command line")
|
|
55
60
|
if (command === 'ui') {
|
package/ui/.editorconfig
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}]
|
|
2
|
-
charset = utf-8
|
|
3
|
-
indent_size = 4
|
|
4
|
-
indent_style = space
|
|
5
|
-
end_of_line = lf
|
|
6
|
-
insert_final_newline = true
|
|
7
|
-
trim_trailing_whitespace = true
|
|
1
|
+
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue}]
|
|
2
|
+
charset = utf-8
|
|
3
|
+
indent_size = 4
|
|
4
|
+
indent_style = space
|
|
5
|
+
end_of_line = lf
|
|
6
|
+
insert_final_newline = true
|
|
7
|
+
trim_trailing_whitespace = true
|
package/ui/.prettierrc.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json.schemastore.org/prettierrc",
|
|
3
|
-
"semi": false,
|
|
4
|
-
"singleQuote": true,
|
|
5
|
-
"printWidth": 100
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/prettierrc",
|
|
3
|
+
"semi": false,
|
|
4
|
+
"singleQuote": true,
|
|
5
|
+
"printWidth": 100
|
|
6
6
|
}
|
package/ui/README.md
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# MySQLsyncr (mysqlsyncr)
|
|
2
|
-
|
|
3
|
-
A simple ui for the sync features in mysqlsyncr
|
|
4
|
-
|
|
5
|
-
## Install the dependencies
|
|
6
|
-
```bash
|
|
7
|
-
yarn
|
|
8
|
-
# or
|
|
9
|
-
npm install
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
|
13
|
-
```bash
|
|
14
|
-
quasar dev
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
### Lint the files
|
|
19
|
-
```bash
|
|
20
|
-
yarn lint
|
|
21
|
-
# or
|
|
22
|
-
npm run lint
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
### Format the files
|
|
27
|
-
```bash
|
|
28
|
-
yarn format
|
|
29
|
-
# or
|
|
30
|
-
npm run format
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
### Build the app for production
|
|
35
|
-
```bash
|
|
36
|
-
quasar build
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Customize the configuration
|
|
40
|
-
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).
|
|
1
|
+
# MySQLsyncr (mysqlsyncr)
|
|
2
|
+
|
|
3
|
+
A simple ui for the sync features in mysqlsyncr
|
|
4
|
+
|
|
5
|
+
## Install the dependencies
|
|
6
|
+
```bash
|
|
7
|
+
yarn
|
|
8
|
+
# or
|
|
9
|
+
npm install
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### Start the app in development mode (hot-code reloading, error reporting, etc.)
|
|
13
|
+
```bash
|
|
14
|
+
quasar dev
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Lint the files
|
|
19
|
+
```bash
|
|
20
|
+
yarn lint
|
|
21
|
+
# or
|
|
22
|
+
npm run lint
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Format the files
|
|
27
|
+
```bash
|
|
28
|
+
yarn format
|
|
29
|
+
# or
|
|
30
|
+
npm run format
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Build the app for production
|
|
35
|
+
```bash
|
|
36
|
+
quasar build
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Customize the configuration
|
|
40
|
+
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as L,i as I,e as P,l as D,p as N,b as g,h as m,f as J,g as C,j as X,s as Y,w as _,k as Z,o as T,m as H,n as V,q,r as ee,t as te,u as y,v as A,x as F,y as R,z as x,A as ne,B as
|
|
1
|
+
import{c as L,i as I,e as P,l as D,p as N,b as g,h as m,f as J,g as C,j as X,s as Y,w as _,k as Z,o as T,m as H,n as V,q,r as ee,t as te,u as y,v as A,x as F,y as R,z as x,A as ne,B as ie,_ as oe,C as le,D as re,E as ae,F as k,G as B}from"./index-DomDZ6ci.js";const se=L({name:"QPageContainer",setup(e,{slots:p}){const{proxy:{$q:n}}=C(),t=I(D,P);if(t===P)return console.error("QPageContainer needs to be child of QLayout"),P;N(X,!0);const r=g(()=>{const a={};return t.header.space===!0&&(a.paddingTop=`${t.header.size}px`),t.right.space===!0&&(a[`padding${n.lang.rtl===!0?"Left":"Right"}`]=`${t.right.size}px`),t.footer.space===!0&&(a.paddingBottom=`${t.footer.size}px`),t.left.space===!0&&(a[`padding${n.lang.rtl===!0?"Right":"Left"}`]=`${t.left.size}px`),a});return()=>m("div",{class:"q-page-container",style:r.value},J(p.default))}}),{passive:M}=q,ce=["both","horizontal","vertical"],ue=L({name:"QScrollObserver",props:{axis:{type:String,validator:e=>ce.includes(e),default:"vertical"},debounce:[String,Number],scrollTarget:Y},emits:["scroll"],setup(e,{emit:p}){const n={position:{top:0,left:0},direction:"down",directionChanged:!1,delta:{top:0,left:0},inflectionPoint:{top:0,left:0}};let t=null,r,a;_(()=>e.scrollTarget,()=>{l(),h()});function s(){t!==null&&t();const c=Math.max(0,ee(r)),w=te(r),d={top:c-n.position.top,left:w-n.position.left};if(e.axis==="vertical"&&d.top===0||e.axis==="horizontal"&&d.left===0)return;const z=Math.abs(d.top)>=Math.abs(d.left)?d.top<0?"up":"down":d.left<0?"left":"right";n.position={top:c,left:w},n.directionChanged=n.direction!==z,n.delta=d,n.directionChanged===!0&&(n.direction=z,n.inflectionPoint=n.position),p("scroll",{...n})}function h(){r=Z(a,e.scrollTarget),r.addEventListener("scroll",o,M),o(!0)}function l(){r!==void 0&&(r.removeEventListener("scroll",o,M),r=void 0)}function o(c){if(c===!0||e.debounce===0||e.debounce==="0")s();else if(t===null){const[w,d]=e.debounce?[setTimeout(s,e.debounce),clearTimeout]:[requestAnimationFrame(s),cancelAnimationFrame];t=()=>{d(w),t=null}}}const{proxy:v}=C();return _(()=>v.$q.lang.rtl,s),T(()=>{a=v.$el.parentNode,h()}),H(()=>{t!==null&&t(),l()}),Object.assign(v,{trigger:o,getPosition:()=>n}),V}});function de(){const e=y(!A.value);return e.value===!1&&T(()=>{e.value=!0}),{isHydrated:e}}const K=typeof ResizeObserver<"u",W=K===!0?{}:{style:"display:block;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;",url:"about:blank"},j=L({name:"QResizeObserver",props:{debounce:{type:[String,Number],default:100}},emits:["resize"],setup(e,{emit:p}){let n=null,t,r={width:-1,height:-1};function a(l){l===!0||e.debounce===0||e.debounce==="0"?s():n===null&&(n=setTimeout(s,e.debounce))}function s(){if(n!==null&&(clearTimeout(n),n=null),t){const{offsetWidth:l,offsetHeight:o}=t;(l!==r.width||o!==r.height)&&(r={width:l,height:o},p("resize",r))}}const{proxy:h}=C();if(h.trigger=a,K===!0){let l;const o=v=>{t=h.$el.parentNode,t?(l=new ResizeObserver(a),l.observe(t),s()):v!==!0&&F(()=>{o(!0)})};return T(()=>{o()}),H(()=>{n!==null&&clearTimeout(n),l!==void 0&&(l.disconnect!==void 0?l.disconnect():t&&l.unobserve(t))}),V}else{let l=function(){n!==null&&(clearTimeout(n),n=null),c!==void 0&&(c.removeEventListener!==void 0&&c.removeEventListener("resize",a,q.passive),c=void 0)},o=function(){l(),t&&t.contentDocument&&(c=t.contentDocument.defaultView,c.addEventListener("resize",a,q.passive),s())};const{isHydrated:v}=de();let c;return T(()=>{F(()=>{t=h.$el,t&&o()})}),H(l),()=>{if(v.value===!0)return m("object",{class:"q--avoid-card-border",style:W.style,tabindex:-1,type:"text/html",data:W.url,"aria-hidden":"true",onLoad:o})}}}}),fe=L({name:"QLayout",props:{container:Boolean,view:{type:String,default:"hhh lpr fff",validator:e=>/^(h|l)h(h|r) lpr (f|l)f(f|r)$/.test(e.toLowerCase())},onScroll:Function,onScrollHeight:Function,onResize:Function},setup(e,{slots:p,emit:n}){const{proxy:{$q:t}}=C(),r=y(null),a=y(t.screen.height),s=y(e.container===!0?0:t.screen.width),h=y({position:0,direction:"down",inflectionPoint:0}),l=y(0),o=y(A.value===!0?0:R()),v=g(()=>"q-layout q-layout--"+(e.container===!0?"containerized":"standard")),c=g(()=>e.container===!1?{minHeight:t.screen.height+"px"}:null),w=g(()=>o.value!==0?{[t.lang.rtl===!0?"left":"right"]:`${o.value}px`}:null),d=g(()=>o.value!==0?{[t.lang.rtl===!0?"right":"left"]:0,[t.lang.rtl===!0?"left":"right"]:`-${o.value}px`,width:`calc(100% + ${o.value}px)`}:null);function z(i){if(e.container===!0||document.qScrollPrevented!==!0){const u={position:i.position.top,direction:i.direction,directionChanged:i.directionChanged,inflectionPoint:i.inflectionPoint.top,delta:i.delta.top};h.value=u,e.onScroll!==void 0&&n("scroll",u)}}function U(i){const{height:u,width:b}=i;let f=!1;a.value!==u&&(f=!0,a.value=u,e.onScrollHeight!==void 0&&n("scrollHeight",u),E()),s.value!==b&&(f=!0,s.value=b),f===!0&&e.onResize!==void 0&&n("resize",i)}function G({height:i}){l.value!==i&&(l.value=i,E())}function E(){if(e.container===!0){const i=a.value>l.value?R():0;o.value!==i&&(o.value=i)}}let S=null;const O={instances:{},view:g(()=>e.view),isContainer:g(()=>e.container),rootRef:r,height:a,containerHeight:l,scrollbarWidth:o,totalWidth:g(()=>s.value+o.value),rows:g(()=>{const i=e.view.toLowerCase().split(" ");return{top:i[0].split(""),middle:i[1].split(""),bottom:i[2].split("")}}),header:x({size:0,offset:0,space:!1}),right:x({size:300,offset:0,space:!1}),footer:x({size:0,offset:0,space:!1}),left:x({size:300,offset:0,space:!1}),scroll:h,animate(){S!==null?clearTimeout(S):document.body.classList.add("q-body--layout-animate"),S=setTimeout(()=>{S=null,document.body.classList.remove("q-body--layout-animate")},155)},update(i,u,b){O[i][u]=b}};if(N(D,O),R()>0){let i=function(){f=null,$.classList.remove("hide-scrollbar")},u=function(){if(f===null){if($.scrollHeight>t.screen.height)return;$.classList.add("hide-scrollbar")}else clearTimeout(f);f=setTimeout(i,300)},b=function(Q){f!==null&&Q==="remove"&&(clearTimeout(f),i()),window[`${Q}EventListener`]("resize",u)},f=null;const $=document.body;_(()=>e.container!==!0?"add":"remove",b),e.container!==!0&&b("add"),ne(()=>{b("remove")})}return()=>{const i=ie(p.default,[m(ue,{onScroll:z}),m(j,{onResize:U})]),u=m("div",{class:v.value,style:c.value,ref:e.container===!0?void 0:r,tabindex:-1},i);return e.container===!0?m("div",{class:"q-layout-container overflow-hidden",ref:r},[m(j,{onResize:G}),m("div",{class:"absolute-full",style:w.value},[m("div",{class:"scroll",style:d.value},[u])])]):u}}}),he={};function ve(e,p){const n=le("router-view");return re(),ae(fe,{view:"lHh Lpr lFf"},{default:k(()=>[B(se,null,{default:k(()=>[B(n)]),_:1})]),_:1})}const me=oe(he,[["render",ve]]);export{me as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as e,a}from"./index-DomDZ6ci.js";const i=a.create({baseURL:"/"}),t=e(({app:o})=>{o.config.globalProperties.$axios=a,o.config.globalProperties.$api=i});export{i as api,t as default};
|