Set up TypeScript for lib

Add a TypeScript build suitable for incremental migration to TypeScript
to the lib package.
This commit is contained in:
Hornwitser committed 2023-08-03 15:01:34 +02:00
1 parent a1ee147c46
commit 90798205e0
16 files changed
+115 -151

No files matched your search

+14 -14
View File
@@ -1,15 +1,15 @@
export * from "./src/config";
export * from "./src/data";
export * from "./src/errors";
export * from "./src/factorio/exchange_string";
export * from "./src/helpers";
export * from "./src/ini";
export * from "./src/link";
export * from "./src/logging";
export * from "./src/plugin";
export * from "./src/schema";
export * from "./src/users";
export * from "./dist/src/config";
export * from "./dist/src/data";
export * from "./dist/src/errors";
export * from "./dist/src/factorio/exchange_string";
export * from "./dist/src/helpers";
export * from "./dist/src/ini";
export * from "./dist/src/link";
export * from "./dist/src/logging";
export * from "./dist/src/plugin";
export * from "./dist/src/schema";
export * from "./dist/src/users";
export { default as ExponentialBackoff } from "./src/ExponentialBackoff";
export { default as PlayerStats } from "./src/PlayerStats";
export { default as RateLimiter } from "./src/RateLimiter";
export { default as ExponentialBackoff } from "./dist/src/ExponentialBackoff";
export { default as PlayerStats } from "./dist/src/PlayerStats";
export { default as RateLimiter } from "./dist/src/RateLimiter";
-63
View File
@@ -1,63 +0,0 @@
/**
* Shared library for Clusterio
* @module lib
*/
"use strict";
const libBuildMod = require("./build_mod");
const libCommand = require("./src/command");
const libConfig = require("./src/config");
const libData = require("./src/data");
const libDatabase = require("./src/database");
const libErrors = require("./src/errors");
const libFactorio = require("./src/factorio");
const libFileOps = require("./src/file_ops");
const libHash = require("./src/hash");
const libHelpers = require("./src/helpers");
const libIni = require("./src/ini");
const libLink = require("./src/link");
const libLogging = require("./src/logging");
const libLoggingUtils = require("./src/logging_utils");
const libLuaTools = require("./src/lua_tools");
const libPlugin = require("./src/plugin");
const libPluginLoader = require("./src/plugin_loader");
const libPrometheus = require("./src/prometheus");
const libSchema = require("./src/schema");
const libSharedCommands = require("./src/shared_commands");
const libStream = require("./src/stream");
const libUsers = require("./src/users");
const libZipOps = require("./src/zip_ops");
const ExponentialBackoff = require("./src/ExponentialBackoff");
const PlayerStats = require("./src/PlayerStats");
const RateLimiter = require("./src/RateLimiter");
module.exports = {
...libBuildMod,
...libCommand,
...libConfig,
...libData,
...libDatabase,
...libErrors,
...libFactorio,
...libFileOps,
...libHash,
...libHelpers,
...libIni,
...libLink,
...libLogging,
...libLoggingUtils,
...libLuaTools,
...libPlugin,
...libPluginLoader,
...libPrometheus,
...libSchema,
...libSharedCommands,
...libStream,
...libUsers,
...libZipOps,
ExponentialBackoff,
PlayerStats,
RateLimiter,
};
+31
View File
@@ -0,0 +1,31 @@
/**
* Shared library for Clusterio
* @module lib
*/
export * from "./build_mod";
export * from "./src/command";
export * from "./src/config";
export * from "./src/data";
export * from "./src/database";
export * from "./src/errors";
export * from "./src/factorio";
export * from "./src/file_ops";
export * from "./src/hash";
export * from "./src/helpers";
export * from "./src/ini";
export * from "./src/link";
export * from "./src/logging";
export * from "./src/logging_utils";
export * from "./src/lua_tools";
export * from "./src/plugin";
export * from "./src/plugin_loader";
export * from "./src/prometheus";
export * from "./src/schema";
export * from "./src/shared_commands";
export * from "./src/stream";
export * from "./src/users";
export * from "./src/zip_ops";
export { default as ExponentialBackoff } from "./src/ExponentialBackoff";
export { default as PlayerStats } from "./src/PlayerStats";
export { default as RateLimiter } from "./src/RateLimiter";
+6 -1
View File
@@ -5,9 +5,10 @@
"repository": "https://github.com/clusterio/clusterio",
"license": "MIT",
"scripts": {
"prepare": "pnpm run compile_validator",
"prepare": "pnpm run compile_validator && tsc || true",
"compile_validator": "node scripts/compile_validator.js"
},
"main": "dist/index.js",
"browser": "browser.js",
"keywords": [
"factorio"
@@ -31,5 +32,9 @@
},
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@types/node": "^20.4.5",
"typescript": "^5.1.6"
}
}
+1 -1
View File
@@ -24,5 +24,5 @@ const validate = ajv.compile(Message.jsonSchema);
let moduleCode = standaloneCode(ajv, validate);
fs.outputFileSync(
path.join(__dirname, "../src/data/message_validate.js"),
`// generated by scripts/compile_validator.js\n/* eslint-disable */\n${moduleCode}`
`// generated by scripts/compile_validator.js\n// @ts-nocheck\n/* eslint-disable */\n${moduleCode}`
);
-13
View File
@@ -1,13 +0,0 @@
/**
* Configuration System
* @author Hornwitser
* @module lib/config
*/
"use strict";
const classes = require("./classes");
const definitions = require("./definitions");
module.exports = {
...classes,
...definitions,
};
+7
View File
@@ -0,0 +1,7 @@
/**
* Configuration System
* @author Hornwitser
* @module lib/config
*/
export * from "./classes";
export * from "./definitions";
+6 -3
View File
@@ -21,11 +21,14 @@ function jsonPrimitive(type) {
},
};
}
const JsonBoolean = jsonPrimitive("boolean");
const JsonNumber = jsonPrimitive("number");
const JsonString = jsonPrimitive("string");
module.exports = {
JsonBoolean: jsonPrimitive("boolean"),
JsonNumber: jsonPrimitive("number"),
JsonString: jsonPrimitive("string"),
JsonBoolean,
JsonNumber,
JsonString,
jsonArray,
jsonPrimitive,
-31
View File
@@ -1,31 +0,0 @@
/**
* Shared data types used in Clusterio
* @module lib/data
* @author Hornwitser
*/
"use strict";
const ExportManifest = require("./ExportManifest");
const ModInfo = require("./ModInfo");
const ModPack = require("./ModPack");
const composites = require("./composites");
const messagesCore = require("./messages_core");
const messagesController = require("./messages_controller");
const messagesHost = require("./messages_host");
const messagesInstance = require("./messages_instance");
const messagesMod = require("./messages_mod");
const messagesUser = require("./messages_user");
const version = require("./version");
module.exports = {
ExportManifest,
ModInfo,
ModPack,
...composites,
...messagesCore,
...messagesController,
...messagesHost,
...messagesInstance,
...messagesMod,
...messagesUser,
...version,
};
+16
View File
@@ -0,0 +1,16 @@
/**
* Shared data types used in Clusterio
* @module lib/data
* @author Hornwitser
*/
export { default as ExportManifest } from "./ExportManifest";
export { default as ModInfo } from "./ModInfo";
export { default as ModPack } from "./ModPack";
export * from "./composites";
export * from "./messages_core";
export * from "./messages_controller";
export * from "./messages_host";
export * from "./messages_instance";
export * from "./messages_mod";
export * from "./messages_user";
export * from "./version";
+2
View File
@@ -0,0 +1,2 @@
import type { ValidateFunction } from "ajv"
export default ValidateFunction
@@ -3,9 +3,4 @@
* @module lib/factorio
* @author Hornwitser
*/
"use strict";
const exchange_string = require("./exchange_string");
module.exports = {
...exchange_string,
};
export * from "./exchange_string";
-17
View File
@@ -1,17 +0,0 @@
/**
* Library for message based communication between nodes
* @module lib/link
* @author Hornwitser
*/
"use strict";
const link = require("./link");
const connectors = require("./connectors");
module.exports = {
...link,
...connectors,
// migrate: Allow info for plugins from before link refactor to load.
Event: class Event {},
Request: class Request {},
};
+11
View File
@@ -0,0 +1,11 @@
/**
* Library for message based communication between nodes
* @module lib/link
* @author Hornwitser
*/
export * from "./link"
export * from "./connectors"
// migrate: Allow info for plugins from before link refactor to load.
export class Event {}
export class Request {}
+2 -2
View File
@@ -416,7 +416,7 @@ function handleUnhandledErrors() {
/* eslint-enable node/no-process-exit */
}
const _formatServerOutput = formatServerOutput;
module.exports = {
TerminalFormat,
LinkTransport,
@@ -425,5 +425,5 @@ module.exports = {
queryLog,
// for testing only
_formatServerOutput: formatServerOutput,
_formatServerOutput,
};
+18
View File
@@ -0,0 +1,18 @@
{
"include": ["index.ts", "build_mod.js", "src/**/*.ts", "src/**/*.js"],
"compilerOptions": {
"lib": ["es2023"],
"module": "commonjs",
"target": "es2022",
"rootDir": ".",
"outDir": "dist",
"composite": false,
"strict": false,
"alwaysStrict": true,
"allowJs": true,
"checkJs": false,
"noEmitOnError": false,
"esModuleInterop": true,
"skipLibCheck": true
}
}