@tasenor/common-plugins 1.9.31 → 1.9.32
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 +4 -4
- package/dist/CoinAPI/backend/index.d.ts +0 -22
- package/dist/CoinAPI/backend/index.js +0 -91
- package/dist/CoinAPI/backend/index.js.map +0 -1
- package/dist/CoinbaseImport/backend/CoinbaseHandler.d.ts +0 -11
- package/dist/CoinbaseImport/backend/CoinbaseHandler.js +0 -30
- package/dist/CoinbaseImport/backend/CoinbaseHandler.js.map +0 -1
- package/dist/CoinbaseImport/backend/index.d.ts +0 -5
- package/dist/CoinbaseImport/backend/index.js +0 -18
- package/dist/CoinbaseImport/backend/index.js.map +0 -1
- package/dist/DocumentCleaner/ui/index.d.ts +0 -43
- package/dist/DocumentCleaner/ui/index.js +0 -139
- package/dist/DocumentCleaner/ui/index.js.map +0 -1
- package/dist/Euro/ui/index.d.ts +0 -15
- package/dist/Euro/ui/index.js +0 -22
- package/dist/Euro/ui/index.js.map +0 -1
- package/dist/Finnish/ui/finnish.json +0 -341
- package/dist/Finnish/ui/index.d.ts +0 -17
- package/dist/Finnish/ui/index.js +0 -47
- package/dist/Finnish/ui/index.js.map +0 -1
- package/dist/FinnishBalanceSheetReport/backend/index.d.ts +0 -18
- package/dist/FinnishBalanceSheetReport/backend/index.js +0 -96
- package/dist/FinnishBalanceSheetReport/backend/index.js.map +0 -1
- package/dist/FinnishBalanceSheetReportInvestment/backend/index.d.ts +0 -18
- package/dist/FinnishBalanceSheetReportInvestment/backend/index.js +0 -96
- package/dist/FinnishBalanceSheetReportInvestment/backend/index.js.map +0 -1
- package/dist/FinnishBalanceSheetReportLite/backend/index.d.ts +0 -19
- package/dist/FinnishBalanceSheetReportLite/backend/index.js +0 -109
- package/dist/FinnishBalanceSheetReportLite/backend/index.js.map +0 -1
- package/dist/FinnishIncomeStatementReport/backend/index.d.ts +0 -26
- package/dist/FinnishIncomeStatementReport/backend/index.js +0 -190
- package/dist/FinnishIncomeStatementReport/backend/index.js.map +0 -1
- package/dist/FinnishIncomeStatementReportInvestment/backend/index.d.ts +0 -26
- package/dist/FinnishIncomeStatementReportInvestment/backend/index.js +0 -190
- package/dist/FinnishIncomeStatementReportInvestment/backend/index.js.map +0 -1
- package/dist/FinnishIncomeStatementReportLite/backend/index.d.ts +0 -26
- package/dist/FinnishIncomeStatementReportLite/backend/index.js +0 -188
- package/dist/FinnishIncomeStatementReportLite/backend/index.js.map +0 -1
- package/dist/FinnishInvestmentCompany/backend/index.d.ts +0 -10
- package/dist/FinnishInvestmentCompany/backend/index.js +0 -36
- package/dist/FinnishInvestmentCompany/backend/index.js.map +0 -1
- package/dist/FinnishInvestmentCompany/ui/index.d.ts +0 -16
- package/dist/FinnishInvestmentCompany/ui/index.js +0 -22
- package/dist/FinnishInvestmentCompany/ui/index.js.map +0 -1
- package/dist/FinnishLimitedCompanyComplete/backend/index.d.ts +0 -10
- package/dist/FinnishLimitedCompanyComplete/backend/index.js +0 -36
- package/dist/FinnishLimitedCompanyComplete/backend/index.js.map +0 -1
- package/dist/FinnishLimitedCompanyComplete/ui/index.d.ts +0 -16
- package/dist/FinnishLimitedCompanyComplete/ui/index.js +0 -22
- package/dist/FinnishLimitedCompanyComplete/ui/index.js.map +0 -1
- package/dist/FinnishLimitedCompanyLite/backend/index.d.ts +0 -10
- package/dist/FinnishLimitedCompanyLite/backend/index.js +0 -43
- package/dist/FinnishLimitedCompanyLite/backend/index.js.map +0 -1
- package/dist/FinnishLimitedCompanyLite/ui/index.d.ts +0 -16
- package/dist/FinnishLimitedCompanyLite/ui/index.js +0 -24
- package/dist/FinnishLimitedCompanyLite/ui/index.js.map +0 -1
- package/dist/GitBackup/backend/index.d.ts +0 -26
- package/dist/GitBackup/backend/index.js +0 -91
- package/dist/GitBackup/backend/index.js.map +0 -1
- package/dist/GitBackup/ui/index.d.ts +0 -44
- package/dist/GitBackup/ui/index.js +0 -114
- package/dist/GitBackup/ui/index.js.map +0 -1
- package/dist/IncomeAndExpenses/backend/index.d.ts +0 -5
- package/dist/IncomeAndExpenses/backend/index.js +0 -350
- package/dist/IncomeAndExpenses/backend/index.js.map +0 -1
- package/dist/JournalReport/backend/index.d.ts +0 -15
- package/dist/JournalReport/backend/index.js +0 -143
- package/dist/JournalReport/backend/index.js.map +0 -1
- package/dist/KrakenImport/backend/KrakenHandler.d.ts +0 -23
- package/dist/KrakenImport/backend/KrakenHandler.js +0 -83
- package/dist/KrakenImport/backend/KrakenHandler.js.map +0 -1
- package/dist/KrakenImport/backend/index.d.ts +0 -5
- package/dist/KrakenImport/backend/index.js +0 -18
- package/dist/KrakenImport/backend/index.js.map +0 -1
- package/dist/LedgerReport/backend/index.d.ts +0 -15
- package/dist/LedgerReport/backend/index.js +0 -150
- package/dist/LedgerReport/backend/index.js.map +0 -1
- package/dist/LynxImport/backend/LynxHandler.d.ts +0 -28
- package/dist/LynxImport/backend/LynxHandler.js +0 -340
- package/dist/LynxImport/backend/LynxHandler.js.map +0 -1
- package/dist/LynxImport/backend/index.d.ts +0 -5
- package/dist/LynxImport/backend/index.js +0 -18
- package/dist/LynxImport/backend/index.js.map +0 -1
- package/dist/NordeaImport/backend/NordeaHandler.d.ts +0 -11
- package/dist/NordeaImport/backend/NordeaHandler.js +0 -39
- package/dist/NordeaImport/backend/NordeaHandler.js.map +0 -1
- package/dist/NordeaImport/backend/index.d.ts +0 -5
- package/dist/NordeaImport/backend/index.js +0 -18
- package/dist/NordeaImport/backend/index.js.map +0 -1
- package/dist/NordnetImport/backend/NordnetHandler.d.ts +0 -17
- package/dist/NordnetImport/backend/NordnetHandler.js +0 -66
- package/dist/NordnetImport/backend/NordnetHandler.js.map +0 -1
- package/dist/NordnetImport/backend/index.d.ts +0 -5
- package/dist/NordnetImport/backend/index.js +0 -18
- package/dist/NordnetImport/backend/index.js.map +0 -1
- package/dist/Rand/ui/index.d.ts +0 -15
- package/dist/Rand/ui/index.js +0 -22
- package/dist/Rand/ui/index.js.map +0 -1
- package/dist/RapidAPI/backend/index.d.ts +0 -22
- package/dist/RapidAPI/backend/index.js +0 -119
- package/dist/RapidAPI/backend/index.js.map +0 -1
- package/dist/TITOImport/backend/TITOHandler.d.ts +0 -13
- package/dist/TITOImport/backend/TITOHandler.js +0 -241
- package/dist/TITOImport/backend/TITOHandler.js.map +0 -1
- package/dist/TITOImport/backend/index.d.ts +0 -5
- package/dist/TITOImport/backend/index.js +0 -18
- package/dist/TITOImport/backend/index.js.map +0 -1
- package/dist/TagEditor/ui/index.d.ts +0 -31
- package/dist/TagEditor/ui/index.js +0 -349
- package/dist/TagEditor/ui/index.js.map +0 -1
- package/dist/USDollar/ui/index.d.ts +0 -15
- package/dist/USDollar/ui/index.js +0 -22
- package/dist/USDollar/ui/index.js.map +0 -1
- package/dist/VAT/ui/index.d.ts +0 -69
- package/dist/VAT/ui/index.js +0 -509
- package/dist/VAT/ui/index.js.map +0 -1
- package/dist/VATFinland/backend/index.d.ts +0 -5
- package/dist/VATFinland/backend/index.js +0 -17
- package/dist/VATFinland/backend/index.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.js +0 -29
- package/dist/index.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { SchemePlugin } from '@tasenor/common-node';
|
|
3
|
-
class FinnishLimitedCompanyLite extends SchemePlugin {
|
|
4
|
-
constructor() {
|
|
5
|
-
super('FinnishLimitedCompanyLite');
|
|
6
|
-
this.code = 'FinnishLimitedCompanyLite';
|
|
7
|
-
this.title = 'Finnish Limited Company - Lite';
|
|
8
|
-
this.version = '1.0.27';
|
|
9
|
-
this.icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M11.17 8l-.58-.59L9.17 6H4v12h16V8h-8z" opacity=".3"/><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l1.41 1.41.59.59H20v10z"/></svg>';
|
|
10
|
-
this.releaseDate = '2023-05-24';
|
|
11
|
-
this.use = 'both';
|
|
12
|
-
this.type = 'scheme';
|
|
13
|
-
this.description = 'Small accounting scheme for Finnish limited company. English and Finnish version.';
|
|
14
|
-
this.languages = {
|
|
15
|
-
fi: {}
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
getSchemePaths(code, language) {
|
|
19
|
-
if (code === 'FinnishLimitedCompanyLite') {
|
|
20
|
-
if (language === 'en') {
|
|
21
|
-
return [
|
|
22
|
-
path.join(__dirname, 'en-EUR.tsv'),
|
|
23
|
-
];
|
|
24
|
-
}
|
|
25
|
-
return [
|
|
26
|
-
path.join(__dirname, 'fi-EUR.tsv'),
|
|
27
|
-
];
|
|
28
|
-
}
|
|
29
|
-
return [];
|
|
30
|
-
}
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
-
getSchemeDefaults(code) {
|
|
33
|
-
return {};
|
|
34
|
-
}
|
|
35
|
-
supportedCurrencies() {
|
|
36
|
-
return ['EUR'];
|
|
37
|
-
}
|
|
38
|
-
supportedLanguages() {
|
|
39
|
-
return ['fi', 'en'];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export default FinnishLimitedCompanyLite;
|
|
43
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/FinnishLimitedCompanyLite/backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,yBAA0B,SAAQ,YAAY;IAElD;QACE,KAAK,CAAC,2BAAyC,CAAC,CAAA;QAEhD,IAAI,CAAC,IAAI,GAAG,2BAAyC,CAAA;QACrD,IAAI,CAAC,KAAK,GAAG,gCAAgC,CAAA;QAC7C,IAAI,CAAC,OAAO,GAAG,QAAmB,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,gWAAgW,CAAA;QAC5W,IAAI,CAAC,WAAW,GAAG,YAAY,CAAA;QAC/B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;QACjB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAA;QACpB,IAAI,CAAC,WAAW,GAAG,mFAAmF,CAAA;QAEtG,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE,EACH;SACF,CAAA;IACH,CAAC;IAED,cAAc,CAAC,IAAI,EAAE,QAAQ;QAC3B,IAAI,IAAI,KAAK,2BAA2B,EAAE;YACxC,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACrB,OAAO;oBACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;iBAClB,CAAA;aACnB;YACD,OAAO;gBACL,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;aAClB,CAAA;SACnB;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,6DAA6D;IAC7D,iBAAiB,CAAC,IAAI;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,mBAAmB;QACjB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACrB,CAAC;CACF;AAED,eAAe,yBAAyB,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { SchemePlugin } from '@tasenor/common-ui';
|
|
2
|
-
declare class FinnishLimitedCompanyLite extends SchemePlugin {
|
|
3
|
-
static code: string;
|
|
4
|
-
static title: string;
|
|
5
|
-
static version: string;
|
|
6
|
-
static icon: string;
|
|
7
|
-
static releaseDate: string;
|
|
8
|
-
static use: string;
|
|
9
|
-
static type: string;
|
|
10
|
-
static description: string;
|
|
11
|
-
constructor();
|
|
12
|
-
getAccountingSchemes(): {
|
|
13
|
-
FinnishLimitedCompanyLite: string;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export default FinnishLimitedCompanyLite;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { SchemePlugin } from '@tasenor/common-ui';
|
|
2
|
-
class FinnishLimitedCompanyLite extends SchemePlugin {
|
|
3
|
-
static code = 'FinnishLimitedCompanyLite';
|
|
4
|
-
static title = 'Finnish Limited Company - Lite';
|
|
5
|
-
static version = '1.0.27';
|
|
6
|
-
static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M11.17 8l-.58-.59L9.17 6H4v12h16V8h-8z" opacity=".3"/><path d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V6h5.17l1.41 1.41.59.59H20v10z"/></svg>';
|
|
7
|
-
static releaseDate = '2023-05-24';
|
|
8
|
-
static use = 'both';
|
|
9
|
-
static type = 'scheme';
|
|
10
|
-
static description = 'Small accounting scheme for Finnish limited company. English and Finnish version.';
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
this.languages = {
|
|
14
|
-
fi: {
|
|
15
|
-
'Limited company (Lite scheme)': 'Osakeyhtiö (Suppea tilikartta)'
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
getAccountingSchemes() {
|
|
20
|
-
return { FinnishLimitedCompanyLite: 'Limited company (Lite scheme)' };
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export default FinnishLimitedCompanyLite;
|
|
24
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/FinnishLimitedCompanyLite/ui/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,yBAA0B,SAAQ,YAAY;IAElD,MAAM,CAAC,IAAI,GAAG,2BAA2B,CAAA;IACzC,MAAM,CAAC,KAAK,GAAG,gCAAgC,CAAA;IAC/C,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;IACzB,MAAM,CAAC,IAAI,GAAG,gWAAgW,CAAA;IAC9W,MAAM,CAAC,WAAW,GAAG,YAAY,CAAA;IACjC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAA;IACnB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;IACtB,MAAM,CAAC,WAAW,GAAG,mFAAmF,CAAA;IAExG;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE;gBACF,+BAA+B,EAAE,gCAAgC;aAClE;SACF,CAAA;IACH,CAAC;IAED,oBAAoB;QAClB,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,CAAA;IACvE,CAAC;;AAGH,eAAe,yBAAyB,CAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { KnexDatabase, ToolPlugin } from '@tasenor/common-node';
|
|
2
|
-
import { DirectoryPath } from '@tasenor/common';
|
|
3
|
-
declare class GitBackup extends ToolPlugin {
|
|
4
|
-
constructor();
|
|
5
|
-
/**
|
|
6
|
-
* Check if the resulting concatenation of paths points to the allowed working area of file system.
|
|
7
|
-
*/
|
|
8
|
-
isValidWritePath(db: KnexDatabase, ...parts: string[]): boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Create backup every night.
|
|
11
|
-
*/
|
|
12
|
-
nightly(db: KnexDatabase): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Create manual dump.
|
|
15
|
-
*/
|
|
16
|
-
POST(db: KnexDatabase, data: any): Promise<unknown>;
|
|
17
|
-
/**
|
|
18
|
-
* Execute backup making for a database.
|
|
19
|
-
*/
|
|
20
|
-
makeBackup(db: KnexDatabase, message: string): Promise<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* Write the data from the database to the directory.
|
|
23
|
-
*/
|
|
24
|
-
dump(db: KnexDatabase, dir: DirectoryPath): Promise<void>;
|
|
25
|
-
}
|
|
26
|
-
export default GitBackup;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { GitRepo, systemPiped, TasenorExporter, ToolPlugin } from '@tasenor/common-node';
|
|
2
|
-
import { error, log, note } from '@tasenor/common';
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
class GitBackup extends ToolPlugin {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.code = 'GitBackup';
|
|
9
|
-
this.title = 'Backup for Git';
|
|
10
|
-
this.version = '1.0.2';
|
|
11
|
-
this.icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>';
|
|
12
|
-
this.releaseDate = '2022-12-12';
|
|
13
|
-
this.use = 'both';
|
|
14
|
-
this.type = 'tool';
|
|
15
|
-
this.description = 'Tool for backing up database to the git repository.';
|
|
16
|
-
this.languages = {};
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Check if the resulting concatenation of paths points to the allowed working area of file system.
|
|
20
|
-
*/
|
|
21
|
-
isValidWritePath(db, ...parts) {
|
|
22
|
-
const resolved = path.resolve(...parts);
|
|
23
|
-
const dir = path.resolve(this.getWorkSpace(db));
|
|
24
|
-
return resolved.substring(0, dir.length) === dir;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Create backup every night.
|
|
28
|
-
*/
|
|
29
|
-
async nightly(db) {
|
|
30
|
-
await this.makeBackup(db, `Automatic nightly backup by ${this.code} ${this.version}`);
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Create manual dump.
|
|
34
|
-
*/
|
|
35
|
-
async POST(db, data) {
|
|
36
|
-
if (typeof data === 'object' && data !== null && data.makeBackup) {
|
|
37
|
-
const success = await this.makeBackup(db, `${data.makeBackup}`);
|
|
38
|
-
return { success };
|
|
39
|
-
}
|
|
40
|
-
return { success: false };
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Execute backup making for a database.
|
|
44
|
-
*/
|
|
45
|
-
async makeBackup(db, message) {
|
|
46
|
-
const workDir = this.getWorkSpace(db);
|
|
47
|
-
const repository = await this.getSetting(db, 'repository');
|
|
48
|
-
const subDirectory = await this.getSetting(db, 'subDirectory');
|
|
49
|
-
// Skip if not configured for use.
|
|
50
|
-
if (repository === undefined || subDirectory === undefined) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
const repoName = GitRepo.defaultName(repository);
|
|
54
|
-
if (!this.isValidWritePath(db, workDir, repoName, subDirectory)) {
|
|
55
|
-
error(`A sub directory '${subDirectory}' does not produce valide allowed work directory for backup in DB '${db.client.config.connection.database}'.`);
|
|
56
|
-
return false;
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
log(`Making a backup into '${subDirectory}' of DB '${db.client.config.connection.database}'.`);
|
|
60
|
-
const repo = await GitRepo.get(repository, workDir);
|
|
61
|
-
if (repo) {
|
|
62
|
-
repo.configure('Tasenor', 'tasenor@gmail.com');
|
|
63
|
-
const backupDir = path.join(workDir, repoName, subDirectory);
|
|
64
|
-
await this.dump(db, backupDir);
|
|
65
|
-
await repo.put(message, subDirectory);
|
|
66
|
-
return true;
|
|
67
|
-
}
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Write the data from the database to the directory.
|
|
73
|
-
*/
|
|
74
|
-
async dump(db, dir) {
|
|
75
|
-
note(`Creating backup into '${dir}'.`);
|
|
76
|
-
if (fs.existsSync(dir)) {
|
|
77
|
-
log(`Removing old data from '${dir}'.`);
|
|
78
|
-
fs.rmSync(dir, { recursive: true });
|
|
79
|
-
}
|
|
80
|
-
const exportDir = path.join(dir, 'export');
|
|
81
|
-
fs.mkdirSync(exportDir, { recursive: true });
|
|
82
|
-
// TODO: Check for pg_dump crash. What if that happens?
|
|
83
|
-
const { host, port, database, user, password } = db.client.config.connection;
|
|
84
|
-
const url = `postgresql://${user}:${password}@${host}:${port}/${database}`;
|
|
85
|
-
await systemPiped(`pg_dump -c ${url} > "${dir}/dump.sql"`);
|
|
86
|
-
const exporter = new TasenorExporter();
|
|
87
|
-
await exporter.dump(db, exportDir);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
export default GitBackup;
|
|
91
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/backend/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { ToolPlugin } from '@tasenor/common-ui';
|
|
3
|
-
declare class GitBackup extends ToolPlugin {
|
|
4
|
-
busy: boolean;
|
|
5
|
-
static code: string;
|
|
6
|
-
static title: string;
|
|
7
|
-
static version: string;
|
|
8
|
-
static icon: string;
|
|
9
|
-
static releaseDate: string;
|
|
10
|
-
static use: string;
|
|
11
|
-
static type: string;
|
|
12
|
-
static description: string;
|
|
13
|
-
constructor();
|
|
14
|
-
toolMenu(): {
|
|
15
|
-
title: string;
|
|
16
|
-
disabled: boolean;
|
|
17
|
-
}[];
|
|
18
|
-
toolTitle(): string;
|
|
19
|
-
onMakeBackup(): Promise<void>;
|
|
20
|
-
toolTopPanel(): JSX.Element;
|
|
21
|
-
toolMainPanel(): JSX.Element;
|
|
22
|
-
getSettings(): {
|
|
23
|
-
type: string;
|
|
24
|
-
elements: ({
|
|
25
|
-
type: string;
|
|
26
|
-
name: string;
|
|
27
|
-
actions: {
|
|
28
|
-
onClick?: undefined;
|
|
29
|
-
};
|
|
30
|
-
label?: undefined;
|
|
31
|
-
} | {
|
|
32
|
-
type: string;
|
|
33
|
-
label: string;
|
|
34
|
-
actions: {
|
|
35
|
-
onClick: {
|
|
36
|
-
type: string;
|
|
37
|
-
plugin: string;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
name?: undefined;
|
|
41
|
-
})[];
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export default GitBackup;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Note, IconButton, SubPanel, ToolPlugin } from '@tasenor/common-ui';
|
|
3
|
-
import { makeObservable, observable, runInAction } from 'mobx';
|
|
4
|
-
import { Trans } from 'react-i18next';
|
|
5
|
-
class GitBackup extends ToolPlugin {
|
|
6
|
-
busy = false;
|
|
7
|
-
static code = 'GitBackup';
|
|
8
|
-
static title = 'Backup for Git';
|
|
9
|
-
static version = '1.0.2';
|
|
10
|
-
static icon = '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z"></path></svg>';
|
|
11
|
-
static releaseDate = '2022-12-12';
|
|
12
|
-
static use = 'both';
|
|
13
|
-
static type = 'tool';
|
|
14
|
-
static description = 'Tool for backing up database to the git repository.';
|
|
15
|
-
constructor() {
|
|
16
|
-
super();
|
|
17
|
-
makeObservable(this, {
|
|
18
|
-
busy: observable
|
|
19
|
-
});
|
|
20
|
-
this.languages = {
|
|
21
|
-
// TODO: This is too simple labeling. Need to add plugin code as well.
|
|
22
|
-
en: {
|
|
23
|
-
'label-repository': 'Repository URL',
|
|
24
|
-
'label-subDirectory': 'Subdirectory inside the repository',
|
|
25
|
-
'summarize-make-backup': 'Make a backup'
|
|
26
|
-
},
|
|
27
|
-
fi: {
|
|
28
|
-
'label-repository': 'Git-säilön URL',
|
|
29
|
-
'label-subDirectory': 'Alihakemisotn nimi säilön sisällä',
|
|
30
|
-
'summarize-make-backup': 'Tee varmuuskopio',
|
|
31
|
-
'Backup for Git': 'Git-pohjainen Varmuuskopiointi',
|
|
32
|
-
'Manual backup by GitBackup {version}': 'Ylimääräinen varmuuskopio GitBackup {version}',
|
|
33
|
-
'Backup created successfully.': 'Varmuuskopion luominen onnistui.',
|
|
34
|
-
'Creating backup failed.': 'Varmuuskopion luominen ei onnistunut.'
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
toolMenu() {
|
|
39
|
-
return [{ title: 'Backup for Git', disabled: !this.store.database }];
|
|
40
|
-
}
|
|
41
|
-
toolTitle() {
|
|
42
|
-
return 'Backup for Git';
|
|
43
|
-
}
|
|
44
|
-
async onMakeBackup() {
|
|
45
|
-
runInAction(() => (this.busy = true));
|
|
46
|
-
const { success } = await this.POST({ makeBackup: this.t('Manual backup by GitBackup {version}').replace('{version}', GitBackup.version) });
|
|
47
|
-
runInAction(() => {
|
|
48
|
-
this.busy = false;
|
|
49
|
-
if (success) {
|
|
50
|
-
this.store.addMessage(this.t('Backup created successfully.'));
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.store.addError(this.t('Creating backup failed.'));
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
toolTopPanel() {
|
|
58
|
-
const repo = this.getSetting('repository');
|
|
59
|
-
return React.createElement(React.Fragment, null,
|
|
60
|
-
React.createElement(IconButton, { id: "Make Backup", disabled: this.busy || !repo, onClick: () => this.onMakeBackup(), title: "summarize-make-backup", icon: "save" }));
|
|
61
|
-
}
|
|
62
|
-
toolMainPanel() {
|
|
63
|
-
// TODO: We could use here some link utility that keeps selected dbs and ids intact but changes URL parts.
|
|
64
|
-
const repo = this.getSetting('repository');
|
|
65
|
-
if (!repo) {
|
|
66
|
-
return React.createElement(React.Fragment, null,
|
|
67
|
-
React.createElement(Note, null,
|
|
68
|
-
React.createElement(Trans, null, "You need to configure this tool first from the configuration page.")));
|
|
69
|
-
}
|
|
70
|
-
return React.createElement(React.Fragment, null,
|
|
71
|
-
React.createElement(SubPanel, null,
|
|
72
|
-
React.createElement(Trans, null, "This tool takes every night automatically one backup."),
|
|
73
|
-
React.createElement(React.Fragment, null, " "),
|
|
74
|
-
React.createElement(Trans, null, "You can also make immediately backup from the icon above."),
|
|
75
|
-
React.createElement(React.Fragment, null, " "),
|
|
76
|
-
React.createElement(Trans, null, "Setting up SSH keys is not yet supported."),
|
|
77
|
-
React.createElement(React.Fragment, null, " "),
|
|
78
|
-
React.createElement(Trans, null, "Please contact the support for the server SSH keys to get access to your repository.")),
|
|
79
|
-
React.createElement(SubPanel, null,
|
|
80
|
-
React.createElement(Trans, null, "Currently restore is not yet implemented."),
|
|
81
|
-
React.createElement(React.Fragment, null, " "),
|
|
82
|
-
React.createElement(Trans, null, "In order to restore from the backup, you must ensure to get the wanted version as the latest commit in the Git."),
|
|
83
|
-
React.createElement(React.Fragment, null, " "),
|
|
84
|
-
React.createElement(Trans, null, "Then you need to contact support to let them know that DB needs to be loaded from Git.")));
|
|
85
|
-
}
|
|
86
|
-
// TODO: Add button to create backup right now. Maybe with comments?
|
|
87
|
-
// TODO: Communicating with backend counterpart needs URL passing all requests to plugin.
|
|
88
|
-
getSettings() {
|
|
89
|
-
return {
|
|
90
|
-
type: 'flat',
|
|
91
|
-
elements: [
|
|
92
|
-
{
|
|
93
|
-
type: 'text',
|
|
94
|
-
name: 'repository',
|
|
95
|
-
actions: {}
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: 'text',
|
|
99
|
-
name: 'subDirectory',
|
|
100
|
-
actions: {}
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
type: 'button',
|
|
104
|
-
label: 'Save',
|
|
105
|
-
actions: {
|
|
106
|
-
onClick: { type: 'saveSettings', plugin: 'GitBackup' }
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
]
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
export default GitBackup;
|
|
114
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/GitBackup/ui/index.tsx"],"names":[],"mappings":"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"}
|