-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlithtech-parser.wasi.cjs
More file actions
186 lines (173 loc) · 7.86 KB
/
Copy pathlithtech-parser.wasi.cjs
File metadata and controls
186 lines (173 loc) · 7.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
/* eslint-disable */
/* prettier-ignore */
/* auto-generated by NAPI-RS */
const __nodeFs = require('node:fs')
const __nodePath = require('node:path')
const { WASI: __nodeWASI } = require('node:wasi')
const { Worker } = require('node:worker_threads')
const {
createOnMessage: __wasmCreateOnMessageForFsProxy,
getDefaultContext: __emnapiGetDefaultContext,
instantiateNapiModuleSync: __emnapiInstantiateNapiModuleSync,
} = require('@napi-rs/wasm-runtime')
const __rootDir = __nodePath.parse(process.cwd()).root
const __wasi = new __nodeWASI({
version: 'preview1',
env: process.env,
preopens: {
[__rootDir]: __rootDir,
}
})
const __emnapiContext = __emnapiGetDefaultContext()
const __sharedMemory = new WebAssembly.Memory({
initial: 4000,
maximum: 65536,
shared: true,
})
let __wasmFilePath = __nodePath.join(__dirname, 'lithtech-parser.wasm32-wasi.wasm')
const __wasmDebugFilePath = __nodePath.join(__dirname, 'lithtech-parser.wasm32-wasi.debug.wasm')
if (__nodeFs.existsSync(__wasmDebugFilePath)) {
__wasmFilePath = __wasmDebugFilePath
} else if (!__nodeFs.existsSync(__wasmFilePath)) {
try {
__wasmFilePath = __nodePath.resolve('@ylcc/lithtech-parser-wasm32-wasi')
} catch {
throw new Error('Cannot find lithtech-parser.wasm32-wasi.wasm file, and @ylcc/lithtech-parser-wasm32-wasi package is not installed.')
}
}
const { instance: __napiInstance, module: __wasiModule, napiModule: __napiModule } = __emnapiInstantiateNapiModuleSync(__nodeFs.readFileSync(__wasmFilePath), {
context: __emnapiContext,
asyncWorkPoolSize: (function() {
const threadsSizeFromEnv = Number(process.env.NAPI_RS_ASYNC_WORK_POOL_SIZE ?? process.env.UV_THREADPOOL_SIZE)
// NaN > 0 is false
if (threadsSizeFromEnv > 0) {
return threadsSizeFromEnv
} else {
return 4
}
})(),
reuseWorker: true,
wasi: __wasi,
onCreateWorker() {
const worker = new Worker(__nodePath.join(__dirname, 'wasi-worker.mjs'), {
env: process.env,
})
worker.onmessage = ({ data }) => {
__wasmCreateOnMessageForFsProxy(__nodeFs)(data)
}
// The main thread of Node.js waits for all the active handles before exiting.
// But Rust threads are never waited without `thread::join`.
// So here we hack the code of Node.js to prevent the workers from being referenced (active).
// According to https://github.com/nodejs/node/blob/19e0d472728c79d418b74bddff588bea70a403d0/lib/internal/worker.js#L415,
// a worker is consist of two handles: kPublicPort and kHandle.
{
const kPublicPort = Object.getOwnPropertySymbols(worker).find(s =>
s.toString().includes("kPublicPort")
);
if (kPublicPort) {
worker[kPublicPort].ref = () => {};
}
const kHandle = Object.getOwnPropertySymbols(worker).find(s =>
s.toString().includes("kHandle")
);
if (kHandle) {
worker[kHandle].ref = () => {};
}
worker.unref();
}
return worker
},
overwriteImports(importObject) {
importObject.env = {
...importObject.env,
...importObject.napi,
...importObject.emnapi,
memory: __sharedMemory,
}
return importObject
},
beforeInit({ instance }) {
for (const name of Object.keys(instance.exports)) {
if (name.startsWith('__napi_register__')) {
instance.exports[name]()
}
}
},
})
module.exports = __napiModule.exports
module.exports.Animation = __napiModule.exports.Animation
module.exports.AnimBinding = __napiModule.exports.AnimBinding
module.exports.BlindData = __napiModule.exports.BlindData
module.exports.BoneNode = __napiModule.exports.BoneNode
module.exports.BoneSet = __napiModule.exports.BoneSet
module.exports.ColorArgb = __napiModule.exports.ColorArgb
module.exports.ColorBgra = __napiModule.exports.ColorBgra
module.exports.ColorRgb = __napiModule.exports.ColorRgb
module.exports.ColorRgba = __napiModule.exports.ColorRgba
module.exports.Colour32bit = __napiModule.exports.Colour32bit
module.exports.Colour8bit = __napiModule.exports.Colour8bit
module.exports.Compressed = __napiModule.exports.Compressed
module.exports.CompressedTextureRow = __napiModule.exports.CompressedTextureRow
module.exports.DataItem = __napiModule.exports.DataItem
module.exports.DatHeader = __napiModule.exports.DatHeader
module.exports.DatVertex = __napiModule.exports.DatVertex
module.exports.DtxHeader = __napiModule.exports.DtxHeader
module.exports.DtxSection = __napiModule.exports.DtxSection
module.exports.ImageMeta = __napiModule.exports.ImageMeta
module.exports.ItemProperty = __napiModule.exports.ItemProperty
module.exports.ItemPropertyData = __napiModule.exports.ItemPropertyData
module.exports.Keyframe = __napiModule.exports.Keyframe
module.exports.LightData = __napiModule.exports.LightData
module.exports.LightGroup = __napiModule.exports.LightGroup
module.exports.LightMapSection = __napiModule.exports.LightMapSection
module.exports.LightMapSectionRow = __napiModule.exports.LightMapSectionRow
module.exports.LithtechDat = __napiModule.exports.LithtechDat
module.exports.LithtechDtx = __napiModule.exports.LithtechDtx
module.exports.LithtechLtb = __napiModule.exports.LithtechLtb
module.exports.LodContainer = __napiModule.exports.LodContainer
module.exports.LodMesh = __napiModule.exports.LodMesh
module.exports.LodMeshInfo = __napiModule.exports.LodMeshInfo
module.exports.LtbHeader = __napiModule.exports.LtbHeader
module.exports.LtbVertex = __napiModule.exports.LtbVertex
module.exports.Matrix = __napiModule.exports.Matrix
module.exports.Mipmap = __napiModule.exports.Mipmap
module.exports.ModelOBB = __napiModule.exports.ModelOBB
module.exports.NormalTransform = __napiModule.exports.NormalTransform
module.exports.NullMesh = __napiModule.exports.NullMesh
module.exports.Palette32Bit = __napiModule.exports.Palette32Bit
module.exports.Palette8Bit = __napiModule.exports.Palette8Bit
module.exports.Piece = __napiModule.exports.Piece
module.exports.Plane = __napiModule.exports.Plane
module.exports.Polygon = __napiModule.exports.Polygon
module.exports.PolygonData = __napiModule.exports.PolygonData
module.exports.QuaternionF32 = __napiModule.exports.QuaternionF32
module.exports.RenderBlock = __napiModule.exports.RenderBlock
module.exports.RenderData = __napiModule.exports.RenderData
module.exports.RenderSection = __napiModule.exports.RenderSection
module.exports.RigidMesh = __napiModule.exports.RigidMesh
module.exports.ShaderPoly = __napiModule.exports.ShaderPoly
module.exports.SkeletalMesh = __napiModule.exports.SkeletalMesh
module.exports.SkyPortal = __napiModule.exports.SkyPortal
module.exports.Socket = __napiModule.exports.Socket
module.exports.Surface = __napiModule.exports.Surface
module.exports.Texture32Bit = __napiModule.exports.Texture32Bit
module.exports.Texture32BitTextureRow = __napiModule.exports.Texture32BitTextureRow
module.exports.Triangle = __napiModule.exports.Triangle
module.exports.UnknownMesh = __napiModule.exports.UnknownMesh
module.exports.Vector2F32 = __napiModule.exports.Vector2F32
module.exports.Vector3F32 = __napiModule.exports.Vector3F32
module.exports.VertexAnimatedMesh = __napiModule.exports.VertexAnimatedMesh
module.exports.VertexGroup = __napiModule.exports.VertexGroup
module.exports.WeightSet = __napiModule.exports.WeightSet
module.exports.World = __napiModule.exports.World
module.exports.WorldData = __napiModule.exports.WorldData
module.exports.WorldModel = __napiModule.exports.WorldModel
module.exports.WorldModelNode = __napiModule.exports.WorldModelNode
module.exports.WorldModelPolygon = __napiModule.exports.WorldModelPolygon
module.exports.WorldModelRenderBlock = __napiModule.exports.WorldModelRenderBlock
module.exports.WorldTree = __napiModule.exports.WorldTree
module.exports.parseDat = __napiModule.exports.parseDat
module.exports.parseDtx = __napiModule.exports.parseDtx
module.exports.parseLtb = __napiModule.exports.parseLtb
module.exports.plus100 = __napiModule.exports.plus100
module.exports.plus100FromZig = __napiModule.exports.plus100FromZig