34 lines
1.2 KiB
JavaScript
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;
|