mysqlsyncr 1.0.44 → 1.0.48
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/compare.js +2 -2
- package/src/index.js +7 -2
- 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.48",
|
|
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/compare.js
CHANGED
|
@@ -24,7 +24,7 @@ export const compareAllDatabases = async (connection, inputDir, update = false,
|
|
|
24
24
|
|
|
25
25
|
// Note missing databases and prepare to create them
|
|
26
26
|
for (const database of expectedDatabases) {
|
|
27
|
-
if(options.database && options.database !== database){
|
|
27
|
+
if(options && options.database && options.database !== database){
|
|
28
28
|
continue;
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -56,7 +56,7 @@ export const compareAllDatabases = async (connection, inputDir, update = false,
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
for (const database of expectedDatabases) {
|
|
59
|
-
if(options.database && options.database !== database){
|
|
59
|
+
if(options && options.database && options.database !== database){
|
|
60
60
|
continue;
|
|
61
61
|
}
|
|
62
62
|
if(missingDatabases.includes(database)){
|
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') {
|
|
@@ -105,4 +110,4 @@ export { DBStructureChecker, dumpAllDatabases, compareAllDatabases, startApiServ
|
|
|
105
110
|
});
|
|
106
111
|
}
|
|
107
112
|
})();
|
|
108
|
-
|
|
113
|
+
}
|
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};
|