@tachybase/plugin-api-logs 0.23.43

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.
Files changed (56) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/client.d.ts +2 -0
  4. package/client.js +1 -0
  5. package/dist/client/ApiLogsBlockInitializer.d.ts +1 -0
  6. package/dist/client/ApiLogsBlockProvider.d.ts +4 -0
  7. package/dist/client/ApiLogsProvider.d.ts +1 -0
  8. package/dist/client/collections.d.ts +184 -0
  9. package/dist/client/components/ApiLogsField.d.ts +2 -0
  10. package/dist/client/components/ApiLogsValue.d.ts +2 -0
  11. package/dist/client/components/ApiLogsViewActionInitializer.d.ts +1 -0
  12. package/dist/client/components/useApiLogsConfigUpdateProps.d.ts +9 -0
  13. package/dist/client/configuration/apiLogsConfigProvider.d.ts +1 -0
  14. package/dist/client/configuration/apiLogsConfigschema.d.ts +12 -0
  15. package/dist/client/deplicated/ApiLogs.d.ts +1 -0
  16. package/dist/client/deplicated/ApiLogsDesigner.d.ts +1 -0
  17. package/dist/client/index.d.ts +1 -0
  18. package/dist/client/index.js +1 -0
  19. package/dist/client/initializers/ApiLogsTableActionColumnInitializer.d.ts +1 -0
  20. package/dist/client/initializers/ApiLogsTableActionColumnInitializers.d.ts +2 -0
  21. package/dist/client/initializers/ApiLogsTableActionInitializers.d.ts +3 -0
  22. package/dist/client/initializers/ApiLogsTableColumnInitializers.d.ts +2 -0
  23. package/dist/client/locale.d.ts +4 -0
  24. package/dist/client/plugin.d.ts +5 -0
  25. package/dist/externalVersion.js +15 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.js +39 -0
  28. package/dist/locale/en-US.json +44 -0
  29. package/dist/locale/zh-CN.json +49 -0
  30. package/dist/server/ApiFilter.d.ts +16 -0
  31. package/dist/server/ApiFilter.js +64 -0
  32. package/dist/server/actions/apiLogsController.d.ts +4 -0
  33. package/dist/server/actions/apiLogsController.js +115 -0
  34. package/dist/server/collections/apiLogs.d.ts +3 -0
  35. package/dist/server/collections/apiLogs.js +72 -0
  36. package/dist/server/collections/apiLogsChanges.d.ts +2 -0
  37. package/dist/server/collections/apiLogsChanges.js +55 -0
  38. package/dist/server/collections/apiLogsConfig.d.ts +3 -0
  39. package/dist/server/collections/apiLogsConfig.js +59 -0
  40. package/dist/server/hooks/afterCreate.d.ts +1 -0
  41. package/dist/server/hooks/afterCreate.js +74 -0
  42. package/dist/server/hooks/afterDestroy.d.ts +1 -0
  43. package/dist/server/hooks/afterDestroy.js +66 -0
  44. package/dist/server/hooks/afterUpdate.d.ts +1 -0
  45. package/dist/server/hooks/afterUpdate.js +82 -0
  46. package/dist/server/hooks/getFieldChange.d.ts +6 -0
  47. package/dist/server/hooks/getFieldChange.js +151 -0
  48. package/dist/server/hooks/index.d.ts +3 -0
  49. package/dist/server/hooks/index.js +25 -0
  50. package/dist/server/index.d.ts +1 -0
  51. package/dist/server/index.js +33 -0
  52. package/dist/server/plugin.d.ts +8 -0
  53. package/dist/server/plugin.js +128 -0
  54. package/package.json +31 -0
  55. package/server.d.ts +2 -0
  56. package/server.js +1 -0
