#!/usr/bin/env -S node --no-warnings --loader ts-node/esm var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; /** * Sidecar - https://github.com/huan/sidecar * * @copyright 2021 Huan LI (李卓桓) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import { test } from 'tstest'; import { Call, Hook, Ret, Sidecar, SidecarBody, RetType, ParamType, agentTarget, } from '../src/mod.js'; function getFixture() { let MessagingSidecar = class MessagingSidecar extends SidecarBody { mo(content, count) { return Ret(content, count); } mt(message) { return Ret(message); } }; __decorate([ Call(0x1234), RetType('pointer', 'Utf8String'), __param(0, ParamType('pointer', 'Utf8String')), __param(1, ParamType('int')), __metadata("design:type", Function), __metadata("design:paramtypes", [String, Number]), __metadata("design:returntype", Promise) ], MessagingSidecar.prototype, "mo", null); __decorate([ Hook(agentTarget('label1')), __param(0, ParamType('pointer', 'Utf8String')), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], MessagingSidecar.prototype, "mt", null); MessagingSidecar = __decorate([ Sidecar('messaging', 'console.log("Sidecar inited")') ], MessagingSidecar); return MessagingSidecar; } test('smoke testing', async (t) => { const MessagingSidecar = getFixture(); const sidecar = new MessagingSidecar(); sidecar.on('hook', payload => { console.log('payload:', payload); }); const EXPECTED_RET_VALUE = 42; sidecar.script = { exports: { mo: () => Promise.resolve(EXPECTED_RET_VALUE), }, }; const ret = await sidecar.mo('hello', 2); t.equal(ret, EXPECTED_RET_VALUE, 'should get the proxyed method value from script'); }); test('ChatboxSidecar testing', async (t) => { const MessagingSidecar = getFixture(); const sidecar = new MessagingSidecar(); sidecar.on('hook', payload => { console.log('payload:', payload); }); const EXPECTED_RET_VALUE = 42; sidecar.script = { exports: { mo: () => Promise.resolve(EXPECTED_RET_VALUE), }, }; const ret = await sidecar.mo('hello', 2); t.equal(ret, EXPECTED_RET_VALUE, 'should get the proxyed method value from script'); }); //# sourceMappingURL=integration.spec.js.map