@@ -887,6 +887,111 @@ describe("test Module", () => {
887
887
game . _startLoadingGlobalAssets ( ) ;
888
888
} ) ;
889
889
890
+ it ( "require - use moduleMainPaths" , done => {
891
+ const moduleMainScripts = gameConfiguration . moduleMainScripts ;
892
+ delete gameConfiguration . moduleMainScripts ;
893
+ gameConfiguration . moduleMainPaths = {
894
+ "node_modules/noPackageJsonModule/package.json" : "node_modules/noPackageJsonModule/hoge.js" ,
895
+ "node_modules/externalResolvedModule/package.json" : "node_modules/externalResolvedModule/index.js"
896
+ } ;
897
+
898
+ const game = new Game ( gameConfiguration , "./" ) ;
899
+ const manager = game . _moduleManager ;
900
+ const path = "/script/dummypath.js" ;
901
+ game . resourceFactory . scriptContents = scriptContents ;
902
+ game . _onLoad . add ( ( ) => {
903
+ const module = new Module ( {
904
+ id : "dummymod" ,
905
+ path,
906
+ virtualPath : game . _assetManager . _liveAssetPathTable [ path ] ,
907
+ runtimeValueBase : game . _runtimeValueBase ,
908
+ requireFunc : ( path : string , currentModule ?: Module ) => manager . _require ( path , currentModule ) ,
909
+ resolveFunc : ( path : string , currentModule ?: Module ) => manager . _resolvePath ( path , currentModule )
910
+ } ) ;
911
+
912
+ let mod = module . require ( "./foo" ) ;
913
+ expect ( mod . me ) . toBe ( "script-foo" ) ;
914
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
915
+ expect ( mod . thisModule . filename ) . toBe ( "/script/foo.js" ) ;
916
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
917
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
918
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
919
+
920
+ mod = module . require ( "noPackageJson" ) ;
921
+ expect ( mod . me ) . toBe ( "noPackageJson-index" ) ;
922
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
923
+ expect ( mod . thisModule . filename ) . toBe ( "/node_modules/noPackageJson/index.js" ) ;
924
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
925
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
926
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
927
+
928
+ mod = module . require ( "noDefaultIndex" ) ;
929
+ expect ( mod . me ) . toBe ( "noDefaultIndex-root" ) ;
930
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
931
+ expect ( mod . thisModule . filename ) . toBe ( "/node_modules/noDefaultIndex/root.js" ) ;
932
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
933
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
934
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
935
+
936
+ mod = module . require ( "wrongPackageJsonMain" ) ;
937
+ expect ( mod . me ) . toBe ( "wrongPackageJsonMain-index" ) ;
938
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
939
+ expect ( mod . thisModule . filename ) . toBe ( "/node_modules/wrongPackageJsonMain/index.js" ) ;
940
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
941
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
942
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
943
+
944
+ mod = module . require ( "aGlobalAssetFoo" ) ;
945
+ expect ( mod . me ) . toBe ( "script-foo" ) ;
946
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
947
+ expect ( mod . thisModule . filename ) . toBe ( "/script/foo.js" ) ;
948
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
949
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
950
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
951
+
952
+ mod = module . require ( "noPackageJsonModule" ) ;
953
+ expect ( mod . me ) . toBe ( "noPackageJsonModule" ) ;
954
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
955
+ expect ( mod . thisModule . filename ) . toBe ( "/node_modules/noPackageJsonModule/real_hoge.js" ) ;
956
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
957
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
958
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
959
+
960
+ expect ( ( ) => {
961
+ module . require ( "aNonGlobalAssetBar" ) ;
962
+ } ) . toThrowError ( "AssertionError" ) ;
963
+ const scene = new Scene ( {
964
+ game : game ,
965
+ assetIds : [ "aNonGlobalAssetBar" ]
966
+ } ) ;
967
+ scene . onLoad . add ( ( ) => {
968
+ let mod = module . require ( "aNonGlobalAssetBar" ) ;
969
+ expect ( mod . me ) . toBe ( "script-bar" ) ;
970
+ expect ( mod . thisModule instanceof Module ) . toBe ( true ) ;
971
+ expect ( mod . thisModule . filename ) . toBe ( "/script/bar.js" ) ;
972
+ expect ( mod . thisModule . parent ) . toBe ( module ) ;
973
+ expect ( mod . thisModule . children ) . toEqual ( [ ] ) ;
974
+ expect ( mod . thisModule . loaded ) . toBe ( true ) ;
975
+
976
+ mod = module . require ( "./bar" ) ;
977
+ expect ( mod . me ) . toBe ( "script-bar" ) ;
978
+
979
+ game . popScene ( ) ;
980
+ game . _flushPostTickTasks ( ) ;
981
+ expect ( ( ) => {
982
+ module . require ( "aNonGlobalAssetBar" ) ;
983
+ } ) . toThrowError ( "AssertionError" ) ;
984
+
985
+ gameConfiguration . moduleMainScripts = moduleMainScripts ;
986
+ delete gameConfiguration . moduleMainPaths ;
987
+ done ( ) ;
988
+ } ) ;
989
+ game . pushScene ( scene ) ;
990
+ game . _flushPostTickTasks ( ) ;
991
+ } ) ;
992
+ game . _startLoadingGlobalAssets ( ) ;
993
+ } ) ;
994
+
890
995
it ( "_resolvePath" , done => {
891
996
const game = new Game ( gameConfiguration , "/" ) ;
892
997
const manager = game . _moduleManager ;
0 commit comments