@series-inc/venus-sdk 3.3.1-beta.0 → 3.4.0-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/dist/{AdsApi-OXtzPhiB.d.mts → AdsApi-CrobHGGD.d.ts} +2 -1
- package/dist/{chunk-QABXMFND.mjs → chunk-3APM3V2M.js} +2 -2
- package/dist/chunk-3APM3V2M.js.map +1 -0
- package/dist/{chunk-UXY5CKKG.mjs → chunk-3UPXLWK7.js} +3 -3
- package/dist/chunk-3UPXLWK7.js.map +1 -0
- package/dist/{chunk-C6GZ5FEB.mjs → chunk-WRQHJYLT.js} +178 -180
- package/dist/chunk-WRQHJYLT.js.map +1 -0
- package/dist/core-NMKO2UFW.js +3 -0
- package/dist/{core-62LWDHN7.mjs.map → core-NMKO2UFW.js.map} +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/{index.mjs → index.js} +5 -6
- package/dist/{index.mjs.map → index.js.map} +1 -1
- package/dist/venus-api/index.d.ts +2 -2
- package/dist/venus-api/{index.mjs → index.js} +20 -34
- package/dist/venus-api/index.js.map +1 -0
- package/dist/vite/{index.mjs → index.js} +11 -526
- package/dist/vite/index.js.map +1 -0
- package/dist/webview/index.js +3 -0
- package/dist/webview/{index.mjs.map → index.js.map} +1 -1
- package/package.json +13 -19
- package/dist/AdsApi-OXtzPhiB.d.ts +0 -1551
- package/dist/chunk-C6GZ5FEB.mjs.map +0 -1
- package/dist/chunk-NSSMTXJJ.mjs +0 -7
- package/dist/chunk-NSSMTXJJ.mjs.map +0 -1
- package/dist/chunk-QABXMFND.mjs.map +0 -1
- package/dist/chunk-UXY5CKKG.mjs.map +0 -1
- package/dist/core-62LWDHN7.mjs +0 -4
- package/dist/index.cjs +0 -5272
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.mts +0 -904
- package/dist/venus-api/index.cjs +0 -7185
- package/dist/venus-api/index.cjs.map +0 -1
- package/dist/venus-api/index.d.mts +0 -15
- package/dist/venus-api/index.mjs.map +0 -1
- package/dist/vite/index.cjs +0 -1069
- package/dist/vite/index.cjs.map +0 -1
- package/dist/vite/index.mjs.map +0 -1
- package/dist/webview/index.cjs +0 -15
- package/dist/webview/index.cjs.map +0 -1
- package/dist/webview/index.d.mts +0 -15
- package/dist/webview/index.mjs +0 -4
|
@@ -60,7 +60,8 @@ var EMBEDDED_LIBRARIES = [
|
|
|
60
60
|
globalVar: "THREE",
|
|
61
61
|
cdnPath: "three/r170/three.min.js",
|
|
62
62
|
moduleSpecifiers: [
|
|
63
|
-
{ match: "exact", value: "three", behavior: "namespace" }
|
|
63
|
+
{ match: "exact", value: "three", behavior: "namespace" },
|
|
64
|
+
{ match: "prefix", value: "three/examples/jsm/", behavior: "namespace" }
|
|
64
65
|
],
|
|
65
66
|
loadStage: 0,
|
|
66
67
|
enabled: true
|
|
@@ -133,473 +134,7 @@ var MODULE_TO_LIBRARY_SPECIFIERS = EMBEDDED_LIBRARIES.filter(
|
|
|
133
134
|
}))
|
|
134
135
|
);
|
|
135
136
|
|
|
136
|
-
// src/shared-assets/generated/threeExports.ts
|
|
137
|
-
var EMBEDDED_THREE_VERSION = "0.170.0";
|
|
138
|
-
var EMBEDDED_THREE_NAMED_EXPORTS = [
|
|
139
|
-
"ACESFilmicToneMapping",
|
|
140
|
-
"AddEquation",
|
|
141
|
-
"AdditiveAnimationBlendMode",
|
|
142
|
-
"AdditiveBlending",
|
|
143
|
-
"AddOperation",
|
|
144
|
-
"AgXToneMapping",
|
|
145
|
-
"AlphaFormat",
|
|
146
|
-
"AlwaysCompare",
|
|
147
|
-
"AlwaysDepth",
|
|
148
|
-
"AlwaysStencilFunc",
|
|
149
|
-
"AmbientLight",
|
|
150
|
-
"AnimationAction",
|
|
151
|
-
"AnimationClip",
|
|
152
|
-
"AnimationLoader",
|
|
153
|
-
"AnimationMixer",
|
|
154
|
-
"AnimationObjectGroup",
|
|
155
|
-
"AnimationUtils",
|
|
156
|
-
"ArcCurve",
|
|
157
|
-
"ArrayCamera",
|
|
158
|
-
"ArrowHelper",
|
|
159
|
-
"AttachedBindMode",
|
|
160
|
-
"Audio",
|
|
161
|
-
"AudioAnalyser",
|
|
162
|
-
"AudioContext",
|
|
163
|
-
"AudioListener",
|
|
164
|
-
"AudioLoader",
|
|
165
|
-
"AxesHelper",
|
|
166
|
-
"BackSide",
|
|
167
|
-
"BasicDepthPacking",
|
|
168
|
-
"BasicShadowMap",
|
|
169
|
-
"BatchedMesh",
|
|
170
|
-
"Bone",
|
|
171
|
-
"BooleanKeyframeTrack",
|
|
172
|
-
"Box2",
|
|
173
|
-
"Box3",
|
|
174
|
-
"Box3Helper",
|
|
175
|
-
"BoxGeometry",
|
|
176
|
-
"BoxHelper",
|
|
177
|
-
"BufferAttribute",
|
|
178
|
-
"BufferGeometry",
|
|
179
|
-
"BufferGeometryLoader",
|
|
180
|
-
"ByteType",
|
|
181
|
-
"Cache",
|
|
182
|
-
"Camera",
|
|
183
|
-
"CameraHelper",
|
|
184
|
-
"CanvasTexture",
|
|
185
|
-
"CapsuleGeometry",
|
|
186
|
-
"CatmullRomCurve3",
|
|
187
|
-
"CineonToneMapping",
|
|
188
|
-
"CircleGeometry",
|
|
189
|
-
"ClampToEdgeWrapping",
|
|
190
|
-
"Clock",
|
|
191
|
-
"Color",
|
|
192
|
-
"ColorKeyframeTrack",
|
|
193
|
-
"ColorManagement",
|
|
194
|
-
"CompressedArrayTexture",
|
|
195
|
-
"CompressedCubeTexture",
|
|
196
|
-
"CompressedTexture",
|
|
197
|
-
"CompressedTextureLoader",
|
|
198
|
-
"ConeGeometry",
|
|
199
|
-
"ConstantAlphaFactor",
|
|
200
|
-
"ConstantColorFactor",
|
|
201
|
-
"Controls",
|
|
202
|
-
"createCanvasElement",
|
|
203
|
-
"CubeCamera",
|
|
204
|
-
"CubeReflectionMapping",
|
|
205
|
-
"CubeRefractionMapping",
|
|
206
|
-
"CubeTexture",
|
|
207
|
-
"CubeTextureLoader",
|
|
208
|
-
"CubeUVReflectionMapping",
|
|
209
|
-
"CubicBezierCurve",
|
|
210
|
-
"CubicBezierCurve3",
|
|
211
|
-
"CubicInterpolant",
|
|
212
|
-
"CullFaceBack",
|
|
213
|
-
"CullFaceFront",
|
|
214
|
-
"CullFaceFrontBack",
|
|
215
|
-
"CullFaceNone",
|
|
216
|
-
"Curve",
|
|
217
|
-
"CurvePath",
|
|
218
|
-
"CustomBlending",
|
|
219
|
-
"CustomToneMapping",
|
|
220
|
-
"CylinderGeometry",
|
|
221
|
-
"Cylindrical",
|
|
222
|
-
"Data3DTexture",
|
|
223
|
-
"DataArrayTexture",
|
|
224
|
-
"DataTexture",
|
|
225
|
-
"DataTextureLoader",
|
|
226
|
-
"DataUtils",
|
|
227
|
-
"DecrementStencilOp",
|
|
228
|
-
"DecrementWrapStencilOp",
|
|
229
|
-
"DefaultLoadingManager",
|
|
230
|
-
"DepthFormat",
|
|
231
|
-
"DepthStencilFormat",
|
|
232
|
-
"DepthTexture",
|
|
233
|
-
"DetachedBindMode",
|
|
234
|
-
"DirectionalLight",
|
|
235
|
-
"DirectionalLightHelper",
|
|
236
|
-
"DiscreteInterpolant",
|
|
237
|
-
"DodecahedronGeometry",
|
|
238
|
-
"DoubleSide",
|
|
239
|
-
"DstAlphaFactor",
|
|
240
|
-
"DstColorFactor",
|
|
241
|
-
"DynamicCopyUsage",
|
|
242
|
-
"DynamicDrawUsage",
|
|
243
|
-
"DynamicReadUsage",
|
|
244
|
-
"EdgesGeometry",
|
|
245
|
-
"EllipseCurve",
|
|
246
|
-
"EqualCompare",
|
|
247
|
-
"EqualDepth",
|
|
248
|
-
"EqualStencilFunc",
|
|
249
|
-
"EquirectangularReflectionMapping",
|
|
250
|
-
"EquirectangularRefractionMapping",
|
|
251
|
-
"Euler",
|
|
252
|
-
"EventDispatcher",
|
|
253
|
-
"ExtrudeGeometry",
|
|
254
|
-
"FileLoader",
|
|
255
|
-
"Float16BufferAttribute",
|
|
256
|
-
"Float32BufferAttribute",
|
|
257
|
-
"FloatType",
|
|
258
|
-
"Fog",
|
|
259
|
-
"FogExp2",
|
|
260
|
-
"FramebufferTexture",
|
|
261
|
-
"FrontSide",
|
|
262
|
-
"Frustum",
|
|
263
|
-
"GLBufferAttribute",
|
|
264
|
-
"GLSL1",
|
|
265
|
-
"GLSL3",
|
|
266
|
-
"GreaterCompare",
|
|
267
|
-
"GreaterDepth",
|
|
268
|
-
"GreaterEqualCompare",
|
|
269
|
-
"GreaterEqualDepth",
|
|
270
|
-
"GreaterEqualStencilFunc",
|
|
271
|
-
"GreaterStencilFunc",
|
|
272
|
-
"GridHelper",
|
|
273
|
-
"Group",
|
|
274
|
-
"HalfFloatType",
|
|
275
|
-
"HemisphereLight",
|
|
276
|
-
"HemisphereLightHelper",
|
|
277
|
-
"IcosahedronGeometry",
|
|
278
|
-
"ImageBitmapLoader",
|
|
279
|
-
"ImageLoader",
|
|
280
|
-
"ImageUtils",
|
|
281
|
-
"IncrementStencilOp",
|
|
282
|
-
"IncrementWrapStencilOp",
|
|
283
|
-
"InstancedBufferAttribute",
|
|
284
|
-
"InstancedBufferGeometry",
|
|
285
|
-
"InstancedInterleavedBuffer",
|
|
286
|
-
"InstancedMesh",
|
|
287
|
-
"Int16BufferAttribute",
|
|
288
|
-
"Int32BufferAttribute",
|
|
289
|
-
"Int8BufferAttribute",
|
|
290
|
-
"InterleavedBuffer",
|
|
291
|
-
"InterleavedBufferAttribute",
|
|
292
|
-
"Interpolant",
|
|
293
|
-
"InterpolateDiscrete",
|
|
294
|
-
"InterpolateLinear",
|
|
295
|
-
"InterpolateSmooth",
|
|
296
|
-
"IntType",
|
|
297
|
-
"InvertStencilOp",
|
|
298
|
-
"KeepStencilOp",
|
|
299
|
-
"KeyframeTrack",
|
|
300
|
-
"LatheGeometry",
|
|
301
|
-
"Layers",
|
|
302
|
-
"LessCompare",
|
|
303
|
-
"LessDepth",
|
|
304
|
-
"LessEqualCompare",
|
|
305
|
-
"LessEqualDepth",
|
|
306
|
-
"LessEqualStencilFunc",
|
|
307
|
-
"LessStencilFunc",
|
|
308
|
-
"Light",
|
|
309
|
-
"LightProbe",
|
|
310
|
-
"Line",
|
|
311
|
-
"Line3",
|
|
312
|
-
"LinearFilter",
|
|
313
|
-
"LinearInterpolant",
|
|
314
|
-
"LinearMipmapLinearFilter",
|
|
315
|
-
"LinearMipMapLinearFilter",
|
|
316
|
-
"LinearMipmapNearestFilter",
|
|
317
|
-
"LinearMipMapNearestFilter",
|
|
318
|
-
"LinearSRGBColorSpace",
|
|
319
|
-
"LinearToneMapping",
|
|
320
|
-
"LinearTransfer",
|
|
321
|
-
"LineBasicMaterial",
|
|
322
|
-
"LineCurve",
|
|
323
|
-
"LineCurve3",
|
|
324
|
-
"LineDashedMaterial",
|
|
325
|
-
"LineLoop",
|
|
326
|
-
"LineSegments",
|
|
327
|
-
"Loader",
|
|
328
|
-
"LoaderUtils",
|
|
329
|
-
"LoadingManager",
|
|
330
|
-
"LOD",
|
|
331
|
-
"LoopOnce",
|
|
332
|
-
"LoopPingPong",
|
|
333
|
-
"LoopRepeat",
|
|
334
|
-
"LuminanceAlphaFormat",
|
|
335
|
-
"LuminanceFormat",
|
|
336
|
-
"Material",
|
|
337
|
-
"MaterialLoader",
|
|
338
|
-
"MathUtils",
|
|
339
|
-
"Matrix2",
|
|
340
|
-
"Matrix3",
|
|
341
|
-
"Matrix4",
|
|
342
|
-
"MaxEquation",
|
|
343
|
-
"Mesh",
|
|
344
|
-
"MeshBasicMaterial",
|
|
345
|
-
"MeshDepthMaterial",
|
|
346
|
-
"MeshDistanceMaterial",
|
|
347
|
-
"MeshLambertMaterial",
|
|
348
|
-
"MeshMatcapMaterial",
|
|
349
|
-
"MeshNormalMaterial",
|
|
350
|
-
"MeshPhongMaterial",
|
|
351
|
-
"MeshPhysicalMaterial",
|
|
352
|
-
"MeshStandardMaterial",
|
|
353
|
-
"MeshToonMaterial",
|
|
354
|
-
"MinEquation",
|
|
355
|
-
"MirroredRepeatWrapping",
|
|
356
|
-
"MixOperation",
|
|
357
|
-
"MOUSE",
|
|
358
|
-
"MultiplyBlending",
|
|
359
|
-
"MultiplyOperation",
|
|
360
|
-
"NearestFilter",
|
|
361
|
-
"NearestMipmapLinearFilter",
|
|
362
|
-
"NearestMipMapLinearFilter",
|
|
363
|
-
"NearestMipmapNearestFilter",
|
|
364
|
-
"NearestMipMapNearestFilter",
|
|
365
|
-
"NeutralToneMapping",
|
|
366
|
-
"NeverCompare",
|
|
367
|
-
"NeverDepth",
|
|
368
|
-
"NeverStencilFunc",
|
|
369
|
-
"NoBlending",
|
|
370
|
-
"NoColorSpace",
|
|
371
|
-
"NormalAnimationBlendMode",
|
|
372
|
-
"NormalBlending",
|
|
373
|
-
"NotEqualCompare",
|
|
374
|
-
"NotEqualDepth",
|
|
375
|
-
"NotEqualStencilFunc",
|
|
376
|
-
"NoToneMapping",
|
|
377
|
-
"NumberKeyframeTrack",
|
|
378
|
-
"Object3D",
|
|
379
|
-
"ObjectLoader",
|
|
380
|
-
"ObjectSpaceNormalMap",
|
|
381
|
-
"OctahedronGeometry",
|
|
382
|
-
"OneFactor",
|
|
383
|
-
"OneMinusConstantAlphaFactor",
|
|
384
|
-
"OneMinusConstantColorFactor",
|
|
385
|
-
"OneMinusDstAlphaFactor",
|
|
386
|
-
"OneMinusDstColorFactor",
|
|
387
|
-
"OneMinusSrcAlphaFactor",
|
|
388
|
-
"OneMinusSrcColorFactor",
|
|
389
|
-
"OrthographicCamera",
|
|
390
|
-
"Path",
|
|
391
|
-
"PCFShadowMap",
|
|
392
|
-
"PCFSoftShadowMap",
|
|
393
|
-
"PerspectiveCamera",
|
|
394
|
-
"Plane",
|
|
395
|
-
"PlaneGeometry",
|
|
396
|
-
"PlaneHelper",
|
|
397
|
-
"PMREMGenerator",
|
|
398
|
-
"PointLight",
|
|
399
|
-
"PointLightHelper",
|
|
400
|
-
"Points",
|
|
401
|
-
"PointsMaterial",
|
|
402
|
-
"PolarGridHelper",
|
|
403
|
-
"PolyhedronGeometry",
|
|
404
|
-
"PositionalAudio",
|
|
405
|
-
"PropertyBinding",
|
|
406
|
-
"PropertyMixer",
|
|
407
|
-
"QuadraticBezierCurve",
|
|
408
|
-
"QuadraticBezierCurve3",
|
|
409
|
-
"Quaternion",
|
|
410
|
-
"QuaternionKeyframeTrack",
|
|
411
|
-
"QuaternionLinearInterpolant",
|
|
412
|
-
"RawShaderMaterial",
|
|
413
|
-
"Ray",
|
|
414
|
-
"Raycaster",
|
|
415
|
-
"RectAreaLight",
|
|
416
|
-
"RED_GREEN_RGTC2_Format",
|
|
417
|
-
"RED_RGTC1_Format",
|
|
418
|
-
"RedFormat",
|
|
419
|
-
"RedIntegerFormat",
|
|
420
|
-
"ReinhardToneMapping",
|
|
421
|
-
"RenderTarget",
|
|
422
|
-
"RepeatWrapping",
|
|
423
|
-
"ReplaceStencilOp",
|
|
424
|
-
"ReverseSubtractEquation",
|
|
425
|
-
"REVISION",
|
|
426
|
-
"RGB_BPTC_SIGNED_Format",
|
|
427
|
-
"RGB_BPTC_UNSIGNED_Format",
|
|
428
|
-
"RGB_ETC1_Format",
|
|
429
|
-
"RGB_ETC2_Format",
|
|
430
|
-
"RGB_PVRTC_2BPPV1_Format",
|
|
431
|
-
"RGB_PVRTC_4BPPV1_Format",
|
|
432
|
-
"RGB_S3TC_DXT1_Format",
|
|
433
|
-
"RGBA_ASTC_10x10_Format",
|
|
434
|
-
"RGBA_ASTC_10x5_Format",
|
|
435
|
-
"RGBA_ASTC_10x6_Format",
|
|
436
|
-
"RGBA_ASTC_10x8_Format",
|
|
437
|
-
"RGBA_ASTC_12x10_Format",
|
|
438
|
-
"RGBA_ASTC_12x12_Format",
|
|
439
|
-
"RGBA_ASTC_4x4_Format",
|
|
440
|
-
"RGBA_ASTC_5x4_Format",
|
|
441
|
-
"RGBA_ASTC_5x5_Format",
|
|
442
|
-
"RGBA_ASTC_6x5_Format",
|
|
443
|
-
"RGBA_ASTC_6x6_Format",
|
|
444
|
-
"RGBA_ASTC_8x5_Format",
|
|
445
|
-
"RGBA_ASTC_8x6_Format",
|
|
446
|
-
"RGBA_ASTC_8x8_Format",
|
|
447
|
-
"RGBA_BPTC_Format",
|
|
448
|
-
"RGBA_ETC2_EAC_Format",
|
|
449
|
-
"RGBA_PVRTC_2BPPV1_Format",
|
|
450
|
-
"RGBA_PVRTC_4BPPV1_Format",
|
|
451
|
-
"RGBA_S3TC_DXT1_Format",
|
|
452
|
-
"RGBA_S3TC_DXT3_Format",
|
|
453
|
-
"RGBA_S3TC_DXT5_Format",
|
|
454
|
-
"RGBADepthPacking",
|
|
455
|
-
"RGBAFormat",
|
|
456
|
-
"RGBAIntegerFormat",
|
|
457
|
-
"RGBDepthPacking",
|
|
458
|
-
"RGBFormat",
|
|
459
|
-
"RGBIntegerFormat",
|
|
460
|
-
"RGDepthPacking",
|
|
461
|
-
"RGFormat",
|
|
462
|
-
"RGIntegerFormat",
|
|
463
|
-
"RingGeometry",
|
|
464
|
-
"Scene",
|
|
465
|
-
"ShaderChunk",
|
|
466
|
-
"ShaderLib",
|
|
467
|
-
"ShaderMaterial",
|
|
468
|
-
"ShadowMaterial",
|
|
469
|
-
"Shape",
|
|
470
|
-
"ShapeGeometry",
|
|
471
|
-
"ShapePath",
|
|
472
|
-
"ShapeUtils",
|
|
473
|
-
"ShortType",
|
|
474
|
-
"SIGNED_RED_GREEN_RGTC2_Format",
|
|
475
|
-
"SIGNED_RED_RGTC1_Format",
|
|
476
|
-
"Skeleton",
|
|
477
|
-
"SkeletonHelper",
|
|
478
|
-
"SkinnedMesh",
|
|
479
|
-
"Source",
|
|
480
|
-
"Sphere",
|
|
481
|
-
"SphereGeometry",
|
|
482
|
-
"Spherical",
|
|
483
|
-
"SphericalHarmonics3",
|
|
484
|
-
"SplineCurve",
|
|
485
|
-
"SpotLight",
|
|
486
|
-
"SpotLightHelper",
|
|
487
|
-
"Sprite",
|
|
488
|
-
"SpriteMaterial",
|
|
489
|
-
"SrcAlphaFactor",
|
|
490
|
-
"SrcAlphaSaturateFactor",
|
|
491
|
-
"SrcColorFactor",
|
|
492
|
-
"SRGBColorSpace",
|
|
493
|
-
"SRGBTransfer",
|
|
494
|
-
"StaticCopyUsage",
|
|
495
|
-
"StaticDrawUsage",
|
|
496
|
-
"StaticReadUsage",
|
|
497
|
-
"StereoCamera",
|
|
498
|
-
"StreamCopyUsage",
|
|
499
|
-
"StreamDrawUsage",
|
|
500
|
-
"StreamReadUsage",
|
|
501
|
-
"StringKeyframeTrack",
|
|
502
|
-
"SubtractEquation",
|
|
503
|
-
"SubtractiveBlending",
|
|
504
|
-
"TangentSpaceNormalMap",
|
|
505
|
-
"TetrahedronGeometry",
|
|
506
|
-
"Texture",
|
|
507
|
-
"TextureLoader",
|
|
508
|
-
"TextureUtils",
|
|
509
|
-
"TorusGeometry",
|
|
510
|
-
"TorusKnotGeometry",
|
|
511
|
-
"TOUCH",
|
|
512
|
-
"Triangle",
|
|
513
|
-
"TriangleFanDrawMode",
|
|
514
|
-
"TrianglesDrawMode",
|
|
515
|
-
"TriangleStripDrawMode",
|
|
516
|
-
"TubeGeometry",
|
|
517
|
-
"Uint16BufferAttribute",
|
|
518
|
-
"Uint32BufferAttribute",
|
|
519
|
-
"Uint8BufferAttribute",
|
|
520
|
-
"Uint8ClampedBufferAttribute",
|
|
521
|
-
"Uniform",
|
|
522
|
-
"UniformsGroup",
|
|
523
|
-
"UniformsLib",
|
|
524
|
-
"UniformsUtils",
|
|
525
|
-
"UnsignedByteType",
|
|
526
|
-
"UnsignedInt248Type",
|
|
527
|
-
"UnsignedInt5999Type",
|
|
528
|
-
"UnsignedIntType",
|
|
529
|
-
"UnsignedShort4444Type",
|
|
530
|
-
"UnsignedShort5551Type",
|
|
531
|
-
"UnsignedShortType",
|
|
532
|
-
"UVMapping",
|
|
533
|
-
"Vector2",
|
|
534
|
-
"Vector3",
|
|
535
|
-
"Vector4",
|
|
536
|
-
"VectorKeyframeTrack",
|
|
537
|
-
"VideoTexture",
|
|
538
|
-
"VSMShadowMap",
|
|
539
|
-
"WebGL3DRenderTarget",
|
|
540
|
-
"WebGLArrayRenderTarget",
|
|
541
|
-
"WebGLCoordinateSystem",
|
|
542
|
-
"WebGLCubeRenderTarget",
|
|
543
|
-
"WebGLMultipleRenderTargets",
|
|
544
|
-
"WebGLRenderer",
|
|
545
|
-
"WebGLRenderTarget",
|
|
546
|
-
"WebGLUtils",
|
|
547
|
-
"WebGPUCoordinateSystem",
|
|
548
|
-
"WireframeGeometry",
|
|
549
|
-
"WrapAroundEnding",
|
|
550
|
-
"ZeroCurvatureEnding",
|
|
551
|
-
"ZeroFactor",
|
|
552
|
-
"ZeroSlopeEnding",
|
|
553
|
-
"ZeroStencilOp"
|
|
554
|
-
];
|
|
555
|
-
|
|
556
137
|
// src/vite/venusLibrariesPlugin.ts
|
|
557
|
-
async function resolveInstalledPackageVersion(pluginContext, packageName, cache) {
|
|
558
|
-
if (cache.has(packageName)) {
|
|
559
|
-
return cache.get(packageName) ?? null;
|
|
560
|
-
}
|
|
561
|
-
const readVersion = (packageJsonPath) => {
|
|
562
|
-
const raw = fs.readFileSync(packageJsonPath, "utf8");
|
|
563
|
-
const parsed = JSON.parse(raw);
|
|
564
|
-
return typeof parsed?.version === "string" ? parsed.version : null;
|
|
565
|
-
};
|
|
566
|
-
const findNearestPackageJson = (fromFilePath) => {
|
|
567
|
-
let dir = path.dirname(fromFilePath);
|
|
568
|
-
while (true) {
|
|
569
|
-
const candidate = path.join(dir, "package.json");
|
|
570
|
-
if (fs.existsSync(candidate) && fs.statSync(candidate).isFile()) {
|
|
571
|
-
return candidate;
|
|
572
|
-
}
|
|
573
|
-
const parent = path.dirname(dir);
|
|
574
|
-
if (parent === dir) return null;
|
|
575
|
-
dir = parent;
|
|
576
|
-
}
|
|
577
|
-
};
|
|
578
|
-
try {
|
|
579
|
-
const pkgJsonResolved = await pluginContext.resolve(
|
|
580
|
-
`${packageName}/package.json`,
|
|
581
|
-
void 0,
|
|
582
|
-
{ skipSelf: true }
|
|
583
|
-
);
|
|
584
|
-
if (pkgJsonResolved?.id && fs.existsSync(pkgJsonResolved.id)) {
|
|
585
|
-
const v = readVersion(pkgJsonResolved.id);
|
|
586
|
-
cache.set(packageName, v);
|
|
587
|
-
return v;
|
|
588
|
-
}
|
|
589
|
-
const entryResolved = await pluginContext.resolve(packageName, void 0, {
|
|
590
|
-
skipSelf: true
|
|
591
|
-
});
|
|
592
|
-
if (entryResolved?.id) {
|
|
593
|
-
const pkgJsonPath = findNearestPackageJson(entryResolved.id);
|
|
594
|
-
const v = pkgJsonPath ? readVersion(pkgJsonPath) : null;
|
|
595
|
-
cache.set(packageName, v);
|
|
596
|
-
return v;
|
|
597
|
-
}
|
|
598
|
-
} catch {
|
|
599
|
-
}
|
|
600
|
-
cache.set(packageName, null);
|
|
601
|
-
return null;
|
|
602
|
-
}
|
|
603
138
|
function generateVirtualModule(lib, spec, importPath) {
|
|
604
139
|
const errorCheck = `
|
|
605
140
|
// Wait for shim to complete loading libraries
|
|
@@ -625,17 +160,6 @@ if (!window.__venusLibraryExports || !window.__venusLibraryExports['${lib.librar
|
|
|
625
160
|
}
|
|
626
161
|
`;
|
|
627
162
|
const libVar = `window.__venusLibraryExports['${lib.libraryKey}']`;
|
|
628
|
-
const renderForwardedNamedExports = (names, chunkSize = 50) => {
|
|
629
|
-
if (names.length === 0) return "";
|
|
630
|
-
const chunks = [];
|
|
631
|
-
for (let i = 0; i < names.length; i += chunkSize) {
|
|
632
|
-
const slice = names.slice(i, i + chunkSize).join(", ");
|
|
633
|
-
chunks.push(`export const { ${slice} } = lib;`);
|
|
634
|
-
}
|
|
635
|
-
return `
|
|
636
|
-
${chunks.join("\n")}
|
|
637
|
-
`;
|
|
638
|
-
};
|
|
639
163
|
switch (spec.behavior) {
|
|
640
164
|
case "react-jsx-runtime":
|
|
641
165
|
return `
|
|
@@ -675,12 +199,9 @@ export const {
|
|
|
675
199
|
namedExports = `
|
|
676
200
|
export const { createRoot, hydrateRoot, render, unmountComponentAtNode, findDOMNode, version } = lib;`;
|
|
677
201
|
} else if (lib.packageName === "three") {
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
} else {
|
|
682
|
-
namedExports = renderForwardedNamedExports(EMBEDDED_THREE_NAMED_EXPORTS);
|
|
683
|
-
}
|
|
202
|
+
namedExports = `
|
|
203
|
+
// Three.js exports everything on the global THREE object, accessible via default export
|
|
204
|
+
// Individual exports can be accessed as: import THREE from 'three'; const { Scene, Camera } = THREE;`;
|
|
684
205
|
} else {
|
|
685
206
|
namedExports = "";
|
|
686
207
|
}
|
|
@@ -716,23 +237,10 @@ function venusLibrariesPlugin(options = {}) {
|
|
|
716
237
|
let isServe = false;
|
|
717
238
|
let enabled = false;
|
|
718
239
|
let appName = options.appName;
|
|
719
|
-
const installedVersionCache = /* @__PURE__ */ new Map();
|
|
720
|
-
const loggedMismatch = /* @__PURE__ */ new Set();
|
|
721
240
|
return {
|
|
722
241
|
name: "vite-plugin-venus-libraries",
|
|
723
242
|
enforce: "pre",
|
|
724
243
|
// Run before other plugins to intercept imports
|
|
725
|
-
async buildStart() {
|
|
726
|
-
if (!enabled) return;
|
|
727
|
-
const uniquePackages = Array.from(
|
|
728
|
-
new Set(
|
|
729
|
-
EMBEDDED_LIBRARIES.filter((l) => l.enabled).map((l) => l.packageName)
|
|
730
|
-
)
|
|
731
|
-
);
|
|
732
|
-
for (const pkgName of uniquePackages) {
|
|
733
|
-
await resolveInstalledPackageVersion(this, pkgName, installedVersionCache);
|
|
734
|
-
}
|
|
735
|
-
},
|
|
736
244
|
// 0. Configure Vite build options
|
|
737
245
|
config(config) {
|
|
738
246
|
if (!enabled) return;
|
|
@@ -783,7 +291,7 @@ function venusLibrariesPlugin(options = {}) {
|
|
|
783
291
|
}
|
|
784
292
|
},
|
|
785
293
|
// 1. Intercept library imports
|
|
786
|
-
|
|
294
|
+
resolveId(id, importer) {
|
|
787
295
|
if (!enabled) return null;
|
|
788
296
|
const match = MODULE_TO_LIBRARY_SPECIFIERS.find((spec) => {
|
|
789
297
|
if (spec.match === "exact") {
|
|
@@ -794,28 +302,9 @@ function venusLibrariesPlugin(options = {}) {
|
|
|
794
302
|
return false;
|
|
795
303
|
});
|
|
796
304
|
if (match) {
|
|
797
|
-
const lib = EMBEDDED_LIBRARY_BY_KEY[match.libraryKey];
|
|
798
|
-
if (!lib) {
|
|
799
|
-
throw new Error(
|
|
800
|
-
`[Venus Libraries] Internal error: no embedded library for key ${match.libraryKey}`
|
|
801
|
-
);
|
|
802
|
-
}
|
|
803
|
-
const installed = await resolveInstalledPackageVersion(
|
|
804
|
-
this,
|
|
805
|
-
lib.packageName,
|
|
806
|
-
installedVersionCache
|
|
807
|
-
);
|
|
808
|
-
if (installed !== lib.version) {
|
|
809
|
-
if (debug && !loggedMismatch.has(lib.packageName)) {
|
|
810
|
-
loggedMismatch.add(lib.packageName);
|
|
811
|
-
console.log(
|
|
812
|
-
`[Venus Libraries] Skipping embedded ${lib.packageName}: installed=${installed ?? "unknown"} embedded=${lib.version}`
|
|
813
|
-
);
|
|
814
|
-
}
|
|
815
|
-
return null;
|
|
816
|
-
}
|
|
817
305
|
requiredLibraries.add(match.libraryKey);
|
|
818
|
-
|
|
306
|
+
const virtualId = `\0virtual:venus-lib:${match.libraryKey}:${id}`;
|
|
307
|
+
return virtualId;
|
|
819
308
|
}
|
|
820
309
|
return null;
|
|
821
310
|
},
|
|
@@ -834,11 +323,7 @@ function venusLibrariesPlugin(options = {}) {
|
|
|
834
323
|
`Unknown library: ${libraryKey}. Available libraries: ${availableKeys}`
|
|
835
324
|
);
|
|
836
325
|
}
|
|
837
|
-
const spec = lib.moduleSpecifiers.find((s) =>
|
|
838
|
-
if (s.match === "exact") return s.value === importPath;
|
|
839
|
-
if (s.match === "prefix") return importPath.startsWith(s.value);
|
|
840
|
-
return false;
|
|
841
|
-
});
|
|
326
|
+
const spec = lib.moduleSpecifiers.find((s) => s.value === importPath);
|
|
842
327
|
if (!spec) {
|
|
843
328
|
const validSpecifiers = lib.moduleSpecifiers.map((s) => s.value).join(", ");
|
|
844
329
|
throw new Error(
|
|
@@ -1057,5 +542,5 @@ function cdnPlugin() {
|
|
|
1057
542
|
}
|
|
1058
543
|
|
|
1059
544
|
export { cdnPlugin, venusLibrariesPlugin };
|
|
1060
|
-
//# sourceMappingURL=index.
|
|
1061
|
-
//# sourceMappingURL=index.
|
|
545
|
+
//# sourceMappingURL=index.js.map
|
|
546
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared-assets/embeddedLibrariesManifest.ts","../../src/vite/venusLibrariesPlugin.ts","../../src/vite/cdnPlugin.ts"],"names":["path","fs"],"mappings":"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","file":"index.js","sourcesContent":["export type ModuleSpecifierMatch = 'exact' | 'prefix';\r\n\r\nexport interface ModuleSpecifierConfig {\r\n match: ModuleSpecifierMatch;\r\n value: string;\r\n behavior?:\r\n | 'default'\r\n | 'react-jsx-runtime'\r\n | 'react-jsx-dev-runtime'\r\n | 'namespace';\r\n}\r\n\r\nexport interface EmbeddedLibraryDefinition {\r\n libraryKey: string;\r\n assetKey: string;\r\n packageName: string;\r\n version: string;\r\n globalVar: string;\r\n cdnPath: string;\r\n moduleSpecifiers: ModuleSpecifierConfig[];\r\n loadStage: number; // Load order: 0 first, then 1, etc. Enables parallel loading within stages\r\n enabled: boolean; // Whether this library is ready for use\r\n}\r\n\r\nexport const DEFAULT_SHARED_LIB_CDN_BASE =\r\n 'https://venus-static-01293ak.web.app/libs';\r\n\r\nexport const EMBEDDED_LIBRARIES: EmbeddedLibraryDefinition[] = [\r\n {\r\n libraryKey: 'phaser@3.90.0',\r\n assetKey: 'library:phaser@3.90.0',\r\n packageName: 'phaser',\r\n version: '3.90.0',\r\n globalVar: 'Phaser',\r\n cdnPath: 'phaser/3.90.0/phaser.min.js',\r\n moduleSpecifiers: [{ match: 'exact', value: 'phaser' }],\r\n loadStage: 0,\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'react@18.3.1',\r\n assetKey: 'library:react@18.3.1',\r\n packageName: 'react',\r\n version: '18.3.1',\r\n globalVar: 'React',\r\n cdnPath: 'react/18.3.1/react.production.min.js',\r\n moduleSpecifiers: [\r\n { match: 'exact', value: 'react', behavior: 'namespace' },\r\n { match: 'exact', value: 'react/jsx-runtime', behavior: 'react-jsx-runtime' },\r\n {\r\n match: 'exact',\r\n value: 'react/jsx-dev-runtime',\r\n behavior: 'react-jsx-dev-runtime',\r\n },\r\n ],\r\n loadStage: 0, // Must load before ReactDOM\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'react-dom@18.3.1',\r\n assetKey: 'library:react-dom@18.3.1',\r\n packageName: 'react-dom',\r\n version: '18.3.1',\r\n globalVar: 'ReactDOM',\r\n cdnPath: 'react-dom/18.3.1/react-dom.production.min.js',\r\n moduleSpecifiers: [\r\n { match: 'exact', value: 'react-dom', behavior: 'namespace' },\r\n { match: 'exact', value: 'react-dom/client', behavior: 'namespace' },\r\n ],\r\n loadStage: 1, // Depends on React (stage 0)\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'three@0.170.0',\r\n assetKey: 'library:three@0.170.0',\r\n packageName: 'three',\r\n version: '0.170.0',\r\n globalVar: 'THREE',\r\n cdnPath: 'three/r170/three.min.js',\r\n moduleSpecifiers: [\r\n { match: 'exact', value: 'three', behavior: 'namespace' },\r\n { match: 'prefix', value: 'three/examples/jsm/', behavior: 'namespace' },\r\n ],\r\n loadStage: 0,\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'matter-js@0.19.0',\r\n assetKey: 'library:matter-js@0.19.0',\r\n packageName: 'matter-js',\r\n version: '0.19.0',\r\n globalVar: 'Matter',\r\n cdnPath: 'matter-js/0.19.0/matter.min.js',\r\n moduleSpecifiers: [{ match: 'exact', value: 'matter-js' }],\r\n loadStage: 0,\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'inkjs@2.2.0',\r\n assetKey: 'library:inkjs@2.2.0',\r\n packageName: 'inkjs',\r\n version: '2.2.0',\r\n globalVar: 'inkjs',\r\n cdnPath: 'inkjs/2.2.0/ink.min.js',\r\n moduleSpecifiers: [{ match: 'exact', value: 'inkjs' }],\r\n loadStage: 0,\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'zustand@5.0.3',\r\n assetKey: 'library:zustand@5.0.3',\r\n packageName: 'zustand',\r\n version: '5.0.3',\r\n globalVar: 'zustand',\r\n cdnPath: 'zustand/5.0.3/zustand.min.js',\r\n moduleSpecifiers: [\r\n { match: 'exact', value: 'zustand' },\r\n { match: 'exact', value: 'zustand/middleware' },\r\n ],\r\n loadStage: 0,\r\n enabled: true,\r\n },\r\n {\r\n libraryKey: 'ammo.js@2024.11',\r\n assetKey: 'library:ammo.js@2024.11',\r\n packageName: 'ammo.js',\r\n version: '2024.11',\r\n globalVar: 'Ammo',\r\n cdnPath: 'ammo/2024.11/ammo.js',\r\n moduleSpecifiers: [\r\n { match: 'exact', value: 'ammo.js' },\r\n { match: 'exact', value: 'ammo.js/builds/ammo.wasm.js' },\r\n ],\r\n loadStage: 0,\r\n enabled: false, // Not ready yet - WASM loading needs additional work\r\n },\r\n];\r\n\r\nexport const EMBEDDED_LIBRARY_BY_KEY: Record<string, EmbeddedLibraryDefinition> =\r\n EMBEDDED_LIBRARIES.reduce(\r\n (acc, lib) => {\r\n acc[lib.libraryKey] = lib;\r\n return acc;\r\n },\r\n {} as Record<string, EmbeddedLibraryDefinition>,\r\n );\r\n\r\nexport const MODULE_TO_LIBRARY_SPECIFIERS = EMBEDDED_LIBRARIES.filter(\r\n (lib) => lib.enabled,\r\n).flatMap((lib) =>\r\n lib.moduleSpecifiers.map((specifier) => ({\r\n ...specifier,\r\n libraryKey: lib.libraryKey,\r\n })),\r\n);\r\n\r\n/**\r\n * Get library definition by key, throwing if not found.\r\n * @param libraryKey - Library key (e.g., 'phaser@3.90.0')\r\n * @returns Library definition\r\n * @throws Error if library key is not found\r\n */\r\nexport function getLibraryDefinition(\r\n libraryKey: string,\r\n): EmbeddedLibraryDefinition {\r\n const definition = EMBEDDED_LIBRARY_BY_KEY[libraryKey]\r\n if (!definition) {\r\n const availableKeys = Object.keys(EMBEDDED_LIBRARY_BY_KEY).join(', ')\r\n throw new Error(\r\n `Unsupported embedded library: ${libraryKey}. Available libraries: ${availableKeys}`,\r\n )\r\n }\r\n return definition\r\n}\r\n","import type { Plugin, Connect, ViteDevServer } from 'vite'\r\nimport type { ServerResponse } from 'http'\r\nimport path from 'path'\r\nimport fs from 'fs'\r\nimport {\r\n EMBEDDED_LIBRARY_BY_KEY,\r\n EMBEDDED_LIBRARIES,\r\n MODULE_TO_LIBRARY_SPECIFIERS,\r\n DEFAULT_SHARED_LIB_CDN_BASE,\r\n type EmbeddedLibraryDefinition,\r\n type ModuleSpecifierConfig,\r\n} from '../shared-assets/embeddedLibrariesManifest'\r\n\r\nexport interface VenusLibrariesPluginOptions {\r\n /**\r\n * Your app name (used for CDN asset serving in dev mode)\r\n * Optional - only needed if you have game assets in cdn/ folder\r\n * Example: 'block-breakers', 'fortunes-22'\r\n */\r\n appName?: string\r\n\r\n /**\r\n * Path to local cdn/ folder (relative to vite.config.ts)\r\n * Defaults to './cdn'\r\n */\r\n cdnDir?: string\r\n\r\n /**\r\n * Enable debug logging\r\n * Defaults to false\r\n */\r\n debug?: boolean\r\n}\r\n\r\n/**\r\n * Generate virtual module code based on library and specifier behavior\r\n */\r\nfunction generateVirtualModule(\r\n lib: EmbeddedLibraryDefinition,\r\n spec: ModuleSpecifierConfig,\r\n importPath: string,\r\n): string {\r\n const errorCheck = `\r\n// Wait for shim to complete loading libraries\r\nif (window.__venusLibraryShim && window.__venusLibraryShim.ready) {\r\n try {\r\n await window.__venusLibraryShim.ready();\r\n } catch (error) {\r\n console.error('[Venus Libraries] Shim bootstrap failed:', error);\r\n throw error;\r\n }\r\n} else {\r\n console.warn('[Venus Libraries] No shim found - running without embedded libraries');\r\n}\r\n\r\n// Verify library was loaded\r\nif (!window.__venusLibraryExports || !window.__venusLibraryExports['${lib.libraryKey}']) {\r\n console.error('[Venus Libraries] ${lib.packageName} library not loaded');\r\n console.error('[Venus Libraries] Config:', window.__venusLibrariesConfig);\r\n console.error('[Venus Libraries] Exports:', window.__venusLibraryExports);\r\n throw new Error(\r\n '${lib.packageName} not loaded (${importPath}). Check console for errors.'\r\n );\r\n}\r\n`\r\n\r\n const libVar = `window.__venusLibraryExports['${lib.libraryKey}']`\r\n\r\n switch (spec.behavior) {\r\n case 'react-jsx-runtime':\r\n // react/jsx-runtime - Production JSX transform\r\n return `\r\nconst React = await (async function() {\r\n ${errorCheck}\r\n return ${libVar};\r\n})();\r\n\r\nexport const jsx = React.jsx || function(type, props, key) {\r\n return React.createElement(type, { ...props, key });\r\n};\r\nexport const jsxs = React.jsxs || jsx;\r\nexport const Fragment = React.Fragment;\r\n`\r\n\r\n case 'react-jsx-dev-runtime':\r\n // react/jsx-dev-runtime - Development JSX transform\r\n return `\r\nconst React = await (async function() {\r\n ${errorCheck}\r\n return ${libVar};\r\n})();\r\n\r\nexport const jsxDEV = React.jsxDEV || React.createElement;\r\nexport const Fragment = React.Fragment;\r\n`\r\n\r\n case 'namespace':\r\n // Re-export all named exports (React, ReactDOM, Three.js, etc.)\r\n // For each library, we export the commonly used named exports\r\n let namedExports = ''\r\n if (lib.packageName === 'react') {\r\n namedExports = `\r\nexport const {\r\n createElement, createContext, createRef,\r\n Component, PureComponent, Fragment, StrictMode, Suspense, lazy, forwardRef, memo,\r\n useState, useEffect, useContext, useReducer, useCallback, useMemo, useRef, \r\n useLayoutEffect, useImperativeHandle, useDebugValue, useTransition, useDeferredValue,\r\n Children, cloneElement, isValidElement, version\r\n} = lib;`\r\n } else if (lib.packageName === 'react-dom') {\r\n namedExports = `\r\nexport const { createRoot, hydrateRoot, render, unmountComponentAtNode, findDOMNode, version } = lib;`\r\n } else if (lib.packageName === 'three') {\r\n namedExports = `\r\n// Three.js exports everything on the global THREE object, accessible via default export\r\n// Individual exports can be accessed as: import THREE from 'three'; const { Scene, Camera } = THREE;`\r\n } else {\r\n // For other libraries, they should use default export only\r\n namedExports = ''\r\n }\r\n\r\n return `\r\nconst lib = await (async function() {\r\n ${errorCheck}\r\n return ${libVar};\r\n})();\r\n\r\nexport default lib;\r\n${namedExports}\r\n`\r\n\r\n case 'default':\r\n case undefined:\r\n // Simple default export (Phaser, Matter.js, inkjs, base React, etc.)\r\n return `\r\nconst lib = await (async function() {\r\n ${errorCheck}\r\n return ${libVar};\r\n})();\r\n\r\nexport default lib;\r\n`\r\n\r\n default:\r\n throw new Error(\r\n `Unknown behavior: ${spec.behavior} for ${lib.packageName}. Valid behaviors: default, namespace, react-jsx-runtime, react-jsx-dev-runtime`,\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Vite plugin for Venus embedded libraries system.\r\n *\r\n * This plugin externalizes supported libraries (Phaser, React, Three.js, etc.)\r\n * and loads them from the Venus host on mobile or CDN on web.\r\n *\r\n * By default, libraries are embedded for optimal bundle size.\r\n * Set VENUS_DISABLE_EMBEDDED_LIBS=true to bundle libraries for standalone export.\r\n *\r\n * @example\r\n * ```typescript\r\n * // vite.config.ts\r\n * import { venusLibrariesPlugin } from '@series-inc/venus-sdk/vite';\r\n *\r\n * export default defineConfig({\r\n * plugins: [\r\n * venusLibrariesPlugin({\r\n * appName: 'my-game',\r\n * cdnDir: './cdn',\r\n * }),\r\n * ],\r\n * });\r\n * ```\r\n *\r\n * Default build: npm run build (embedded libraries)\r\n * Standalone export: VENUS_DISABLE_EMBEDDED_LIBS=true npm run build\r\n */\r\nexport function venusLibrariesPlugin(\r\n options: VenusLibrariesPluginOptions = {},\r\n): Plugin {\r\n const cdnDir = path.resolve(options.cdnDir || './cdn')\r\n const debug = options.debug || false\r\n const requiredLibraries = new Set<string>()\r\n let isServe = false\r\n let enabled = false\r\n let appName = options.appName\r\n\r\n return {\r\n name: 'vite-plugin-venus-libraries',\r\n enforce: 'pre', // Run before other plugins to intercept imports\r\n\r\n // 0. Configure Vite build options\r\n config(config: any): void {\r\n if (!enabled) return\r\n\r\n // Remove manualChunks for all library packages (conflicts with virtual modules)\r\n if (!config.build) config.build = {}\r\n if (!config.build.rollupOptions) config.build.rollupOptions = {}\r\n\r\n if (config.build.rollupOptions.output) {\r\n const output = config.build.rollupOptions.output\r\n const outputs = Array.isArray(output) ? output : [output]\r\n\r\n outputs.forEach((o) => {\r\n if (o.manualChunks && typeof o.manualChunks === 'object') {\r\n // Remove all enabled library package names from manualChunks\r\n const chunks = o.manualChunks as Record<string, string[]>\r\n EMBEDDED_LIBRARIES.forEach((lib) => {\r\n if (lib.enabled && chunks[lib.packageName]) {\r\n delete chunks[lib.packageName]\r\n }\r\n })\r\n }\r\n })\r\n }\r\n },\r\n\r\n // Log plugin status\r\n configResolved(config: any): void {\r\n isServe = config.command === 'serve'\r\n // Only enable for production builds, not dev server\r\n // Set VENUS_DISABLE_EMBEDDED_LIBS=true to create standalone bundles with libraries included\r\n enabled = !isServe && process.env.VENUS_DISABLE_EMBEDDED_LIBS !== 'true'\r\n\r\n // Auto-detect app name from folder structure if not provided\r\n // Pattern: /path/to/H5/{app-name}/ → use {app-name}\r\n // If not in H5 structure, CDN serving is disabled (embedded libraries still work)\r\n if (!appName && config.root) {\r\n const rootParts = config.root.split(path.sep)\r\n const h5Index = rootParts.indexOf('H5')\r\n if (h5Index >= 0 && h5Index < rootParts.length - 1) {\r\n appName = rootParts[h5Index + 1]\r\n if (debug) {\r\n console.log(\r\n `[Venus Libraries] Auto-detected app name from folder structure: ${appName}`,\r\n )\r\n }\r\n } else if (debug) {\r\n console.log(\r\n '[Venus Libraries] Not in H5 folder structure - CDN asset serving disabled (embedded libraries still work)',\r\n )\r\n }\r\n }\r\n\r\n if (isServe) {\r\n // Dev mode always bundles for fast HMR\r\n return\r\n }\r\n\r\n // Always log bundled mode (so devs know why bundle is large)\r\n if (!enabled) {\r\n console.log(\r\n '\\n[Venus Libraries] Building with bundled libraries (standalone mode)',\r\n )\r\n }\r\n },\r\n\r\n // 1. Intercept library imports\r\n resolveId(id: string, importer: string | undefined): string | null {\r\n if (!enabled) return null\r\n\r\n // Check if this import matches any enabled library specifier\r\n // MODULE_TO_LIBRARY_SPECIFIERS is already filtered to only include enabled libraries\r\n const match = MODULE_TO_LIBRARY_SPECIFIERS.find((spec) => {\r\n if (spec.match === 'exact') {\r\n return spec.value === id\r\n } else if (spec.match === 'prefix') {\r\n return id.startsWith(spec.value)\r\n }\r\n return false\r\n })\r\n\r\n if (match) {\r\n requiredLibraries.add(match.libraryKey)\r\n const virtualId = `\\0virtual:venus-lib:${match.libraryKey}:${id}`\r\n return virtualId\r\n }\r\n\r\n return null\r\n },\r\n\r\n // 2. Generate virtual module\r\n load(id: string): string | null {\r\n if (!id.startsWith('\\0virtual:venus-lib:')) {\r\n return null\r\n }\r\n\r\n // Parse virtual module ID: '\\0virtual:venus-lib:react@18.3.1:react/jsx-runtime'\r\n const parts = id.split(':')\r\n const libraryKey = parts[2]\r\n const importPath = parts.slice(3).join(':')\r\n\r\n const lib = EMBEDDED_LIBRARY_BY_KEY[libraryKey]\r\n if (!lib) {\r\n const availableKeys = Object.keys(EMBEDDED_LIBRARY_BY_KEY).join(', ')\r\n throw new Error(\r\n `Unknown library: ${libraryKey}. Available libraries: ${availableKeys}`,\r\n )\r\n }\r\n\r\n const spec = lib.moduleSpecifiers.find((s) => s.value === importPath)\r\n if (!spec) {\r\n const validSpecifiers = lib.moduleSpecifiers\r\n .map((s) => s.value)\r\n .join(', ')\r\n throw new Error(\r\n `Unknown module specifier: ${importPath} for ${libraryKey}. Valid specifiers: ${validSpecifiers}`,\r\n )\r\n }\r\n\r\n const virtualModule = generateVirtualModule(lib, spec, importPath)\r\n\r\n return `// Virtual module: ${importPath}\\n${virtualModule}`\r\n },\r\n\r\n // 3. Transform HTML - inject config and shim for web support\r\n transformIndexHtml(html: string): string {\r\n if (!enabled || requiredLibraries.size === 0) {\r\n return html\r\n }\r\n\r\n // Build manifest for config\r\n const manifest: Record<string, any> = {}\r\n requiredLibraries.forEach((libraryKey) => {\r\n const lib = EMBEDDED_LIBRARY_BY_KEY[libraryKey]\r\n manifest[libraryKey] = {\r\n assetKey: lib.assetKey,\r\n cdnPath: lib.cdnPath,\r\n globalVar: lib.globalVar,\r\n loadStage: lib.loadStage,\r\n }\r\n })\r\n\r\n // Inject config + minimal shim for web\r\n // On mobile: Full shim via injectedJavaScriptBeforeContentLoaded (will override this)\r\n // On web: This minimal shim loads from CDN\r\n const embeddedLibsScript = `\r\n<script>\r\n // Set config (may be overridden by Venus host)\r\n if (!window.__venusLibrariesConfig) {\r\n window.__venusLibrariesConfig = {\r\n enabled: true,\r\n required: ${JSON.stringify(Array.from(requiredLibraries))},\r\n manifest: ${JSON.stringify(manifest, null, 2)},\r\n cdnBase: '${DEFAULT_SHARED_LIB_CDN_BASE}',\r\n useHost: false, // Web uses CDN\r\n debug: ${debug}\r\n };\r\n }\r\n \r\n // Minimal shim for web (CDN loading)\r\n if (!window.__venusLibraryShim) {\r\n var bootstrapResolve, bootstrapReject;\r\n var bootstrapPromise = new Promise(function(resolve, reject) {\r\n bootstrapResolve = resolve;\r\n bootstrapReject = reject;\r\n });\r\n \r\n window.__venusLibraryShim = {\r\n ready: function() { return bootstrapPromise; },\r\n __initialized: true\r\n };\r\n \r\n // Auto-load libraries from CDN by stage (respects dependencies)\r\n var config = window.__venusLibrariesConfig;\r\n if (!config.required || config.required.length === 0) {\r\n bootstrapResolve();\r\n } else {\r\n // Group libraries by load stage\r\n var librariesByStage = {};\r\n for (var i = 0; i < config.required.length; i++) {\r\n var libraryKey = config.required[i];\r\n var entry = config.manifest[libraryKey];\r\n var stage = entry.loadStage || 0;\r\n if (!librariesByStage[stage]) librariesByStage[stage] = [];\r\n librariesByStage[stage].push({ libraryKey: libraryKey, entry: entry });\r\n }\r\n \r\n // Load stages sequentially, libraries within each stage in parallel\r\n var stages = Object.keys(librariesByStage).sort(function(a, b) { return parseInt(a, 10) - parseInt(b, 10); });\r\n \r\n (async function loadByStages() {\r\n for (var s = 0; s < stages.length; s++) {\r\n var stage = stages[s];\r\n var libs = librariesByStage[stage];\r\n \r\n // Load all libraries in this stage in parallel\r\n var stagePromises = libs.map(function(lib) {\r\n var base = config.cdnBase || '';\r\n if (!base.endsWith('/')) base += '/';\r\n var path = lib.entry.cdnPath;\r\n if (path.charAt(0) === '/') path = path.substring(1);\r\n var url = base + path;\r\n return fetch(url)\r\n .then(function(r) { return r.text(); })\r\n .then(function(src) {\r\n (new Function(src)).call(window);\r\n if (!window.__venusLibraryExports) window.__venusLibraryExports = {};\r\n window.__venusLibraryExports[lib.libraryKey] = window[lib.entry.globalVar];\r\n });\r\n });\r\n \r\n await Promise.all(stagePromises);\r\n }\r\n })()\r\n .then(function() {\r\n bootstrapResolve();\r\n })\r\n .catch(function(err) {\r\n console.error('[Venus Libraries] Library loading failed:', err);\r\n bootstrapReject(err);\r\n });\r\n }\r\n }\r\n</script>`\r\n\r\n return html.replace('<head>', '<head>' + embeddedLibsScript)\r\n },\r\n\r\n // 4. Serve CDN assets in dev mode (only if in H5 folder structure)\r\n configureServer(server: ViteDevServer): void {\r\n if (!enabled || !appName) {\r\n // CDN serving disabled - either plugin disabled or not in H5 structure\r\n // Embedded libraries still work via CDN URLs in production\r\n return\r\n }\r\n\r\n if (debug) {\r\n console.log(\r\n `[Venus Libraries] Dev server will serve /${appName}/* from ${cdnDir}`,\r\n )\r\n }\r\n\r\n server.middlewares.use(\r\n (\r\n req: Connect.IncomingMessage,\r\n res: ServerResponse,\r\n next: Connect.NextFunction,\r\n ) => {\r\n if (!req.url) return next()\r\n\r\n const urlPath = req.url.split('?')[0]\r\n if (!urlPath.startsWith(`/${appName}/`)) return next()\r\n\r\n const relativePath = urlPath.replace(`/${appName}/`, '')\r\n const filePath = path.join(cdnDir, relativePath)\r\n\r\n if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {\r\n const ext = path.extname(filePath).toLowerCase()\r\n const contentTypes: Record<string, string> = {\r\n '.png': 'image/png',\r\n '.jpg': 'image/jpeg',\r\n '.jpeg': 'image/jpeg',\r\n '.gif': 'image/gif',\r\n '.webp': 'image/webp',\r\n '.mp3': 'audio/mpeg',\r\n '.mp4': 'video/mp4',\r\n '.ogg': 'audio/ogg',\r\n '.wav': 'audio/wav',\r\n '.json': 'application/json',\r\n }\r\n\r\n res.setHeader(\r\n 'Content-Type',\r\n contentTypes[ext] || 'application/octet-stream',\r\n )\r\n res.setHeader('Cache-Control', 'public, max-age=3600')\r\n return res.end(fs.readFileSync(filePath))\r\n }\r\n\r\n next()\r\n },\r\n )\r\n },\r\n\r\n // 5. Emit manifest for debugging\r\n generateBundle(): void {\r\n if (!enabled || requiredLibraries.size === 0) return\r\n\r\n // Build complete manifest with library details\r\n const libraries: Record<string, any> = {}\r\n const libraryNames: string[] = []\r\n let totalSavingsKB = 0\r\n\r\n requiredLibraries.forEach((libraryKey) => {\r\n const lib = EMBEDDED_LIBRARY_BY_KEY[libraryKey]\r\n libraries[libraryKey] = {\r\n assetKey: lib.assetKey,\r\n cdnPath: lib.cdnPath,\r\n globalVar: lib.globalVar,\r\n packageName: lib.packageName,\r\n version: lib.version,\r\n moduleSpecifiers: lib.moduleSpecifiers.map((s) => s.value),\r\n }\r\n\r\n libraryNames.push(lib.packageName)\r\n\r\n // Estimate savings (approximate sizes)\r\n const sizes: Record<string, number> = {\r\n phaser: 1100,\r\n react: 138,\r\n 'react-dom': 42,\r\n three: 600,\r\n 'matter-js': 100,\r\n inkjs: 50,\r\n }\r\n totalSavingsKB += sizes[lib.packageName] || 0\r\n })\r\n\r\n const manifest = {\r\n enabled: true,\r\n required: Array.from(requiredLibraries),\r\n libraries,\r\n cdnBase: DEFAULT_SHARED_LIB_CDN_BASE,\r\n buildTime: new Date().toISOString(),\r\n plugin: '@series-inc/venus-sdk/vite',\r\n }\r\n\r\n this.emitFile({\r\n type: 'asset',\r\n fileName: 'venus-libraries.manifest.json',\r\n source: JSON.stringify(manifest, null, 2),\r\n })\r\n\r\n // Summary log\r\n const libList = libraryNames.join(', ')\r\n const savingsMsg =\r\n totalSavingsKB > 0 ? ` (~${totalSavingsKB}KB saved)` : ''\r\n console.log(\r\n `\\n[Venus Libraries] Using embedded libraries to reduce bundle size: ${libList}${savingsMsg}`,\r\n )\r\n },\r\n }\r\n}\r\n","import path from 'node:path'\r\nimport fs from 'node:fs'\r\nimport { ResolvedConfig } from 'vite'\r\n\r\nexport function cdnPlugin() {\r\n let config: ResolvedConfig;\r\n return {\r\n name: 'remove-dev-assets',\r\n apply: 'build',\r\n\r\n // Hook to capture the resolved config\r\n configResolved(resolvedConfig: ResolvedConfig) {\r\n config = resolvedConfig;\r\n },\r\n\r\n closeBundle() {\r\n const outDir = config.build.outDir;\r\n const devAssetsDir = path.resolve(config.root, outDir, 'cdn');\r\n\r\n if (fs.existsSync(devAssetsDir)) {\r\n fs.rmSync(devAssetsDir, { recursive: true, force: true });\r\n console.log(`[Cleanup] Removed cdn from: ${devAssetsDir}`);\r\n }\r\n }\r\n };\r\n}"]}
|