Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2025 Instancify
Copyright (c) 2026 Densy Development

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Scriptify TypeScript
Adds TypeScript support to Scriptify. Uses ready-made implementations of [script-js-graalvm](https://github.com/Instancify/Scriptify/tree/master/script-js-graalvm) and [script-js-rhino](https://github.com/Instancify/Scriptify/tree/master/script-js-rhino), and transcompiles TypeScript using [swc4j](https://github.com/caoccao/swc4j) for evaluation.
Adds TypeScript support to Scriptify. Uses ready-made implementations of [script-js-graalvm](https://github.com/DensyDev/Scriptify/tree/master/script-js-graalvm) and [script-js-rhino](https://github.com/DensyDev/Scriptify/tree/master/script-js-rhino), and transcompiles TypeScript using [swc4j](https://github.com/caoccao/swc4j) for evaluation.

## TAKE NOTE
> [!WARNING]
Expand All @@ -20,20 +20,20 @@ List of all dependencies:
**https://github.com/caoccao/swc4j?tab=readme-ov-file#dependency**

## Maven
Adding repo:
Adding repository:
```xml
<repositories>
<repository>
<id>instancify-repository-snapshots</id>
<url>https://repo.instancify.app/snapshots</url>
<id>densy-repository-snapshots</id>
<url>https://repo.densy.org/snapshots</url>
</repository>
</repositories>
```

For adding a library for GraalVM (SWC):
```xml
<dependency>
<groupId>com.instancify.scriptify.ts</groupId>
<groupId>org.densy.scriptify.ts</groupId>
<artifactId>script-ts-swc-graalvm</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Expand All @@ -42,27 +42,27 @@ For adding a library for GraalVM (SWC):
For adding a library for Rhino (SWC):
```xml
<dependency>
<groupId>com.instancify.scriptify.ts</groupId>
<groupId>org.densy.scriptify.ts</groupId>
<artifactId>script-ts-swc-rhino</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
```

## Gradle
Adding repo:
Adding repository:
```groovy
maven {
name "instancifyRepositorySnapshots"
url "https://repo.instancify.app/snapshots"
name "densyRepositorySnapshots"
url "https://repo.densy.org/snapshots"
}
```

For adding a library for GraalVM (SWC):
```groovy
implementation "com.instancify.scriptify.ts:script-ts-swc-graalvm:1.0.0-SNAPSHOT"
implementation "org.densy.scriptify.ts:script-ts-swc-graalvm:1.0.0-SNAPSHOT"
```

For adding a library for Rhino (SWC):
```groovy
implementation "com.instancify.scriptify.ts:script-ts-swc-rhino:1.0.0-SNAPSHOT"
implementation "org.densy.scriptify.ts:script-ts-swc-rhino:1.0.0-SNAPSHOT"
```
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ java {
}

allprojects {
group = "com.instancify.scriptify.ts"
group = "org.densy.scriptify.ts"
version = "1.0.0-SNAPSHOT"
}

Expand All @@ -23,7 +23,7 @@ subprojects {

repositories {
mavenCentral()
maven("https://repo.instancify.app/snapshots")
maven("https://repo.densy.org/snapshots")
}

publishing {
Expand All @@ -37,8 +37,8 @@ subprojects {
}
repositories {
maven {
name = "instancify"
url = uri("https://repo.instancify.app/snapshots")
name = "densy"
url = uri("https://repo.densy.org/snapshots")
credentials {
username = System.getenv("MAVEN_USERNAME")
password = System.getenv("MAVEN_PASSWORD")
Expand Down
2 changes: 1 addition & 1 deletion script-ts-swc-graalvm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ repositories {
}

dependencies {
api("com.instancify.scriptify:script-js-graalvm:1.4.4-SNAPSHOT")
api("org.densy.scriptify:script-js-graalvm:1.5.0-SNAPSHOT")
api("com.caoccao.javet:swc4j:1.6.0")
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
package com.instancify.scriptify.ts.swc.graalvm.script;
package org.densy.scriptify.ts.swc.graalvm.script;

import com.caoccao.javet.swc4j.Swc4j;
import com.caoccao.javet.swc4j.enums.Swc4jMediaType;
import com.caoccao.javet.swc4j.options.Swc4jTranspileOptions;
import com.caoccao.javet.swc4j.outputs.Swc4jTranspileOutput;
import com.instancify.scriptify.api.exception.ScriptException;
import com.instancify.scriptify.api.script.Script;
import com.instancify.scriptify.api.script.ScriptObject;
import com.instancify.scriptify.api.script.constant.ScriptConstant;
import com.instancify.scriptify.api.script.constant.ScriptConstantManager;
import com.instancify.scriptify.api.script.function.ScriptFunctionManager;
import com.instancify.scriptify.api.script.function.definition.ScriptFunctionDefinition;
import com.instancify.scriptify.api.script.security.ScriptSecurityManager;
import com.instancify.scriptify.core.script.constant.StandardConstantManager;
import com.instancify.scriptify.core.script.function.StandardFunctionManager;
import com.instancify.scriptify.core.script.security.StandardSecurityManager;
import com.instancify.scriptify.js.graalvm.script.JsFunction;
import com.instancify.scriptify.js.graalvm.script.JsSecurityClassAccessor;
import org.densy.scriptify.api.exception.ScriptException;
import org.densy.scriptify.api.script.CompiledScript;
import org.densy.scriptify.api.script.Script;
import org.densy.scriptify.api.script.ScriptObject;
import org.densy.scriptify.api.script.constant.ScriptConstant;
import org.densy.scriptify.api.script.constant.ScriptConstantManager;
import org.densy.scriptify.api.script.function.ScriptFunctionManager;
import org.densy.scriptify.api.script.function.definition.ScriptFunctionDefinition;
import org.densy.scriptify.api.script.security.ScriptSecurityManager;
import org.densy.scriptify.core.script.constant.StandardConstantManager;
import org.densy.scriptify.core.script.function.StandardFunctionManager;
import org.densy.scriptify.core.script.security.StandardSecurityManager;
import org.densy.scriptify.js.graalvm.script.JsCompiledScript;
import org.densy.scriptify.js.graalvm.script.JsFunction;
import org.densy.scriptify.js.graalvm.script.JsSecurityClassAccessor;
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.HostAccess;
import org.graalvm.polyglot.Value;
Expand All @@ -31,6 +33,7 @@ public class TsScript implements Script<Value> {
private ScriptFunctionManager functionManager = new StandardFunctionManager();
private ScriptConstantManager constantManager = new StandardConstantManager();
private final List<String> extraScript = new ArrayList<>();
private final Swc4j swc = new Swc4j();

@Override
public ScriptConstantManager getConstantManager() {
Expand Down Expand Up @@ -63,7 +66,7 @@ public void addExtraScript(String script) {
}

@Override
public Value eval(String script) throws ScriptException {
public CompiledScript<Value> compile(String script) throws ScriptException {
Context.Builder builder = Context.newBuilder("js")
.allowHostAccess(HostAccess.newBuilder(HostAccess.ALL)
// Mapping for the ScriptObject class required
Expand Down Expand Up @@ -105,14 +108,18 @@ public Value eval(String script) throws ScriptException {

try {
// Transpile TypeScript to JavaScript and evaluate it
Swc4j swc = new Swc4j();
Swc4jTranspileOptions options = new Swc4jTranspileOptions().setMediaType(Swc4jMediaType.TypeScript);
Swc4jTranspileOutput output = swc.transpile(fullScript.toString(), options);
return context.eval("js", output.getCode());
return new JsCompiledScript(context, context.eval("js", output.getCode()));
} catch (Exception e) {
throw new ScriptException(e);
} finally {
context.close();
}
}

@Override
public Value evalOneShot(String script) throws ScriptException {
try (CompiledScript<Value> compiled = compile(script)) {
return compiled.get();
}
}
}
2 changes: 1 addition & 1 deletion script-ts-swc-rhino/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ repositories {
}

dependencies {
api("com.instancify.scriptify:script-js-rhino:1.4.4-SNAPSHOT")
api("org.densy.scriptify:script-js-rhino:1.5.0-SNAPSHOT")
api("com.caoccao.javet:swc4j:1.6.0")
}

This file was deleted.

Loading