mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-09-21 17:04:00 +00:00
Merge pull request #476 from bbassie/feature/esm-migration
Migrate to ES modules
This commit is contained in:
@@ -4,5 +4,5 @@ export const plugin: lib.PluginDeclaration = {
|
||||
name: "exp_commands",
|
||||
title: "exp_commands",
|
||||
description: "Example Description. Plugin. Change me in index.ts",
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { BaseControllerPlugin } from "@clusterio/controller";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
import * as path from "node:path";
|
||||
|
||||
export class ControllerPlugin extends BaseControllerPlugin {
|
||||
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
|
||||
export * from "./messages";
|
||||
export type { ControllerPlugin } from "./controller";
|
||||
export * from "./messages.js";
|
||||
export type { ControllerPlugin } from "./controller.js";
|
||||
|
||||
declare module "@clusterio/lib" {
|
||||
export interface InstanceConfigFields {
|
||||
@@ -166,7 +166,7 @@ export const plugin: lib.PluginDeclaration = {
|
||||
},
|
||||
],
|
||||
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
instanceConfigFields: {
|
||||
"exp_groups.sync_mode": {
|
||||
description: "Synchronize permission groups with the controller",
|
||||
@@ -176,7 +176,7 @@ export const plugin: lib.PluginDeclaration = {
|
||||
},
|
||||
},
|
||||
|
||||
controllerEntrypoint: "./dist/node/controller",
|
||||
controllerEntrypoint: "./dist/node/controller.js",
|
||||
controllerConfigFields: {
|
||||
},
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { BaseInstancePlugin } from "@clusterio/host";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
|
||||
export type IpcGroupUpdated = {
|
||||
group_name: string,
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, { useContext, useEffect } from "react";
|
||||
import { Modal, Form, Select } from "antd";
|
||||
|
||||
import { ControlContext, useUsers } from "@clusterio/web_ui";
|
||||
import * as messages from "../../messages";
|
||||
import * as messages from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
export default function AssignmentForm({ open, setOpen, initial }: {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Table, Button, Space, Input, InputRef } from "antd";
|
||||
import { EditOutlined, SearchOutlined } from "@ant-design/icons";
|
||||
|
||||
import { ControlContext, useAccount } from "@clusterio/web_ui";
|
||||
import { AssignmentDeleteRequest, AssignmentRecord } from "../../messages";
|
||||
import { AssignmentDeleteRequest, AssignmentRecord } from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
import AssignmentForm from "./AssignmentForm";
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Modal, Form, Input, Switch } from "antd";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { ControlContext } from "@clusterio/web_ui";
|
||||
import * as messages from "../../messages";
|
||||
import * as messages from "../../messages.js";
|
||||
|
||||
export default function GroupForm({ open, setOpen }: {
|
||||
open: boolean,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Button, Checkbox, Input, Space, Spin, Alert } from "antd";
|
||||
import { ControlContext, useAccount, useDefaultModPack, PageLayout, PageHeader, notifyErrorHandler } from "@clusterio/web_ui";
|
||||
import DeletedConfirm from "./DeleteConfirm";
|
||||
|
||||
import * as messages from "../../messages";
|
||||
import * as messages from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
const DOMAIN_MAPPING = {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Table } from "antd";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { ControlContext } from "@clusterio/web_ui";
|
||||
import { GroupRecord } from "../../messages";
|
||||
import { GroupRecord } from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
import GroupForm from "./GroupForm";
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, { useContext, useEffect } from "react";
|
||||
import { Modal, Form, Select, InputNumber, Switch, Alert } from "antd";
|
||||
|
||||
import { ControlContext, useRoles } from "@clusterio/web_ui";
|
||||
import { RoleMappingRecord, RoleMappingCreateRequest, RoleMappingUpdateRequest } from "../../messages";
|
||||
import { RoleMappingRecord, RoleMappingCreateRequest, RoleMappingUpdateRequest } from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
export default function RoleMappingForm({ open, setOpen, initial }: {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Table, Button, Space, Tag } from "antd";
|
||||
import { EditOutlined } from "@ant-design/icons";
|
||||
|
||||
import { ControlContext, useAccount, useRoles } from "@clusterio/web_ui";
|
||||
import { RoleMappingRecord, RoleMappingDeleteRequest } from "../../messages";
|
||||
import { RoleMappingRecord, RoleMappingDeleteRequest } from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
import RoleMappingForm from "./RoleMappingForm";
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, { useState, useCallback, useSyncExternalStore } from "react";
|
||||
import { BaseWebPlugin, PageLayout, PageHeader, useAccount, SectionHeader } from "@clusterio/web_ui";
|
||||
import { Button } from "antd";
|
||||
|
||||
import * as messages from "../messages";
|
||||
import * as messages from "../messages.js";
|
||||
import * as lib from "@clusterio/lib";
|
||||
|
||||
import GroupsTable from "./components/GroupsTable";
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ export const plugin: lib.PluginDeclaration = {
|
||||
name: "exp_gui",
|
||||
title: "exp_gui",
|
||||
description: "Example Description. Plugin. Change me in index.ts",
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ export const plugin: lib.PluginDeclaration = {
|
||||
name: "exp_legacy",
|
||||
title: "exp_legacy",
|
||||
description: "Example Description. Plugin. Change me in index.ts",
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { BaseControllerPlugin, InstanceRecord } from "@clusterio/controller";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
import * as path from "node:path";
|
||||
|
||||
export class ControllerPlugin extends BaseControllerPlugin {
|
||||
|
||||
+5
-5
@@ -1,8 +1,8 @@
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
|
||||
export * from "./messages";
|
||||
export type { ControllerPlugin } from "./controller";
|
||||
export * from "./messages.js";
|
||||
export type { ControllerPlugin } from "./controller.js";
|
||||
|
||||
declare module "@clusterio/lib" {
|
||||
export interface InstanceConfigFields {
|
||||
@@ -35,7 +35,7 @@ export const plugin: lib.PluginDeclaration = {
|
||||
messages.AssignmentUpdateRequest,
|
||||
],
|
||||
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
instanceConfigFields: {
|
||||
"exp_roles.sync_mode": {
|
||||
description: "Synchronize in game roles with the controller",
|
||||
@@ -45,7 +45,7 @@ export const plugin: lib.PluginDeclaration = {
|
||||
},
|
||||
},
|
||||
|
||||
controllerEntrypoint: "./dist/node/controller",
|
||||
controllerEntrypoint: "./dist/node/controller.js",
|
||||
controllerConfigFields: {
|
||||
},
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { BaseInstancePlugin } from "@clusterio/host";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import * as messages from "./messages.js";
|
||||
|
||||
/** Sent by the lua side when roles are changed in game. */
|
||||
export type IpcAssignmentUpdate = {
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production",
|
||||
"test": "tap --disable-coverage --allow-empty-coverage test/*.test.js",
|
||||
"test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js",
|
||||
"coverage": "tap --coverage-report=text test/*.test.js"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
"use strict";
|
||||
const t = require("tap");
|
||||
const lib = require("@clusterio/lib");
|
||||
const { Controller } = require("@clusterio/controller");
|
||||
const { ControllerPlugin } = require("../dist/node/controller");
|
||||
const messages = require("../dist/node/messages");
|
||||
import t from "tap";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import { Controller } from "@clusterio/controller";
|
||||
import { ControllerPlugin } from "../dist/node/controller.js";
|
||||
import * as messages from "../dist/node/messages.js";
|
||||
|
||||
// The controller validates message classes against the link registry
|
||||
lib.Link.register(messages.RoleUpdatedEvent);
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
"use strict";
|
||||
const t = require("tap");
|
||||
const lib = require("@clusterio/lib");
|
||||
const { Instance } = require("@clusterio/host");
|
||||
const { InstancePlugin } = require("../dist/node/instance");
|
||||
const { plugin: pluginDeclaration } = require("../dist/node/index");
|
||||
const messages = require("../dist/node/messages");
|
||||
import t from "tap";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import { Instance } from "@clusterio/host";
|
||||
import { InstancePlugin } from "../dist/node/instance.js";
|
||||
import { plugin as pluginDeclaration } from "../dist/node/index.js";
|
||||
import * as messages from "../dist/node/messages.js";
|
||||
|
||||
// The instance validates message classes against the link registry, and the
|
||||
// plugin's config fields must be defined before an InstanceConfig can set them
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
const t = require("tap");
|
||||
const messages = require("../dist/node/messages");
|
||||
const { testMatrix, testRoundTripJsonSerialisable } = require("../../test/common");
|
||||
import t from "tap";
|
||||
import * as messages from "../dist/node/messages.js";
|
||||
import { testMatrix, testRoundTripJsonSerialisable } from "../../test/common.js";
|
||||
|
||||
const fullMeta = new messages.RoleMetaRecord(
|
||||
7, 3, 1, "Mod", "[Mod]", new messages.RoleColor(1, 2, 3), 3600000, true, 12345, false,
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
"use strict";
|
||||
const path = require("node:path");
|
||||
const t = require("tap");
|
||||
const { reportLuaTests } = require("../../test/lua/runner");
|
||||
import path from "node:path";
|
||||
import t from "tap";
|
||||
import { reportLuaTests } from "../../test/lua/runner.js";
|
||||
|
||||
const envFile = path.join(__dirname, "module", "env.lua");
|
||||
const envFile = path.join(import.meta.dirname, "module", "env.lua");
|
||||
|
||||
// Each file runs in its own lua state, and each test in a fresh environment
|
||||
t.test("control.lua", t2 => {
|
||||
for (const file of ["lookup.lua", "players.lua", "assignment.lua", "sync.lua", "holders.lua"]) {
|
||||
t2.test(file, t3 => reportLuaTests(t3, envFile, path.join(__dirname, "module", file)));
|
||||
t2.test(file, t3 => reportLuaTests(t3, envFile, path.join(import.meta.dirname, "module", file)));
|
||||
}
|
||||
t2.end();
|
||||
});
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Button, Col, ColorPicker, Form, Input, InputNumber, Row, Switch, Toolti
|
||||
import * as lib from "@clusterio/lib";
|
||||
import { ControlContext, SectionHeader, useAccount, notifyErrorHandler } from "@clusterio/web_ui";
|
||||
|
||||
import { RoleColor, RoleMetaRecord, RoleMetaUpdateRequest } from "../../messages";
|
||||
import { RoleColor, RoleMetaRecord, RoleMetaUpdateRequest } from "../../messages.js";
|
||||
import type { WebPlugin } from "..";
|
||||
|
||||
const MS_PER_HOUR = 3600000;
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, { useCallback, useSyncExternalStore } from "react";
|
||||
import { BaseWebPlugin } from "@clusterio/web_ui";
|
||||
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "../messages";
|
||||
import * as messages from "../messages.js";
|
||||
|
||||
import RoleProperties from "./components/RoleProperties";
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import { RoleMetaRecord, type ControllerPlugin as RolesPlugin } from "@expcluste
|
||||
import {
|
||||
GroupRecord, GroupPermissions, RoleMappingRecord, type ControllerPlugin as GroupsPlugin,
|
||||
} from "@expcluster/permission-groups";
|
||||
import * as messages from "./messages";
|
||||
import { SeedRole, SeedGroup, seedRoles, seedGroups, flattenSeedPermissions } from "./seed";
|
||||
import * as messages from "./messages.js";
|
||||
import { SeedRole, SeedGroup, seedRoles, seedGroups, flattenSeedPermissions } from "./seed.js";
|
||||
|
||||
export class ControllerPlugin extends BaseControllerPlugin {
|
||||
async init() {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as lib from "@clusterio/lib";
|
||||
import * as messages from "./messages";
|
||||
import { permissions as scenarioPermissions, type ScenarioPermissionName } from "./permissions";
|
||||
import * as messages from "./messages.js";
|
||||
import { permissions as scenarioPermissions, type ScenarioPermissionName } from "./permissions.js";
|
||||
|
||||
declare module "@clusterio/lib" {
|
||||
// Everything checked in game through exp_roles, plus the permissions checked on the controller
|
||||
@@ -15,8 +15,8 @@ export const plugin: lib.PluginDeclaration = {
|
||||
name: "exp_scenario",
|
||||
title: "exp_scenario",
|
||||
description: "Example Description. Plugin. Change me in index.ts",
|
||||
controllerEntrypoint: "./dist/node/controller",
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
controllerEntrypoint: "./dist/node/controller.js",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
|
||||
messages: [
|
||||
messages.SeedRequest,
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production",
|
||||
"test": "tap --disable-coverage --allow-empty-coverage test/*.test.js",
|
||||
"test": "tap --type-strip-only --disable-coverage --allow-empty-coverage test/*.test.js",
|
||||
"coverage": "tap --coverage-report=text test/*.test.js"
|
||||
},
|
||||
"engines": {
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
"use strict";
|
||||
const t = require("tap");
|
||||
const lib = require("@clusterio/lib");
|
||||
const { Controller } = require("@clusterio/controller");
|
||||
const { ControllerPlugin } = require("../dist/node/controller");
|
||||
const messages = require("../dist/node/messages");
|
||||
const { seedRoles, seedGroups } = require("../dist/node/seed");
|
||||
const roles = require("@expcluster/roles");
|
||||
const groups = require("@expcluster/permission-groups");
|
||||
const { ControllerPlugin: RolesPlugin } = require("@expcluster/roles/dist/node/controller");
|
||||
const { ControllerPlugin: GroupsPlugin } = require("@expcluster/permission-groups/dist/node/controller");
|
||||
const { GroupRecord, GroupPermissions, RoleMappingRecord } = require("@expcluster/permission-groups");
|
||||
import t from "tap";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import { Controller } from "@clusterio/controller";
|
||||
import { ControllerPlugin } from "../dist/node/controller.js";
|
||||
import * as messages from "../dist/node/messages.js";
|
||||
import { seedRoles, seedGroups } from "../dist/node/seed.js";
|
||||
import * as roles from "@expcluster/roles";
|
||||
import * as groups from "@expcluster/permission-groups";
|
||||
import { ControllerPlugin as RolesPlugin } from "@expcluster/roles/dist/node/controller.js";
|
||||
import { ControllerPlugin as GroupsPlugin } from "@expcluster/permission-groups/dist/node/controller.js";
|
||||
import { GroupRecord, GroupPermissions, RoleMappingRecord } from "@expcluster/permission-groups";
|
||||
|
||||
const { plugin } = require("../dist/node/index");
|
||||
import { plugin } from "../dist/node/index.js";
|
||||
|
||||
// Registering the plugin defines the permissions the seed grants
|
||||
lib.registerPluginPermissions([plugin]);
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
"use strict";
|
||||
const t = require("tap");
|
||||
const lib = require("@clusterio/lib");
|
||||
const { seedRoles, seedGroups, flattenSeedPermissions } = require("../dist/node/seed");
|
||||
import t from "tap";
|
||||
import * as lib from "@clusterio/lib";
|
||||
import { seedRoles, seedGroups, flattenSeedPermissions } from "../dist/node/seed.js";
|
||||
|
||||
const { plugin } = require("../dist/node/index");
|
||||
import { plugin } from "../dist/node/index.js";
|
||||
|
||||
// Registering the plugin defines the permissions the seed grants
|
||||
lib.registerPluginPermissions([plugin]);
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Button, Popconfirm } from "antd";
|
||||
|
||||
import { ControlContext, SectionHeader, useAccount, notifyErrorHandler } from "@clusterio/web_ui";
|
||||
|
||||
import { SeedRequest } from "../../messages";
|
||||
import { SeedRequest } from "../../messages.js";
|
||||
|
||||
/** Button on the roles page which creates the roles and permission groups the scenario shipped with. */
|
||||
export default function Seed() {
|
||||
|
||||
@@ -12,7 +12,7 @@ export const plugin: lib.PluginDeclaration = {
|
||||
title: "ExpGaming - Server UPS",
|
||||
description: "Clusterio plugin providing in game server ups counter",
|
||||
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
instanceConfigFields: {
|
||||
"exp_server_ups.update_interval": {
|
||||
title: "Update Interval",
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ export const plugin: lib.PluginDeclaration = {
|
||||
name: "exp_util",
|
||||
title: "ExpGaming Module Utilities",
|
||||
description: "Provides extensions and overrides of base Lua library functions, and provides utility modules for improved module compatibly",
|
||||
instanceEntrypoint: "./dist/node/instance",
|
||||
instanceEntrypoint: "./dist/node/instance.js",
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"author": "Cooldude2606 <https://github.com/Cooldude2606>",
|
||||
"license": "MIT",
|
||||
"repository": "explosivegaming/ExpCluster",
|
||||
"type": "module",
|
||||
"main": "dist/node/index.js",
|
||||
"scripts": {
|
||||
"prepare": "tsc --build && webpack-cli --env production"
|
||||
|
||||
+2
-3
@@ -1,5 +1,4 @@
|
||||
"use strict";
|
||||
const { compile } = require("@clusterio/lib");
|
||||
import { compile } from "@clusterio/lib";
|
||||
|
||||
/**
|
||||
* Generate a flat array of tests from a matrix of inputs.
|
||||
@@ -49,7 +48,7 @@ function testRoundTripJsonSerialisable(t, Class, tests) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
export {
|
||||
testMatrix,
|
||||
testRoundTripJsonSerialisable,
|
||||
};
|
||||
|
||||
+7
-6
@@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
const path = require("node:path");
|
||||
const fs = require("node:fs");
|
||||
const { lua, lauxlib, lualib, to_luastring, to_jsstring } = require("fengari");
|
||||
import path from "node:path";
|
||||
import fs from "node:fs";
|
||||
import { createRequire } from "node:module";
|
||||
|
||||
/**
|
||||
* Run one lua test file in its own lua state and return its results.
|
||||
@@ -21,6 +20,8 @@ const { lua, lauxlib, lualib, to_luastring, to_jsstring } = require("fengari");
|
||||
* @returns {{ name: string, ok: boolean, detail?: string }[]}
|
||||
*/
|
||||
function runLuaTests(envFile, testFile) {
|
||||
// fengari is a devDependency of the plugin whose tests run, so resolve it from there
|
||||
const { lua, lauxlib, lualib, to_luastring, to_jsstring } = createRequire(testFile)("fengari");
|
||||
const L = lauxlib.luaL_newstate();
|
||||
lualib.luaL_openlibs(L);
|
||||
|
||||
@@ -38,7 +39,7 @@ function runLuaTests(envFile, testFile) {
|
||||
};
|
||||
|
||||
load(envFile);
|
||||
lua.lua_pushstring(L, to_luastring(__dirname));
|
||||
lua.lua_pushstring(L, to_luastring(import.meta.dirname));
|
||||
call();
|
||||
|
||||
// The environment stays on the stack and is passed to the test chunk
|
||||
@@ -60,4 +61,4 @@ function reportLuaTests(t, envFile, testFile) {
|
||||
t.end();
|
||||
}
|
||||
|
||||
module.exports = { runLuaTests, reportLuaTests };
|
||||
export { runLuaTests, reportLuaTests };
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"extends": "./tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"lib": ["es2023"],
|
||||
"module": "node16",
|
||||
"module": "nodenext",
|
||||
"moduleResolution": "node16",
|
||||
"target": "es2022",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
|
||||
Reference in New Issue
Block a user