UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

75 lines (74 loc) 3.01 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const collect_js_1 = __importDefault(require("collect.js")); const debug_1 = __importDefault(require("../support/debug")); exports.default = (Parent) => { class DumpResourceActions extends Parent { /** * Indicates activating dump events for the resource. */ dumpActions = true; /** * Create an action event for the resource creation. */ dumpCreationAction(requestID, payload = {}, userId) { this.dump(requestID, 'Create', userId, payload); } /** * Create an action event for the resource updates. */ dumpUpdateAction(requestID, previous, payload = {}, userId) { const changes = (0, collect_js_1.default)(this.resource.getAttributes()) .diffAssoc((0, collect_js_1.default)(previous.getAttributes())) .all(); this.dump(requestID, 'Create', userId, payload, changes); } /** * Create an action event for the resource delete. */ dumpDeletionAction(requestID, userId) { this.dump(requestID, 'Delete', userId); } /** * Create an action event for the resource delete. */ dumpRestoreAction(requestID, userId) { this.dump(requestID, 'Restore', userId); } /** * Create an action event for the resource delete. */ dumpStandaloneActionAction(requestID, action, payload = {}, userId) { this.dump(requestID, action.name(), userId, payload); } /** * Create an action event for the resource delete. */ dumpBulkActionAction(requestID, action, changes = [], payload = {}, userId) { changes.forEach(({ resource, previous }) => { const changes = (0, collect_js_1.default)(resource.getAttributes()) .diffAssoc((0, collect_js_1.default)(previous.getAttributes())) .all(); this.dump(requestID, action.name(), userId, payload, changes); }); } /** * Get the default attributes for creating a new action event. */ dump(requestID, action, userId, payload, changes) { if (this.debugIsEnabled()) { debug_1.default.dump(`RequestID: "${requestID}"`, `Resource: "${this.resourceName()}"`, `Action: "${action}"`, `User: "${userId || 'N/A'}"`, `Payload: ${JSON.stringify(payload ?? [])}`, `Changes: ${JSON.stringify(changes ?? [])}`); } } /** * Determine could dump the action. */ debugIsEnabled() { return this.resource !== undefined && this.dumpActions; } } return DumpResourceActions; };