@dooboostore/simple-boot-http-server-ssr
Version:
front end SPA frameworks SSR
68 lines • 3.33 kB
JavaScript
import { __awaiter, __decorate } from "tslib";
import { getSim, Sim } from '@dooboostore/simple-boot/decorators/SimDecorator';
import { HttpHeaders } from '@dooboostore/simple-boot-http-server/codes/HttpHeaders';
import { HttpHeaders as SSRHttpHeaders } from '../codes/HttpHeaders';
import { Mimes as SSRMimes } from '../codes/Mimes';
import { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';
import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';
let IntentSchemeFrontProxy = class IntentSchemeFrontProxy {
get(target, prop) {
const t = target[prop];
// TODO: 여기에 추가적인 프로퍼티 작성으 추가적으로 해야된다..
// if (typeof t === 'function') {
if (!['constructor', 'onProxyDomRender', 'toString'].includes(prop)) {
return (...args) => {
var _a, _b, _c;
// const simstanceManager = target._SimpleBoot_simstanceManager;
const simOption = target._SimpleBoot_simOption;
const config = getSim(target);
// const scheme = getSim(target)?.scheme;
const firstScheme = ConvertUtils.flatArray(config === null || config === void 0 ? void 0 : config.scheme)[0];
const key = firstScheme + '_' + prop;
const type = ReflectUtils.getReturnType(target, prop);
const isHas = (key in ((_a = simOption.window.server_side_data) !== null && _a !== void 0 ? _a : {}));
if (isHas) {
const data = (_b = simOption.window.server_side_data) === null || _b === void 0 ? void 0 : _b[key];
(_c = simOption.window.server_side_data) === null || _c === void 0 ? true : delete _c[key];
let rdata;
if (type instanceof Promise) {
rdata = Promise.resolve(data);
}
else {
rdata = data;
}
return rdata;
}
else {
return fetch(`/${prop.toString()}`, {
method: 'POST',
headers: { [HttpHeaders.ContentType]: SSRMimes.ApplicationJsonPostSimpleBootSsrIntentScheme, [SSRHttpHeaders.XSimpleBootSsrIntentScheme]: firstScheme !== null && firstScheme !== void 0 ? firstScheme : '' },
body: JSON.stringify(args[0])
}).then((res) => __awaiter(this, void 0, void 0, function* () {
try {
const data = yield res.json();
return data;
}
catch (e) {
try {
return yield res.text();
}
catch (e) {
return undefined;
}
}
}));
}
// return t.apply(target, args);
};
}
else {
return t;
}
}
};
IntentSchemeFrontProxy = __decorate([
Sim
], IntentSchemeFrontProxy);
export { IntentSchemeFrontProxy };
//# sourceMappingURL=IntentSchemeFrontProxy.js.map