mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-09-21 17:04:00 +00:00
Reference exp_roles and exp_groups from the exp_scenario build (#473)
* Reference exp_roles and exp_groups from the exp_scenario build exp_scenario imports types from @expcluster/roles and @expcluster/permission-groups through their dist folders, so building it on its own before those packages are built fails with TS2307. A plain pnpm install runs the prepare scripts in dependency order, but a filtered install or running tsc --build in exp_scenario on a fresh clone does not. Referencing the node projects of both packages makes tsc build them first. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Export messages and controller types from exp_roles and exp_groups exp_scenario reached into @expcluster/roles/dist/node/* for the message classes and the controller plugin type. The package index now re-exports messages and the ControllerPlugin type, so consumers import from the package name like they do with @clusterio/lib. The controller export is type only, which keeps node code out of the web bundle. The test still requires the controller classes from dist since they cannot be re-exported at runtime. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
import * as lib from "@clusterio/lib";
|
import * as lib from "@clusterio/lib";
|
||||||
import * as messages from "./messages";
|
import * as messages from "./messages";
|
||||||
|
|
||||||
|
export * from "./messages";
|
||||||
|
export type { ControllerPlugin } from "./controller";
|
||||||
|
|
||||||
declare module "@clusterio/lib" {
|
declare module "@clusterio/lib" {
|
||||||
export interface InstanceConfigFields {
|
export interface InstanceConfigFields {
|
||||||
"exp_groups.sync_mode": "enabled" | "disabled" | "bidirectional"
|
"exp_groups.sync_mode": "enabled" | "disabled" | "bidirectional"
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import * as lib from "@clusterio/lib";
|
import * as lib from "@clusterio/lib";
|
||||||
import * as messages from "./messages";
|
import * as messages from "./messages";
|
||||||
|
|
||||||
|
export * from "./messages";
|
||||||
|
export type { ControllerPlugin } from "./controller";
|
||||||
|
|
||||||
declare module "@clusterio/lib" {
|
declare module "@clusterio/lib" {
|
||||||
export interface InstanceConfigFields {
|
export interface InstanceConfigFields {
|
||||||
"exp_roles.sync_mode": "disabled" | "enabled" | "bidirectional";
|
"exp_roles.sync_mode": "disabled" | "enabled" | "bidirectional";
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import * as lib from "@clusterio/lib";
|
import * as lib from "@clusterio/lib";
|
||||||
import { BaseControllerPlugin } from "@clusterio/controller";
|
import { BaseControllerPlugin } from "@clusterio/controller";
|
||||||
import type { ControllerPlugin as RolesPlugin } from "@expcluster/roles/dist/node/controller";
|
import { RoleMetaRecord, type ControllerPlugin as RolesPlugin } from "@expcluster/roles";
|
||||||
import type { ControllerPlugin as GroupsPlugin } from "@expcluster/permission-groups/dist/node/controller";
|
import {
|
||||||
import { RoleMetaRecord } from "@expcluster/roles/dist/node/messages";
|
GroupRecord, GroupPermissions, RoleMappingRecord, type ControllerPlugin as GroupsPlugin,
|
||||||
import { GroupRecord, GroupPermissions, RoleMappingRecord } from "@expcluster/permission-groups/dist/node/messages";
|
} from "@expcluster/permission-groups";
|
||||||
import * as messages from "./messages";
|
import * as messages from "./messages";
|
||||||
import { SeedRole, SeedGroup, seedRoles, seedGroups, flattenSeedPermissions } from "./seed";
|
import { SeedRole, SeedGroup, seedRoles, seedGroups, flattenSeedPermissions } from "./seed";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { RoleColor } from "@expcluster/roles/dist/node/messages";
|
import { RoleColor } from "@expcluster/roles";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A role created by the seed, as the scenario defined it before roles moved to
|
* A role created by the seed, as the scenario defined it before roles moved to
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ const { Controller } = require("@clusterio/controller");
|
|||||||
const { ControllerPlugin } = require("../dist/node/controller");
|
const { ControllerPlugin } = require("../dist/node/controller");
|
||||||
const messages = require("../dist/node/messages");
|
const messages = require("../dist/node/messages");
|
||||||
const { seedRoles, seedGroups } = require("../dist/node/seed");
|
const { seedRoles, seedGroups } = require("../dist/node/seed");
|
||||||
const roles = require("@expcluster/roles/dist/node");
|
const roles = require("@expcluster/roles");
|
||||||
const groups = require("@expcluster/permission-groups/dist/node");
|
const groups = require("@expcluster/permission-groups");
|
||||||
const { ControllerPlugin: RolesPlugin } = require("@expcluster/roles/dist/node/controller");
|
const { ControllerPlugin: RolesPlugin } = require("@expcluster/roles/dist/node/controller");
|
||||||
const { ControllerPlugin: GroupsPlugin } = require("@expcluster/permission-groups/dist/node/controller");
|
const { ControllerPlugin: GroupsPlugin } = require("@expcluster/permission-groups/dist/node/controller");
|
||||||
const { GroupRecord, GroupPermissions, RoleMappingRecord } = require("@expcluster/permission-groups/dist/node/messages");
|
const { GroupRecord, GroupPermissions, RoleMappingRecord } = require("@expcluster/permission-groups");
|
||||||
|
|
||||||
// Importing this defines the permissions the seed grants
|
// Importing this defines the permissions the seed grants
|
||||||
require("../dist/node/permissions");
|
require("../dist/node/permissions");
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{
|
{
|
||||||
"extends": "../tsconfig.node.json",
|
"extends": "../tsconfig.node.json",
|
||||||
|
"references": [
|
||||||
|
{ "path": "../exp_groups/tsconfig.node.json" },
|
||||||
|
{ "path": "../exp_roles/tsconfig.node.json" },
|
||||||
|
],
|
||||||
"include": ["./**/*.ts"],
|
"include": ["./**/*.ts"],
|
||||||
"exclude": ["test/*", "./dist/*"],
|
"exclude": ["test/*", "./dist/*"],
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user