refs #5483 Automatic fixtures, refactor and fixes
This commit is contained in:
parent
e126860ca0
commit
276b295f3f
16
README.md
16
README.md
|
@ -13,6 +13,11 @@ development, so any help is welcomed! Feel free to contribute.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
Required libraries to build with *node-gyp*.
|
||||||
|
```text
|
||||||
|
# apt install libkrb5-dev libssl-dev
|
||||||
|
```
|
||||||
|
|
||||||
It's recommended to install the package globally.
|
It's recommended to install the package globally.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
|
@ -148,9 +153,10 @@ routines.
|
||||||
|
|
||||||
You can create your local fixture and structure files.
|
You can create your local fixture and structure files.
|
||||||
|
|
||||||
* *dump/beforeDump.sql*
|
* *dump/dump.before.sql*
|
||||||
* *dump/afterDump.sql*
|
* *dump/dump.after.sql*
|
||||||
* *dump/fixtures.sql*
|
* *dump/fixtures.before.sql*
|
||||||
|
* *dump/fixtures.after.sql*
|
||||||
|
|
||||||
## Versioning commands
|
## Versioning commands
|
||||||
|
|
||||||
|
@ -180,7 +186,7 @@ When *--checkout* option is provided, it does the following before export:
|
||||||
Applies versions and routine changes into database.
|
Applies versions and routine changes into database.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
$ myt push [<remote>] [-f|--force] [-c|--commit] [-s|--sums]
|
$ myt push [<remote>] [-f|--force] [-c|--commit] [-s|--sums] [-t|--triggers]
|
||||||
```
|
```
|
||||||
|
|
||||||
Commit is saved into database only if *--commit* option is provided, it
|
Commit is saved into database only if *--commit* option is provided, it
|
||||||
|
@ -221,7 +227,7 @@ Exports database structure and fixtures from remote into hidden files located
|
||||||
in *dump* folder. If no remote is specified *production* is used.
|
in *dump* folder. If no remote is specified *production* is used.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
$ myt dump [<remote>] [-l|--lock]
|
$ myt dump [<remote>] [-l|--lock] [-t|--triggers]
|
||||||
```
|
```
|
||||||
|
|
||||||
### fixtures
|
### fixtures
|
||||||
|
|
|
@ -2,7 +2,24 @@ versionSchema: myt
|
||||||
versionDigits: 5
|
versionDigits: 5
|
||||||
maxOldVersions: 20
|
maxOldVersions: 20
|
||||||
mockDate: false
|
mockDate: false
|
||||||
|
mockFunctions:
|
||||||
|
- mockTime
|
||||||
|
- mockUtcTime
|
||||||
sumViews: true
|
sumViews: true
|
||||||
|
privileges:
|
||||||
|
userTable: global_priv
|
||||||
|
userWhere: >-
|
||||||
|
JSON_VALUE(`Priv`, '$.is_role')
|
||||||
|
AND JSON_VALUE(`Priv`, '$.authentication_string') IS NULL
|
||||||
|
AND JSON_VALUE(`Priv`, '$.mysql_old_password') IS NULL
|
||||||
|
AND JSON_VALUE(`Priv`, '$.mysql_native_password') IS NULL
|
||||||
|
tables:
|
||||||
|
- db
|
||||||
|
- tables_priv
|
||||||
|
- columns_priv
|
||||||
|
- procs_priv
|
||||||
|
where: >-
|
||||||
|
`Host` = ''
|
||||||
schemas:
|
schemas:
|
||||||
- myt
|
- myt
|
||||||
fixtures:
|
fixtures:
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/node
|
||||||
|
|
||||||
|
require('require-yaml');
|
||||||
|
const mysql = require('mysql2/promise');
|
||||||
|
const {fixtures} = require(`${process.cwd()}/myt.config.yml`);
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
host: 'localhost',
|
||||||
|
user: 'root',
|
||||||
|
password: 'root'
|
||||||
|
};
|
||||||
|
|
||||||
|
async function connectAndQuery() {
|
||||||
|
try {
|
||||||
|
const connection = await mysql.createConnection(config);
|
||||||
|
|
||||||
|
// Get schemas
|
||||||
|
|
||||||
|
const [schemaResults] = await connection.query('SHOW DATABASES');
|
||||||
|
const schemaNames = schemaResults.map(r => r.Database);
|
||||||
|
|
||||||
|
// Filter system schemas
|
||||||
|
|
||||||
|
const systemSchemas = ['mysql', 'sys', 'information_schema', 'performance_schema'];
|
||||||
|
const userSchemas = schemaNames.filter(s => !systemSchemas.includes(s));
|
||||||
|
|
||||||
|
if (userSchemas.length === 0) {
|
||||||
|
console.log('There are no user schemas with tables that have records.');
|
||||||
|
connection.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get tables with records
|
||||||
|
|
||||||
|
userSchemas.sort((a, b) => a.localeCompare(b));
|
||||||
|
for (const schemaName of userSchemas) {
|
||||||
|
const [tableResults] = await connection.query(
|
||||||
|
`SELECT TABLE_NAME tableName
|
||||||
|
FROM information_schema.TABLES
|
||||||
|
WHERE TABLE_SCHEMA = ?
|
||||||
|
AND TABLE_TYPE <> 'VIEW'`,
|
||||||
|
[schemaName]
|
||||||
|
);
|
||||||
|
const tableNames = tableResults.map(r => r.tableName);
|
||||||
|
if (tableNames.length === 0) continue;
|
||||||
|
|
||||||
|
const schemaFixtures = new Set(fixtures[schemaName]);
|
||||||
|
const nonEmptyTables = [];
|
||||||
|
|
||||||
|
for (const tableName of tableNames) {
|
||||||
|
if (schemaFixtures.has(tableName)) continue;
|
||||||
|
try {
|
||||||
|
const [[row]] = await connection.query(
|
||||||
|
`SELECT COUNT(*) \`count\` FROM ??.??`,
|
||||||
|
[schemaName, tableName]
|
||||||
|
);
|
||||||
|
if (row.count == 0) continue;
|
||||||
|
if (!fixtures[schemaName]?.[tableName])
|
||||||
|
nonEmptyTables.push(tableName);
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error:', err.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nonEmptyTables.sort((a, b) => a.localeCompare(b));
|
||||||
|
if (nonEmptyTables.length) {
|
||||||
|
console.log(`${schemaName}:`);
|
||||||
|
for (const tableName of nonEmptyTables)
|
||||||
|
console.log(` - ${tableName}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.end();
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Error:', err.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
connectAndQuery();
|
|
@ -10,4 +10,10 @@ module.exports = class MytCommand {
|
||||||
async run(myt, opts) {
|
async run(myt, opts) {
|
||||||
throw new Error('run command not defined');
|
throw new Error('run command not defined');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emit(event) {
|
||||||
|
const messages = this.constructor.messages;
|
||||||
|
if (messages && messages[event])
|
||||||
|
console.log(messages[event]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,12 +8,11 @@ module.exports = class Dumper {
|
||||||
this.opts = opts;
|
this.opts = opts;
|
||||||
}
|
}
|
||||||
|
|
||||||
async init(dumpFile) {
|
async init(dumpDir, dumpFile) {
|
||||||
const dumpDir = this.opts.dumpDir;
|
|
||||||
if (!await fs.pathExists(dumpDir))
|
if (!await fs.pathExists(dumpDir))
|
||||||
await fs.mkdir(dumpDir);
|
await fs.mkdir(dumpDir, {recursive: true});
|
||||||
|
|
||||||
const dumpPath = path.join(dumpDir, dumpFile);
|
const dumpPath = path.join(dumpDir, `${dumpFile}.sql`);
|
||||||
|
|
||||||
// FIXME: If it's called after docker.build() statement it creates an
|
// FIXME: If it's called after docker.build() statement it creates an
|
||||||
// "invalid" WriteStream
|
// "invalid" WriteStream
|
||||||
|
@ -28,6 +27,10 @@ module.exports = class Dumper {
|
||||||
this.dumpStream = dumpStream;
|
this.dumpStream = dumpStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async end() {
|
||||||
|
await this.dumpStream.end();
|
||||||
|
}
|
||||||
|
|
||||||
async use(schema) {
|
async use(schema) {
|
||||||
await this.dumpStream.write(
|
await this.dumpStream.write(
|
||||||
`USE ${SqlString.escapeId(schema, true)};\n`,
|
`USE ${SqlString.escapeId(schema, true)};\n`,
|
||||||
|
@ -36,7 +39,7 @@ module.exports = class Dumper {
|
||||||
}
|
}
|
||||||
|
|
||||||
async dumpFixtures(tables, replace, args) {
|
async dumpFixtures(tables, replace, args) {
|
||||||
const fixturesArgs = [
|
let fixturesArgs = [
|
||||||
'--no-create-info',
|
'--no-create-info',
|
||||||
'--skip-triggers',
|
'--skip-triggers',
|
||||||
'--skip-extended-insert',
|
'--skip-extended-insert',
|
||||||
|
@ -45,18 +48,40 @@ module.exports = class Dumper {
|
||||||
'--skip-set-charset',
|
'--skip-set-charset',
|
||||||
'--skip-comments',
|
'--skip-comments',
|
||||||
'--skip-tz-utc'
|
'--skip-tz-utc'
|
||||||
].concat(args);
|
]
|
||||||
|
if (args)
|
||||||
|
fixturesArgs = fixturesArgs.concat(args);
|
||||||
if (replace)
|
if (replace)
|
||||||
fixturesArgs.push('--replace');
|
fixturesArgs.push('--replace');
|
||||||
|
|
||||||
for (const schema in tables) {
|
for (const schema in tables) {
|
||||||
await this.use(schema);
|
|
||||||
const args = fixturesArgs.concat([schema], tables[schema]);
|
const args = fixturesArgs.concat([schema], tables[schema]);
|
||||||
await this.runDump('mysqldump', args, this.dumpStream);
|
await this.use(schema);
|
||||||
|
await this.runDump('mysqldump', args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async dumpPrivileges(tables, args, where) {
|
||||||
|
let privArgs = [
|
||||||
|
'--no-create-info',
|
||||||
|
'--skip-triggers',
|
||||||
|
'--insert-ignore',
|
||||||
|
'--skip-extended-insert',
|
||||||
|
'--skip-add-locks',
|
||||||
|
'--skip-set-charset',
|
||||||
|
'--skip-comments',
|
||||||
|
'--skip-tz-utc'
|
||||||
|
];
|
||||||
|
if (args)
|
||||||
|
privArgs = privArgs.concat(args);
|
||||||
|
if (where)
|
||||||
|
privArgs.push('--where', where);
|
||||||
|
args = privArgs.concat(['mysql'], tables);
|
||||||
|
|
||||||
|
await this.use('mysql');
|
||||||
|
await this.runDump('mysqldump', args);
|
||||||
|
}
|
||||||
|
|
||||||
async runDump(command, args) {
|
async runDump(command, args) {
|
||||||
const iniPath = path.join(this.opts.subdir || '', 'remotes', this.opts.iniFile);
|
const iniPath = path.join(this.opts.subdir || '', 'remotes', this.opts.iniFile);
|
||||||
const myArgs = [
|
const myArgs = [
|
||||||
|
@ -76,8 +101,4 @@ module.exports = class Dumper {
|
||||||
rm: true
|
rm: true
|
||||||
}, execOptions);
|
}, execOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
async end() {
|
|
||||||
await this.dumpStream.end();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
103
myt-dump.js
103
myt-dump.js
|
@ -1,13 +1,15 @@
|
||||||
const Myt = require('./myt');
|
const Myt = require('./myt');
|
||||||
const Command = require('./lib/command');
|
const Command = require('./lib/command');
|
||||||
const fs = require('fs-extra');
|
|
||||||
const Dumper = require('./lib/dumper');
|
const Dumper = require('./lib/dumper');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
class Dump extends Command {
|
class Dump extends Command {
|
||||||
static usage = {
|
static usage = {
|
||||||
description: 'Dumps structure and fixtures from remote',
|
description: 'Dumps structure and fixtures from remote',
|
||||||
params: {
|
params: {
|
||||||
lock: 'Whether to lock tables on dump'
|
lock: 'Whether to lock tables on dump',
|
||||||
|
triggers: 'Wether to include triggers into dump'
|
||||||
},
|
},
|
||||||
operand: 'remote'
|
operand: 'remote'
|
||||||
};
|
};
|
||||||
|
@ -17,54 +19,111 @@ class Dump extends Command {
|
||||||
remote: 'production'
|
remote: 'production'
|
||||||
},
|
},
|
||||||
alias: {
|
alias: {
|
||||||
lock: 'l'
|
lock: 'l',
|
||||||
|
triggers: 't'
|
||||||
},
|
},
|
||||||
boolean: [
|
boolean: [
|
||||||
'lock'
|
'lock',
|
||||||
|
'triggers'
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static messages = {
|
||||||
|
dumpStructure: 'Dumping structure.',
|
||||||
|
dumpData: 'Dumping data.',
|
||||||
|
dumpPrivileges: 'Dumping privileges.',
|
||||||
|
dumpTriggers: 'Dumping triggers.'
|
||||||
|
};
|
||||||
|
|
||||||
async run(myt, opts) {
|
async run(myt, opts) {
|
||||||
const dumper = new Dumper(opts);
|
let dumper;
|
||||||
await dumper.init('.dump.sql');
|
const dumpDataDir = path.join(opts.dumpDir, '.dump');
|
||||||
const baseArgs = [
|
const baseArgs = [
|
||||||
`--lock-tables=${opts.lock ? 'true' : 'false'}`
|
`--lock-tables=${opts.lock ? 'true' : 'false'}`
|
||||||
];
|
];
|
||||||
|
|
||||||
console.log('Dumping structure.');
|
await fs.remove(dumpDataDir);
|
||||||
|
|
||||||
|
// Structure
|
||||||
|
|
||||||
|
this.emit('dumpStructure');
|
||||||
|
|
||||||
|
dumper = new Dumper(opts);
|
||||||
|
await dumper.init(dumpDataDir, 'structure');
|
||||||
let dumpArgs = [
|
let dumpArgs = [
|
||||||
'--default-character-set=utf8',
|
'--default-character-set=utf8',
|
||||||
'--no-data',
|
'--no-data',
|
||||||
'--comments',
|
'--comments',
|
||||||
'--routines',
|
'--routines',
|
||||||
'--events',
|
'--events',
|
||||||
'--skip-triggers',
|
'--skip-triggers'
|
||||||
'--databases'
|
|
||||||
].concat(baseArgs);
|
].concat(baseArgs);
|
||||||
|
|
||||||
|
dumpArgs.push('--databases');
|
||||||
dumpArgs = dumpArgs.concat(opts.schemas);
|
dumpArgs = dumpArgs.concat(opts.schemas);
|
||||||
await dumper.runDump('docker-dump.sh', dumpArgs);
|
await dumper.runDump('docker-dump.sh', dumpArgs);
|
||||||
|
await dumper.end();
|
||||||
|
|
||||||
console.log('Dumping fixtures.');
|
// Data
|
||||||
|
|
||||||
|
this.emit('dumpData');
|
||||||
|
|
||||||
|
dumper = new Dumper(opts);
|
||||||
|
await dumper.init(dumpDataDir, 'data');
|
||||||
await dumper.dumpFixtures(opts.fixtures, false, baseArgs);
|
await dumper.dumpFixtures(opts.fixtures, false, baseArgs);
|
||||||
|
await dumper.end();
|
||||||
|
|
||||||
|
// Privileges
|
||||||
|
|
||||||
console.log('Dumping privileges.');
|
|
||||||
const privs = opts.privileges;
|
const privs = opts.privileges;
|
||||||
if (privs && Array.isArray(privs.tables)) {
|
if (privs) {
|
||||||
let args = [
|
this.emit('dumpPrivileges');
|
||||||
'--no-create-info',
|
|
||||||
'--skip-triggers',
|
|
||||||
'--insert-ignore',
|
|
||||||
'--complete-insert'
|
|
||||||
].concat(baseArgs);
|
|
||||||
if (privs.where) args.push('--where', privs.where);
|
|
||||||
args = args.concat(['mysql'], privs.tables);
|
|
||||||
|
|
||||||
await dumper.use('mysql');
|
dumper = new Dumper(opts);
|
||||||
await dumper.runDump('mysqldump', args);
|
await dumper.init(dumpDataDir, 'privileges');
|
||||||
|
|
||||||
|
const {tables, userTable, where} = privs;
|
||||||
|
|
||||||
|
if (tables)
|
||||||
|
await dumper.dumpPrivileges(tables, baseArgs, where);
|
||||||
|
|
||||||
|
if (userTable) {
|
||||||
|
let userWhere = '';
|
||||||
|
for (const cond of [where, privs.userWhere]) {
|
||||||
|
if (!cond) continue;
|
||||||
|
if (userWhere) userWhere += ' AND ';
|
||||||
|
userWhere += cond;
|
||||||
|
}
|
||||||
|
await dumper.dumpPrivileges([userTable], baseArgs, userWhere);
|
||||||
|
}
|
||||||
|
|
||||||
|
await dumper.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
await dumper.end();
|
await dumper.end();
|
||||||
|
|
||||||
|
// Triggers
|
||||||
|
|
||||||
|
if (opts.triggers) {
|
||||||
|
this.emit('dumpTriggers');
|
||||||
|
|
||||||
|
const dumper = new Dumper(opts);
|
||||||
|
await dumper.init(dumpDataDir, 'triggers');
|
||||||
|
|
||||||
|
let dumpArgs = [
|
||||||
|
'--default-character-set=utf8',
|
||||||
|
'--no-create-info',
|
||||||
|
'--no-data',
|
||||||
|
'--no-create-db',
|
||||||
|
'--skip-opt',
|
||||||
|
'--comments'
|
||||||
|
].concat(baseArgs);
|
||||||
|
|
||||||
|
dumpArgs.push('--databases');
|
||||||
|
dumpArgs = dumpArgs.concat(opts.schemas);
|
||||||
|
await dumper.runDump('mysqldump', dumpArgs);
|
||||||
|
await dumper.end();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ class Fixtures extends Command {
|
||||||
|
|
||||||
async run(myt, opts) {
|
async run(myt, opts) {
|
||||||
const dumper = new Dumper(opts);
|
const dumper = new Dumper(opts);
|
||||||
await dumper.init('fixtures.sql');
|
await dumper.init(opts.dumpDir, '.fixtures');
|
||||||
await dumper.dumpFixtures(opts.localFixtures, true);
|
await dumper.dumpFixtures(opts.localFixtures, false);
|
||||||
await dumper.end();
|
await dumper.end();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,4 +26,3 @@ module.exports = Fixtures;
|
||||||
|
|
||||||
if (require.main === module)
|
if (require.main === module)
|
||||||
new Myt().run(Fixtures);
|
new Myt().run(Fixtures);
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ class Pull extends Command {
|
||||||
const schemas = await fs.readdir(routinesDir);
|
const schemas = await fs.readdir(routinesDir);
|
||||||
for (const schema of schemas) {
|
for (const schema of schemas) {
|
||||||
if (opts.schemas.indexOf(schema) == -1)
|
if (opts.schemas.indexOf(schema) == -1)
|
||||||
await fs.remove(`${routinesDir}/${schema}`, {recursive: true});
|
await fs.remove(`${routinesDir}/${schema}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const schema in shaSums) {
|
for (const schema in shaSums) {
|
||||||
|
|
15
myt-push.js
15
myt-push.js
|
@ -311,7 +311,7 @@ class Push extends Command {
|
||||||
|
|
||||||
for (const change of changes)
|
for (const change of changes)
|
||||||
try {
|
try {
|
||||||
if (opts.trigger && change.type.name === 'TRIGGER')
|
if (opts.triggers && change.type.name === 'TRIGGER')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const schema = change.schema;
|
const schema = change.schema;
|
||||||
|
@ -325,7 +325,14 @@ class Push extends Command {
|
||||||
newSql = await fs.readFile(fullPath, 'utf8');
|
newSql = await fs.readFile(fullPath, 'utf8');
|
||||||
const oldSql = await engine.fetchRoutine(type, schema, name);
|
const oldSql = await engine.fetchRoutine(type, schema, name);
|
||||||
const oldSum = engine.getShaSum(type, schema, name);
|
const oldSum = engine.getShaSum(type, schema, name);
|
||||||
const isEqual = newSql == oldSql;
|
|
||||||
|
const isMockFn = type == 'function'
|
||||||
|
&& schema == opts.versionSchema
|
||||||
|
&& opts.remote == 'local'
|
||||||
|
&& opts.mockDate
|
||||||
|
&& opts.mockFunctions
|
||||||
|
&& opts.mockFunctions.indexOf(name) !== -1;
|
||||||
|
const ignore = newSql == oldSql || isMockFn;
|
||||||
|
|
||||||
let statusMsg;
|
let statusMsg;
|
||||||
if (exists && !oldSql)
|
if (exists && !oldSql)
|
||||||
|
@ -336,7 +343,7 @@ class Push extends Command {
|
||||||
statusMsg = '[·]'.yellow;
|
statusMsg = '[·]'.yellow;
|
||||||
|
|
||||||
let actionMsg;
|
let actionMsg;
|
||||||
if (isEqual)
|
if (ignore)
|
||||||
actionMsg = '[I]'.blue;
|
actionMsg = '[I]'.blue;
|
||||||
else
|
else
|
||||||
actionMsg = '[A]'.green;
|
actionMsg = '[A]'.green;
|
||||||
|
@ -348,7 +355,7 @@ class Push extends Command {
|
||||||
change.fullName
|
change.fullName
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!isEqual) {
|
if (!ignore) {
|
||||||
const scapedSchema = SqlString.escapeId(schema, true);
|
const scapedSchema = SqlString.escapeId(schema, true);
|
||||||
|
|
||||||
if (exists) {
|
if (exists) {
|
||||||
|
|
81
myt-run.js
81
myt-run.js
|
@ -36,9 +36,10 @@ class Run extends Command {
|
||||||
|
|
||||||
async run(myt, opts) {
|
async run(myt, opts) {
|
||||||
const dumpDir = opts.dumpDir;
|
const dumpDir = opts.dumpDir;
|
||||||
|
const dumpDataDir = path.join(dumpDir, '.dump');
|
||||||
const serverDir = path.join(__dirname, 'server');
|
const serverDir = path.join(__dirname, 'server');
|
||||||
|
|
||||||
if (!await fs.pathExists(`${dumpDir}/.dump.sql`))
|
if (!await fs.pathExists(`${dumpDataDir}/structure.sql`))
|
||||||
throw new Error('To run local database you have to create a dump first');
|
throw new Error('To run local database you have to create a dump first');
|
||||||
|
|
||||||
// Build base image
|
// Build base image
|
||||||
|
@ -118,41 +119,8 @@ class Run extends Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
await server.wait();
|
await server.wait();
|
||||||
|
|
||||||
// Apply changes
|
|
||||||
|
|
||||||
Object.assign(opts, {
|
|
||||||
commit: true,
|
|
||||||
trigger: true,
|
|
||||||
dbConfig
|
|
||||||
});
|
|
||||||
await myt.runCommand(Push, opts);
|
|
||||||
|
|
||||||
// Apply fixtures
|
|
||||||
|
|
||||||
console.log('Applying fixtures.');
|
|
||||||
await ct.exec(null,
|
|
||||||
'docker-import.sh',
|
|
||||||
['/workspace/dump/fixtures'],
|
|
||||||
'spawn',
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create triggers
|
|
||||||
|
|
||||||
console.log('Creating triggers.');
|
|
||||||
const conn = await myt.createConnection();
|
const conn = await myt.createConnection();
|
||||||
|
|
||||||
for (const schema of opts.schemas) {
|
|
||||||
const triggersPath = `${opts.routinesDir}/${schema}/triggers`;
|
|
||||||
if (!await fs.pathExists(triggersPath))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const triggersDir = await fs.readdir(triggersPath);
|
|
||||||
for (const triggerFile of triggersDir)
|
|
||||||
await connExt.queryFromFile(conn, `${triggersPath}/${triggerFile}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mock date functions
|
// Mock date functions
|
||||||
|
|
||||||
console.log('Mocking date functions.');
|
console.log('Mocking date functions.');
|
||||||
|
@ -167,6 +135,51 @@ class Run extends Command {
|
||||||
await connExt.multiQuery(conn, sql);
|
await connExt.multiQuery(conn, sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Apply changes
|
||||||
|
|
||||||
|
const hasTriggers = await fs.exists(`${dumpDataDir}/triggers.sql`);
|
||||||
|
|
||||||
|
Object.assign(opts, {
|
||||||
|
triggers: hasTriggers,
|
||||||
|
commit: true,
|
||||||
|
dbConfig
|
||||||
|
});
|
||||||
|
await myt.runCommand(Push, opts);
|
||||||
|
|
||||||
|
// Apply fixtures
|
||||||
|
|
||||||
|
console.log('Applying fixtures.');
|
||||||
|
const fixturesFiles = [
|
||||||
|
'fixtures.before',
|
||||||
|
'.fixtures',
|
||||||
|
'fixtures.after',
|
||||||
|
'fixtures.local'
|
||||||
|
]
|
||||||
|
for (const file of fixturesFiles) {
|
||||||
|
if (!await fs.exists(`${dumpDir}/${file}.sql`)) continue;
|
||||||
|
await ct.exec(null, 'docker-import.sh',
|
||||||
|
[`/workspace/dump/${file}`],
|
||||||
|
'spawn',
|
||||||
|
true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create triggers
|
||||||
|
|
||||||
|
if (!hasTriggers) {
|
||||||
|
console.log('Creating triggers.');
|
||||||
|
|
||||||
|
for (const schema of opts.schemas) {
|
||||||
|
const triggersPath = `${opts.routinesDir}/${schema}/triggers`;
|
||||||
|
if (!await fs.pathExists(triggersPath))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const triggersDir = await fs.readdir(triggersPath);
|
||||||
|
for (const triggerFile of triggersDir)
|
||||||
|
await connExt.queryFromFile(conn, `${triggersPath}/${triggerFile}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ class Version extends Command {
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
await conn.query('ROLLBACK');
|
await conn.query('ROLLBACK');
|
||||||
if (newVersionDir && await fs.pathExists(newVersionDir))
|
if (newVersionDir && await fs.pathExists(newVersionDir))
|
||||||
await fs.remove(newVersionDir, {recursive: true});
|
await fs.remove(newVersionDir);
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
23
myt.js
23
myt.js
|
@ -170,12 +170,29 @@ class Myt {
|
||||||
async load(opts) {
|
async load(opts) {
|
||||||
// Configuration file
|
// Configuration file
|
||||||
|
|
||||||
const config = require(`${__dirname}/assets/myt.default.yml`);
|
const defaultConfig = require(`${__dirname}/assets/myt.default.yml`);
|
||||||
|
const config = Object.assign({}, defaultConfig);
|
||||||
|
|
||||||
const configFile = 'myt.config.yml';
|
const configFile = 'myt.config.yml';
|
||||||
const configPath = path.join(opts.workspace, configFile);
|
const configPath = path.join(opts.workspace, configFile);
|
||||||
if (await fs.pathExists(configPath))
|
|
||||||
Object.assign(config, require(configPath));
|
if (await fs.pathExists(configPath)) {
|
||||||
|
const mergeKeys = new Set([
|
||||||
|
'privileges'
|
||||||
|
]);
|
||||||
|
|
||||||
|
const wsConfig = require(configPath);
|
||||||
|
for (const key in wsConfig) {
|
||||||
|
if (!mergeKeys.has(key)) {
|
||||||
|
config[key] = wsConfig[key];
|
||||||
|
} else {
|
||||||
|
config[key] = Object.assign({},
|
||||||
|
config[key],
|
||||||
|
wsConfig[key]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Object.assign(opts, config);
|
Object.assign(opts, config);
|
||||||
opts.configFile = configFile;
|
opts.configFile = configFile;
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
{
|
{
|
||||||
"name": "@verdnatura/myt",
|
"name": "@verdnatura/myt",
|
||||||
"version": "1.5.20",
|
"version": "1.5.21",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "@verdnatura/myt",
|
"name": "@verdnatura/myt",
|
||||||
"version": "1.5.20",
|
"version": "1.5.21",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sqltools/formatter": "^1.2.5",
|
"@sqltools/formatter": "^1.2.5",
|
||||||
"colors": "^1.4.0",
|
"colors": "^1.4.0",
|
||||||
"ejs": "^3.1.9",
|
"ejs": "^3.1.9",
|
||||||
"fs-extra": "^8.1.0",
|
"fs-extra": "^11.1.1",
|
||||||
"getopts": "^2.3.0",
|
"getopts": "^2.3.0",
|
||||||
"ini": "^1.3.8",
|
"ini": "^4.1.1",
|
||||||
"mysql2": "^2.3.3",
|
"mysql2": "^3.3.4",
|
||||||
"nodegit": "^0.27.0",
|
"nodegit": "^0.27.0",
|
||||||
"require-yaml": "^0.0.1",
|
"require-yaml": "^0.0.1",
|
||||||
"sha.js": "^2.4.11"
|
"sha.js": "^2.4.11"
|
||||||
|
@ -76,9 +76,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "18.11.9",
|
"version": "20.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.0.tgz",
|
||||||
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
|
"integrity": "sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/responselike": {
|
"node_modules/@types/responselike": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -166,9 +166,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/async": {
|
"node_modules/async": {
|
||||||
"version": "3.2.3",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
|
||||||
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
|
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
|
||||||
},
|
},
|
||||||
"node_modules/asynckit": {
|
"node_modules/asynckit": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
@ -184,9 +184,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/aws4": {
|
"node_modules/aws4": {
|
||||||
"version": "1.11.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
|
||||||
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
|
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
|
||||||
},
|
},
|
||||||
"node_modules/balanced-match": {
|
"node_modules/balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -251,9 +251,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cacheable-request": {
|
"node_modules/cacheable-request": {
|
||||||
"version": "7.0.2",
|
"version": "7.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
|
||||||
"integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
|
"integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"clone-response": "^1.0.2",
|
"clone-response": "^1.0.2",
|
||||||
"get-stream": "^5.1.0",
|
"get-stream": "^5.1.0",
|
||||||
|
@ -429,9 +429,9 @@
|
||||||
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
||||||
},
|
},
|
||||||
"node_modules/denque": {
|
"node_modules/denque": {
|
||||||
"version": "2.0.1",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
||||||
"integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
|
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10"
|
"node": ">=0.10"
|
||||||
}
|
}
|
||||||
|
@ -507,9 +507,9 @@
|
||||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||||
},
|
},
|
||||||
"node_modules/filelist": {
|
"node_modules/filelist": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||||
"integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==",
|
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimatch": "^5.0.1"
|
"minimatch": "^5.0.1"
|
||||||
}
|
}
|
||||||
|
@ -523,9 +523,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/filelist/node_modules/minimatch": {
|
"node_modules/filelist/node_modules/minimatch": {
|
||||||
"version": "5.0.1",
|
"version": "5.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
||||||
"integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
|
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^2.0.1"
|
"brace-expansion": "^2.0.1"
|
||||||
},
|
},
|
||||||
|
@ -560,16 +560,35 @@
|
||||||
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
|
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
|
||||||
},
|
},
|
||||||
"node_modules/fs-extra": {
|
"node_modules/fs-extra": {
|
||||||
"version": "8.1.0",
|
"version": "11.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
|
||||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
"integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"graceful-fs": "^4.2.0",
|
"graceful-fs": "^4.2.0",
|
||||||
"jsonfile": "^4.0.0",
|
"jsonfile": "^6.0.1",
|
||||||
"universalify": "^0.1.0"
|
"universalify": "^2.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6 <7 || >=8"
|
"node": ">=14.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fs-extra/node_modules/jsonfile": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"universalify": "^2.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fs-extra/node_modules/universalify": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fs-minipass": {
|
"node_modules/fs-minipass": {
|
||||||
|
@ -774,9 +793,12 @@
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
},
|
},
|
||||||
"node_modules/ini": {
|
"node_modules/ini": {
|
||||||
"version": "1.3.8",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
|
||||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==",
|
||||||
|
"engines": {
|
||||||
|
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-fullwidth-code-point": {
|
"node_modules/is-fullwidth-code-point": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -792,7 +814,7 @@
|
||||||
"node_modules/is-property": {
|
"node_modules/is-property": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||||
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
|
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
|
||||||
},
|
},
|
||||||
"node_modules/is-typedarray": {
|
"node_modules/is-typedarray": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -815,14 +837,14 @@
|
||||||
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
||||||
},
|
},
|
||||||
"node_modules/jake": {
|
"node_modules/jake": {
|
||||||
"version": "10.8.5",
|
"version": "10.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
|
||||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
"integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"async": "^3.2.3",
|
"async": "^3.2.3",
|
||||||
"chalk": "^4.0.2",
|
"chalk": "^4.0.2",
|
||||||
"filelist": "^1.0.1",
|
"filelist": "^1.0.4",
|
||||||
"minimatch": "^3.0.4"
|
"minimatch": "^3.1.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"jake": "bin/cli.js"
|
"jake": "bin/cli.js"
|
||||||
|
@ -868,9 +890,9 @@
|
||||||
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
|
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
|
||||||
},
|
},
|
||||||
"node_modules/json5": {
|
"node_modules/json5": {
|
||||||
"version": "2.2.2",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"json5": "lib/cli.js"
|
"json5": "lib/cli.js"
|
||||||
},
|
},
|
||||||
|
@ -914,9 +936,9 @@
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
},
|
},
|
||||||
"node_modules/long": {
|
"node_modules/long": {
|
||||||
"version": "4.0.0",
|
"version": "5.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
|
||||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
|
||||||
},
|
},
|
||||||
"node_modules/lowercase-keys": {
|
"node_modules/lowercase-keys": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
@ -927,14 +949,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lru-cache": {
|
"node_modules/lru-cache": {
|
||||||
"version": "6.0.0",
|
"version": "8.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
|
||||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
"integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
|
||||||
"dependencies": {
|
|
||||||
"yallist": "^4.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10"
|
"node": ">=16.14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mime-db": {
|
"node_modules/mime-db": {
|
||||||
|
@ -979,9 +998,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimist": {
|
"node_modules/minimist": {
|
||||||
"version": "1.2.7",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||||
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
|
@ -995,11 +1014,6 @@
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minipass/node_modules/yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
|
||||||
},
|
|
||||||
"node_modules/minizlib": {
|
"node_modules/minizlib": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
|
||||||
|
@ -1025,16 +1039,16 @@
|
||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
},
|
},
|
||||||
"node_modules/mysql2": {
|
"node_modules/mysql2": {
|
||||||
"version": "2.3.3",
|
"version": "3.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.3.4.tgz",
|
||||||
"integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
|
"integrity": "sha512-66K70s503WCweXmC8rKZ6oFpo+1qd96bx1QloaoYcSABwxvDzjGlqAHSxiDoXgBIv6YSTSZd6lvgWteYhBz7WA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"denque": "^2.0.1",
|
"denque": "^2.1.0",
|
||||||
"generate-function": "^2.3.1",
|
"generate-function": "^2.3.1",
|
||||||
"iconv-lite": "^0.6.3",
|
"iconv-lite": "^0.6.3",
|
||||||
"long": "^4.0.0",
|
"long": "^5.2.1",
|
||||||
"lru-cache": "^6.0.0",
|
"lru-cache": "^8.0.0",
|
||||||
"named-placeholders": "^1.1.2",
|
"named-placeholders": "^1.1.3",
|
||||||
"seq-queue": "^0.0.5",
|
"seq-queue": "^0.0.5",
|
||||||
"sqlstring": "^2.3.2"
|
"sqlstring": "^2.3.2"
|
||||||
},
|
},
|
||||||
|
@ -1043,30 +1057,24 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/named-placeholders": {
|
"node_modules/named-placeholders": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
|
||||||
"integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
|
"integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lru-cache": "^4.1.3"
|
"lru-cache": "^7.14.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.0.0"
|
"node": ">=12.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/named-placeholders/node_modules/lru-cache": {
|
"node_modules/named-placeholders/node_modules/lru-cache": {
|
||||||
"version": "4.1.5",
|
"version": "7.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
|
||||||
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
|
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
|
||||||
"dependencies": {
|
"engines": {
|
||||||
"pseudomap": "^1.0.2",
|
"node": ">=12"
|
||||||
"yallist": "^2.1.2"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/named-placeholders/node_modules/yallist": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
|
||||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
|
|
||||||
},
|
|
||||||
"node_modules/nan": {
|
"node_modules/nan": {
|
||||||
"version": "2.17.0",
|
"version": "2.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
|
||||||
|
@ -1361,11 +1369,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||||
},
|
},
|
||||||
"node_modules/pseudomap": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
|
||||||
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
|
|
||||||
},
|
|
||||||
"node_modules/psl": {
|
"node_modules/psl": {
|
||||||
"version": "1.9.0",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
||||||
|
@ -1381,9 +1384,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/punycode": {
|
"node_modules/punycode": {
|
||||||
"version": "2.1.1",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
||||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
|
@ -1415,10 +1418,15 @@
|
||||||
"rc": "cli.js"
|
"rc": "cli.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/rc/node_modules/ini": {
|
||||||
|
"version": "1.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||||
|
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
||||||
|
},
|
||||||
"node_modules/readable-stream": {
|
"node_modules/readable-stream": {
|
||||||
"version": "2.3.7",
|
"version": "2.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
||||||
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"core-util-is": "~1.0.0",
|
"core-util-is": "~1.0.0",
|
||||||
"inherits": "~2.0.3",
|
"inherits": "~2.0.3",
|
||||||
|
@ -1516,7 +1524,7 @@
|
||||||
"node_modules/seq-queue": {
|
"node_modules/seq-queue": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
|
||||||
"integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
|
"integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
|
||||||
},
|
},
|
||||||
"node_modules/set-blocking": {
|
"node_modules/set-blocking": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
@ -1696,11 +1704,6 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/tar/node_modules/yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
|
||||||
},
|
|
||||||
"node_modules/to-buffer": {
|
"node_modules/to-buffer": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
|
||||||
|
@ -1834,9 +1837,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yallist": {
|
"node_modules/yallist": {
|
||||||
"version": "4.0.0",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -1883,9 +1886,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "18.11.9",
|
"version": "20.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.0.tgz",
|
||||||
"integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
|
"integrity": "sha512-cumHmIAf6On83X7yP+LrsEyUOf/YlociZelmpRYaGFydoaPdxdt80MAbu6vWerQT2COCp2nPvHdsbD7tHn/YlQ=="
|
||||||
},
|
},
|
||||||
"@types/responselike": {
|
"@types/responselike": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -1957,9 +1960,9 @@
|
||||||
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
|
"integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
|
||||||
},
|
},
|
||||||
"async": {
|
"async": {
|
||||||
"version": "3.2.3",
|
"version": "3.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
|
||||||
"integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g=="
|
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
|
||||||
},
|
},
|
||||||
"asynckit": {
|
"asynckit": {
|
||||||
"version": "0.4.0",
|
"version": "0.4.0",
|
||||||
|
@ -1972,9 +1975,9 @@
|
||||||
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
|
"integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
|
||||||
},
|
},
|
||||||
"aws4": {
|
"aws4": {
|
||||||
"version": "1.11.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
|
||||||
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
|
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
|
||||||
},
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -2036,9 +2039,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cacheable-request": {
|
"cacheable-request": {
|
||||||
"version": "7.0.2",
|
"version": "7.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
|
||||||
"integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==",
|
"integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"clone-response": "^1.0.2",
|
"clone-response": "^1.0.2",
|
||||||
"get-stream": "^5.1.0",
|
"get-stream": "^5.1.0",
|
||||||
|
@ -2174,9 +2177,9 @@
|
||||||
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
"integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
|
||||||
},
|
},
|
||||||
"denque": {
|
"denque": {
|
||||||
"version": "2.0.1",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz",
|
||||||
"integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
|
"integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="
|
||||||
},
|
},
|
||||||
"detect-libc": {
|
"detect-libc": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
|
@ -2234,9 +2237,9 @@
|
||||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||||
},
|
},
|
||||||
"filelist": {
|
"filelist": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
|
||||||
"integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==",
|
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimatch": "^5.0.1"
|
"minimatch": "^5.0.1"
|
||||||
},
|
},
|
||||||
|
@ -2250,9 +2253,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
"version": "5.0.1",
|
"version": "5.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
||||||
"integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
|
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^2.0.1"
|
"brace-expansion": "^2.0.1"
|
||||||
}
|
}
|
||||||
|
@ -2280,13 +2283,29 @@
|
||||||
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
|
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
|
||||||
},
|
},
|
||||||
"fs-extra": {
|
"fs-extra": {
|
||||||
"version": "8.1.0",
|
"version": "11.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
|
||||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
"integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "^4.2.0",
|
"graceful-fs": "^4.2.0",
|
||||||
"jsonfile": "^4.0.0",
|
"jsonfile": "^6.0.1",
|
||||||
"universalify": "^0.1.0"
|
"universalify": "^2.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"jsonfile": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.6",
|
||||||
|
"universalify": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"universalify": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fs-minipass": {
|
"fs-minipass": {
|
||||||
|
@ -2456,9 +2475,9 @@
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.8",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz",
|
||||||
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
"integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="
|
||||||
},
|
},
|
||||||
"is-fullwidth-code-point": {
|
"is-fullwidth-code-point": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -2471,7 +2490,7 @@
|
||||||
"is-property": {
|
"is-property": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
|
||||||
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
|
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
|
||||||
},
|
},
|
||||||
"is-typedarray": {
|
"is-typedarray": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
@ -2494,14 +2513,14 @@
|
||||||
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
||||||
},
|
},
|
||||||
"jake": {
|
"jake": {
|
||||||
"version": "10.8.5",
|
"version": "10.8.7",
|
||||||
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
|
||||||
"integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
|
"integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "^3.2.3",
|
"async": "^3.2.3",
|
||||||
"chalk": "^4.0.2",
|
"chalk": "^4.0.2",
|
||||||
"filelist": "^1.0.1",
|
"filelist": "^1.0.4",
|
||||||
"minimatch": "^3.0.4"
|
"minimatch": "^3.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"js-yaml": {
|
"js-yaml": {
|
||||||
|
@ -2538,9 +2557,9 @@
|
||||||
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
|
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
|
||||||
},
|
},
|
||||||
"json5": {
|
"json5": {
|
||||||
"version": "2.2.2",
|
"version": "2.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||||
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ=="
|
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
|
||||||
},
|
},
|
||||||
"jsonfile": {
|
"jsonfile": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
|
@ -2575,9 +2594,9 @@
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||||
},
|
},
|
||||||
"long": {
|
"long": {
|
||||||
"version": "4.0.0",
|
"version": "5.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
|
||||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
|
||||||
},
|
},
|
||||||
"lowercase-keys": {
|
"lowercase-keys": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
@ -2585,12 +2604,9 @@
|
||||||
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
|
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
|
||||||
},
|
},
|
||||||
"lru-cache": {
|
"lru-cache": {
|
||||||
"version": "6.0.0",
|
"version": "8.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
|
||||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
"integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA=="
|
||||||
"requires": {
|
|
||||||
"yallist": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.52.0",
|
"version": "1.52.0",
|
||||||
|
@ -2619,9 +2635,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "1.2.7",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||||
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.9.0",
|
"version": "2.9.0",
|
||||||
|
@ -2630,13 +2646,6 @@
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minizlib": {
|
"minizlib": {
|
||||||
|
@ -2661,41 +2670,32 @@
|
||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
||||||
},
|
},
|
||||||
"mysql2": {
|
"mysql2": {
|
||||||
"version": "2.3.3",
|
"version": "3.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.3.4.tgz",
|
||||||
"integrity": "sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==",
|
"integrity": "sha512-66K70s503WCweXmC8rKZ6oFpo+1qd96bx1QloaoYcSABwxvDzjGlqAHSxiDoXgBIv6YSTSZd6lvgWteYhBz7WA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"denque": "^2.0.1",
|
"denque": "^2.1.0",
|
||||||
"generate-function": "^2.3.1",
|
"generate-function": "^2.3.1",
|
||||||
"iconv-lite": "^0.6.3",
|
"iconv-lite": "^0.6.3",
|
||||||
"long": "^4.0.0",
|
"long": "^5.2.1",
|
||||||
"lru-cache": "^6.0.0",
|
"lru-cache": "^8.0.0",
|
||||||
"named-placeholders": "^1.1.2",
|
"named-placeholders": "^1.1.3",
|
||||||
"seq-queue": "^0.0.5",
|
"seq-queue": "^0.0.5",
|
||||||
"sqlstring": "^2.3.2"
|
"sqlstring": "^2.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"named-placeholders": {
|
"named-placeholders": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz",
|
||||||
"integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==",
|
"integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"lru-cache": "^4.1.3"
|
"lru-cache": "^7.14.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lru-cache": {
|
"lru-cache": {
|
||||||
"version": "4.1.5",
|
"version": "7.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
|
||||||
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
|
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="
|
||||||
"requires": {
|
|
||||||
"pseudomap": "^1.0.2",
|
|
||||||
"yallist": "^2.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"yallist": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
|
||||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2928,11 +2928,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||||
},
|
},
|
||||||
"pseudomap": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
|
||||||
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
|
|
||||||
},
|
|
||||||
"psl": {
|
"psl": {
|
||||||
"version": "1.9.0",
|
"version": "1.9.0",
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
|
||||||
|
@ -2948,9 +2943,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"punycode": {
|
"punycode": {
|
||||||
"version": "2.1.1",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
||||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
|
||||||
},
|
},
|
||||||
"qs": {
|
"qs": {
|
||||||
"version": "6.5.3",
|
"version": "6.5.3",
|
||||||
|
@ -2971,12 +2966,19 @@
|
||||||
"ini": "~1.3.0",
|
"ini": "~1.3.0",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"strip-json-comments": "~2.0.1"
|
"strip-json-comments": "~2.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ini": {
|
||||||
|
"version": "1.3.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
|
||||||
|
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"readable-stream": {
|
"readable-stream": {
|
||||||
"version": "2.3.7",
|
"version": "2.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
||||||
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-util-is": "~1.0.0",
|
"core-util-is": "~1.0.0",
|
||||||
"inherits": "~2.0.3",
|
"inherits": "~2.0.3",
|
||||||
|
@ -3061,7 +3063,7 @@
|
||||||
"seq-queue": {
|
"seq-queue": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz",
|
||||||
"integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4="
|
"integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
|
||||||
},
|
},
|
||||||
"set-blocking": {
|
"set-blocking": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
@ -3160,11 +3162,6 @@
|
||||||
"version": "5.2.1",
|
"version": "5.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
|
||||||
},
|
|
||||||
"yallist": {
|
|
||||||
"version": "3.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
||||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -3308,9 +3305,9 @@
|
||||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "4.0.0",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@verdnatura/myt",
|
"name": "@verdnatura/myt",
|
||||||
"version": "1.5.20",
|
"version": "1.5.21",
|
||||||
"author": "Verdnatura Levante SL",
|
"author": "Verdnatura Levante SL",
|
||||||
"description": "MySQL version control",
|
"description": "MySQL version control",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
|
@ -15,10 +15,10 @@
|
||||||
"@sqltools/formatter": "^1.2.5",
|
"@sqltools/formatter": "^1.2.5",
|
||||||
"colors": "^1.4.0",
|
"colors": "^1.4.0",
|
||||||
"ejs": "^3.1.9",
|
"ejs": "^3.1.9",
|
||||||
"fs-extra": "^8.1.0",
|
"fs-extra": "^11.1.1",
|
||||||
"getopts": "^2.3.0",
|
"getopts": "^2.3.0",
|
||||||
"ini": "^1.3.8",
|
"ini": "^4.1.1",
|
||||||
"mysql2": "^2.3.3",
|
"mysql2": "^3.3.4",
|
||||||
"nodegit": "^0.27.0",
|
"nodegit": "^0.27.0",
|
||||||
"require-yaml": "^0.0.1",
|
"require-yaml": "^0.0.1",
|
||||||
"sha.js": "^2.4.11"
|
"sha.js": "^2.4.11"
|
||||||
|
|
|
@ -2,11 +2,8 @@ FROM myt/server
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
COPY \
|
COPY .dump dump/.dump
|
||||||
.dump.sql \
|
COPY dump.*.sql dump/
|
||||||
beforeDump.sql \
|
|
||||||
afterDump.sql \
|
|
||||||
dump/
|
|
||||||
|
|
||||||
RUN gosu mysql docker-init.sh
|
RUN gosu mysql docker-init.sh
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# FIXME: It can corrupt data
|
# FIXME: It can corrupt data
|
||||||
|
# Currently not used, instead mysqldump --skip-extended-insert option is used
|
||||||
mysqldump $@ | sed -E 's/(VALUES |\),)\(/\1\n\t\(/g'
|
mysqldump $@ | sed -E 's/(VALUES |\),)\(/\1\n\t\(/g'
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
FILE="$1.sql"
|
FILE="$1.sql"
|
||||||
|
if [[ ! -f "$FILE" ]] ; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
echo "[LOG] -> Importing $FILE"
|
echo "[LOG] -> Importing $FILE"
|
||||||
export MYSQL_PWD=root
|
export MYSQL_PWD=root
|
||||||
mysql -u root --default-character-set=utf8 --comments -f < "$FILE"
|
mysql -u root --default-character-set=utf8 --comments -f < "$FILE"
|
||||||
|
|
|
@ -13,8 +13,11 @@ docker_temp_server_start "$CMD"
|
||||||
docker_setup_db
|
docker_setup_db
|
||||||
docker_process_init_files /docker-entrypoint-initdb.d/*
|
docker_process_init_files /docker-entrypoint-initdb.d/*
|
||||||
|
|
||||||
docker-import.sh dump/beforeDump
|
docker-import.sh dump/dump.before
|
||||||
docker-import.sh dump/.dump
|
docker-import.sh dump/.dump/structure
|
||||||
docker-import.sh dump/afterDump
|
docker-import.sh dump/.dump/data
|
||||||
|
docker-import.sh dump/.dump/triggers
|
||||||
|
docker-import.sh dump/.dump/privileges
|
||||||
|
docker-import.sh dump/dump.after
|
||||||
|
|
||||||
docker_temp_server_stop
|
docker_temp_server_stop
|
||||||
|
|
|
@ -4,3 +4,4 @@ remotes/*.ini
|
||||||
!remotes/local.ini
|
!remotes/local.ini
|
||||||
!remotes/docker.ini
|
!remotes/docker.ini
|
||||||
dump/.changes
|
dump/.changes
|
||||||
|
dump/fixtures.local.sql
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
-- Executed after data dump
|
|
|
@ -1 +0,0 @@
|
||||||
-- Executed before data dump
|
|
|
@ -0,0 +1 @@
|
||||||
|
-- Executed after dump
|
|
@ -0,0 +1 @@
|
||||||
|
-- Executed before dump
|
|
@ -0,0 +1 @@
|
||||||
|
-- Executed after fixtures
|
|
@ -0,0 +1 @@
|
||||||
|
-- Executed before fixtures
|
|
@ -1 +0,0 @@
|
||||||
-- Place your local fixtures here
|
|
Loading…
Reference in New Issue