oak-frontend-base/lib/aspects/AspectService.js

34 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createService = void 0;
const tslib_1 = require("tslib");
const assert_1 = tslib_1.__importDefault(require("assert"));
const createService = (cache) => {
return new Proxy({}, {
get: (target, prop) => {
(0, assert_1.default)(typeof prop === "string", "Aspect service name must be a string");
return (params, callback, dontPublish, ignoreContext) => {
const paramsCopy = structuredClone(params);
if (process.env.NODE_ENV === "development") {
console.log("Aspect call:", prop, paramsCopy);
}
return new Promise((resolve, reject) => {
cache
.exec(prop, paramsCopy, callback, dontPublish, ignoreContext)
.then((res) => {
resolve(res.result);
})
.catch((err) => {
reject(err);
});
});
};
},
// 禁止任何set
set: () => {
throw new Error("Aspect service is readonly");
},
});
};
exports.createService = createService;