java-bridge 2.1.3 → 2.1.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -0
- package/dist/index.prod.min.js +1 -1
- package/dist/index.prod.min.js.map +1 -0
- package/dist/java-ts-gen.js +1 -1
- package/dist/java-ts-gen.js.map +1 -0
- package/{native.d.ts → dist/native.d.ts} +0 -0
- package/dist/ts-src/TypescriptDefinitionGenerator.d.ts +81 -0
- package/{ts-src/definitions.ts → dist/ts-src/definitions.d.ts} +98 -94
- package/{ts-src/index.ts → dist/ts-src/index.d.ts} +3 -18
- package/{ts-src/java.ts → dist/ts-src/java.d.ts} +17 -185
- package/dist/ts-src/nativeLib.d.ts +2 -0
- package/dist/ts-src/scripts/cli.d.ts +1 -0
- package/dist/ts-src/util.d.ts +23 -0
- package/java-src/build/libs/JavaBridge-2.1.1.jar +0 -0
- package/package.json +32 -27
- package/dist/index.dev.min.js +0 -1449
- package/ts-src/TypescriptDefinitionGenerator.ts +0 -583
- package/ts-src/nativeLib.ts +0 -86
- package/ts-src/scripts/cli.ts +0 -148
package/README.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
# node-java
|
|
2
|
+
|
|
3
|
+
[](https://github.com/MarkusJx/node-java-bridge/actions/workflows/test.yml)
|
|
4
|
+
[](https://github.com/MarkusJx/node-java-bridge/actions/workflows/check-style.yml)
|
|
5
|
+
[](https://github.com/MarkusJx/node-java-bridge/actions/workflows/system_test.yml)
|
|
6
|
+
|
|
1
7
|
A bridge between Node.js programs and Java APIs written in Rust using [napi-rs](https://napi.rs/)
|
|
2
8
|
to provide a fast and memory-safe interface between the two languages.
|
|
3
9
|
|
|
@@ -17,6 +23,23 @@ The full documentation of this package is available [here](https://markusjx.gith
|
|
|
17
23
|
npm i java-bridge
|
|
18
24
|
```
|
|
19
25
|
|
|
26
|
+
## Build instructions
|
|
27
|
+
|
|
28
|
+
In order to build this project, you should install
|
|
29
|
+
|
|
30
|
+
- Node.js
|
|
31
|
+
- npm
|
|
32
|
+
- rustc, the rust compiler
|
|
33
|
+
- cargo
|
|
34
|
+
- Java JDK 8+
|
|
35
|
+
|
|
36
|
+
Then, to build the project, run:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
npm install
|
|
40
|
+
npm run build
|
|
41
|
+
```
|
|
42
|
+
|
|
20
43
|
## Usage
|
|
21
44
|
|
|
22
45
|
### Create the JVM
|
package/dist/index.prod.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.java=t():e.java=t()}(global,(()=>(()=>{var e={388:(e,t,a)=>{e=a.nmd(e);try{process.dlopen(e,__dirname+a(17).sep+a.p+"java.linux-x64-gnu.node")}catch(e){throw new Error("node-loader:\n"+e)}},163:(e,t,a)=>{const{existsSync:r,readFileSync:n}=a(147),{join:i}=a(17),{platform:o,arch:s}=process;let c=null,d=!1,u=null;function l(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return n("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}switch(o){case"android":switch(s){case"arm64":d=r(i(__dirname,"java.android-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm64")}catch(e){u=e}break;case"arm":d=r(i(__dirname,"java.android-arm-eabi.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm-eabi.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm-eabi")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Android ${s}`)}break;case"win32":switch(s){case"x64":d=r(i(__dirname,"java.win32-x64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-x64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-x64-msvc")}catch(e){u=e}break;case"ia32":d=r(i(__dirname,"java.win32-ia32-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-ia32-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-ia32-msvc")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.win32-arm64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-arm64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-arm64-msvc")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Windows: ${s}`)}break;case"darwin":switch(s){case"x64":d=r(i(__dirname,"java.darwin-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-x64")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.darwin-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-arm64")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on macOS: ${s}`)}break;case"freebsd":if("x64"!==s)throw new Error(`Unsupported architecture on FreeBSD: ${s}`);d=r(i(__dirname,"java.freebsd-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.freebsd-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-freebsd-x64")}catch(e){u=e}break;case"linux":switch(s){case"x64":if(l()){d=r(i(__dirname,"java.linux-x64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-x64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-x64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-x64-gnu.node"));try{c=d?a(388):require("java-bridge-linux-x64-gnu")}catch(e){u=e}}break;case"arm64":if(l()){d=r(i(__dirname,"java.linux-arm64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-arm64-gnu.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-gnu.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-gnu")}catch(e){u=e}}break;case"arm":d=r(i(__dirname,"java.linux-arm-gnueabihf.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm-gnueabihf.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm-gnueabihf")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Linux: ${s}`)}break;default:throw new Error(`Unsupported OS: ${o}, architecture: ${s}`)}if(!c){if(u)throw u;throw new Error("Failed to load native binding")}const{Java:f,getClassFields:p,getField:m,setField:h,getStaticField:v,setStaticField:y,JavaInterfaceProxy:b,StdoutRedirect:g,getJavaLibPath:w}=c;e.exports.Java=f,e.exports.getClassFields=p,e.exports.getField=m,e.exports.setField=h,e.exports.getStaticField=v,e.exports.setStaticField=y,e.exports.JavaInterfaceProxy=b,e.exports.StdoutRedirect=g,e.exports.getJavaLibPath=w},248:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(a(7)),c=a(236),d=o(a(147)),u=o(a(17)),l=s.default.createSourceFile("source.ts","",s.default.ScriptTarget.Latest,!1,s.default.ScriptKind.TS);class f{constructor(e,t=null,a=[]){this.classname=e,this.progressCallback=t,this.resolvedImports=a,this.usesBasicOrJavaType=!1,this.additionalImports=[],this.importsToResolve=[]}static async convertMethods(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a={};for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const n=await r.getName(),i=await r.getReturnType(),o=await r.getParameterTypes(),s={returnType:await i.getTypeName(),parameters:await Promise.all(o.map((e=>e.getTypeName()))),isStatic:await t.isStatic(e)};Object.hasOwn(a,n)?a[n].push(s):a[n]=[s]}}return a}async convertConstructors(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a=[];for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const e=await r.getParameterTypes();a.push(await Promise.all(e.map((e=>e.getTypeName()))))}}const r=a.map(((e,t)=>{const a=e.map(this.convertParameter.bind(this));let r=s.default.factory.createConstructorDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword)],a,void 0);return 0===t&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.SingleLineCommentTrivia," ================== Constructors ==================",!0)),e.length>0&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.MultiLineCommentTrivia,"*\n"+e.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+" ",!0)),r}));return[...a.map(((e,t)=>this.createMethod({returnType:this.classname,parameters:e,isStatic:!0},"newInstance",t,!1))),...r]}javaTypeToTypescriptType(e,t){switch(e){case"byte[]":case"java.lang.Byte[]":return s.default.factory.createTypeReferenceNode("Buffer")}if(e.endsWith("[]"))return s.default.factory.createArrayTypeNode(this.javaTypeToTypescriptType(e.substring(0,e.length-2),t));switch(e){case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"float":case"java.lang.Float":case"double":case"java.lang.Double":case"byte":case"java.lang.Byte":case"short":case"java.lang.Short":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.NumberKeyword);case"char":case"java.lang.Character":case"java.lang.String":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.StringKeyword);case"boolean":case"java.lang.Boolean":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.BooleanKeyword);case"void":case"java.lang.Void":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.VoidKeyword);case"java.lang.Object":return this.usesBasicOrJavaType=!0,s.default.factory.createTypeReferenceNode("BasicOrJavaType");default:this.resolvedImports.includes(e)||this.additionalImports.push(e),this.importsToResolve.push(e);const a=e===this.classname&&t;return s.default.factory.createTypeReferenceNode(e===this.classname?e.substring(e.lastIndexOf(".")+1)+(a?"Class":""):e.replaceAll(".","_"))}}convertParameter(e,t){const a="var"+t,r=this.javaTypeToTypescriptType(e,!0);return s.default.factory.createParameterDeclaration(void 0,void 0,a,void 0,r)}convertParameters(e){return e.parameters.map(this.convertParameter.bind(this))}static createMethodComment(e){return"*\n"+e.parameters.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+` * @return original return type: '${e.returnType}'\n `}createMethod(e,t,a,r){const n=s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword),i=s.default.factory.createModifier(s.default.SyntaxKind.StaticKeyword),o=[n];e.isStatic&&o.push(i);let c=this.javaTypeToTypescriptType(e.returnType,!1);r||(c=s.default.factory.createTypeReferenceNode(s.default.factory.createIdentifier("Promise"),[c]));let d=s.default.factory.createMethodDeclaration(o,void 0,t+(r?"Sync":""),void 0,void 0,this.convertParameters(e),c,void 0);return 0===a&&(d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.SingleLineCommentTrivia,` ================== Method ${t} ==================`,!0)),s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,f.createMethodComment(e),!0)}convertMethod(e,t){const a=[];for(let r=0;r<e.length;r++){const n=e[r];a.push(this.createMethod(n,t,r,!1),this.createMethod(n,t,r,!0))}return a}getAdditionalImports(){const e=e=>{const t=this.classname.split("."),a=e.split(".");for(let e=0;e<t.length&&a[e]===t[e];e++)t[e]=null,a[e]=null;return"./"+t.filter((e=>!!e)).map((()=>"")).join("../")+a.filter((e=>!!e)).join("/")};return this.importsToResolve.filter((e=>e!=this.classname)).filter(((e,t,a)=>a.indexOf(e)===t)).map((t=>s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,s.default.factory.createNamedImports([s.default.factory.createImportSpecifier(!1,s.default.factory.createIdentifier(t.substring(t.lastIndexOf(".")+1)),s.default.factory.createIdentifier(t.replaceAll(".","_")))])),s.default.factory.createStringLiteral(e(t)))))}getImports(){const e=[s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("importClass")),s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("JavaClassInstance"))];this.usesBasicOrJavaType&&e.push(s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("BasicOrJavaType")));const t=s.default.factory.createNamedImports(e);return s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,t),s.default.factory.createStringLiteral("java-bridge"))}getExportStatement(e){const t=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword)],e,void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier(`importClass<typeof ${e}Class>("${this.classname}")`),void 0)])],[]);return[s.default.addSyntheticLeadingComment(t,s.SyntaxKind.MultiLineCommentTrivia,`*\n * Class ${this.classname}.\n *\n * This actually imports the java class for further use.\n * The class ${e}Class only defines types, this is the class you should actually import.\n * Please note that this statement imports the underlying java class at runtime, which may take a while.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0),s.default.factory.createExportDefault(s.default.factory.createIdentifier(e))]}getText(e){return e.map((e=>e&&s.default.createPrinter({newLine:s.default.NewLineKind.LineFeed}).printNode(s.default.EmitHint.Unspecified,e,l)||"")).join("\n")}async generate(){if(this.resolvedImports.includes(this.classname))return[];this.resolvedImports.push(this.classname),this.progressCallback&&this.progressCallback(this.classname);const e=(await(0,c.importClassAsync)(this.classname)).class,t=this.classname.substring(this.classname.lastIndexOf(".")+1),a=await e.getDeclaredMethods(),r=[],n=await f.convertMethods(a);for(const e of Object.keys(n)){const t=n[e];r.push(...this.convertMethod(t,e))}const i=await e.getDeclaredConstructors(),o=await this.convertConstructors(i);r.push(...o);let d=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword),s.default.factory.createModifier(s.default.SyntaxKind.DeclareKeyword)],t+"Class",void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier("JavaClassInstance"),void 0)])],r);d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,`*\n * This class just defines types, you should import ${t} instead of this.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0);const u=this.getText([this.getImports(),...this.getAdditionalImports(),null,d,null,...this.getExportStatement(t)]),l=[];for(const e of this.additionalImports){const t=new f(e,this.progressCallback,this.resolvedImports),a=await t.generate();l.push(...a)}return l.push({name:this.classname,contents:u}),l}static async save(e,t){for(const a of e){const e=a.name.split(".");e[e.length-1]=e[e.length-1]+".ts";const r=u.default.join(t,...e);await d.default.promises.mkdir(u.default.dirname(r),{recursive:!0}),await d.default.promises.writeFile(r,a.contents,{encoding:"utf8"})}}}t.default=f},91:(e,t)=>{"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.JavaObject=t.JavaVersion=void 0,function(e){e.VER_1_1="1.1",e.VER_1_2="1.2",e.VER_1_4="1.4",e.VER_1_6="1.6",e.VER_1_8="1.8",e.VER_9="9",e.VER_10="10"}(a=t.JavaVersion||(t.JavaVersion={})),Object.freeze(a),t.JavaObject=class{}},236:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypescriptDefinitionGenerator=t.getJavaLibPath=t.JavaClassProxy=t.JavaClassInstance=t.JavaObject=t.JavaVersion=void 0;var c=a(91);Object.defineProperty(t,"JavaVersion",{enumerable:!0,get:function(){return c.JavaVersion}}),Object.defineProperty(t,"JavaObject",{enumerable:!0,get:function(){return c.JavaObject}}),Object.defineProperty(t,"JavaClassInstance",{enumerable:!0,get:function(){return c.JavaClassInstance}}),Object.defineProperty(t,"JavaClassProxy",{enumerable:!0,get:function(){return c.JavaClassProxy}}),i(a(818),t);const d=o(a(818));t.default=d;var u=a(163);Object.defineProperty(t,"getJavaLibPath",{enumerable:!0,get:function(){return u.getJavaLibPath}});const l=s(a(248));t.TypescriptDefinitionGenerator=l.default},818:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaInstance=t.newProxy=t.stdout=t.classpath=t.isInstanceOf=t.appendClasspath=t.importClassAsync=t.importClass=t.ensureJvm=void 0;const r=a(163),n=a(841);let i=null;function o(e){i||(i=new r.Java(e?.libPath,e?.version,e?.opts,e,(0,n.getJavaLibPath)(),(0,n.getNativeLibPath)()))}function s(e,t){for(const a of(0,r.getClassFields)(e["class.proxy"],t)){const n=()=>t?(0,r.getStaticField)(e,a.name):(0,r.getField)(e,a.name);a.isFinal?Object.defineProperty(e,a.name,{get:n,enumerable:!0}):Object.defineProperty(e,a.name,{get:n,set:n=>t?(0,r.setStaticField)(e,a.name,n):(0,r.setField)(e,a.name,n),enumerable:!0})}}function c(e){o(),i.appendClasspath(e)}var d;t.ensureJvm=o,t.importClass=function(e){o();const t=i.importClass(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.importClassAsync=async function(e){o();const t=await i.importClassAsync(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.appendClasspath=c,t.isInstanceOf=function(e,t){return o(),i.isInstanceOf(e,t)},(d=t.classpath||(t.classpath={})).append=function(e){c(e)},d.get=function(){return o(),i.loadedJars},(t.stdout||(t.stdout={})).enableRedirect=function(e,t){return o(),i.setStdoutCallbacks(e,t)},t.newProxy=function(e,t){o();const a=Object.create(null);for(const[e,r]of Object.entries(t))a[e]=(e,t,...a)=>{if(e)throw e;try{t(null,r(...a))}catch(e){e instanceof Error?t(e):t(new Error(e.toString()))}};return i.createInterfaceProxy(e,a)},t.getJavaInstance=function(){return i}},841:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaLibPath=t.getNativeLibPath=void 0;const s=o(a(17)),c=i(a(147)),d=o(a(230)),{platform:u,arch:l}=process;function f(e){const t=s.default.join(__dirname,e+".node");if(c.default.existsSync(t))return t;{const t=e.replaceAll(".","-").replace("java","java-bridge");return require&&require.resolve?require.resolve(t):a(955).resolve(t)}}function p(){return new Error(`Unsupported platform: ${u} ${l}`)}t.getNativeLibPath=function(){switch(u){case"android":switch(l){case"arm64":return f("java.android-arm64");case"arm":return f("java.android-arm-eabi");default:throw p()}case"win32":return f(`java.win32-${l}-msvc`);case"darwin":return f(`java.darwin-${l}`);case"freebsd":return f(`java.freebsd-${l}`);case"linux":switch(l){case"x64":case"arm64":return f(`java.linux-${l}-${function(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return(0,c.readFileSync)("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}()?"musl":"gnu"}`);case"arm":return f("java.linux-arm-gnueabihf");default:throw p()}default:throw p()}},t.getJavaLibPath=function(){const e=s.default.join(__dirname,"..","java-src","build","libs");let t=d.default.sync("*.jar",{cwd:e});if(0===t.length)throw new Error(`No java lib found in ${e}`);return s.default.join(e,t[0])}},955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},230:e=>{"use strict";e.exports=require("glob")},7:e=>{"use strict";e.exports=require("typescript")},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}return a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.p="",a(236)})()));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.java=t():e.java=t()}(global,(()=>(()=>{var e={388:(e,t,a)=>{e=a.nmd(e);try{process.dlopen(e,__dirname+a(17).sep+a.p+"java.linux-x64-gnu.node")}catch(e){throw new Error("node-loader:\n"+e)}},163:(e,t,a)=>{const{existsSync:r,readFileSync:n}=a(147),{join:i}=a(17),{platform:o,arch:s}=process;let c=null,d=!1,u=null;function l(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return n("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}switch(o){case"android":switch(s){case"arm64":d=r(i(__dirname,"java.android-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm64")}catch(e){u=e}break;case"arm":d=r(i(__dirname,"java.android-arm-eabi.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm-eabi.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm-eabi")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Android ${s}`)}break;case"win32":switch(s){case"x64":d=r(i(__dirname,"java.win32-x64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-x64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-x64-msvc")}catch(e){u=e}break;case"ia32":d=r(i(__dirname,"java.win32-ia32-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-ia32-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-ia32-msvc")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.win32-arm64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-arm64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-arm64-msvc")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Windows: ${s}`)}break;case"darwin":switch(s){case"x64":d=r(i(__dirname,"java.darwin-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-x64")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.darwin-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-arm64")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on macOS: ${s}`)}break;case"freebsd":if("x64"!==s)throw new Error(`Unsupported architecture on FreeBSD: ${s}`);d=r(i(__dirname,"java.freebsd-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.freebsd-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-freebsd-x64")}catch(e){u=e}break;case"linux":switch(s){case"x64":if(l()){d=r(i(__dirname,"java.linux-x64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-x64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-x64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-x64-gnu.node"));try{c=d?a(388):require("java-bridge-linux-x64-gnu")}catch(e){u=e}}break;case"arm64":if(l()){d=r(i(__dirname,"java.linux-arm64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-arm64-gnu.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-gnu.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-gnu")}catch(e){u=e}}break;case"arm":d=r(i(__dirname,"java.linux-arm-gnueabihf.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm-gnueabihf.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm-gnueabihf")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Linux: ${s}`)}break;default:throw new Error(`Unsupported OS: ${o}, architecture: ${s}`)}if(!c){if(u)throw u;throw new Error("Failed to load native binding")}const{Java:f,getClassFields:p,getField:v,setField:m,getStaticField:y,setStaticField:h,JavaInterfaceProxy:b,StdoutRedirect:g,getJavaLibPath:j}=c;e.exports.Java=f,e.exports.getClassFields=p,e.exports.getField=v,e.exports.setField=m,e.exports.getStaticField=y,e.exports.setStaticField=h,e.exports.JavaInterfaceProxy=b,e.exports.StdoutRedirect=g,e.exports.getJavaLibPath=j},248:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(a(7)),c=a(236),d=o(a(147)),u=o(a(17)),l=s.default.createSourceFile("source.ts","",s.default.ScriptTarget.Latest,!1,s.default.ScriptKind.TS);class f{constructor(e,t=null,a=[]){this.classname=e,this.progressCallback=t,this.resolvedImports=a,this.usesBasicOrJavaType=!1,this.additionalImports=[],this.importsToResolve=[]}static async convertMethods(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a={};for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const n=await r.getName(),i=await r.getReturnType(),o=await r.getParameterTypes(),s={returnType:await i.getTypeName(),parameters:await Promise.all(o.map((e=>e.getTypeName()))),isStatic:await t.isStatic(e)};Object.hasOwn(a,n)?a[n].push(s):a[n]=[s]}}return a}async convertConstructors(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a=[];for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const e=await r.getParameterTypes();a.push(await Promise.all(e.map((e=>e.getTypeName()))))}}const r=a.map(((e,t)=>{const a=e.map(this.convertParameter.bind(this));let r=s.default.factory.createConstructorDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword)],a,void 0);return 0===t&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.SingleLineCommentTrivia," ================== Constructors ==================",!0)),e.length>0&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.MultiLineCommentTrivia,"*\n"+e.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+" ",!0)),r}));return[...a.map(((e,t)=>this.createMethod({returnType:this.classname,parameters:e,isStatic:!0},"newInstance",t,!1))),...r]}javaTypeToTypescriptType(e,t){switch(e){case"byte[]":case"java.lang.Byte[]":return s.default.factory.createTypeReferenceNode("Buffer")}if(e.endsWith("[]"))return s.default.factory.createArrayTypeNode(this.javaTypeToTypescriptType(e.substring(0,e.length-2),t));switch(e){case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"float":case"java.lang.Float":case"double":case"java.lang.Double":case"byte":case"java.lang.Byte":case"short":case"java.lang.Short":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.NumberKeyword);case"char":case"java.lang.Character":case"java.lang.String":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.StringKeyword);case"boolean":case"java.lang.Boolean":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.BooleanKeyword);case"void":case"java.lang.Void":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.VoidKeyword);case"java.lang.Object":return this.usesBasicOrJavaType=!0,s.default.factory.createTypeReferenceNode("BasicOrJavaType");default:this.resolvedImports.includes(e)||this.additionalImports.push(e),this.importsToResolve.push(e);const a=e===this.classname&&t;return s.default.factory.createTypeReferenceNode(e===this.classname?e.substring(e.lastIndexOf(".")+1)+(a?"Class":""):e.replaceAll(".","_"))}}convertParameter(e,t){const a="var"+t,r=this.javaTypeToTypescriptType(e,!0);return s.default.factory.createParameterDeclaration(void 0,void 0,a,void 0,r)}convertParameters(e){return e.parameters.map(this.convertParameter.bind(this))}static createMethodComment(e){return"*\n"+e.parameters.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+` * @return original return type: '${e.returnType}'\n `}createMethod(e,t,a,r){const n=s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword),i=s.default.factory.createModifier(s.default.SyntaxKind.StaticKeyword),o=[n];e.isStatic&&o.push(i);let c=this.javaTypeToTypescriptType(e.returnType,!1);r||(c=s.default.factory.createTypeReferenceNode(s.default.factory.createIdentifier("Promise"),[c]));let d=s.default.factory.createMethodDeclaration(o,void 0,t+(r?"Sync":""),void 0,void 0,this.convertParameters(e),c,void 0);return 0===a&&(d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.SingleLineCommentTrivia,` ================== Method ${t} ==================`,!0)),s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,f.createMethodComment(e),!0)}convertMethod(e,t){const a=[];for(let r=0;r<e.length;r++){const n=e[r];a.push(this.createMethod(n,t,r,!1),this.createMethod(n,t,r,!0))}return a}getAdditionalImports(){const e=e=>{const t=this.classname.split("."),a=e.split(".");for(let e=0;e<t.length&&a[e]===t[e];e++)t[e]=null,a[e]=null;return"./"+t.filter((e=>!!e)).map((()=>"")).join("../")+a.filter((e=>!!e)).join("/")};return this.importsToResolve.filter((e=>e!=this.classname)).filter(((e,t,a)=>a.indexOf(e)===t)).map((t=>s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,s.default.factory.createNamedImports([s.default.factory.createImportSpecifier(!1,s.default.factory.createIdentifier(t.substring(t.lastIndexOf(".")+1)),s.default.factory.createIdentifier(t.replaceAll(".","_")))])),s.default.factory.createStringLiteral(e(t)))))}getImports(){const e=[s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("importClass")),s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("JavaClass"))];this.usesBasicOrJavaType&&e.push(s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("BasicOrJavaType")));const t=s.default.factory.createNamedImports(e);return s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,t),s.default.factory.createStringLiteral("java-bridge"))}getExportStatement(e){const t=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword)],e,void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier(`importClass<typeof ${e}Class>("${this.classname}")`),void 0)])],[]);return[s.default.addSyntheticLeadingComment(t,s.SyntaxKind.MultiLineCommentTrivia,`*\n * Class ${this.classname}.\n *\n * This actually imports the java class for further use.\n * The class ${e}Class only defines types, this is the class you should actually import.\n * Please note that this statement imports the underlying java class at runtime, which may take a while.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0),s.default.factory.createExportDefault(s.default.factory.createIdentifier(e))]}getText(e){return e.map((e=>e&&s.default.createPrinter({newLine:s.default.NewLineKind.LineFeed}).printNode(s.default.EmitHint.Unspecified,e,l)||"")).join("\n")}async generate(){if(this.resolvedImports.includes(this.classname))return[];this.resolvedImports.push(this.classname),this.progressCallback&&this.progressCallback(this.classname);const e=(await(0,c.importClassAsync)(this.classname)).class,t=this.classname.substring(this.classname.lastIndexOf(".")+1),a=await e.getDeclaredMethods(),r=[],n=await f.convertMethods(a);for(const e of Object.keys(n)){const t=n[e];r.push(...this.convertMethod(t,e))}const i=await e.getDeclaredConstructors(),o=await this.convertConstructors(i);r.push(...o);let d=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword),s.default.factory.createModifier(s.default.SyntaxKind.DeclareKeyword)],t+"Class",void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier("JavaClass"),void 0)])],r);d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,`*\n * This class just defines types, you should import ${t} instead of this.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0);const u=this.getText([this.getImports(),...this.getAdditionalImports(),null,d,null,...this.getExportStatement(t)]),l=[];for(const e of this.additionalImports){const t=new f(e,this.progressCallback,this.resolvedImports),a=await t.generate();l.push(...a)}return l.push({name:this.classname,contents:u}),l}static async save(e,t){for(const a of e){const e=a.name.split(".");e[e.length-1]=e[e.length-1]+".ts";const r=u.default.join(t,...e);await d.default.promises.mkdir(u.default.dirname(r),{recursive:!0}),await d.default.promises.writeFile(r,a.contents,{encoding:"utf8"})}}}t.default=f},91:(e,t)=>{"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.JavaObject=t.JavaVersion=void 0,function(e){e.VER_1_1="1.1",e.VER_1_2="1.2",e.VER_1_4="1.4",e.VER_1_6="1.6",e.VER_1_8="1.8",e.VER_9="9",e.VER_10="10"}(a=t.JavaVersion||(t.JavaVersion={})),Object.freeze(a),t.JavaObject=class{}},236:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypescriptDefinitionGenerator=t.getJavaVersionSync=t.getJavaVersion=t.getJavaLibPath=t.JavaClassConstructor=t.JavaClass=t.JavaClassProxy=t.JavaClassInstance=t.JavaObject=t.JavaVersion=void 0;var c=a(91);Object.defineProperty(t,"JavaVersion",{enumerable:!0,get:function(){return c.JavaVersion}}),Object.defineProperty(t,"JavaObject",{enumerable:!0,get:function(){return c.JavaObject}}),Object.defineProperty(t,"JavaClassInstance",{enumerable:!0,get:function(){return c.JavaClassInstance}}),Object.defineProperty(t,"JavaClassProxy",{enumerable:!0,get:function(){return c.JavaClassProxy}}),Object.defineProperty(t,"JavaClass",{enumerable:!0,get:function(){return c.JavaClass}}),Object.defineProperty(t,"JavaClassConstructor",{enumerable:!0,get:function(){return c.JavaClassConstructor}}),i(a(818),t);const d=o(a(818));t.default=d;var u=a(163);Object.defineProperty(t,"getJavaLibPath",{enumerable:!0,get:function(){return u.getJavaLibPath}});var l=a(102);Object.defineProperty(t,"getJavaVersion",{enumerable:!0,get:function(){return l.getJavaVersion}}),Object.defineProperty(t,"getJavaVersionSync",{enumerable:!0,get:function(){return l.getJavaVersionSync}});const f=s(a(248));t.TypescriptDefinitionGenerator=f.default},818:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaInstance=t.newProxy=t.stdout=t.classpath=t.isInstanceOf=t.appendClasspath=t.importClassAsync=t.importClass=t.ensureJvm=void 0;const r=a(163),n=a(841);let i=null;function o(e){i||(i=new r.Java(e?.libPath,e?.version,e?.opts,e,(0,n.getJavaLibPath)(),(0,n.getNativeLibPath)()))}function s(e,t){for(const a of(0,r.getClassFields)(e["class.proxy"],t)){const n=()=>t?(0,r.getStaticField)(e,a.name):(0,r.getField)(e,a.name);a.isFinal?Object.defineProperty(e,a.name,{get:n,enumerable:!0}):Object.defineProperty(e,a.name,{get:n,set:n=>t?(0,r.setStaticField)(e,a.name,n):(0,r.setField)(e,a.name,n),enumerable:!0})}}function c(e){o(),i.appendClasspath(e)}var d;t.ensureJvm=o,t.importClass=function(e){o();const t=i.importClass(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.importClassAsync=async function(e){o();const t=await i.importClassAsync(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.appendClasspath=c,t.isInstanceOf=function(e,t){return o(),i.isInstanceOf(e,t)},(d=t.classpath||(t.classpath={})).append=function(e){c(e)},d.get=function(){return o(),i.loadedJars},(t.stdout||(t.stdout={})).enableRedirect=function(e,t){return o(),i.setStdoutCallbacks(e,t)},t.newProxy=function(e,t){o();const a=Object.create(null);for(const[e,r]of Object.entries(t))a[e]=(e,t,...a)=>{if(e)throw e;try{t(null,r(...a))}catch(e){e instanceof Error?t(e):t(new Error(e.toString()))}};return i.createInterfaceProxy(e,a)},t.getJavaInstance=function(){return i}},841:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaLibPath=t.getNativeLibPath=void 0;const s=o(a(17)),c=i(a(147)),d=o(a(230)),{platform:u,arch:l}=process;function f(e){const t=s.default.join(__dirname,e+".node");if(c.default.existsSync(t))return t;{const t=e.replaceAll(".","-").replace("java","java-bridge");return require&&require.resolve?require.resolve(t):a(955).resolve(t)}}function p(){return new Error(`Unsupported platform: ${u} ${l}`)}t.getNativeLibPath=function(){switch(u){case"android":switch(l){case"arm64":return f("java.android-arm64");case"arm":return f("java.android-arm-eabi");default:throw p()}case"win32":return f(`java.win32-${l}-msvc`);case"darwin":return f(`java.darwin-${l}`);case"freebsd":return f(`java.freebsd-${l}`);case"linux":switch(l){case"x64":case"arm64":return f(`java.linux-${l}-${function(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return(0,c.readFileSync)("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}()?"musl":"gnu"}`);case"arm":return f("java.linux-arm-gnueabihf");default:throw p()}default:throw p()}},t.getJavaLibPath=function(){const e=s.default.join(__dirname,"..","java-src","build","libs");let t=d.default.sync("*.jar",{cwd:e});if(0===t.length)throw new Error(`No java lib found in ${e}`);return s.default.join(e,t[0])}},102:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaVersionSync=t.getJavaVersion=void 0;const r=a(818);t.getJavaVersion=async function(){const e=await(0,r.importClassAsync)("java.lang.System");return await e.getProperty("java.version")},t.getJavaVersionSync=function(){return(0,r.importClass)("java.lang.System").getPropertySync("java.version")}},955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},230:e=>{"use strict";e.exports=require("glob")},7:e=>{"use strict";e.exports=require("typescript")},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")}},t={};function a(r){var n=t[r];if(void 0!==n)return n.exports;var i=t[r]={id:r,loaded:!1,exports:{}};return e[r].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}return a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.p="",a(236)})()));
|
|
2
2
|
//# sourceMappingURL=index.prod.min.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.prod.min.js","mappings":"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","sources":["webpack://java/webpack/universalModuleDefinition","webpack://java/./java.linux-x64-gnu.node","webpack://java/./native.js","webpack://java/./ts-src/TypescriptDefinitionGenerator.ts","webpack://java/./ts-src/definitions.ts","webpack://java/./ts-src/index.ts","webpack://java/./ts-src/java.ts","webpack://java/./ts-src/nativeLib.ts","webpack://java/./ts-src/util.ts","webpack://java/./ts-src/ sync","webpack://java/external commonjs \"glob\"","webpack://java/external commonjs \"typescript\"","webpack://java/external node-commonjs \"fs\"","webpack://java/external node-commonjs \"path\"","webpack://java/webpack/bootstrap","webpack://java/webpack/runtime/hasOwnProperty shorthand","webpack://java/webpack/runtime/node module decorator","webpack://java/webpack/runtime/publicPath","webpack://java/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"java\"] = factory();\n\telse\n\t\troot[\"java\"] = factory();\n})(global, () => {\nreturn ","\ntry {\n process.dlopen(module, __dirname + require(\"path\").sep + __webpack_public_path__ + \"java.linux-x64-gnu.node\");\n} catch (error) {\n throw new Error('node-loader:\\n' + error);\n}\n","const { existsSync, readFileSync } = require('fs')\nconst { join } = require('path')\n\nconst { platform, arch } = process\n\nlet nativeBinding = null\nlet localFileExisted = false\nlet loadError = null\n\nfunction isMusl() {\n // For Node 10\n if (!process.report || typeof process.report.getReport !== 'function') {\n try {\n return readFileSync('/usr/bin/ldd', 'utf8').includes('musl')\n } catch (e) {\n return true\n }\n } else {\n const { glibcVersionRuntime } = process.report.getReport().header\n return !glibcVersionRuntime\n }\n}\n\nswitch (platform) {\n case 'android':\n switch (arch) {\n case 'arm64':\n localFileExisted = existsSync(join(__dirname, 'java.android-arm64.node'))\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.android-arm64.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-android-arm64')\n }\n } catch (e) {\n loadError = e\n }\n break\n case 'arm':\n localFileExisted = existsSync(join(__dirname, 'java.android-arm-eabi.node'))\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.android-arm-eabi.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-android-arm-eabi')\n }\n } catch (e) {\n loadError = e\n }\n break\n default:\n throw new Error(`Unsupported architecture on Android ${arch}`)\n }\n break\n case 'win32':\n switch (arch) {\n case 'x64':\n localFileExisted = existsSync(\n join(__dirname, 'java.win32-x64-msvc.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.win32-x64-msvc.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-win32-x64-msvc')\n }\n } catch (e) {\n loadError = e\n }\n break\n case 'ia32':\n localFileExisted = existsSync(\n join(__dirname, 'java.win32-ia32-msvc.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.win32-ia32-msvc.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-win32-ia32-msvc')\n }\n } catch (e) {\n loadError = e\n }\n break\n case 'arm64':\n localFileExisted = existsSync(\n join(__dirname, 'java.win32-arm64-msvc.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.win32-arm64-msvc.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-win32-arm64-msvc')\n }\n } catch (e) {\n loadError = e\n }\n break\n default:\n throw new Error(`Unsupported architecture on Windows: ${arch}`)\n }\n break\n case 'darwin':\n switch (arch) {\n case 'x64':\n localFileExisted = existsSync(join(__dirname, 'java.darwin-x64.node'))\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.darwin-x64.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-darwin-x64')\n }\n } catch (e) {\n loadError = e\n }\n break\n case 'arm64':\n localFileExisted = existsSync(\n join(__dirname, 'java.darwin-arm64.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.darwin-arm64.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-darwin-arm64')\n }\n } catch (e) {\n loadError = e\n }\n break\n default:\n throw new Error(`Unsupported architecture on macOS: ${arch}`)\n }\n break\n case 'freebsd':\n if (arch !== 'x64') {\n throw new Error(`Unsupported architecture on FreeBSD: ${arch}`)\n }\n localFileExisted = existsSync(join(__dirname, 'java.freebsd-x64.node'))\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.freebsd-x64.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-freebsd-x64')\n }\n } catch (e) {\n loadError = e\n }\n break\n case 'linux':\n switch (arch) {\n case 'x64':\n if (isMusl()) {\n localFileExisted = existsSync(\n join(__dirname, 'java.linux-x64-musl.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.linux-x64-musl.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-linux-x64-musl')\n }\n } catch (e) {\n loadError = e\n }\n } else {\n localFileExisted = existsSync(\n join(__dirname, 'java.linux-x64-gnu.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.linux-x64-gnu.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-linux-x64-gnu')\n }\n } catch (e) {\n loadError = e\n }\n }\n break\n case 'arm64':\n if (isMusl()) {\n localFileExisted = existsSync(\n join(__dirname, 'java.linux-arm64-musl.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.linux-arm64-musl.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-linux-arm64-musl')\n }\n } catch (e) {\n loadError = e\n }\n } else {\n localFileExisted = existsSync(\n join(__dirname, 'java.linux-arm64-gnu.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.linux-arm64-gnu.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-linux-arm64-gnu')\n }\n } catch (e) {\n loadError = e\n }\n }\n break\n case 'arm':\n localFileExisted = existsSync(\n join(__dirname, 'java.linux-arm-gnueabihf.node')\n )\n try {\n if (localFileExisted) {\n nativeBinding = require('./java.linux-arm-gnueabihf.node')\n } else {\n nativeBinding = __non_webpack_require__('java-bridge-linux-arm-gnueabihf')\n }\n } catch (e) {\n loadError = e\n }\n break\n default:\n throw new Error(`Unsupported architecture on Linux: ${arch}`)\n }\n break\n default:\n throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`)\n}\n\nif (!nativeBinding) {\n if (loadError) {\n throw loadError\n }\n throw new Error(`Failed to load native binding`)\n}\n\nconst { Java, getClassFields, getField, setField, getStaticField, setStaticField, JavaInterfaceProxy, StdoutRedirect, getJavaLibPath } = nativeBinding\n\nmodule.exports.Java = Java\nmodule.exports.getClassFields = getClassFields\nmodule.exports.getField = getField\nmodule.exports.setField = setField\nmodule.exports.getStaticField = getStaticField\nmodule.exports.setStaticField = setStaticField\nmodule.exports.JavaInterfaceProxy = JavaInterfaceProxy\nmodule.exports.StdoutRedirect = StdoutRedirect\nmodule.exports.getJavaLibPath = getJavaLibPath\n","import ts, { SyntaxKind } from 'typescript';\nimport { importClassAsync, JavaClass } from './.';\nimport fs from 'fs';\nimport path from 'path';\n\nconst sourceFile = ts.createSourceFile(\n 'source.ts',\n '',\n ts.ScriptTarget.Latest,\n false,\n ts.ScriptKind.TS\n);\n\nexport interface MethodDeclaration {\n returnType: string;\n parameters: string[];\n isStatic: boolean;\n}\n\n/**\n * A java class declaration converted to typescript\n */\nexport interface ModuleDeclaration {\n /**\n * The fully-qualified class name\n */\n name: string;\n /**\n * The generated typescript code\n */\n contents: string;\n}\n\n/**\n * A TypescriptDefinitionGenerator progress callback method\n */\nexport type ProgressCallback = (classname: string) => void;\n\ndeclare class ModifierClass extends JavaClass {\n public static isPublic(val: number): Promise<boolean>;\n public static isStatic(val: number): Promise<boolean>;\n}\n\ndeclare class TypeClass extends JavaClass {\n public getTypeName(): Promise<string>;\n}\n\ndeclare class DeclaredMethodClass extends JavaClass {\n public getModifiers(): Promise<number>;\n public getName(): Promise<string>;\n public getReturnType(): Promise<TypeClass>;\n public getParameterTypes(): Promise<TypeClass[]>;\n}\n\ndeclare class DeclaredConstructorClass extends JavaClass {\n public getModifiers(): Promise<number>;\n public getParameterTypes(): Promise<TypeClass[]>;\n}\n\ndeclare class ClassClass extends JavaClass {\n public getDeclaredMethods(): Promise<DeclaredMethodClass[]>;\n public getDeclaredConstructors(): Promise<DeclaredConstructorClass[]>;\n}\n\n/**\n * A class to generate typescript definitions for java classes.\n * Converts the given class and all of its dependencies to typescript.\n *\n * ## Example\n * ```ts\n * import { TypescriptDefinitionGenerator } from 'java-bridge';\n *\n * const generator = new TypescriptDefinitionGenerator('java.lang.String');\n * // Generate the typescript definitions\n * const definitions = await generator.generate();\n *\n * // Save the definitions to a directory\n * await TypescriptDefinitionGenerator.save(definitions, './project');\n * ```\n */\nexport default class TypescriptDefinitionGenerator {\n private usesBasicOrJavaType: boolean = false;\n private readonly additionalImports: string[] = [];\n private readonly importsToResolve: string[] = [];\n\n /**\n * Create a new `TypescriptDefinitionGenerator` instance\n *\n * @param classname the fully-qualified name of the class to generate a typescript definition for\n * @param progressCallback a callback method to be called every time a java class is\n * converted to typescript\n * @param resolvedImports a list of imports that have already been resolved.\n * This is used to prevent converting a class multiple times\n */\n public constructor(\n private readonly classname: string,\n private readonly progressCallback: ProgressCallback | null = null,\n private readonly resolvedImports: string[] = []\n ) {}\n\n private static async convertMethods(\n methods: DeclaredMethodClass[]\n ): Promise<Record<string, MethodDeclaration[]>> {\n const Modifier = await importClassAsync<typeof ModifierClass>(\n 'java.lang.reflect.Modifier'\n );\n\n const result: Record<string, MethodDeclaration[]> = {};\n for (const method of methods) {\n const modifiers = await method.getModifiers();\n if (await Modifier.isPublic(modifiers)) {\n const name = await method.getName();\n const returnType = await method.getReturnType();\n const parameterTypes = await method.getParameterTypes();\n\n const data: MethodDeclaration = {\n returnType: await returnType.getTypeName(),\n parameters: await Promise.all(\n parameterTypes.map((p) => p.getTypeName())\n ),\n isStatic: await Modifier.isStatic(modifiers),\n };\n\n if (Object.hasOwn(result, name)) {\n result[name].push(data);\n } else {\n result[name] = [data];\n }\n }\n }\n\n return result;\n }\n\n private async convertConstructors(\n constructors: DeclaredConstructorClass[]\n ): Promise<ts.ClassElement[]> {\n const Modifier = await importClassAsync<typeof ModifierClass>(\n 'java.lang.reflect.Modifier'\n );\n const types: string[][] = [];\n\n for (const constructor of constructors) {\n const modifiers = await constructor.getModifiers();\n if (await Modifier.isPublic(modifiers)) {\n const parameterTypes = await constructor.getParameterTypes();\n types.push(\n await Promise.all(\n parameterTypes.map((p) => p.getTypeName())\n )\n );\n }\n }\n\n const tsConstructors = types.map((t, i) => {\n const params = t.map(this.convertParameter.bind(this));\n let declaration = ts.factory.createConstructorDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.PublicKeyword)],\n params,\n undefined\n );\n if (i === 0) {\n declaration = ts.addSyntheticLeadingComment(\n declaration,\n ts.SyntaxKind.SingleLineCommentTrivia,\n ` ================== Constructors ==================`,\n true\n );\n }\n\n if (t.length > 0) {\n declaration = ts.addSyntheticLeadingComment(\n declaration,\n ts.SyntaxKind.MultiLineCommentTrivia,\n '*\\n' +\n t\n .map(\n (p, i) =>\n ` * @param var${i} original type: '${p}'\\n`\n )\n .join('') +\n ' ',\n true\n );\n }\n\n return declaration;\n });\n\n const newInstanceMethods = types.map((t, i) => {\n return this.createMethod(\n {\n returnType: this.classname,\n parameters: t,\n isStatic: true,\n },\n 'newInstance',\n i,\n false\n );\n });\n\n return [...newInstanceMethods, ...tsConstructors];\n }\n\n private javaTypeToTypescriptType(\n javaType: string,\n isParam: boolean\n ): ts.TypeNode {\n switch (javaType) {\n case 'byte[]':\n case 'java.lang.Byte[]':\n return ts.factory.createTypeReferenceNode('Buffer');\n }\n\n if (javaType.endsWith('[]')) {\n return ts.factory.createArrayTypeNode(\n this.javaTypeToTypescriptType(\n javaType.substring(0, javaType.length - 2),\n isParam\n )\n );\n }\n\n switch (javaType) {\n case 'int':\n case 'java.lang.Integer':\n case 'long':\n case 'java.lang.Long':\n case 'float':\n case 'java.lang.Float':\n case 'double':\n case 'java.lang.Double':\n case 'byte':\n case 'java.lang.Byte':\n case 'short':\n case 'java.lang.Short':\n return ts.factory.createKeywordTypeNode(\n ts.SyntaxKind.NumberKeyword\n );\n case 'char':\n case 'java.lang.Character':\n case 'java.lang.String':\n return ts.factory.createKeywordTypeNode(\n ts.SyntaxKind.StringKeyword\n );\n case 'boolean':\n case 'java.lang.Boolean':\n return ts.factory.createKeywordTypeNode(\n ts.SyntaxKind.BooleanKeyword\n );\n case 'void':\n case 'java.lang.Void':\n return ts.factory.createKeywordTypeNode(\n ts.SyntaxKind.VoidKeyword\n );\n case 'java.lang.Object':\n this.usesBasicOrJavaType = true;\n return ts.factory.createTypeReferenceNode('BasicOrJavaType');\n default:\n if (!this.resolvedImports.includes(javaType)) {\n this.additionalImports.push(javaType);\n }\n\n this.importsToResolve.push(javaType);\n const isSelf = javaType === this.classname && isParam;\n\n return ts.factory.createTypeReferenceNode(\n javaType === this.classname\n ? javaType.substring(javaType.lastIndexOf('.') + 1) +\n (isSelf ? 'Class' : '')\n : javaType.replaceAll('.', '_')\n );\n }\n }\n\n private convertParameter(\n param: string,\n index: number\n ): ts.ParameterDeclaration {\n const name = 'var' + index;\n const type = this.javaTypeToTypescriptType(param, true);\n return ts.factory.createParameterDeclaration(\n undefined,\n undefined,\n name,\n undefined,\n type\n );\n }\n\n private convertParameters(params: MethodDeclaration) {\n return params.parameters.map(this.convertParameter.bind(this));\n }\n\n private static createMethodComment(declaration: MethodDeclaration) {\n return (\n '*\\n' +\n declaration.parameters\n .map((p, i) => ` * @param var${i} original type: '${p}'\\n`)\n .join('') +\n ` * @return original return type: '${declaration.returnType}'\\n `\n );\n }\n\n private createMethod(\n m: MethodDeclaration,\n name: string,\n i: number,\n isSync: boolean\n ): ts.MethodDeclaration {\n const publicMod = ts.factory.createModifier(\n ts.SyntaxKind.PublicKeyword\n );\n const staticMod = ts.factory.createModifier(\n ts.SyntaxKind.StaticKeyword\n );\n\n const modifiers: ts.Modifier[] = [publicMod];\n if (m.isStatic) {\n modifiers.push(staticMod);\n }\n\n let returnType = this.javaTypeToTypescriptType(m.returnType, false);\n if (!isSync) {\n returnType = ts.factory.createTypeReferenceNode(\n ts.factory.createIdentifier('Promise'),\n [returnType]\n );\n }\n\n let declaration = ts.factory.createMethodDeclaration(\n modifiers,\n undefined,\n name + (isSync ? 'Sync' : ''),\n undefined,\n undefined,\n this.convertParameters(m),\n returnType,\n undefined\n );\n\n if (i === 0) {\n declaration = ts.addSyntheticLeadingComment(\n declaration,\n ts.SyntaxKind.SingleLineCommentTrivia,\n ` ================== Method ${name} ==================`,\n true\n );\n }\n\n return ts.addSyntheticLeadingComment(\n declaration,\n ts.SyntaxKind.MultiLineCommentTrivia,\n TypescriptDefinitionGenerator.createMethodComment(m),\n true\n );\n }\n\n private convertMethod(\n method: MethodDeclaration[],\n name: string\n ): ts.MethodDeclaration[] {\n const res: ts.MethodDeclaration[] = [];\n\n for (let i = 0; i < method.length; i++) {\n const m = method[i];\n\n res.push(\n this.createMethod(m, name, i, false),\n this.createMethod(m, name, i, true)\n );\n }\n\n return res;\n }\n\n private getAdditionalImports() {\n const getPath = (i: string) => {\n const thisSplit: (string | null)[] = this.classname.split('.');\n const importSplit: (string | null)[] = i.split('.');\n\n for (let j = 0; j < thisSplit.length; j++) {\n if (importSplit[j] === thisSplit[j]) {\n thisSplit[j] = null;\n importSplit[j] = null;\n } else {\n break;\n }\n }\n\n return (\n './' +\n thisSplit\n .filter((e) => !!e)\n .map(() => '')\n .join('../') +\n importSplit.filter((e) => !!e).join('/')\n );\n };\n\n const unique = <T>(value: T, index: number, self: T[]) => {\n return self.indexOf(value) === index;\n };\n\n return this.importsToResolve\n .filter((i) => i != this.classname)\n .filter(unique)\n .map((i) =>\n ts.factory.createImportDeclaration(\n undefined,\n ts.factory.createImportClause(\n false,\n undefined,\n ts.factory.createNamedImports([\n ts.factory.createImportSpecifier(\n false,\n ts.factory.createIdentifier(\n i.substring(i.lastIndexOf('.') + 1)\n ),\n ts.factory.createIdentifier(\n i.replaceAll('.', '_')\n )\n ),\n ])\n ),\n ts.factory.createStringLiteral(getPath(i))\n )\n );\n }\n\n private getImports(): ts.ImportDeclaration {\n const importElements = [\n ts.factory.createImportSpecifier(\n false,\n undefined,\n ts.factory.createIdentifier('importClass')\n ),\n ts.factory.createImportSpecifier(\n false,\n undefined,\n ts.factory.createIdentifier('JavaClass')\n ),\n ];\n\n if (this.usesBasicOrJavaType) {\n importElements.push(\n ts.factory.createImportSpecifier(\n false,\n undefined,\n ts.factory.createIdentifier('BasicOrJavaType')\n )\n );\n }\n\n const imports = ts.factory.createNamedImports(importElements);\n return ts.factory.createImportDeclaration(\n undefined,\n ts.factory.createImportClause(false, undefined, imports),\n ts.factory.createStringLiteral('java-bridge')\n );\n }\n\n private getExportStatement(simpleName: string) {\n const statement = ts.factory.createClassDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n simpleName,\n undefined,\n [\n ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [\n ts.factory.createExpressionWithTypeArguments(\n ts.factory.createIdentifier(\n `importClass<typeof ${simpleName}Class>(\"${this.classname}\")`\n ),\n undefined\n ),\n ]),\n ],\n []\n );\n\n return [\n ts.addSyntheticLeadingComment(\n statement,\n SyntaxKind.MultiLineCommentTrivia,\n `*\\n * Class ${this.classname}.\\n *\\n` +\n ' * This actually imports the java class for further use.\\n' +\n ` * The class ${simpleName}Class only defines types, this is the class you should actually import.\\n` +\n ' * Please note that this statement imports the underlying java class at runtime, which may take a while.\\n' +\n ' * This was generated by java-bridge.\\n * You should probably not edit this.\\n ',\n true\n ),\n ts.factory.createExportDefault(\n ts.factory.createIdentifier(simpleName)\n ),\n ];\n }\n\n private getText(nodes: (ts.Node | null)[]) {\n return nodes\n .map(\n (n) =>\n (n &&\n ts\n .createPrinter({ newLine: ts.NewLineKind.LineFeed })\n .printNode(\n ts.EmitHint.Unspecified,\n n,\n sourceFile\n )) ||\n ''\n )\n .join('\\n');\n }\n\n /**\n * Generates the typescript definition for the given class.\n *\n * @returns the generated typescript definitions\n */\n public async generate(): Promise<ModuleDeclaration[]> {\n if (this.resolvedImports.includes(this.classname)) {\n return [];\n }\n\n this.resolvedImports.push(this.classname);\n if (this.progressCallback) {\n this.progressCallback(this.classname);\n }\n\n const Class = await importClassAsync(this.classname);\n const cls = Class.class as ClassClass;\n\n const simpleName = this.classname.substring(\n this.classname.lastIndexOf('.') + 1\n );\n const methods = await cls.getDeclaredMethods();\n\n const classMembers: ts.ClassElement[] = [];\n\n const convertedMethods =\n await TypescriptDefinitionGenerator.convertMethods(methods);\n for (const key of Object.keys(convertedMethods)) {\n const m = convertedMethods[key];\n classMembers.push(...this.convertMethod(m, key));\n }\n\n const constructors = await cls.getDeclaredConstructors();\n const convertedConstructors = await this.convertConstructors(\n constructors\n );\n classMembers.push(...convertedConstructors);\n\n let tsClass = ts.factory.createClassDeclaration(\n [\n ts.factory.createModifier(ts.SyntaxKind.ExportKeyword),\n ts.factory.createModifier(ts.SyntaxKind.DeclareKeyword),\n ],\n simpleName + 'Class',\n undefined,\n [\n ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [\n ts.factory.createExpressionWithTypeArguments(\n ts.factory.createIdentifier('JavaClass'),\n undefined\n ),\n ]),\n ],\n classMembers\n );\n\n tsClass = ts.addSyntheticLeadingComment(\n tsClass,\n ts.SyntaxKind.MultiLineCommentTrivia,\n `*\\n * This class just defines types, you should import ${simpleName} instead of this.\\n` +\n ' * This was generated by java-bridge.\\n * You should probably not edit this.\\n ',\n true\n );\n\n const sourceText = this.getText([\n this.getImports(),\n ...this.getAdditionalImports(),\n null,\n tsClass,\n null,\n ...this.getExportStatement(simpleName),\n ]);\n\n const res: ModuleDeclaration[] = [];\n for (const imported of this.additionalImports) {\n const generator = new TypescriptDefinitionGenerator(\n imported,\n this.progressCallback,\n this.resolvedImports\n );\n const generated = await generator.generate();\n res.push(...generated);\n }\n\n res.push({\n name: this.classname,\n contents: sourceText,\n });\n\n return res;\n }\n\n /**\n * Save the converted classes to the given directory.\n *\n * @param declarations the declarations to save\n * @param sourceDir the directory to save the files to\n */\n public static async save(\n declarations: ModuleDeclaration[],\n sourceDir: string\n ): Promise<void> {\n for (const declaration of declarations) {\n const p = declaration.name.split('.');\n p[p.length - 1] = p[p.length - 1] + '.ts';\n\n const filePath = path.join(sourceDir, ...p);\n await fs.promises.mkdir(path.dirname(filePath), {\n recursive: true,\n });\n await fs.promises.writeFile(filePath, declaration.contents, {\n encoding: 'utf8',\n });\n }\n }\n}\n","/**\n * The supported java versions.\n * Your list of supported versions\n * may differ if you use a different\n * version of the jvm shared library.\n */\nexport enum JavaVersion {\n /** Java version 1.1 */\n VER_1_1 = '1.1',\n /** Java version 1.2 */\n VER_1_2 = '1.2',\n /** Java version 1.4 */\n VER_1_4 = '1.4',\n /** Java version 1.6 */\n VER_1_6 = '1.6',\n /** Java version 1.8 */\n VER_1_8 = '1.8',\n /** Java version 9 */\n VER_9 = '9',\n /** Java version 10 */\n VER_10 = '10',\n}\n\nObject.freeze(JavaVersion);\n\n/**\n * Any basic javascript type accepted by this library.\n */\nexport declare type BasicType = string | number | boolean | BigInt | null;\n\n/**\n * Any java type accepted by this library, except arrays.\n */\nexport type BasicOrJavaType =\n | BasicType\n | JavaObject\n | JavaClass\n | JavaClassType;\n\n/**\n * All types accepted by java\n */\nexport type JavaType = BasicOrJavaType | BasicOrJavaType[];\n\n/**\n * A dummy java object class\n */\nexport abstract class JavaObject {}\n\n/**\n * A java class proxy class.\n * This only exists for temporarily storing\n * the class name and the java instance\n * to create the actual class from using the\n * {@link JavaClassProxy.getClassConstructor()}\n * function.\n */\nexport declare class JavaClassProxy {\n /**\n * The class name\n */\n public 'class.name': string;\n\n /**\n * Get the class's constructor\n *\n * @return the java instance proxy constructor\n */\n public getClassConstructor<\n T extends JavaClassType = UnknownJavaClassType\n >(): T;\n}\n\nexport type JavaClassType = typeof JavaClass;\nexport type UnknownJavaClassType = typeof UnknownJavaClass;\nexport type JavaClassConstructorType = typeof JavaClassConstructor;\n\n/**\n * @inheritDoc UnknownJavaClass\n */\nexport declare class JavaClassInstance extends UnknownJavaClass {}\n\n/**\n * A java class constructor class\n *\n * @see JavaClass\n */\nexport declare class JavaClassConstructor extends JavaClass {\n public constructor(...args: BasicOrJavaType[]);\n}\n\n/**\n * A constructor type.\n */\nexport type Constructor<T> = { new (): T };\n\n/**\n * A class to be extended for custom class definitions.\n * This does not allow for any methods to be called if not\n * defined in the class definition.\n *\n * ## Example\n * ```ts\n * import { importClass } from 'java-bridge';\n *\n * declare class PersonClass extends JavaClass {\n * public constructor(name: string, age: number);\n * public newInstanceAsync(name: string, age: number): Promise<Person>;\n *\n * public getName(): Promise<string>;\n * public getNameSync(): string;\n * public getAge(): Promise<number>;\n * public getAgeSync(): number;\n * }\n *\n * class Person extends importClass<typeof PersonClass>('com.test.Person') {}\n *\n * const person = new Person('John', 20);\n * console.log(person.getNameSync()); // John\n * console.log(person.getAgeSync()); // 20\n * ```\n */\nexport declare class JavaClass extends JavaObject {\n /**\n * Get the java class instance\n */\n public static get class(): UnknownJavaClass;\n\n /**\n * The class proxy class instance\n */\n public static readonly 'class.proxy': JavaClassProxy;\n\n /**\n * Check if this is an instance of another class.\n * Pass either the name of the other class or the class itself\n * to check if this is an instance of it.\n * Does not overwrite any existing instanceof operator.\n * This uses the native java instanceof operator.\n *\n * ## Example\n * ```ts\n * import { importClass } from 'java-bridge';\n *\n * const JavaString = importClass('java.lang.String');\n * const str = new JavaString('Hello World');\n *\n * str.instanceOf(JavaString); // true\n * str.instanceOf('java.lang.String'); // true\n * str.instanceOf('java.lang.Object'); // true\n * str.instanceOf('java.lang.Integer'); // false\n * ```\n *\n * @param other the class to check if this is an instance of\n * @return true if this is instance of `other`\n */\n public instanceOf<T extends JavaClassConstructorType>(\n other: string | T\n ): boolean;\n\n /**\n * Default java equals implementation.\n * Async call.\n *\n * @param o the object to compare this to\n * @returns true if this matches o\n */\n public equals(o: JavaClass): Promise<boolean>;\n\n /**\n * Default java equals implementation.\n * Sync call.\n *\n * @param o the object to compare this to\n * @returns true if this matches o\n */\n public equalsSync(o: JavaClass): boolean;\n\n /**\n * Java default toString method.\n * Async call.\n *\n * @returns this as a string\n */\n public toString(): Promise<string>;\n\n /**\n * Java default toString method.\n * Sync call.\n *\n * @returns this as a string\n */\n public toStringSync(): string;\n}\n\n/**\n * The java instance proxy class.\n * This class actually does all the magic.\n * After it is created, this will just be a constructor\n * with all static methods and properties (the accessible ones)\n * stored in it and ready for use. Once the actual instance\n * using the new operator is created, a new\n * java_instance_proxy instance is created, containing\n * the actual java instance (that thing isn't visible though)\n * and all (visible) non-static class member methods and properties.\n */\nexport declare class UnknownJavaClass extends JavaClass {\n /**\n * Create a new java class instance.\n * Async version.\n *\n * @template T the type of this class as a new instance of this class will be returned\n * @param args the arguments to create the instance\n * @return the java_instance_proxy instance\n */\n public static newInstanceAsync(\n this: never,\n ...args: BasicOrJavaType[]\n ): Promise<unknown>;\n public static newInstanceAsync<T extends JavaClass>(\n this: Constructor<T>,\n ...args: BasicOrJavaType[]\n ): Promise<T>;\n\n /**\n * Create a new java instance of type\n * java_instance_proxy[\"class.proxy.instance\"]\n *\n * @param args the arguments to create the instance\n */\n public constructor(...args: BasicOrJavaType[]);\n\n /**\n * Any class member imported.\n * We'll need to use 'any' as any is callable.\n * The actual type would be JavaType | ((...args: JavaType[]) => JavaType | Promise<JavaType>).\n * Just throwing it out there.\n */\n [member: string]: any;\n\n /**\n * Any static class member imported.\n * We'll need to use `any` as `any` is callable.\n * The actual type would be JavaType | ((...args: JavaType[]) => JavaType | Promise<JavaType>)\n */\n static [member: string]: any;\n}\n","export {\n JavaVersion,\n JavaObject,\n JavaClassInstance,\n JavaClassProxy,\n JavaClass,\n JavaClassConstructor,\n JavaType,\n BasicOrJavaType,\n BasicType,\n JavaClassType,\n Constructor,\n UnknownJavaClassType,\n JavaClassConstructorType,\n} from './definitions';\nimport type * as internal from '../native';\n/**\n * A namespace containing any internal type definitions.\n * Do not actually use anything from this namespace\n * as it only exports types.\n */\nexport type { internal };\nexport * from './java';\nimport * as java from './java';\nexport default java;\nexport { getJavaLibPath } from '../native';\nexport { getJavaVersion, getJavaVersionSync } from './util';\nimport TypescriptDefinitionGenerator from './TypescriptDefinitionGenerator';\nexport { TypescriptDefinitionGenerator };\nexport {\n ModuleDeclaration,\n MethodDeclaration,\n ProgressCallback,\n} from './TypescriptDefinitionGenerator';\n","import {\n getClassFields,\n getField,\n getStaticField,\n Java,\n JavaOptions,\n setField,\n setStaticField,\n} from '../native';\nimport {\n JavaClass,\n JavaClassConstructorType,\n JavaVersion,\n UnknownJavaClassType,\n} from './definitions';\nimport { getJavaLibPath, getNativeLibPath } from './nativeLib';\n\n/**\n * The static java instance\n */\nlet javaInstance: Java | null = null;\n\ninterface ImportedJavaClass {\n 'class.proxy': object;\n new (...args: any[]): any;\n}\n\n/**\n * Options for creating the Java VM.\n */\nexport interface JVMOptions extends JavaOptions {\n /***\n * The path to the native library\n */\n libPath?: string | null;\n /**\n * The version of the jvm to request\n */\n version?: string | JavaVersion | null;\n /**\n * Additional arguments to pass to the JVM\n */\n opts?: Array<string> | null;\n}\n\n/**\n * Ensure the java vm is created.\n * If the jvm is already created, this does nothing.\n * If the vm is not created yet, the jvm will be created upon this call.\n * This method is also called every time with no arguments when any call\n * to the jvm is done in another method.\n *\n * ## Examples\n * Specify the path to jvm.(dylib|dll|so) manually,\n * specify the java version to use and set to use daemon threads.\n * ```ts\n * import { ensureJvm, JavaVersion } from 'java-bridge';\n *\n * ensureJvm({\n * libPath: 'path/to/jvm.dll',\n * version: JavaVersion.VER_9,\n * useDaemonThreads: true\n * });\n * ```\n *\n * Let the plugin find the jvm.(dylib|dll|so)\n * ```ts\n * ensureJvm({\n * JavaVersion.VER_9,\n * useDaemonThreads: true\n * });\n * ```\n *\n * Let the plugin find the jvm.(dylib|dll|so) and use the default options\n * ```ts\n * ensureJvm();\n * ```\n *\n * @param options the options to use when creating the jvm\n */\nexport function ensureJvm(options?: JVMOptions): void {\n if (!javaInstance) {\n javaInstance = new Java(\n options?.libPath,\n options?.version,\n options?.opts,\n options,\n getJavaLibPath(),\n getNativeLibPath()\n );\n }\n}\n\nfunction defineFields(object: Record<string, any>, getStatic: boolean): void {\n for (const field of getClassFields(object['class.proxy'], getStatic)) {\n const getter = (): any =>\n getStatic\n ? getStaticField(object, field.name)\n : getField(object, field.name);\n if (field.isFinal) {\n Object.defineProperty(object, field.name, {\n get: getter,\n enumerable: true,\n });\n } else {\n Object.defineProperty(object, field.name, {\n get: getter,\n set: (value: any) =>\n getStatic\n ? setStaticField(object, field.name, value)\n : setField(object, field.name, value),\n enumerable: true,\n });\n }\n }\n}\n\n/**\n * Import a class.\n * Returns the constructor of the class to be created.\n * For example, import \"java.util.ArrayList\" for a java Array List.\n *\n * Define a custom class type for the imported class and pass the\n * constructor type of the class as the template parameter to get\n * the proper type returned. You could also just cast the result.\n *\n * ## Examples\n * ### Import ``java.util.ArrayList`` and create a new instance of it\n * ```ts\n * import { importClass } from 'java-bridge';\n *\n * // Import java.util.ArrayList\n * const ArrayList = importClass('java.util.ArrayList');\n *\n * // Create a new instance of ArrayList\n * const list = new ArrayList();\n * ```\n *\n * ### Import ``java.util.ArrayList`` with types\n * ```ts\n * import { importClass, JavaClassInstance, JavaType } from 'java-bridge';\n *\n * // Definitions for class java.util.List\n * declare class List <T extends JavaType> extends JavaClassInstance {\n * size(): Promise<number>;\n * sizeSync(): number;\n * add(e: T): Promise<void>;\n * addSync(e: T): void;\n * get(index: number): Promise<T>;\n * getSync(index: number): T;\n * toArray(): Promise<T[]>;\n * toArraySync(): T[];\n * isEmpty(): Promise<boolean>;\n * isEmptySync(): boolean;\n * }\n *\n * // Definitions for class java.util.ArrayList\n * declare class ArrayListClass<T extends JavaType> extends List<T> {\n * public constructor(other: ArrayListClass<T>);\n * public constructor();\n * }\n *\n * // This causes the class to be import when the module is loaded.\n * class ArrayList<T> extends importClass<typeof ArrayListClass>('java.util.ArrayList')<T> {}\n *\n * // Create a new ArrayList instance\n * const list = new ArrayList<string>();\n *\n * // Add some contents to the list\n * list.add('Hello');\n * list.add('World');\n *\n * // Check the list contents\n * assert.equals(list.sizeSync(), 2);\n * assert.equals(list.getSync(0), 'Hello');\n * assert.equals(list.getSync(1), 'World');\n * ```\n *\n * @template T the type of the java class to import as a js type\n * @param classname the name of the class to resolve\n * @return the java class constructor\n */\nexport function importClass<\n T extends JavaClassConstructorType = UnknownJavaClassType\n>(classname: string): T {\n ensureJvm();\n const constructor = javaInstance!.importClass(\n classname\n ) as ImportedJavaClass;\n defineFields(constructor, true);\n\n constructor.constructor = function (...args: any[]) {\n const object = new constructor.prototype.constructor(...args);\n defineFields(object, false);\n\n return object;\n };\n\n return constructor as unknown as T;\n}\n\n/**\n * @inheritDoc importClass\n */\nexport async function importClassAsync<\n T extends JavaClassConstructorType = UnknownJavaClassType\n>(classname: string): Promise<T> {\n ensureJvm();\n const constructor = (await javaInstance!.importClassAsync(\n classname\n )) as ImportedJavaClass;\n defineFields(constructor, true);\n\n constructor.constructor = function (...args: any[]) {\n const object = new constructor.prototype.constructor(...args);\n defineFields(object, false);\n\n return object;\n };\n\n return constructor as unknown as T;\n}\n\n/**\n * Append a single or multiple jars to the class path.\n *\n * Just replaces the old internal class loader with a new one containing the new jars.\n * This doesn't check if the jars are valid and/or even exist.\n * The new classpath will be available to all classes imported after this call.\n *\n * ## Example\n * ```ts\n * import { appendClasspath } from 'java-bridge';\n *\n * // Append a single jar to the class path\n * appendClasspath('/path/to/jar.jar');\n *\n * // Append multiple jars to the class path\n * appendClasspath(['/path/to/jar1.jar', '/path/to/jar2.jar']);\n * ```\n * or\n * ```ts\n * import { classpath } from 'java-bridge';\n *\n * // Append a single jar to the class path\n * classpath.append('/path/to/jar.jar');\n * ```\n *\n * @param path the path(s) to add\n */\nexport function appendClasspath(path: string | string[]): void {\n ensureJvm();\n javaInstance!.appendClasspath(path);\n}\n\n/**\n * Check if `this_obj` is instance of `other`.\n * This uses the native java `instanceof` operator.\n * You may want to use this if {@link JavaClass.instanceOf}\n * is overridden, as that method itself does not override\n * any method defined in the specific java class named 'instanceOf'.\n *\n * ## Example\n * ```ts\n * import { instanceOf, importClass } from 'java-bridge';\n *\n * const ArrayList = importClass('java.util.ArrayList');\n * const list = new ArrayList();\n *\n * isInstanceOf(list, ArrayList); // true\n * isInstanceOf(list, 'java.util.ArrayList'); // true\n * isInstanceOf(list, 'java.util.List'); // true\n * isInstanceOf(list, 'java.util.Collection'); // true\n * isInstanceOf(list, 'java.lang.Object'); // true\n * isInstanceOf(list, 'java.lang.String'); // false\n *\n * // You can also use the instanceOf method (if not overridden)\n * list.instanceOf(ArrayList); // true\n * list.instanceOf('java.util.ArrayList'); // true\n * list.instanceOf('java.util.List'); // true\n * list.instanceOf('java.util.Collection'); // true\n * list.instanceOf('java.lang.Object'); // true\n * list.instanceOf('java.lang.String'); // false\n * ```\n *\n * @param this_obj the object to check\n * @param other the class or class name to check against\n * @return true if `this_obj` is an instance of `other`\n */\nexport function isInstanceOf<T extends JavaClassConstructorType>(\n this_obj: JavaClass,\n other: string | T\n): boolean {\n ensureJvm();\n return javaInstance!.isInstanceOf(this_obj, other);\n}\n\n/**\n * Methods for altering and querying the class path.\n * @example\n * import { classpath } from 'java-bridge';\n *\n * // Append a jar to the class path\n * classpath.append('/path/to/jar.jar');\n *\n * assert.equal(classpath.get().length, 1);\n * assert.equal(classpath.get()[0], '/path/to/jar.jar');\n */\nexport namespace classpath {\n /**\n * @inheritDoc appendClasspath\n */\n export function append(path: string | string[]): void {\n appendClasspath(path);\n }\n\n /**\n * Get the loaded jars in the class path\n *\n * @returns a list of the loaded jars\n */\n export function get(): string[] {\n ensureJvm();\n return javaInstance!.loadedJars;\n }\n}\n\n/**\n * A callback for any output redirected from stdout/stderr from the java process.\n *\n * @param err an error if the conversion of the output failed.\n * This is null if the output was valid. This will probably never be set.\n * @param data the data that was converted. This is unset if <code>err</code> is set.\n */\nexport type StdoutCallback = (err: Error | null, data?: string) => void;\n\n/**\n * The class guarding the stdout redirect.\n * Keep this instance in scope to not lose the redirect.\n * As soon as this gets garbage collected, the redirection\n * of the stdout/stderr will be stopped. Only one instance\n * of this can exist at a time. Call {@link reset} to stop\n * redirecting the program output and release this class\n * instance early.\n *\n * This can be created by calling {@link stdout.enableRedirect}.\n *\n * ## Example\n * ```ts\n * import { stdout } from 'java-bridge';\n *\n * const guard = stdout.enableRedirect((_, data) => {\n * console.log('Stdout:', data);\n * }, (_, data) => {\n * console.error('Stderr:', data);\n * });\n *\n * // Change the receiver method\n * guard.on('stderr', (_, data) => {\n * console.warn('Stderr:', data);\n * });\n *\n * // Disable a receiver\n * guard.on('stdout', null);\n *\n * // Disable stdout redirect\n * guard.reset();\n * ```\n *\n * ## See also\n * * {@link stdout.enableRedirect}\n */\nexport interface StdoutRedirectGuard {\n /**\n * Set the stdout/stderr event handler.\n * Pass <code>null</code> to disable this specific handler.\n * Only accepts 'stdout' and 'stderr' as the <code>event</code>\n * argument. Overwrites the previous handler.\n *\n * @param event the event to listen on\n * @param callback the callback\n */\n on(event: 'stdout' | 'stderr', callback: StdoutCallback | null): void;\n\n /**\n * Reset this <code>StdoutRedirectGuard</code> instance.\n * After this call, the stdout/stderr will no longer\n * be redirected to the specified methods and any call\n * to this class will throw an error as this counts as destroyed.\n */\n reset(): void;\n}\n\n/**\n * A namespace containing methods for redirecting the stdout/stderr of the java process.\n *\n * ## See also\n * * {@link StdoutRedirectGuard}\n * * {@link stdout.enableRedirect}\n */\nexport namespace stdout {\n /**\n * Enable stdout/stderr redirection.\n *\n * Pass methods for the stdout and stderr output to be redirected to.\n * These methods must accept an error as the first argument,\n * although this will probably never be set and can be ignored.\n * The second argument is the data that was redirected.\n *\n * Setting any method to ``null`` or ``undefined`` will disable the redirect for that method.\n * This also allows you not set any handler which does not make any sense at all.\n *\n * ## Examples\n * ### Redirect all data to the js console\n * ```ts\n * import { stdout } from 'java-bridge';\n *\n * const guard = stdout.enableRedirect((_, data) => {\n * console.log('Stdout:', data);\n * }, (_, data) => {\n * console.error('Stderr:', data);\n * });\n * ```\n *\n * ### Redirect stdout to the js console\n * ```ts\n * const guard = stdout.enableRedirect((_, data) => {\n * console.log('Stdout:', data);\n * });\n * ```\n *\n * ### Redirect stderr to the js console\n * ```ts\n * const guard = stdout.enableRedirect(null, (_, data) => {\n * console.error('Stderr:', data);\n * });\n * ```\n *\n * ### Redirect nothing to the js console (y tho)\n * This enables you to print nothing to nowhere.\n * ```ts\n * // Why would you do this?\n * const guard = stdout.enableRedirect(null, null);\n *\n * // Or\n * const guard = stdout.enableRedirect();\n * ```\n *\n * @see StdoutRedirectGuard\n * @see StdoutCallback\n * @param stdout the callback to be called when stdout is received\n * @param stderr the callback to be called when stderr is received\n * @returns a <code>StdoutRedirectGuard</code> instance. Keep this instance in scope to not lose the redirect.\n */\n export function enableRedirect(\n stdout?: StdoutCallback | null,\n stderr?: StdoutCallback | null\n ): StdoutRedirectGuard {\n ensureJvm();\n return javaInstance!.setStdoutCallbacks(stdout, stderr);\n }\n}\n\n/**\n * The class for implementing java interfaces.\n * Keep this instance in scope to not destroy the java object.\n * Call {@link reset} to instantly destroy this instance.\n *\n * ## Notes\n * Keeping this instance alive may cause your process not to exit\n * early. Thus, you must wait for the javascript garbage collector\n * to destroy this instance even if you called {@link reset}.\n *\n * Once this instance has been destroyed, either by calling {@link reset}\n * or the garbage collector, any call to any method defined earlier\n * by {@link newProxy} will throw an error in the java process.\n *\n * ## Example\n * ```ts\n * import { newProxy } from 'java-bridge';\n *\n * const proxy = newProxy('path.to.MyInterface', {\n * // Define methods...\n * });\n *\n * // Do something with the proxy\n * instance.someMethod(proxy);\n *\n * // Destroy the proxy\n * proxy.reset();\n * ```\n *\n * ## See also\n * * {@link newProxy}\n */\nexport interface JavaInterfaceProxy {\n /**\n * Destroy the proxy class.\n * After this call any call to any method defined by the\n * interface will throw an error on the java side. This error\n * may be thrown back to the node process, if you are not\n * specifically implementing methods that will be called\n * from another (java) thread.\n * Throws an error if the proxy has already been destroyed.\n */\n reset(): void;\n}\n\n/**\n * An interface proxy method.\n * Any arguments passed to this method are values converted from java values.\n * The return value will be converted back to a java type.\n *\n * @param args the arguments passed from the java process\n * @return the value to pass back to the java process\n */\nexport type ProxyMethod = (...args: any[]) => any;\ntype InternalProxyRecord = Parameters<\n typeof Java.prototype.createInterfaceProxy\n>[1];\n\n/**\n * Create a new java interface proxy.\n * This allows you to implement java interfaces in javascript.\n *\n * Pass an object as the second argument with the names of the\n * methods you want to implement as keys and the implementations\n * as values in order to expose these methods to the java process.\n * Any arguments will be converted to javascript values and\n * return values will be converted to java values.\n *\n * When the java process tries to call any method which is\n * not implemented by the proxy, an error will be thrown.\n *\n * ## Examples\n * ### Implement ``java.lang.Runnable``\n * ```ts\n * import { newProxy, importClass } from 'java-bridge';\n *\n * // Define the interface\n * const runnable = newProxy('java.lang.Runnable', {\n * run: (): void => {\n * console.log('Hello World!');\n * }\n * });\n *\n * // Note: You can't do something like this:\n * // runnable.run();\n *\n * // Pass the proxy to a java method instead:\n * const Thread = importClass('java.lang.Thread');\n * const thread = new Thread(runnable); // <- Pass the proxy here\n *\n * // NOTE: You don't have to call this asynchronously\n * // as this call instantly returns.\n * thread.startSync();\n * ```\n *\n * ### Implement ``java.util.function.Function`` to transform a string\n * ```ts\n * const func = newProxy('java.util.function.Function', {\n * // Any parameters and return types will be automatically converted\n * apply: (str: string): string => {\n * return str.toUpperCase();\n * }\n * });\n *\n * // Import the string class\n * const JString = java.importClass('java.lang.String');\n * const str = new JString('hello');\n *\n * // Pass the proxy.\n * // NOTE: You must call this method async otherwise your program will hang.\n * // See notes for more info.\n * const transformed = await str.transform(func);\n *\n * assert.assertEquals(transformed, 'HELLO');\n * ```\n *\n * Which is equivalent to the following java code:\n * ```java\n * Function<String, String> func = new Function<>() {\n * @Override\n * public String apply(String str) {\n * return str.toUpperCase();\n * }\n * };\n *\n * String str = \"hello\";\n * String transformed = str.transform(func);\n * assert.assertEquals(transformed, \"HELLO\");\n * ```\n *\n * #### Throwing exceptions\n * Any exceptions thrown by the proxy will be converted to java exceptions\n * and then rethrown in the java process. This may cause the exception\n * to again be rethrown in the javascript process.\n * ```ts\n * const func = newProxy('java.util.function.Function', {\n * apply: (str: string): string => {\n * throw new Error('Something went wrong');\n * }\n * });\n *\n * const JString = java.importClass('java.lang.String');\n * const str = new JString('hello');\n *\n * // This will re-throw the above error\n * const transformed: never = await str.transform(func);\n * ```\n *\n * ## Notes\n * * Keep this instance in scope to not destroy the interface proxy.\n * * Call {@link JavaInterfaceProxy.reset} to instantly destroy this instance.\n * * If any method is queried by the java process and not implemented in here,\n * an exception will be thrown in the java process.\n * * Any errors thrown in the javascript process will be rethrown in the java process.\n * * **When calling a java method that uses an interface defined by this, you must call\n * that method using the interface asynchronously as Node.js is single threaded and can't\n * wait for the java method to return while calling the proxy method at the same time.**\n *\n * ## See also\n * * {@link JavaInterfaceProxy}\n *\n * @param interfaceName the name of the java interface to implement\n * @param methods the methods to implement.\n * @returns a proxy class to pass back to the java process\n */\nexport function newProxy(\n interfaceName: string,\n methods: Record<string, ProxyMethod>\n): JavaInterfaceProxy {\n ensureJvm();\n const proxyMethods: InternalProxyRecord = Object.create(null);\n\n for (const [name, method] of Object.entries(methods)) {\n proxyMethods[name] = (\n err: null | Error,\n callback: (err: Error | null, data?: any | null) => void,\n ...args: any[]\n ): void => {\n if (err) {\n throw err;\n }\n\n try {\n const res = method(...args);\n callback(null, res);\n } catch (e: any) {\n if (e instanceof Error) {\n callback(e);\n } else {\n callback(new Error(e.toString()));\n }\n }\n };\n }\n\n return javaInstance!.createInterfaceProxy(\n interfaceName,\n proxyMethods\n ) as JavaInterfaceProxy;\n}\n\n/**\n * Get the static java instance.\n * This has no real use, all important methods are exported explicitly.\n */\nexport function getJavaInstance(): Java | null {\n return javaInstance;\n}\n","import path from 'path';\nimport fs, { readFileSync } from 'fs';\nimport glob from 'glob';\n\nconst { platform, arch } = process;\n\nfunction getModule(base: string): string {\n const local = path.join(__dirname, base + '.node');\n\n if (fs.existsSync(local)) {\n return local;\n } else {\n const module = base.replaceAll('.', '-').replace('java', 'java-bridge');\n // @ts-ignore\n if (__non_webpack_require__ && __non_webpack_require__.resolve) {\n // @ts-ignore\n return __non_webpack_require__.resolve(module);\n } else {\n return require.resolve(module);\n }\n }\n}\n\nfunction UnsupportedPlatform(): Error {\n return new Error(`Unsupported platform: ${platform} ${arch}`);\n}\n\nfunction isMusl() {\n // For Node 10\n if (!process.report || typeof process.report.getReport !== 'function') {\n try {\n return readFileSync('/usr/bin/ldd', 'utf8').includes('musl');\n } catch (e) {\n return true;\n }\n } else {\n const { glibcVersionRuntime } = (process.report.getReport() as any)\n .header;\n return !glibcVersionRuntime;\n }\n}\n\nexport function getNativeLibPath(): string {\n switch (platform) {\n case 'android':\n switch (arch) {\n case 'arm64':\n return getModule('java.android-arm64');\n case 'arm':\n return getModule('java.android-arm-eabi');\n default:\n throw UnsupportedPlatform();\n }\n case 'win32':\n return getModule(`java.win32-${arch}-msvc`);\n case 'darwin':\n return getModule(`java.darwin-${arch}`);\n case 'freebsd':\n return getModule(`java.freebsd-${arch}`);\n case 'linux':\n switch (arch) {\n case 'x64':\n case 'arm64':\n return getModule(\n `java.linux-${arch}-${isMusl() ? 'musl' : 'gnu'}`\n );\n case 'arm':\n return getModule('java.linux-arm-gnueabihf');\n default:\n throw UnsupportedPlatform();\n }\n default:\n throw UnsupportedPlatform();\n }\n}\n\nexport function getJavaLibPath(): string {\n const dir = path.join(__dirname, '..', 'java-src', 'build', 'libs');\n let files = glob.sync('*.jar', { cwd: dir });\n\n if (files.length === 0) {\n throw new Error(`No java lib found in ${dir}`);\n } else {\n return path.join(dir, files[0]);\n }\n}\n","import { importClass, importClassAsync } from './java';\n\n/**\n * Get the version of the Java VM in use.\n * Async version.\n *\n * @see getJavaVersionSync\n * @returns the java version string\n */\nexport async function getJavaVersion(): Promise<string> {\n const system = await importClassAsync('java.lang.System');\n return await system.getProperty('java.version');\n}\n\n/**\n * Get the version of the Java VM in use.\n * Sync version.\n *\n * This is equal to the following java implementation:\n * ```java\n * public static String getJavaVersion() {\n * return System.getProperty(\"java.version\");\n * }\n * ```\n *\n * @see getJavaVersion\n * @returns the java version string\n */\nexport function getJavaVersionSync(): string {\n const system = importClass('java.lang.System');\n return system.getPropertySync('java.version');\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 955;\nmodule.exports = webpackEmptyContext;","module.exports = require(\"glob\");","module.exports = require(\"typescript\");","module.exports = require(\"fs\");","module.exports = require(\"path\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"\";","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(236);\n"],"names":["root","factory","exports","module","define","amd","global","process","dlopen","__dirname","error","Error","existsSync","readFileSync","join","platform","arch","nativeBinding","localFileExisted","loadError","isMusl","report","getReport","glibcVersionRuntime","header","includes","e","Java","getClassFields","getField","setField","getStaticField","setStaticField","JavaInterfaceProxy","StdoutRedirect","getJavaLibPath","sourceFile","createSourceFile","ScriptTarget","Latest","ScriptKind","TS","TypescriptDefinitionGenerator","classname","progressCallback","resolvedImports","usesBasicOrJavaType","additionalImports","importsToResolve","static","methods","Modifier","importClassAsync","result","method","modifiers","getModifiers","isPublic","name","getName","returnType","getReturnType","parameterTypes","getParameterTypes","data","getTypeName","parameters","Promise","all","map","p","isStatic","Object","hasOwn","push","async","constructors","types","constructor","tsConstructors","t","i","params","this","convertParameter","bind","declaration","createConstructorDeclaration","createModifier","SyntaxKind","PublicKeyword","undefined","addSyntheticLeadingComment","SingleLineCommentTrivia","length","MultiLineCommentTrivia","createMethod","javaTypeToTypescriptType","javaType","isParam","createTypeReferenceNode","endsWith","createArrayTypeNode","substring","createKeywordTypeNode","NumberKeyword","StringKeyword","BooleanKeyword","VoidKeyword","isSelf","lastIndexOf","replaceAll","param","index","type","createParameterDeclaration","convertParameters","m","isSync","publicMod","staticMod","StaticKeyword","createIdentifier","createMethodDeclaration","createMethodComment","convertMethod","res","getAdditionalImports","getPath","thisSplit","split","importSplit","j","filter","value","self","indexOf","createImportDeclaration","createImportClause","createNamedImports","createImportSpecifier","createStringLiteral","getImports","importElements","imports","getExportStatement","simpleName","statement","createClassDeclaration","ExportKeyword","createHeritageClause","ExtendsKeyword","createExpressionWithTypeArguments","createExportDefault","getText","nodes","n","createPrinter","newLine","NewLineKind","LineFeed","printNode","EmitHint","Unspecified","cls","class","getDeclaredMethods","classMembers","convertedMethods","convertMethods","key","keys","getDeclaredConstructors","convertedConstructors","convertConstructors","tsClass","DeclareKeyword","sourceText","imported","generator","generated","generate","contents","declarations","sourceDir","filePath","promises","mkdir","dirname","recursive","writeFile","encoding","JavaVersion","freeze","JavaObject","JavaClassInstance","JavaClassProxy","JavaClass","JavaClassConstructor","java","get","getJavaVersion","getJavaVersionSync","javaInstance","ensureJvm","options","libPath","version","opts","getNativeLibPath","defineFields","object","getStatic","field","getter","isFinal","defineProperty","enumerable","set","appendClasspath","path","classpath","importClass","args","prototype","this_obj","other","isInstanceOf","append","loadedJars","stdout","enableRedirect","stderr","setStdoutCallbacks","interfaceName","proxyMethods","create","entries","err","callback","toString","createInterfaceProxy","getModule","base","local","replace","resolve","UnsupportedPlatform","dir","files","sync","cwd","system","getProperty","getPropertySync","webpackEmptyContext","req","code","id","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","call","o","obj","prop","hasOwnProperty","nmd","paths","children"],"sourceRoot":""}
|
package/dist/java-ts-gen.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.java=t():e.java=t()}(global,(()=>(()=>{var __webpack_modules__={388:(e,t,a)=>{e=a.nmd(e);try{process.dlopen(e,__dirname+a(17).sep+a.p+"java.linux-x64-gnu.node")}catch(e){throw new Error("node-loader:\n"+e)}},163:(e,t,a)=>{const{existsSync:r,readFileSync:n}=a(147),{join:i}=a(17),{platform:o,arch:s}=process;let c=null,d=!1,u=null;function l(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return n("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}switch(o){case"android":switch(s){case"arm64":d=r(i(__dirname,"java.android-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm64")}catch(e){u=e}break;case"arm":d=r(i(__dirname,"java.android-arm-eabi.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm-eabi.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm-eabi")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Android ${s}`)}break;case"win32":switch(s){case"x64":d=r(i(__dirname,"java.win32-x64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-x64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-x64-msvc")}catch(e){u=e}break;case"ia32":d=r(i(__dirname,"java.win32-ia32-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-ia32-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-ia32-msvc")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.win32-arm64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-arm64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-arm64-msvc")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Windows: ${s}`)}break;case"darwin":switch(s){case"x64":d=r(i(__dirname,"java.darwin-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-x64")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.darwin-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-arm64")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on macOS: ${s}`)}break;case"freebsd":if("x64"!==s)throw new Error(`Unsupported architecture on FreeBSD: ${s}`);d=r(i(__dirname,"java.freebsd-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.freebsd-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-freebsd-x64")}catch(e){u=e}break;case"linux":switch(s){case"x64":if(l()){d=r(i(__dirname,"java.linux-x64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-x64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-x64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-x64-gnu.node"));try{c=d?a(388):require("java-bridge-linux-x64-gnu")}catch(e){u=e}}break;case"arm64":if(l()){d=r(i(__dirname,"java.linux-arm64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-arm64-gnu.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-gnu.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-gnu")}catch(e){u=e}}break;case"arm":d=r(i(__dirname,"java.linux-arm-gnueabihf.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm-gnueabihf.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm-gnueabihf")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Linux: ${s}`)}break;default:throw new Error(`Unsupported OS: ${o}, architecture: ${s}`)}if(!c){if(u)throw u;throw new Error("Failed to load native binding")}const{Java:p,getClassFields:f,getField:m,setField:h,getStaticField:v,setStaticField:_,JavaInterfaceProxy:b,StdoutRedirect:y,getJavaLibPath:g}=c;e.exports.Java=p,e.exports.getClassFields=f,e.exports.getField=m,e.exports.setField=h,e.exports.getStaticField=v,e.exports.setStaticField=_,e.exports.JavaInterfaceProxy=b,e.exports.StdoutRedirect=y,e.exports.getJavaLibPath=g},248:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(a(7)),c=a(236),d=o(a(147)),u=o(a(17)),l=s.default.createSourceFile("source.ts","",s.default.ScriptTarget.Latest,!1,s.default.ScriptKind.TS);class p{constructor(e,t=null,a=[]){this.classname=e,this.progressCallback=t,this.resolvedImports=a,this.usesBasicOrJavaType=!1,this.additionalImports=[],this.importsToResolve=[]}static async convertMethods(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a={};for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const n=await r.getName(),i=await r.getReturnType(),o=await r.getParameterTypes(),s={returnType:await i.getTypeName(),parameters:await Promise.all(o.map((e=>e.getTypeName()))),isStatic:await t.isStatic(e)};Object.hasOwn(a,n)?a[n].push(s):a[n]=[s]}}return a}async convertConstructors(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a=[];for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const e=await r.getParameterTypes();a.push(await Promise.all(e.map((e=>e.getTypeName()))))}}const r=a.map(((e,t)=>{const a=e.map(this.convertParameter.bind(this));let r=s.default.factory.createConstructorDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword)],a,void 0);return 0===t&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.SingleLineCommentTrivia," ================== Constructors ==================",!0)),e.length>0&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.MultiLineCommentTrivia,"*\n"+e.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+" ",!0)),r}));return[...a.map(((e,t)=>this.createMethod({returnType:this.classname,parameters:e,isStatic:!0},"newInstance",t,!1))),...r]}javaTypeToTypescriptType(e,t){switch(e){case"byte[]":case"java.lang.Byte[]":return s.default.factory.createTypeReferenceNode("Buffer")}if(e.endsWith("[]"))return s.default.factory.createArrayTypeNode(this.javaTypeToTypescriptType(e.substring(0,e.length-2),t));switch(e){case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"float":case"java.lang.Float":case"double":case"java.lang.Double":case"byte":case"java.lang.Byte":case"short":case"java.lang.Short":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.NumberKeyword);case"char":case"java.lang.Character":case"java.lang.String":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.StringKeyword);case"boolean":case"java.lang.Boolean":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.BooleanKeyword);case"void":case"java.lang.Void":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.VoidKeyword);case"java.lang.Object":return this.usesBasicOrJavaType=!0,s.default.factory.createTypeReferenceNode("BasicOrJavaType");default:this.resolvedImports.includes(e)||this.additionalImports.push(e),this.importsToResolve.push(e);const a=e===this.classname&&t;return s.default.factory.createTypeReferenceNode(e===this.classname?e.substring(e.lastIndexOf(".")+1)+(a?"Class":""):e.replaceAll(".","_"))}}convertParameter(e,t){const a="var"+t,r=this.javaTypeToTypescriptType(e,!0);return s.default.factory.createParameterDeclaration(void 0,void 0,a,void 0,r)}convertParameters(e){return e.parameters.map(this.convertParameter.bind(this))}static createMethodComment(e){return"*\n"+e.parameters.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+` * @return original return type: '${e.returnType}'\n `}createMethod(e,t,a,r){const n=s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword),i=s.default.factory.createModifier(s.default.SyntaxKind.StaticKeyword),o=[n];e.isStatic&&o.push(i);let c=this.javaTypeToTypescriptType(e.returnType,!1);r||(c=s.default.factory.createTypeReferenceNode(s.default.factory.createIdentifier("Promise"),[c]));let d=s.default.factory.createMethodDeclaration(o,void 0,t+(r?"Sync":""),void 0,void 0,this.convertParameters(e),c,void 0);return 0===a&&(d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.SingleLineCommentTrivia,` ================== Method ${t} ==================`,!0)),s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,p.createMethodComment(e),!0)}convertMethod(e,t){const a=[];for(let r=0;r<e.length;r++){const n=e[r];a.push(this.createMethod(n,t,r,!1),this.createMethod(n,t,r,!0))}return a}getAdditionalImports(){const e=e=>{const t=this.classname.split("."),a=e.split(".");for(let e=0;e<t.length&&a[e]===t[e];e++)t[e]=null,a[e]=null;return"./"+t.filter((e=>!!e)).map((()=>"")).join("../")+a.filter((e=>!!e)).join("/")};return this.importsToResolve.filter((e=>e!=this.classname)).filter(((e,t,a)=>a.indexOf(e)===t)).map((t=>s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,s.default.factory.createNamedImports([s.default.factory.createImportSpecifier(!1,s.default.factory.createIdentifier(t.substring(t.lastIndexOf(".")+1)),s.default.factory.createIdentifier(t.replaceAll(".","_")))])),s.default.factory.createStringLiteral(e(t)))))}getImports(){const e=[s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("importClass")),s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("JavaClassInstance"))];this.usesBasicOrJavaType&&e.push(s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("BasicOrJavaType")));const t=s.default.factory.createNamedImports(e);return s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,t),s.default.factory.createStringLiteral("java-bridge"))}getExportStatement(e){const t=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword)],e,void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier(`importClass<typeof ${e}Class>("${this.classname}")`),void 0)])],[]);return[s.default.addSyntheticLeadingComment(t,s.SyntaxKind.MultiLineCommentTrivia,`*\n * Class ${this.classname}.\n *\n * This actually imports the java class for further use.\n * The class ${e}Class only defines types, this is the class you should actually import.\n * Please note that this statement imports the underlying java class at runtime, which may take a while.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0),s.default.factory.createExportDefault(s.default.factory.createIdentifier(e))]}getText(e){return e.map((e=>e&&s.default.createPrinter({newLine:s.default.NewLineKind.LineFeed}).printNode(s.default.EmitHint.Unspecified,e,l)||"")).join("\n")}async generate(){if(this.resolvedImports.includes(this.classname))return[];this.resolvedImports.push(this.classname),this.progressCallback&&this.progressCallback(this.classname);const e=(await(0,c.importClassAsync)(this.classname)).class,t=this.classname.substring(this.classname.lastIndexOf(".")+1),a=await e.getDeclaredMethods(),r=[],n=await p.convertMethods(a);for(const e of Object.keys(n)){const t=n[e];r.push(...this.convertMethod(t,e))}const i=await e.getDeclaredConstructors(),o=await this.convertConstructors(i);r.push(...o);let d=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword),s.default.factory.createModifier(s.default.SyntaxKind.DeclareKeyword)],t+"Class",void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier("JavaClassInstance"),void 0)])],r);d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,`*\n * This class just defines types, you should import ${t} instead of this.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0);const u=this.getText([this.getImports(),...this.getAdditionalImports(),null,d,null,...this.getExportStatement(t)]),l=[];for(const e of this.additionalImports){const t=new p(e,this.progressCallback,this.resolvedImports),a=await t.generate();l.push(...a)}return l.push({name:this.classname,contents:u}),l}static async save(e,t){for(const a of e){const e=a.name.split(".");e[e.length-1]=e[e.length-1]+".ts";const r=u.default.join(t,...e);await d.default.promises.mkdir(u.default.dirname(r),{recursive:!0}),await d.default.promises.writeFile(r,a.contents,{encoding:"utf8"})}}}t.default=p},91:(e,t)=>{"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.JavaObject=t.JavaVersion=void 0,function(e){e.VER_1_1="1.1",e.VER_1_2="1.2",e.VER_1_4="1.4",e.VER_1_6="1.6",e.VER_1_8="1.8",e.VER_9="9",e.VER_10="10"}(a=t.JavaVersion||(t.JavaVersion={})),Object.freeze(a),t.JavaObject=class{}},236:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypescriptDefinitionGenerator=t.getJavaLibPath=t.JavaClassProxy=t.JavaClassInstance=t.JavaObject=t.JavaVersion=void 0;var c=a(91);Object.defineProperty(t,"JavaVersion",{enumerable:!0,get:function(){return c.JavaVersion}}),Object.defineProperty(t,"JavaObject",{enumerable:!0,get:function(){return c.JavaObject}}),Object.defineProperty(t,"JavaClassInstance",{enumerable:!0,get:function(){return c.JavaClassInstance}}),Object.defineProperty(t,"JavaClassProxy",{enumerable:!0,get:function(){return c.JavaClassProxy}}),i(a(818),t);const d=o(a(818));t.default=d;var u=a(163);Object.defineProperty(t,"getJavaLibPath",{enumerable:!0,get:function(){return u.getJavaLibPath}});const l=s(a(248));t.TypescriptDefinitionGenerator=l.default},818:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaInstance=t.newProxy=t.stdout=t.classpath=t.isInstanceOf=t.appendClasspath=t.importClassAsync=t.importClass=t.ensureJvm=void 0;const r=a(163),n=a(841);let i=null;function o(e){i||(i=new r.Java(e?.libPath,e?.version,e?.opts,e,(0,n.getJavaLibPath)(),(0,n.getNativeLibPath)()))}function s(e,t){for(const a of(0,r.getClassFields)(e["class.proxy"],t)){const n=()=>t?(0,r.getStaticField)(e,a.name):(0,r.getField)(e,a.name);a.isFinal?Object.defineProperty(e,a.name,{get:n,enumerable:!0}):Object.defineProperty(e,a.name,{get:n,set:n=>t?(0,r.setStaticField)(e,a.name,n):(0,r.setField)(e,a.name,n),enumerable:!0})}}function c(e){o(),i.appendClasspath(e)}var d;t.ensureJvm=o,t.importClass=function(e){o();const t=i.importClass(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.importClassAsync=async function(e){o();const t=await i.importClassAsync(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.appendClasspath=c,t.isInstanceOf=function(e,t){return o(),i.isInstanceOf(e,t)},(d=t.classpath||(t.classpath={})).append=function(e){c(e)},d.get=function(){return o(),i.loadedJars},(t.stdout||(t.stdout={})).enableRedirect=function(e,t){return o(),i.setStdoutCallbacks(e,t)},t.newProxy=function(e,t){o();const a=Object.create(null);for(const[e,r]of Object.entries(t))a[e]=(e,t,...a)=>{if(e)throw e;try{t(null,r(...a))}catch(e){e instanceof Error?t(e):t(new Error(e.toString()))}};return i.createInterfaceProxy(e,a)},t.getJavaInstance=function(){return i}},841:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaLibPath=t.getNativeLibPath=void 0;const s=o(a(17)),c=i(a(147)),d=o(a(230)),{platform:u,arch:l}=process;function p(e){const t=s.default.join(__dirname,e+".node");if(c.default.existsSync(t))return t;{const t=e.replaceAll(".","-").replace("java","java-bridge");return require&&require.resolve?require.resolve(t):a(955).resolve(t)}}function f(){return new Error(`Unsupported platform: ${u} ${l}`)}t.getNativeLibPath=function(){switch(u){case"android":switch(l){case"arm64":return p("java.android-arm64");case"arm":return p("java.android-arm-eabi");default:throw f()}case"win32":return p(`java.win32-${l}-msvc`);case"darwin":return p(`java.darwin-${l}`);case"freebsd":return p(`java.freebsd-${l}`);case"linux":switch(l){case"x64":case"arm64":return p(`java.linux-${l}-${function(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return(0,c.readFileSync)("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}()?"musl":"gnu"}`);case"arm":return p("java.linux-arm-gnueabihf");default:throw f()}default:throw f()}},t.getJavaLibPath=function(){const e=s.default.join(__dirname,"..","java-src","build","libs");let t=d.default.sync("*.jar",{cwd:e});if(0===t.length)throw new Error(`No java lib found in ${e}`);return s.default.join(e,t[0])}},764:function(__unused_webpack_module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const yargs_1=__importDefault(__webpack_require__(760)),perf_hooks_1=__webpack_require__(74),path_1=__importDefault(__webpack_require__(17)),_1=__importStar(__webpack_require__(236)),package_json_1=__webpack_require__(598),importOra=()=>eval("import('ora').then(ora => ora.default)"),importChalk=()=>eval("import('chalk').then(chalk => chalk.default)"),builder=e=>{e.positional("classnames",{describe:"The fully qualified class name(s) to convert",type:"string"}),e.positional("output",{describe:"The output file",type:"string"}),e.option("classpath",{alias:"cp",type:"string",describe:"The classpath to use"})},handler=async({classnames:e,output:t,classpath:a})=>{let r=null;try{const n=perf_hooks_1.performance.now();(0,_1.ensureJvm)({useDaemonThreads:!0}),a&&_1.default.classpath.append(a);const i=await importChalk(),o=await importOra();console.log(`Starting ${i.cyanBright("java-bridge")} ${i.greenBright("v"+package_json_1.version)} Java definition generator`);const s=(0,_1.getJavaInstance)(),c=_1.default.classpath.get();c.length>0&&console.log(`Started JVM with version ${i.cyanBright(s.version)} and classpath '${c.map((e=>i.cyanBright(e))).join(";")}'`),console.log(`Converting classes ${e.map((e=>i.magentaBright(e))).join(", ")} to typescript and saving result to ${i.cyanBright(path_1.default.normalize(t))}`),r=o().start();const d=[];let u=0,l=0,p=0,f="";const m=setInterval((()=>{p+=1,h()}),1e3),h=()=>{r.text=i.gray(`Elapsed time: ${i.yellow(p)} seconds ${i.white("|")} Converted ${i.cyanBright(u)} classes ${i.white("|")} Converting class ${i.magentaBright(f)}`)};for(const a of e){const e=new _1.TypescriptDefinitionGenerator(a,(e=>{f=e,u++,h()}),d),n=await e.generate();l+=n.length,r.text="saving results",await _1.TypescriptDefinitionGenerator.save(n,t)}clearInterval(m);const v=((perf_hooks_1.performance.now()-n)/1e3).toFixed(1);r.succeed(`Success - Converted ${i.blueBright(l)} classes in ${i.blueBright(v)} seconds`)}catch(e){r?.fail("Failed to convert classes"),console.error(e),process.exit(1)}};yargs_1.default.command("* <output> <classnames..>",!1,builder,handler).parse()},955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},230:e=>{"use strict";e.exports=require("glob")},7:e=>{"use strict";e.exports=require("typescript")},760:e=>{"use strict";e.exports=require("yargs")},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")},74:e=>{"use strict";e.exports=require("perf_hooks")},598:e=>{"use strict";e.exports=JSON.parse('{"name":"java-bridge","version":"2.1.3","main":"dist/index.prod.min.js","typings":"ts-src/index.ts","description":"A bridge between Node.js and Java APIs","repository":{"type":"git","url":"git+https://github.com/MarkusJx/node-java-bridge.git"},"author":"MarkusJx","bugs":{"url":"https://github.com/MarkusJx/node-java-bridge/issues"},"homepage":"https://github.com/MarkusJx/node-java-bridge#readme","files":["ts-src","dist/*.js","java-src/build/libs/*.jar","native.d.ts"],"napi":{"name":"java","triples":{"additional":["aarch64-apple-darwin","i686-pc-windows-msvc"]}},"bin":{"java-ts-gen":"./dist/java-ts-gen.js"},"license":"MIT","prettier":{"printWidth":80,"semi":true,"singleQuote":true,"tabWidth":4,"trailingComma":"es5"},"engines":{"node":">= 15"},"scripts":{"artifacts":"napi artifacts","build":"npm run build:napi","build:debug":"npm run build:napi:debug && npm run build:ts && npm run build:java","postbuild":"npm run build:ts && npm run build:java","build:napi":"napi build --platform --release --js native.js --dts native.d.ts","build:napi:debug":"napi build --platform --js native.js --dts native.d.ts","build:ts":"webpack build","build:java":"run-script-os","build:java:darwin:linux":"cd java-src && chmod +x gradlew && ./gradlew shadowJar","build:java:win32":"cd java-src && .\\\\gradlew.bat shadowJar","prepublishOnly":"napi prepublish -t npm","test":"mocha -r ts-node/register test/**/*.test.ts","testOnly":"mocha -r ts-node/register test/**/*.test.ts","pretest":"npm run build","version":"napi version","prettier":"prettier --write .","prebuild":"rimraf dist","prebuild:debug":"rimraf dist","benchmark":"ts-node -P test/tsconfig.json test/benchmark/benchmark.ts && ts-node -P test/tsconfig.json test/benchmark/benchmarkDaemonThreads.ts","prebenchmark":"npm run build","docs":"typedoc --out docs ts-src/index.ts"},"dependencies":{"@types/glob":"^8.0.0","chalk":"^5.0.1","glob":"^8.0.3","ora":"^6.1.2","typescript":"^4.8.2","yargs":"^17.5.1"},"devDependencies":{"@napi-rs/cli":"^2.11.4","@types/chai":"^4.3.3","@types/mocha":"^9.1.1","@types/node":"^18.7.15","@types/semver":"^7.3.12","@types/webpack-node-externals":"^2.5.3","@types/yargs":"^17.0.12","chai":"^4.3.6","expose-gc":"^1.0.0","mocha":"^10.0.0","nanobench":"^3.0.0","node-loader":"^2.0.0","prettier":"^2.7.1","rimraf":"^3.0.2","run-script-os":"^1.1.6","semver":"^7.3.7","string-replace-loader":"^3.1.0","ts-loader":"^9.3.1","ts-node":"^10.9.1","tslib":"^2.4.0","typedoc":"^0.23.13","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-node-externals":"^3.0.0"},"optionalDependencies":{"java-bridge-darwin-arm64":"2.1.3","java-bridge-darwin-x64":"2.1.3","java-bridge-linux-x64-gnu":"2.1.3","java-bridge-win32-ia32-msvc":"2.1.3","java-bridge-win32-x64-msvc":"2.1.3"}}')}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.loaded=!0,a.exports}__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="";var __webpack_exports__=__webpack_require__(764);return __webpack_exports__})()));
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.java=t():e.java=t()}(global,(()=>(()=>{var __webpack_modules__={388:(e,t,a)=>{e=a.nmd(e);try{process.dlopen(e,__dirname+a(17).sep+a.p+"java.linux-x64-gnu.node")}catch(e){throw new Error("node-loader:\n"+e)}},163:(e,t,a)=>{const{existsSync:r,readFileSync:n}=a(147),{join:i}=a(17),{platform:o,arch:s}=process;let c=null,d=!1,u=null;function l(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return n("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}switch(o){case"android":switch(s){case"arm64":d=r(i(__dirname,"java.android-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm64")}catch(e){u=e}break;case"arm":d=r(i(__dirname,"java.android-arm-eabi.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.android-arm-eabi.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-android-arm-eabi")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Android ${s}`)}break;case"win32":switch(s){case"x64":d=r(i(__dirname,"java.win32-x64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-x64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-x64-msvc")}catch(e){u=e}break;case"ia32":d=r(i(__dirname,"java.win32-ia32-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-ia32-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-ia32-msvc")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.win32-arm64-msvc.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.win32-arm64-msvc.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-win32-arm64-msvc")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Windows: ${s}`)}break;case"darwin":switch(s){case"x64":d=r(i(__dirname,"java.darwin-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-x64")}catch(e){u=e}break;case"arm64":d=r(i(__dirname,"java.darwin-arm64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.darwin-arm64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-darwin-arm64")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on macOS: ${s}`)}break;case"freebsd":if("x64"!==s)throw new Error(`Unsupported architecture on FreeBSD: ${s}`);d=r(i(__dirname,"java.freebsd-x64.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.freebsd-x64.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-freebsd-x64")}catch(e){u=e}break;case"linux":switch(s){case"x64":if(l()){d=r(i(__dirname,"java.linux-x64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-x64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-x64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-x64-gnu.node"));try{c=d?a(388):require("java-bridge-linux-x64-gnu")}catch(e){u=e}}break;case"arm64":if(l()){d=r(i(__dirname,"java.linux-arm64-musl.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-musl.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-musl")}catch(e){u=e}}else{d=r(i(__dirname,"java.linux-arm64-gnu.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm64-gnu.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm64-gnu")}catch(e){u=e}}break;case"arm":d=r(i(__dirname,"java.linux-arm-gnueabihf.node"));try{c=d?a(Object(function(){var e=new Error("Cannot find module './java.linux-arm-gnueabihf.node'");throw e.code="MODULE_NOT_FOUND",e}())):require("java-bridge-linux-arm-gnueabihf")}catch(e){u=e}break;default:throw new Error(`Unsupported architecture on Linux: ${s}`)}break;default:throw new Error(`Unsupported OS: ${o}, architecture: ${s}`)}if(!c){if(u)throw u;throw new Error("Failed to load native binding")}const{Java:p,getClassFields:f,getField:m,setField:v,getStaticField:h,setStaticField:y,JavaInterfaceProxy:b,StdoutRedirect:_,getJavaLibPath:g}=c;e.exports.Java=p,e.exports.getClassFields=f,e.exports.getField=m,e.exports.setField=v,e.exports.getStaticField=h,e.exports.setStaticField=y,e.exports.JavaInterfaceProxy=b,e.exports.StdoutRedirect=_,e.exports.getJavaLibPath=g},248:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(a(7)),c=a(236),d=o(a(147)),u=o(a(17)),l=s.default.createSourceFile("source.ts","",s.default.ScriptTarget.Latest,!1,s.default.ScriptKind.TS);class p{constructor(e,t=null,a=[]){this.classname=e,this.progressCallback=t,this.resolvedImports=a,this.usesBasicOrJavaType=!1,this.additionalImports=[],this.importsToResolve=[]}static async convertMethods(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a={};for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const n=await r.getName(),i=await r.getReturnType(),o=await r.getParameterTypes(),s={returnType:await i.getTypeName(),parameters:await Promise.all(o.map((e=>e.getTypeName()))),isStatic:await t.isStatic(e)};Object.hasOwn(a,n)?a[n].push(s):a[n]=[s]}}return a}async convertConstructors(e){const t=await(0,c.importClassAsync)("java.lang.reflect.Modifier"),a=[];for(const r of e){const e=await r.getModifiers();if(await t.isPublic(e)){const e=await r.getParameterTypes();a.push(await Promise.all(e.map((e=>e.getTypeName()))))}}const r=a.map(((e,t)=>{const a=e.map(this.convertParameter.bind(this));let r=s.default.factory.createConstructorDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword)],a,void 0);return 0===t&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.SingleLineCommentTrivia," ================== Constructors ==================",!0)),e.length>0&&(r=s.default.addSyntheticLeadingComment(r,s.default.SyntaxKind.MultiLineCommentTrivia,"*\n"+e.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+" ",!0)),r}));return[...a.map(((e,t)=>this.createMethod({returnType:this.classname,parameters:e,isStatic:!0},"newInstance",t,!1))),...r]}javaTypeToTypescriptType(e,t){switch(e){case"byte[]":case"java.lang.Byte[]":return s.default.factory.createTypeReferenceNode("Buffer")}if(e.endsWith("[]"))return s.default.factory.createArrayTypeNode(this.javaTypeToTypescriptType(e.substring(0,e.length-2),t));switch(e){case"int":case"java.lang.Integer":case"long":case"java.lang.Long":case"float":case"java.lang.Float":case"double":case"java.lang.Double":case"byte":case"java.lang.Byte":case"short":case"java.lang.Short":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.NumberKeyword);case"char":case"java.lang.Character":case"java.lang.String":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.StringKeyword);case"boolean":case"java.lang.Boolean":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.BooleanKeyword);case"void":case"java.lang.Void":return s.default.factory.createKeywordTypeNode(s.default.SyntaxKind.VoidKeyword);case"java.lang.Object":return this.usesBasicOrJavaType=!0,s.default.factory.createTypeReferenceNode("BasicOrJavaType");default:this.resolvedImports.includes(e)||this.additionalImports.push(e),this.importsToResolve.push(e);const a=e===this.classname&&t;return s.default.factory.createTypeReferenceNode(e===this.classname?e.substring(e.lastIndexOf(".")+1)+(a?"Class":""):e.replaceAll(".","_"))}}convertParameter(e,t){const a="var"+t,r=this.javaTypeToTypescriptType(e,!0);return s.default.factory.createParameterDeclaration(void 0,void 0,a,void 0,r)}convertParameters(e){return e.parameters.map(this.convertParameter.bind(this))}static createMethodComment(e){return"*\n"+e.parameters.map(((e,t)=>` * @param var${t} original type: '${e}'\n`)).join("")+` * @return original return type: '${e.returnType}'\n `}createMethod(e,t,a,r){const n=s.default.factory.createModifier(s.default.SyntaxKind.PublicKeyword),i=s.default.factory.createModifier(s.default.SyntaxKind.StaticKeyword),o=[n];e.isStatic&&o.push(i);let c=this.javaTypeToTypescriptType(e.returnType,!1);r||(c=s.default.factory.createTypeReferenceNode(s.default.factory.createIdentifier("Promise"),[c]));let d=s.default.factory.createMethodDeclaration(o,void 0,t+(r?"Sync":""),void 0,void 0,this.convertParameters(e),c,void 0);return 0===a&&(d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.SingleLineCommentTrivia,` ================== Method ${t} ==================`,!0)),s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,p.createMethodComment(e),!0)}convertMethod(e,t){const a=[];for(let r=0;r<e.length;r++){const n=e[r];a.push(this.createMethod(n,t,r,!1),this.createMethod(n,t,r,!0))}return a}getAdditionalImports(){const e=e=>{const t=this.classname.split("."),a=e.split(".");for(let e=0;e<t.length&&a[e]===t[e];e++)t[e]=null,a[e]=null;return"./"+t.filter((e=>!!e)).map((()=>"")).join("../")+a.filter((e=>!!e)).join("/")};return this.importsToResolve.filter((e=>e!=this.classname)).filter(((e,t,a)=>a.indexOf(e)===t)).map((t=>s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,s.default.factory.createNamedImports([s.default.factory.createImportSpecifier(!1,s.default.factory.createIdentifier(t.substring(t.lastIndexOf(".")+1)),s.default.factory.createIdentifier(t.replaceAll(".","_")))])),s.default.factory.createStringLiteral(e(t)))))}getImports(){const e=[s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("importClass")),s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("JavaClass"))];this.usesBasicOrJavaType&&e.push(s.default.factory.createImportSpecifier(!1,void 0,s.default.factory.createIdentifier("BasicOrJavaType")));const t=s.default.factory.createNamedImports(e);return s.default.factory.createImportDeclaration(void 0,s.default.factory.createImportClause(!1,void 0,t),s.default.factory.createStringLiteral("java-bridge"))}getExportStatement(e){const t=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword)],e,void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier(`importClass<typeof ${e}Class>("${this.classname}")`),void 0)])],[]);return[s.default.addSyntheticLeadingComment(t,s.SyntaxKind.MultiLineCommentTrivia,`*\n * Class ${this.classname}.\n *\n * This actually imports the java class for further use.\n * The class ${e}Class only defines types, this is the class you should actually import.\n * Please note that this statement imports the underlying java class at runtime, which may take a while.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0),s.default.factory.createExportDefault(s.default.factory.createIdentifier(e))]}getText(e){return e.map((e=>e&&s.default.createPrinter({newLine:s.default.NewLineKind.LineFeed}).printNode(s.default.EmitHint.Unspecified,e,l)||"")).join("\n")}async generate(){if(this.resolvedImports.includes(this.classname))return[];this.resolvedImports.push(this.classname),this.progressCallback&&this.progressCallback(this.classname);const e=(await(0,c.importClassAsync)(this.classname)).class,t=this.classname.substring(this.classname.lastIndexOf(".")+1),a=await e.getDeclaredMethods(),r=[],n=await p.convertMethods(a);for(const e of Object.keys(n)){const t=n[e];r.push(...this.convertMethod(t,e))}const i=await e.getDeclaredConstructors(),o=await this.convertConstructors(i);r.push(...o);let d=s.default.factory.createClassDeclaration([s.default.factory.createModifier(s.default.SyntaxKind.ExportKeyword),s.default.factory.createModifier(s.default.SyntaxKind.DeclareKeyword)],t+"Class",void 0,[s.default.factory.createHeritageClause(s.default.SyntaxKind.ExtendsKeyword,[s.default.factory.createExpressionWithTypeArguments(s.default.factory.createIdentifier("JavaClass"),void 0)])],r);d=s.default.addSyntheticLeadingComment(d,s.default.SyntaxKind.MultiLineCommentTrivia,`*\n * This class just defines types, you should import ${t} instead of this.\n * This was generated by java-bridge.\n * You should probably not edit this.\n `,!0);const u=this.getText([this.getImports(),...this.getAdditionalImports(),null,d,null,...this.getExportStatement(t)]),l=[];for(const e of this.additionalImports){const t=new p(e,this.progressCallback,this.resolvedImports),a=await t.generate();l.push(...a)}return l.push({name:this.classname,contents:u}),l}static async save(e,t){for(const a of e){const e=a.name.split(".");e[e.length-1]=e[e.length-1]+".ts";const r=u.default.join(t,...e);await d.default.promises.mkdir(u.default.dirname(r),{recursive:!0}),await d.default.promises.writeFile(r,a.contents,{encoding:"utf8"})}}}t.default=p},91:(e,t)=>{"use strict";var a;Object.defineProperty(t,"__esModule",{value:!0}),t.JavaObject=t.JavaVersion=void 0,function(e){e.VER_1_1="1.1",e.VER_1_2="1.2",e.VER_1_4="1.4",e.VER_1_6="1.6",e.VER_1_8="1.8",e.VER_9="9",e.VER_10="10"}(a=t.JavaVersion||(t.JavaVersion={})),Object.freeze(a),t.JavaObject=class{}},236:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__exportStar||function(e,t){for(var a in e)"default"===a||Object.prototype.hasOwnProperty.call(t,a)||r(t,e,a)},o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypescriptDefinitionGenerator=t.getJavaVersionSync=t.getJavaVersion=t.getJavaLibPath=t.JavaClassConstructor=t.JavaClass=t.JavaClassProxy=t.JavaClassInstance=t.JavaObject=t.JavaVersion=void 0;var c=a(91);Object.defineProperty(t,"JavaVersion",{enumerable:!0,get:function(){return c.JavaVersion}}),Object.defineProperty(t,"JavaObject",{enumerable:!0,get:function(){return c.JavaObject}}),Object.defineProperty(t,"JavaClassInstance",{enumerable:!0,get:function(){return c.JavaClassInstance}}),Object.defineProperty(t,"JavaClassProxy",{enumerable:!0,get:function(){return c.JavaClassProxy}}),Object.defineProperty(t,"JavaClass",{enumerable:!0,get:function(){return c.JavaClass}}),Object.defineProperty(t,"JavaClassConstructor",{enumerable:!0,get:function(){return c.JavaClassConstructor}}),i(a(818),t);const d=o(a(818));t.default=d;var u=a(163);Object.defineProperty(t,"getJavaLibPath",{enumerable:!0,get:function(){return u.getJavaLibPath}});var l=a(102);Object.defineProperty(t,"getJavaVersion",{enumerable:!0,get:function(){return l.getJavaVersion}}),Object.defineProperty(t,"getJavaVersionSync",{enumerable:!0,get:function(){return l.getJavaVersionSync}});const p=s(a(248));t.TypescriptDefinitionGenerator=p.default},818:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaInstance=t.newProxy=t.stdout=t.classpath=t.isInstanceOf=t.appendClasspath=t.importClassAsync=t.importClass=t.ensureJvm=void 0;const r=a(163),n=a(841);let i=null;function o(e){i||(i=new r.Java(e?.libPath,e?.version,e?.opts,e,(0,n.getJavaLibPath)(),(0,n.getNativeLibPath)()))}function s(e,t){for(const a of(0,r.getClassFields)(e["class.proxy"],t)){const n=()=>t?(0,r.getStaticField)(e,a.name):(0,r.getField)(e,a.name);a.isFinal?Object.defineProperty(e,a.name,{get:n,enumerable:!0}):Object.defineProperty(e,a.name,{get:n,set:n=>t?(0,r.setStaticField)(e,a.name,n):(0,r.setField)(e,a.name,n),enumerable:!0})}}function c(e){o(),i.appendClasspath(e)}var d;t.ensureJvm=o,t.importClass=function(e){o();const t=i.importClass(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.importClassAsync=async function(e){o();const t=await i.importClassAsync(e);return s(t,!0),t.constructor=function(...e){const a=new t.prototype.constructor(...e);return s(a,!1),a},t},t.appendClasspath=c,t.isInstanceOf=function(e,t){return o(),i.isInstanceOf(e,t)},(d=t.classpath||(t.classpath={})).append=function(e){c(e)},d.get=function(){return o(),i.loadedJars},(t.stdout||(t.stdout={})).enableRedirect=function(e,t){return o(),i.setStdoutCallbacks(e,t)},t.newProxy=function(e,t){o();const a=Object.create(null);for(const[e,r]of Object.entries(t))a[e]=(e,t,...a)=>{if(e)throw e;try{t(null,r(...a))}catch(e){e instanceof Error?t(e):t(new Error(e.toString()))}};return i.createInterfaceProxy(e,a)},t.getJavaInstance=function(){return i}},841:function(e,t,a){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&r(t,e,a);return n(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaLibPath=t.getNativeLibPath=void 0;const s=o(a(17)),c=i(a(147)),d=o(a(230)),{platform:u,arch:l}=process;function p(e){const t=s.default.join(__dirname,e+".node");if(c.default.existsSync(t))return t;{const t=e.replaceAll(".","-").replace("java","java-bridge");return require&&require.resolve?require.resolve(t):a(955).resolve(t)}}function f(){return new Error(`Unsupported platform: ${u} ${l}`)}t.getNativeLibPath=function(){switch(u){case"android":switch(l){case"arm64":return p("java.android-arm64");case"arm":return p("java.android-arm-eabi");default:throw f()}case"win32":return p(`java.win32-${l}-msvc`);case"darwin":return p(`java.darwin-${l}`);case"freebsd":return p(`java.freebsd-${l}`);case"linux":switch(l){case"x64":case"arm64":return p(`java.linux-${l}-${function(){if(process.report&&"function"==typeof process.report.getReport){const{glibcVersionRuntime:e}=process.report.getReport().header;return!e}try{return(0,c.readFileSync)("/usr/bin/ldd","utf8").includes("musl")}catch(e){return!0}}()?"musl":"gnu"}`);case"arm":return p("java.linux-arm-gnueabihf");default:throw f()}default:throw f()}},t.getJavaLibPath=function(){const e=s.default.join(__dirname,"..","java-src","build","libs");let t=d.default.sync("*.jar",{cwd:e});if(0===t.length)throw new Error(`No java lib found in ${e}`);return s.default.join(e,t[0])}},764:function(__unused_webpack_module,exports,__webpack_require__){"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,t,a,r){void 0===r&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(e,r,n)}:function(e,t,a,r){void 0===r&&(r=a),e[r]=t[a]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),__importStar=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&__createBinding(t,e,a);return __setModuleDefault(t,e),t},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const yargs_1=__importDefault(__webpack_require__(760)),perf_hooks_1=__webpack_require__(74),path_1=__importDefault(__webpack_require__(17)),_1=__importStar(__webpack_require__(236)),package_json_1=__webpack_require__(598),importOra=()=>eval("import('ora').then(ora => ora.default)"),importChalk=()=>eval("import('chalk').then(chalk => chalk.default)"),builder=e=>{e.positional("classnames",{describe:"The fully qualified class name(s) to convert",type:"string"}),e.positional("output",{describe:"The output file",type:"string"}),e.option("classpath",{alias:"cp",type:"string",describe:"The classpath to use"})},handler=async({classnames:e,output:t,classpath:a})=>{let r=null;try{const n=perf_hooks_1.performance.now();(0,_1.ensureJvm)({useDaemonThreads:!0}),a&&_1.default.classpath.append(a);const i=await importChalk(),o=await importOra();console.log(`Starting ${i.cyanBright("java-bridge")} ${i.greenBright("v"+package_json_1.version)} Java definition generator`);const s=(0,_1.getJavaInstance)(),c=_1.default.classpath.get();c.length>0&&console.log(`Started JVM with version ${i.cyanBright(s.version)} and classpath '${c.map((e=>i.cyanBright(e))).join(";")}'`),console.log(`Converting classes ${e.map((e=>i.magentaBright(e))).join(", ")} to typescript and saving result to ${i.cyanBright(path_1.default.normalize(t))}`),r=o().start();const d=[];let u=0,l=0,p=0,f="";const m=setInterval((()=>{p+=1,v()}),1e3),v=()=>{r.text=i.gray(`Elapsed time: ${i.yellow(p)} seconds ${i.white("|")} Converted ${i.cyanBright(u)} classes ${i.white("|")} Converting class ${i.magentaBright(f)}`)};for(const a of e){const e=new _1.TypescriptDefinitionGenerator(a,(e=>{f=e,u++,v()}),d),n=await e.generate();l+=n.length,r.text="saving results",await _1.TypescriptDefinitionGenerator.save(n,t)}clearInterval(m);const h=((perf_hooks_1.performance.now()-n)/1e3).toFixed(1);r.succeed(`Success - Converted ${i.blueBright(l)} classes in ${i.blueBright(h)} seconds`)}catch(e){r?.fail("Failed to convert classes"),console.error(e),process.exit(1)}};yargs_1.default.command("* <output> <classnames..>",!1,builder,handler).parse()},102:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getJavaVersionSync=t.getJavaVersion=void 0;const r=a(818);t.getJavaVersion=async function(){const e=await(0,r.importClassAsync)("java.lang.System");return await e.getProperty("java.version")},t.getJavaVersionSync=function(){return(0,r.importClass)("java.lang.System").getPropertySync("java.version")}},955:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=955,e.exports=t},230:e=>{"use strict";e.exports=require("glob")},7:e=>{"use strict";e.exports=require("typescript")},760:e=>{"use strict";e.exports=require("yargs")},147:e=>{"use strict";e.exports=require("fs")},17:e=>{"use strict";e.exports=require("path")},74:e=>{"use strict";e.exports=require("perf_hooks")},598:e=>{"use strict";e.exports=JSON.parse('{"name":"java-bridge","version":"2.1.5-beta.1","main":"dist/index.prod.min.js","types":"dist/ts-src/index.d.ts","description":"A bridge between Node.js and Java APIs","repository":{"type":"git","url":"git+https://github.com/MarkusJx/node-java-bridge.git"},"author":"MarkusJx","bugs":{"url":"https://github.com/MarkusJx/node-java-bridge/issues"},"homepage":"https://github.com/MarkusJx/node-java-bridge#readme","files":["dist/*.js","dist/*.map","dist/**/*.d.ts","java-src/build/libs/*.jar"],"napi":{"name":"java","triples":{"additional":["aarch64-apple-darwin","i686-pc-windows-msvc","aarch64-unknown-linux-gnu"]}},"bin":{"java-ts-gen":"./dist/java-ts-gen.js"},"license":"MIT","prettier":{"printWidth":80,"semi":true,"singleQuote":true,"tabWidth":4,"trailingComma":"es5"},"engines":{"node":">= 15"},"scripts":{"artifacts":"napi artifacts","build":"npm run build:napi","build:debug":"npm run build:napi:debug && npm run build:ts && npm run build:java","postbuild":"npm run build:ts && npm run build:java","build:napi":"napi build --platform --release --js native.js --dts native.d.ts","build:napi:debug":"napi build --platform --js native.js --dts native.d.ts","build:ts":"webpack build && cpy native.d.ts dist","build:java":"run-script-os","build:java:darwin:linux":"cd java-src && chmod +x gradlew && ./gradlew shadowJar","build:java:win32":"cd java-src && .\\\\gradlew.bat shadowJar","prepublishOnly":"napi prepublish -t npm","test":"npm run testOnly","testOnly":"mocha -r ts-node/register test/**/*.test.ts","pretest":"npm run build","version":"napi version","prettier":"prettier --write .","prebuild":"rimraf dist","prebuild:debug":"rimraf dist","benchmark":"ts-node -P test/tsconfig.json test/benchmark/benchmark.ts && ts-node -P test/tsconfig.json test/benchmark/benchmarkDaemonThreads.ts","prebenchmark":"npm run build","docs":"typedoc --out docs ts-src/index.ts"},"dependencies":{"chalk":"^5.1.2","glob":"^8.0.3","ora":"^6.1.2","typescript":"^4.8.4","yargs":"^17.6.1"},"devDependencies":{"@napi-rs/cli":"^2.12.0","@types/chai":"^4.3.3","@types/glob":"^8.0.0","@types/is-ci":"^3.0.0","@types/mocha":"^10.0.0","@types/node":"^18.11.9","@types/semver":"^7.3.13","@types/webpack-node-externals":"^2.5.3","@types/yargs":"^17.0.13","chai":"^4.3.6","cpy-cli":"^4.2.0","expose-gc":"^1.0.0","is-ci":"^3.0.1","mocha":"^10.1.0","nanobench":"^3.0.0","node-loader":"^2.0.0","prettier":"^2.7.1","rimraf":"^3.0.2","run-script-os":"^1.1.6","semver":"^7.3.8","string-replace-loader":"^3.1.0","ts-loader":"^9.4.1","ts-node":"^10.9.1","tslib":"^2.4.1","typedoc":"^0.23.20","webpack":"^5.74.0","webpack-cli":"^4.10.0","webpack-node-externals":"^3.0.0"},"optionalDependencies":{"java-bridge-darwin-arm64":"2.0.0","java-bridge-darwin-x64":"2.0.0","java-bridge-linux-x64-gnu":"2.0.0","java-bridge-win32-ia32-msvc":"2.0.0","java-bridge-win32-x64-msvc":"2.0.0","java-bridge-linux-arm64-gnu":"2.0.0"}}')}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.loaded=!0,a.exports}__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="";var __webpack_exports__=__webpack_require__(764);return __webpack_exports__})()));
|
|
3
3
|
//# sourceMappingURL=java-ts-gen.js.map
|