@@ -0,0 +1,44 @@
1
+ {
2
+ "Action column": "Action column",
3
+ "Action type": "Action type",
4
+ "Actions": "Actions",
5
+ "Add new": "Add new",
6
+ "After change": "After change",
7
+ "Api Changes": "Api Changes",
8
+ "Api Logs": "Api Logs",
9
+ "Api logs": "Api logs",
10
+ "Before change": "Before change",
11
+ "Cancel": "Cancel",
12
+ "Collection": "Collection",
13
+ "Collection display name": "Collection display name",
14
+ "Collection name": "Collection name",
15
+ "Collections": "Collections",
16
+ "Column width": "Column width",
17
+ "Configure actions": "Configure actions",
18
+ "Configure columns": "Configure columns",
19
+ "Create record": "Create record",
20
+ "Created at": "Created at",
21
+ "Created by": "Created by",
22
+ "Data changes": "Data changes",
23
+ "Delete": "Delete",
24
+ "Delete record": "Delete record",
25
+ "Details": "Details",
26
+ "Details of changes": "Details of changes",
27
+ "Display association fields": "Display association fields",
28
+ "Display fields": "Display fields",
29
+ "Enable actions": "Enable actions",
30
+ "Field": "Field",
31
+ "Field display name": "Field display name",
32
+ "Field value changes": "Field value changes",
33
+ "Filter": "Filter",
34
+ "Insert": "Insert",
35
+ "Record ID": "Record ID",
36
+ "Records per page": "Records per page",
37
+ "Refresh": "Refresh",
38
+ "Submit": "Submit",
39
+ "Update": "Update",
40
+ "Update record": "Update record",
41
+ "User": "User",
42
+ "View": "View",
43
+ "View record": "View record"
44
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "Action column": "操作列",
3
+ "Action type": "操作类型",
4
+ "Actions": "操作",
5
+ "Add new": "添加",
6
+ "After change": "变化后",
7
+ "Api Changes": "Api审计变化",
8
+ "Api Logs": "Api审计日志",
9
+ "Api audit": "Api审计启用",
10
+ "Api logs": "Api审计日志",
11
+ "Api logs configuration": "Api日志配置",
12
+ "Before change": "变化前",
13
+ "Cancel": "取消",
14
+ "Collection": "数据集",
15
+ "Collection display name": "数据集显示名称",
16
+ "Collection name": "数据集名称",
17
+ "Collections": "数据集",
18
+ "Column width": "列宽",
19
+ "Configure actions": "操作配置",
20
+ "Configure columns": "列配置",
21
+ "Create record": "新增数据",
22
+ "Created at": "创建于",
23
+ "Created by": "由创建",
24
+ "Data change value": "查看数据",
25
+ "Data changes": "数据变化",
26
+ "Delete": "删除",
27
+ "Delete record": "删除数据",
28
+ "Details": "详情",
29
+ "Details of changes": "变化详情",
30
+ "Display association fields": "显示关联字段",
31
+ "Display fields": "显示字段",
32
+ "Enable actions": "启用的操作",
33
+ "Field": "字段",
34
+ "Field display name": "字段显示名称",
35
+ "Field value changes": "字段值变化",
36
+ "Filter": "过滤",
37
+ "Insert": "插入",
38
+ "Record ID": "数据 ID",
39
+ "Records per page": "每页数据",
40
+ "Refresh": "刷新",
41
+ "Resource name": "数据表",
42
+ "Submit": "提交",
43
+ "Table sync": "数据表同步",
44
+ "Update": "编辑",
45
+ "Update record": "编辑数据",
46
+ "User": "用户",
47
+ "View": "查看",
48
+ "View record": "查看数据"
49
+ }
@@ -0,0 +1,16 @@
1
+ import Database, { Transaction } from '@tachybase/database';
2
+ export declare class ApiFilter {
3
+ db: Database;
4
+ whiteList: {
5
+ resourceName: string;
6
+ action: string;
7
+ }[];
8
+ blackList: {
9
+ resourceName: string;
10
+ action: string;
11
+ }[];
12
+ constructor(database: Database);
13
+ load(transaction?: Transaction): Promise<void>;
14
+ addRefreshListener(): Promise<void>;
15
+ check(resourceName: string, actionName: string): boolean;
16
+ }
@@ -0,0 +1,64 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var ApiFilter_exports = {};
19
+ __export(ApiFilter_exports, {
20
+ ApiFilter: () => ApiFilter
21
+ });
22
+ module.exports = __toCommonJS(ApiFilter_exports);
23
+ class ApiFilter {
24
+ constructor(database) {
25
+ // 白名单
26
+ this.whiteList = [];
27
+ this.blackList = [];
28
+ this.db = database;
29
+ this.load().catch(console.error);
30
+ this.addRefreshListener().catch(console.error);
31
+ }
32
+ // app.start的时候从数据库apiLogsConfig保存到whiteList和blackList
33
+ async load(transaction) {
34
+ try {
35
+ const apiConfigs = await this.db.getRepository("apiLogsConfig").find({ transaction });
36
+ this.whiteList = [];
37
+ this.blackList = [];
38
+ for (const item of apiConfigs) {
39
+ if (item.apiConfig) {
40
+ this.whiteList.push({ resourceName: item.resourceName, action: item.action });
41
+ } else {
42
+ this.blackList.push({ resourceName: item.resourceName, action: item.action });
43
+ }
44
+ }
45
+ } catch (error) {
46
+ console.error("Failed to load API filter lists:", error);
47
+ }
48
+ }
49
+ async addRefreshListener() {
50
+ this.db.on("apiLogsConfig.afterSave", async (model, options) => {
51
+ await this.load(options.transaction);
52
+ });
53
+ this.db.on("apiLogsConfig.afterDestroy", async (model, options) => {
54
+ await this.load(options.transaction);
55
+ });
56
+ }
57
+ check(resourceName, actionName) {
58
+ return this.whiteList.some((item) => item.resourceName === resourceName && item.action === actionName);
59
+ }
60
+ }
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ ApiFilter
64
+ });
@@ -0,0 +1,4 @@
1
+ import { Context, Next } from '@tachybase/actions';
2
+ export declare class ApiLogsController {
3
+ tableSync(ctx: Context, next: Next): Promise<void>;
4
+ }
@@ -0,0 +1,115 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
26
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
27
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
28
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
29
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
30
+ var __runInitializers = (array, flags, self, value) => {
31
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
32
+ return value;
33
+ };
34
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
35
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
36
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
37
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
38
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
39
+ return __privateGet(this, extra);
40
+ }, set [name](x) {
41
+ return __privateSet(this, extra, x);
42
+ } }, name));
43
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
44
+ for (var i = decorators.length - 1; i >= 0; i--) {
45
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
46
+ if (k) {
47
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
48
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
49
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
50
+ }
51
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
52
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
53
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
54
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
55
+ }
56
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
57
+ };
58
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
59
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
60
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
61
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
62
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
63
+ var apiLogsController_exports = {};
64
+ __export(apiLogsController_exports, {
65
+ ApiLogsController: () => ApiLogsController
66
+ });
67
+ module.exports = __toCommonJS(apiLogsController_exports);
68
+ var import_utils = require("@tachybase/utils");
69
+ var _tableSync_dec, _ApiLogsController_decorators, _init;
70
+ _ApiLogsController_decorators = [(0, import_utils.Controller)("apiLogsConfig")], _tableSync_dec = [(0, import_utils.Action)("tablesync", { acl: "block" })];
71
+ class ApiLogsController {
72
+ constructor() {
73
+ __runInitializers(_init, 5, this);
74
+ }
75
+ async tableSync(ctx, next) {
76
+ var _a, _b, _c, _d;
77
+ const apiLogsRepo = ctx.db.getRepository("apiLogsConfig");
78
+ const apiLogsConfigs = await apiLogsRepo.find();
79
+ const collectionsToInsert = [];
80
+ const collections = ctx.db.collections;
81
+ for (const [key, value] of collections) {
82
+ const collectionName = key;
83
+ const collectionTitle = ((_a = value.options) == null ? void 0 : _a.title) || "";
84
+ const actions = ["create", "update", "destroy"];
85
+ const existingActions = apiLogsConfigs.filter((data) => data.resourceName === collectionName).map((data) => data.action);
86
+ actions.forEach((action) => {
87
+ if (!existingActions.includes(action)) {
88
+ collectionsToInsert.push({
89
+ resourceName: collectionName,
90
+ title: collectionTitle,
91
+ action,
92
+ apiConfig: false
93
+ });
94
+ }
95
+ });
96
+ }
97
+ if (!collectionsToInsert.length) {
98
+ return;
99
+ }
100
+ try {
101
+ await apiLogsRepo.createMany({ records: collectionsToInsert });
102
+ } catch (error) {
103
+ ctx.throw(((_d = (_c = (_b = error == null ? void 0 : error.response) == null ? void 0 : _b.data) == null ? void 0 : _c.error) == null ? void 0 : _d.message) || "request error");
104
+ }
105
+ await next();
106
+ }
107
+ }
108
+ _init = __decoratorStart(null);
109
+ __decorateElement(_init, 1, "tableSync", _tableSync_dec, ApiLogsController);
110
+ ApiLogsController = __decorateElement(_init, 0, "ApiLogsController", _ApiLogsController_decorators, ApiLogsController);
111
+ __runInitializers(_init, 1, ApiLogsController);
112
+ // Annotate the CommonJS export names for ESM import in node:
113
+ 0 && (module.exports = {
114
+ ApiLogsController
115
+ });
@@ -0,0 +1,3 @@
1
+ import { CollectionOptions } from '@tachybase/database';
2
+ declare const _default: CollectionOptions;
3
+ export default _default;
@@ -0,0 +1,72 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var apiLogs_exports = {};
19
+ __export(apiLogs_exports, {
20
+ default: () => apiLogs_default
21
+ });
22
+ module.exports = __toCommonJS(apiLogs_exports);
23
+ var apiLogs_default = {
24
+ dumpRules: {
25
+ group: "log"
26
+ },
27
+ name: "apiLogs",
28
+ createdBy: false,
29
+ updatedBy: false,
30
+ updatedAt: false,
31
+ createdAt: false,
32
+ shared: true,
33
+ fields: [
34
+ {
35
+ type: "date",
36
+ name: "createdAt"
37
+ },
38
+ {
39
+ type: "string",
40
+ name: "action"
41
+ },
42
+ {
43
+ type: "string",
44
+ name: "recordId",
45
+ index: true
46
+ },
47
+ {
48
+ type: "string",
49
+ name: "collectionName"
50
+ },
51
+ {
52
+ type: "belongsTo",
53
+ name: "collection",
54
+ target: "collections",
55
+ targetKey: "name",
56
+ sourceKey: "id",
57
+ foreignKey: "collectionName",
58
+ constraints: false
59
+ },
60
+ {
61
+ type: "hasMany",
62
+ name: "changes",
63
+ target: "apiLogsChanges",
64
+ foreignKey: "apiLogId"
65
+ },
66
+ {
67
+ type: "belongsTo",
68
+ name: "user",
69
+ target: "users"
70
+ }
71
+ ]
72
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tachybase/database").CollectionOptions;
2
+ export default _default;
@@ -0,0 +1,55 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var apiLogsChanges_exports = {};
19
+ __export(apiLogsChanges_exports, {
20
+ default: () => apiLogsChanges_default
21
+ });
22
+ module.exports = __toCommonJS(apiLogsChanges_exports);
23
+ var import_database = require("@tachybase/database");
24
+ var apiLogsChanges_default = (0, import_database.defineCollection)({
25
+ dumpRules: {
26
+ group: "log"
27
+ },
28
+ name: "apiLogsChanges",
29
+ title: '{{t("Data change value")}}',
30
+ createdBy: false,
31
+ updatedBy: false,
32
+ createdAt: false,
33
+ updatedAt: false,
34
+ shared: true,
35
+ fields: [
36
+ {
37
+ type: "json",
38
+ name: "field"
39
+ },
40
+ {
41
+ type: "json",
42
+ name: "before"
43
+ },
44
+ {
45
+ type: "json",
46
+ name: "after"
47
+ },
48
+ {
49
+ type: "belongsTo",
50
+ name: "log",
51
+ target: "apiLogs",
52
+ foreignKey: "apiLogId"
53
+ }
54
+ ]
55
+ });
@@ -0,0 +1,3 @@
1
+ import { CollectionOptions } from '@tachybase/database';
2
+ declare const _default: CollectionOptions;
3
+ export default _default;
@@ -0,0 +1,59 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var apiLogsConfig_exports = {};
19
+ __export(apiLogsConfig_exports, {
20
+ default: () => apiLogsConfig_default
21
+ });
22
+ module.exports = __toCommonJS(apiLogsConfig_exports);
23
+ var apiLogsConfig_default = {
24
+ dumpRules: {
25
+ group: "log"
26
+ },
27
+ name: "apiLogsConfig",
28
+ createdBy: false,
29
+ updatedBy: false,
30
+ updatedAt: false,
31
+ createdAt: false,
32
+ shared: true,
33
+ model: "CollectionModel",
34
+ fields: [
35
+ {
36
+ type: "string",
37
+ name: "resourceName"
38
+ },
39
+ {
40
+ type: "string",
41
+ name: "title"
42
+ },
43
+ {
44
+ type: "string",
45
+ name: "action"
46
+ },
47
+ {
48
+ type: "boolean",
49
+ name: "apiConfig",
50
+ defaultValue: true
51
+ }
52
+ ],
53
+ indexes: [
54
+ {
55
+ fields: ["resourceName", "action"],
56
+ unique: true
57
+ }
58
+ ]
59
+ };
@@ -0,0 +1 @@
1
+ export declare function handleCreate(ctx: any): Promise<void>;
@@ -0,0 +1,74 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var afterCreate_exports = {};
19
+ __export(afterCreate_exports, {
20
+ handleCreate: () => handleCreate
21
+ });
22
+ module.exports = __toCommonJS(afterCreate_exports);
23
+ async function handleCreate(ctx) {
24
+ var _a;
25
+ const { actionName, resourceName, params } = ctx.action;
26
+ const currentTime = (/* @__PURE__ */ new Date()).toISOString();
27
+ const apilogsRepo = ctx.db.getRepository("apiLogs");
28
+ const currentUserId = (_a = ctx.auth) == null ? void 0 : _a.user.id;
29
+ const currentRecordId = params.filterByTk;
30
+ const app = ctx.app;
31
+ const collection = app.mainDataSource.collectionManager.getCollection(ctx.action.resourceName);
32
+ const changes = [];
33
+ const changed = params.values;
34
+ if (changed) {
35
+ Object.keys(changed).forEach((key) => {
36
+ const field = collection.findField((field2) => {
37
+ return field2.name === key || field2.options.field === key;
38
+ });
39
+ if (changed[key] && field && !field.options.hidden) {
40
+ changes.push({
41
+ field: field.options,
42
+ after: changed[key]
43
+ });
44
+ }
45
+ });
46
+ }
47
+ if (!changes.length) {
48
+ return;
49
+ }
50
+ try {
51
+ await apilogsRepo.create({
52
+ values: {
53
+ action: actionName,
54
+ createdAt: currentTime,
55
+ collectionName: resourceName,
56
+ recordId: currentRecordId,
57
+ userId: currentUserId,
58
+ changes
59
+ }
60
+ });
61
+ } catch (error) {
62
+ ctx.logger.error("Failed to create API log:", {
63
+ error,
64
+ action: actionName,
65
+ resourceName,
66
+ recordId: currentRecordId
67
+ });
68
+ throw new Error(`Failed to create API log: ${error.message}`);
69
+ }
70
+ }
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ handleCreate
74
+ });
@@ -0,0 +1 @@
1
+ export declare function handleDestroy(ctx: any): Promise<void>;
@@ -0,0 +1,66 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var afterDestroy_exports = {};
19
+ __export(afterDestroy_exports, {
20
+ handleDestroy: () => handleDestroy
21
+ });
22
+ module.exports = __toCommonJS(afterDestroy_exports);
23
+ var import_getFieldChange = require("./getFieldChange");
24
+ async function handleDestroy(ctx) {
25
+ var _a;
26
+ const { actionName, resourceName, params } = ctx.action;
27
+ const currentTime = (/* @__PURE__ */ new Date()).toISOString();
28
+ const apilogsRepo = ctx.db.getRepository("apiLogs");
29
+ const currentUserId = (_a = ctx.auth) == null ? void 0 : _a.user.id;
30
+ const app = ctx.app;
31
+ const collection = app.mainDataSource.collectionManager.getCollection(ctx.action.resourceName);
32
+ const changes = [];
33
+ const { changed, data: dataBefore } = await (0, import_getFieldChange.getChanged)(ctx);
34
+ Object.keys(dataBefore).forEach((key) => {
35
+ const field = collection.findField((field2) => {
36
+ return field2.name === key || field2.options.field === key;
37
+ });
38
+ if (dataBefore[key] && field && !field.options.hidden) {
39
+ changes.push({
40
+ field: field.options,
41
+ before: dataBefore[key]
42
+ });
43
+ }
44
+ });
45
+ if (!changes.length) {
46
+ return;
47
+ }
48
+ try {
49
+ await apilogsRepo.create({
50
+ values: {
51
+ action: actionName,
52
+ createdAt: currentTime,
53
+ collectionName: resourceName,
54
+ recordId: params.filterByTk,
55
+ userId: currentUserId,
56
+ changes
57
+ }
58
+ });
59
+ } catch (error) {
60
+ throw new Error("Failed to create API log");
61
+ }
62
+ }
63
+ // Annotate the CommonJS export names for ESM import in node:
64
+ 0 && (module.exports = {
65
+ handleDestroy
66
+ });
@@ -0,0 +1 @@
1
+ export declare function handleUpdate(ctx: any): Promise<void>;