1.2.3 • Published 2 years ago

rbxts-transformer-runtime-imports v1.2.3

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

rbxts-transformer-runtime-imports

This is a transformer that allows imports to only be called if the code is running on the server or the client.

Installation

Simply install this transformer with your favorite package manager:

$ yarn add rbxts-transformer-runtime-imports
OR
$ npm install rbxts-transformer-runtime-imports

And then add it to your tsconfig like so:

{
	"compilerOptions": {
		...
		"plugins": [
			{
				"transform": "rbxts-transformer-runtime-imports"
			}
		]
	}
}

Example

Input:

// SharedDebuggingService.ts
//@runtime server
import { ServerDebuggingService } from "Server/ServerDebuggingService"
//@runtime client
import { ClientDebuggingService } from "Client/ClientDebuggingService"

return RunService.IsServer() ? ClientDebuggingService.OpenMenu() : ServerDebuggingService.OpenMenu()

Output:

-- SharedDebuggingService.lua
-- Compiled with roblox-ts v1.3.3
local TS = require(game:GetService("ReplicatedStorage"):WaitForChild("rbxts_include"):WaitForChild("RuntimeLib"))
-- SharedDebuggingService.ts
local RunService = TS.import(script, TS.getModule(script, "@rbxts", "services")).RunService
local __Server_ServerDebuggingService_import_data
local ServerDebuggingService
if game:GetService("RunService"):IsServer() then
	TS.async(function()
		__Server_ServerDebuggingService_import_data = TS.await(TS.Promise.new(function(resolve)
			resolve(TS.import(script, game:GetService("ServerScriptService"), "Apollo", "ServerDebuggingService"))
		end))
	end)()
	while __Server_ServerDebuggingService_import_data == nil do
		task.wait()
	end
	ServerDebuggingService = __Server_ServerDebuggingService_import_data.ServerDebuggingService
end
local __Client_ClientDebuggingService_import_data
local ClientDebuggingService
if game:GetService("RunService"):IsClient() then
	TS.async(function()
		__Client_ClientDebuggingService_import_data = TS.await(TS.Promise.new(function(resolve)
			resolve(TS.import(script, game:GetService("ReplicatedStorage"), "Apollo", "ClientDebuggingService"))
		end))
	end)()
	while __Client_ClientDebuggingService_import_data == nil do
		task.wait()
	end
	ClientDebuggingService = __Client_ClientDebuggingService_import_data.ClientDebuggingService
end
local SharedDebuggingService = if RunService:IsServer() then ClientDebuggingService.OpenMenu() else ServerDebuggingService.OpenMenu()
return {
	SharedDebuggingService = SharedDebuggingService,
}

This module doesn't currently support star imports such as the following, but feel free to open a pull request on the GitHub repo, it shouldn't be a very hard feature to add.

//@runtime server
import * as ServerModule from "Server/MyServerModule"
1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.2.39-dev

2 years ago

1.2.38-dev

2 years ago

1.2.37-dev

2 years ago

1.2.36-dev

2 years ago

1.2.35-dev

2 years ago

1.2.34-dev

2 years ago

1.2.33-dev

2 years ago

1.2.32-dev

2 years ago

1.2.31-dev

2 years ago

1.2.30-dev

2 years ago

1.2.29-dev

2 years ago

1.2.28-dev

2 years ago

1.2.27-dev

2 years ago

1.2.26-dev

2 years ago

1.2.25-dev

2 years ago

1.2.24-dev

2 years ago

1.2.23-dev

2 years ago

1.2.22-dev

2 years ago

1.2.21-dev

2 years ago

1.2.20-dev

2 years ago

1.2.19-dev

2 years ago

1.2.18-dev

2 years ago

1.2.17-dev

2 years ago

1.2.16-dev

2 years ago

1.2.15-dev

2 years ago

1.2.14-dev

2 years ago

1.2.13-dev

2 years ago

1.2.12-dev

2 years ago

1.2.11-dev

2 years ago

1.2.10-dev

2 years ago

1.2.9-dev

2 years ago

1.2.8-dev

2 years ago

1.2.7-dev

2 years ago

1.2.6-dev

2 years ago

1.2.5-dev

2 years ago

1.2.4-dev

2 years ago

1.2.3-dev

2 years ago

1.2.2-dev

2 years ago

1.2.1-dev

2 years ago

1.2.0-dev

2 years ago

1.0.10-dev

2 years ago

1.0.9-dev

2 years ago

1.0.8-dev

2 years ago

1.0.7-dev

2 years ago

1.0.6-dev

2 years ago

1.0.5-dev

2 years ago

1.0.4-dev

2 years ago

1.0.3-dev

2 years ago

1.0.2-dev

2 years ago

1.0.1-dev

2 years ago

1.0.0-dev

2 years ago

1.0.0

2 years ago