"use strict"; // The declarations in dist/types: what a TypeScript consumer compiles against. const { test } = require("node:test"); const assert = require("node:assert/strict"); const path = require("node:path"); const { spawnSync } = require("node:child_process"); const { ActionMapping, AlexaActions, AlexaStatusMessage, EndpointHealth } = require("alex2node"); const FIXTURES = path.join(__dirname, "fixtures"); test("the declarations compile for a CommonJS and an ES module consumer (test/fixtures/types.ts, types.mts)", () => { const tsc = require.resolve("typescript/bin/tsc"); const run = spawnSync(process.execPath, [tsc, "-p", path.join(FIXTURES, "tsconfig.json")], { encoding: "utf8" }); assert.equal(run.status, 0, `tsc reported:\n${run.stdout}${run.stderr}`); }); test("what the declarations promise holds at run time: ActionMapping without a payload, addHealthProp with the enum or the string", () => { assert.deepEqual(new ActionMapping([AlexaActions.Close], "TurnOn").toJSON(), { "@type": "ActionsToDirective", actions: ["Alexa.Actions.Close"], directive: { name: "TurnOn" }, }); const health = (h) => { const message = new AlexaStatusMessage("ct", "root", "e", null).addHealthProp(h).toJSON(); return message.context.properties[0].value; }; assert.deepEqual(health(EndpointHealth.OK), { value: "OK" }); assert.deepEqual(health("UNREACHABLE"), { value: "UNREACHABLE" }); });