@arch-cadre/backup-module 0.0.1 → 1.0.1
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/dist/index.cjs +38 -3
- package/dist/index.mjs +38 -4
- package/dist/navigation.cjs +3 -1
- package/dist/navigation.mjs +3 -1
- package/dist/routes.cjs +4 -1
- package/dist/routes.mjs +4 -1
- package/dist/schema.d.ts +20 -15
- package/dist/ui/components/backup-client.cjs +4 -1
- package/dist/ui/components/backup-client.d.ts +4 -3
- package/dist/ui/components/backup-client.mjs +1 -0
- package/dist/ui/pages/backup-list.cjs +3 -0
- package/dist/ui/pages/backup-list.d.ts +2 -1
- package/dist/ui/pages/backup-list.mjs +1 -0
- package/locales/pl/global.json +11 -0
- package/package.json +8 -8
package/dist/index.cjs
CHANGED
|
@@ -5,10 +5,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
|
|
7
7
|
var _server = require("@arch-cadre/core/server");
|
|
8
|
+
var _drizzleOrm = require("drizzle-orm");
|
|
8
9
|
var _manifest = _interopRequireDefault(require("../manifest.json"));
|
|
9
10
|
var _navigation = require("./navigation.cjs");
|
|
10
11
|
var _routes = require("./routes.cjs");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
const BACKUP_PERMISSIONS = [{
|
|
14
|
+
name: "backup:create",
|
|
15
|
+
description: "Allow creating system backups"
|
|
16
|
+
}, {
|
|
17
|
+
name: "backup:restore",
|
|
18
|
+
description: "Allow restoring system backups"
|
|
19
|
+
}, {
|
|
20
|
+
name: "backup:delete",
|
|
21
|
+
description: "Allow deleting system backups"
|
|
22
|
+
}, {
|
|
23
|
+
name: "backup:list",
|
|
24
|
+
description: "Allow listing system backups"
|
|
25
|
+
}];
|
|
12
26
|
const backupModule = {
|
|
13
27
|
manifest: _manifest.default,
|
|
14
28
|
navigation: _navigation.navigation,
|
|
@@ -16,15 +30,36 @@ const backupModule = {
|
|
|
16
30
|
private: _routes.privateRoutes
|
|
17
31
|
},
|
|
18
32
|
onEnable: async () => {
|
|
33
|
+
console.log("[Backup] enabling and registering permissions...");
|
|
34
|
+
try {
|
|
35
|
+
for (const perm of BACKUP_PERMISSIONS) {
|
|
36
|
+
await (0, _server.createPermission)(perm.name, perm.description);
|
|
37
|
+
}
|
|
38
|
+
const roles = await (0, _server.getRoles)();
|
|
39
|
+
const adminRole = roles.find(r => r.name === "admin");
|
|
40
|
+
if (adminRole) {
|
|
41
|
+
const backupPermNames = BACKUP_PERMISSIONS.map(p => p.name);
|
|
42
|
+
const backupPerms = await _server.db.select().from(_server.permissionsTable).where((0, _drizzleOrm.inArray)(_server.permissionsTable.name, backupPermNames));
|
|
43
|
+
for (const p of backupPerms) {
|
|
44
|
+
await (0, _server.assignPermissionToRole)(adminRole.id, p.id);
|
|
45
|
+
}
|
|
46
|
+
console.log("[Backup] Permissions assigned to admin role.");
|
|
47
|
+
}
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error("[Backup] Error during permission registration:", error);
|
|
50
|
+
}
|
|
19
51
|
console.log("[Backup] Module enabled.");
|
|
20
52
|
},
|
|
21
53
|
onDisable: async () => {
|
|
54
|
+
console.log("[Backup] onDisable: Cleaning up tables and permissions...");
|
|
22
55
|
try {
|
|
23
|
-
|
|
24
|
-
await _server.db.
|
|
56
|
+
const backupPermNames = BACKUP_PERMISSIONS.map(p => p.name);
|
|
57
|
+
await _server.db.delete(_server.permissionsTable).where((0, _drizzleOrm.inArray)(_server.permissionsTable.name, backupPermNames));
|
|
58
|
+
console.log("[Backup] Permissions and mappings removed.");
|
|
59
|
+
await _server.db.execute(_drizzleOrm.sql.raw(`DROP TABLE IF EXISTS backups CASCADE`));
|
|
25
60
|
console.log("[Backup] Database tables removed.");
|
|
26
61
|
} catch (error) {
|
|
27
|
-
console.error("[Backup] Failed to remove tables:", error);
|
|
62
|
+
console.error("[Backup] Failed to remove tables or permissions:", error);
|
|
28
63
|
}
|
|
29
64
|
console.log("[Backup] Module disabled.");
|
|
30
65
|
},
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
assignPermissionToRole,
|
|
3
|
+
createPermission,
|
|
4
|
+
db,
|
|
5
|
+
getRoles,
|
|
6
|
+
permissionsTable
|
|
7
|
+
} from "@arch-cadre/core/server";
|
|
8
|
+
import { inArray, sql } from "drizzle-orm";
|
|
2
9
|
import manifest from "../manifest.json";
|
|
3
10
|
import { navigation } from "./navigation.mjs";
|
|
4
11
|
import { privateRoutes } from "./routes.mjs";
|
|
12
|
+
const BACKUP_PERMISSIONS = [
|
|
13
|
+
{ name: "backup:create", description: "Allow creating system backups" },
|
|
14
|
+
{ name: "backup:restore", description: "Allow restoring system backups" },
|
|
15
|
+
{ name: "backup:delete", description: "Allow deleting system backups" },
|
|
16
|
+
{ name: "backup:list", description: "Allow listing system backups" }
|
|
17
|
+
];
|
|
5
18
|
const backupModule = {
|
|
6
19
|
manifest,
|
|
7
20
|
navigation,
|
|
@@ -9,15 +22,36 @@ const backupModule = {
|
|
|
9
22
|
private: privateRoutes
|
|
10
23
|
},
|
|
11
24
|
onEnable: async () => {
|
|
25
|
+
console.log("[Backup] enabling and registering permissions...");
|
|
26
|
+
try {
|
|
27
|
+
for (const perm of BACKUP_PERMISSIONS) {
|
|
28
|
+
await createPermission(perm.name, perm.description);
|
|
29
|
+
}
|
|
30
|
+
const roles = await getRoles();
|
|
31
|
+
const adminRole = roles.find((r) => r.name === "admin");
|
|
32
|
+
if (adminRole) {
|
|
33
|
+
const backupPermNames = BACKUP_PERMISSIONS.map((p) => p.name);
|
|
34
|
+
const backupPerms = await db.select().from(permissionsTable).where(inArray(permissionsTable.name, backupPermNames));
|
|
35
|
+
for (const p of backupPerms) {
|
|
36
|
+
await assignPermissionToRole(adminRole.id, p.id);
|
|
37
|
+
}
|
|
38
|
+
console.log("[Backup] Permissions assigned to admin role.");
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error("[Backup] Error during permission registration:", error);
|
|
42
|
+
}
|
|
12
43
|
console.log("[Backup] Module enabled.");
|
|
13
44
|
},
|
|
14
45
|
onDisable: async () => {
|
|
46
|
+
console.log("[Backup] onDisable: Cleaning up tables and permissions...");
|
|
15
47
|
try {
|
|
16
|
-
|
|
17
|
-
await db.
|
|
48
|
+
const backupPermNames = BACKUP_PERMISSIONS.map((p) => p.name);
|
|
49
|
+
await db.delete(permissionsTable).where(inArray(permissionsTable.name, backupPermNames));
|
|
50
|
+
console.log("[Backup] Permissions and mappings removed.");
|
|
51
|
+
await db.execute(sql.raw(`DROP TABLE IF EXISTS backups CASCADE`));
|
|
18
52
|
console.log("[Backup] Database tables removed.");
|
|
19
53
|
} catch (error) {
|
|
20
|
-
console.error("[Backup] Failed to remove tables:", error);
|
|
54
|
+
console.error("[Backup] Failed to remove tables or permissions:", error);
|
|
21
55
|
}
|
|
22
56
|
console.log("[Backup] Module disabled.");
|
|
23
57
|
},
|
package/dist/navigation.cjs
CHANGED
package/dist/navigation.mjs
CHANGED
package/dist/routes.cjs
CHANGED
|
@@ -9,5 +9,8 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
9
9
|
const publicRoutes = exports.publicRoutes = [];
|
|
10
10
|
const privateRoutes = exports.privateRoutes = [{
|
|
11
11
|
path: "/backups",
|
|
12
|
-
component: _backupList.default
|
|
12
|
+
component: _backupList.default,
|
|
13
|
+
auth: true,
|
|
14
|
+
roles: ["admin"],
|
|
15
|
+
permissions: ["backup:list"]
|
|
13
16
|
}];
|
package/dist/routes.mjs
CHANGED
package/dist/schema.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
2
2
|
name: "backups";
|
|
3
3
|
schema: undefined;
|
|
4
4
|
columns: {
|
|
5
|
-
id: import("drizzle-orm/pg-core").
|
|
5
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
6
6
|
name: string;
|
|
7
7
|
tableName: "backups";
|
|
8
8
|
dataType: "string";
|
|
@@ -10,14 +10,15 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
10
10
|
driverParam: string;
|
|
11
11
|
notNull: true;
|
|
12
12
|
hasDefault: true;
|
|
13
|
-
isPrimaryKey:
|
|
13
|
+
isPrimaryKey: true;
|
|
14
14
|
isAutoincrement: false;
|
|
15
|
-
hasRuntimeDefault:
|
|
16
|
-
enumValues:
|
|
15
|
+
hasRuntimeDefault: true;
|
|
16
|
+
enumValues: [string, ...string[]];
|
|
17
|
+
baseColumn: never;
|
|
17
18
|
identity: undefined;
|
|
18
19
|
generated: undefined;
|
|
19
|
-
}>;
|
|
20
|
-
filename: import("drizzle-orm/pg-core").
|
|
20
|
+
}, {}>;
|
|
21
|
+
filename: import("drizzle-orm/pg-core").PgColumn<{
|
|
21
22
|
name: string;
|
|
22
23
|
tableName: "backups";
|
|
23
24
|
dataType: "string";
|
|
@@ -28,11 +29,12 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
28
29
|
isPrimaryKey: false;
|
|
29
30
|
isAutoincrement: false;
|
|
30
31
|
hasRuntimeDefault: false;
|
|
31
|
-
enumValues:
|
|
32
|
+
enumValues: [string, ...string[]];
|
|
33
|
+
baseColumn: never;
|
|
32
34
|
identity: undefined;
|
|
33
35
|
generated: undefined;
|
|
34
|
-
}>;
|
|
35
|
-
size: import("drizzle-orm/pg-core").
|
|
36
|
+
}, {}>;
|
|
37
|
+
size: import("drizzle-orm/pg-core").PgColumn<{
|
|
36
38
|
name: string;
|
|
37
39
|
tableName: "backups";
|
|
38
40
|
dataType: "number int32";
|
|
@@ -44,10 +46,11 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
44
46
|
isAutoincrement: false;
|
|
45
47
|
hasRuntimeDefault: false;
|
|
46
48
|
enumValues: undefined;
|
|
49
|
+
baseColumn: never;
|
|
47
50
|
identity: undefined;
|
|
48
51
|
generated: undefined;
|
|
49
|
-
}>;
|
|
50
|
-
createdAt: import("drizzle-orm/pg-core").
|
|
52
|
+
}, {}>;
|
|
53
|
+
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
51
54
|
name: string;
|
|
52
55
|
tableName: "backups";
|
|
53
56
|
dataType: "object date";
|
|
@@ -59,10 +62,11 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
59
62
|
isAutoincrement: false;
|
|
60
63
|
hasRuntimeDefault: false;
|
|
61
64
|
enumValues: undefined;
|
|
65
|
+
baseColumn: never;
|
|
62
66
|
identity: undefined;
|
|
63
67
|
generated: undefined;
|
|
64
|
-
}>;
|
|
65
|
-
status: import("drizzle-orm/pg-core").
|
|
68
|
+
}, {}>;
|
|
69
|
+
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
66
70
|
name: string;
|
|
67
71
|
tableName: "backups";
|
|
68
72
|
dataType: "string";
|
|
@@ -73,10 +77,11 @@ export declare const backupTable: import("drizzle-orm/pg-core").PgTableWithColum
|
|
|
73
77
|
isPrimaryKey: false;
|
|
74
78
|
isAutoincrement: false;
|
|
75
79
|
hasRuntimeDefault: false;
|
|
76
|
-
enumValues:
|
|
80
|
+
enumValues: [string, ...string[]];
|
|
81
|
+
baseColumn: never;
|
|
77
82
|
identity: undefined;
|
|
78
83
|
generated: undefined;
|
|
79
|
-
}>;
|
|
84
|
+
}, {}>;
|
|
80
85
|
};
|
|
81
86
|
dialect: "pg";
|
|
82
87
|
}>;
|
|
@@ -7,9 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.CreateBackupButton = CreateBackupButton;
|
|
8
8
|
exports.DeleteBackupButton = DeleteBackupButton;
|
|
9
9
|
exports.RestoreBackupButton = RestoreBackupButton;
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var React = _react;
|
|
10
12
|
var _ui = require("@arch-cadre/ui");
|
|
11
|
-
var _react = require("react");
|
|
12
13
|
var _backupActions = require("./backup-actions.cjs");
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
16
|
function CreateBackupButton() {
|
|
14
17
|
const [pending, setPending] = (0, _react.useState)(false);
|
|
15
18
|
const handleCreate = async () => {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export declare function CreateBackupButton(): React.JSX.Element;
|
|
2
3
|
export declare function RestoreBackupButton({ id }: {
|
|
3
4
|
id: string;
|
|
4
|
-
}):
|
|
5
|
+
}): React.JSX.Element;
|
|
5
6
|
export declare function DeleteBackupButton({ id }: {
|
|
6
7
|
id: string;
|
|
7
|
-
}):
|
|
8
|
+
}): React.JSX.Element;
|
|
@@ -4,12 +4,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
module.exports = BackupListPage;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
7
8
|
var _card = require("@arch-cadre/ui/components/card");
|
|
8
9
|
var _table = require("@arch-cadre/ui/components/table");
|
|
9
10
|
var _dateFns = require("date-fns");
|
|
10
11
|
var _locale = require("date-fns/locale");
|
|
11
12
|
var _actions = require("../../actions.cjs");
|
|
12
13
|
var _backupClient = require("../components/backup-client.cjs");
|
|
14
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
16
|
function formatBytes(bytes, decimals = 2) {
|
|
14
17
|
if (bytes === 0) return "0 Bytes";
|
|
15
18
|
const k = 1024;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export default function BackupListPage(): Promise<React.JSX.Element>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Settings saved successfully": "Ustawienia zostały zapisane pomyślnie",
|
|
3
|
+
"Failed to save settings": "Nie udało się zapisać ustawień",
|
|
4
|
+
"Loading Sample Settings...": "Ładowanie przykładowych ustawień...",
|
|
5
|
+
"Sample Settings": "Przykładowe ustawienia",
|
|
6
|
+
"Configure your Sample Configuration.": "Skonfiguruj swoją przykładową konfigurację.",
|
|
7
|
+
"Default Var": "Domyślna zmienna",
|
|
8
|
+
"Save Configuration": "Zapisz konfigurację",
|
|
9
|
+
"General": "Ogólny",
|
|
10
|
+
"Sample Configuration": "Przykładowa konfiguracja"
|
|
11
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arch-cadre/backup-module",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Backup module for Kryo framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"build": "unbuild"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@arch-cadre/modules": "^0.0.
|
|
29
|
-
"@arch-cadre/ui": "^0.0.
|
|
28
|
+
"@arch-cadre/modules": "^0.0.16",
|
|
29
|
+
"@arch-cadre/ui": "^0.0.16",
|
|
30
30
|
"@hookform/resolvers": "^3.10.0",
|
|
31
31
|
"date-fns": "^4.1.0",
|
|
32
|
-
"drizzle-orm": "1.0.0-beta.
|
|
32
|
+
"drizzle-orm": "1.0.0-beta.6-4414a19",
|
|
33
33
|
"lucide-react": "^0.475.0",
|
|
34
34
|
"pg": "^8.18.0",
|
|
35
35
|
"react-hook-form": "^7.54.2",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"zod": "^3.24.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@arch-cadre/core": "^0.0.
|
|
40
|
+
"@arch-cadre/core": "^0.0.16",
|
|
41
41
|
"@types/pg": "^8.16.0",
|
|
42
42
|
"@types/react": "^19",
|
|
43
43
|
"next": "16.1.1",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"unbuild": "^3.6.1"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@arch-cadre/core": "^0.0.
|
|
50
|
-
"@arch-cadre/intl": "^0.0.
|
|
51
|
-
"@arch-cadre/ui": "^0.0.
|
|
49
|
+
"@arch-cadre/core": "^0.0.16",
|
|
50
|
+
"@arch-cadre/intl": "^0.0.16",
|
|
51
|
+
"@arch-cadre/ui": "^0.0.16",
|
|
52
52
|
"next": ">=13.0.0",
|
|
53
53
|
"react": "^19.0.0"
|
|
54
54
|
},
|