@babylonjs/smart-filters 0.2.0-alpha → 0.3.1-alpha

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.
Files changed (108) hide show
  1. package/dist/blocks/baseBlock.d.ts +1 -1
  2. package/dist/blocks/baseBlock.d.ts.map +1 -1
  3. package/dist/blocks/baseBlock.js +1 -1
  4. package/dist/blocks/baseBlock.js.map +1 -1
  5. package/dist/blocks/copyBlock.d.ts +2 -3
  6. package/dist/blocks/copyBlock.d.ts.map +1 -1
  7. package/dist/blocks/copyBlock.js +4 -24
  8. package/dist/blocks/copyBlock.js.map +1 -1
  9. package/dist/blocks/copyBlock.shader.d.ts +13 -0
  10. package/dist/blocks/copyBlock.shader.d.ts.map +1 -0
  11. package/dist/blocks/copyBlock.shader.js +34 -0
  12. package/dist/blocks/copyBlock.shader.js.map +1 -0
  13. package/dist/blocks/inputBlock.d.ts +41 -5
  14. package/dist/blocks/inputBlock.d.ts.map +1 -1
  15. package/dist/blocks/inputBlock.deserializer.d.ts +14 -0
  16. package/dist/blocks/inputBlock.deserializer.d.ts.map +1 -0
  17. package/dist/blocks/inputBlock.deserializer.js +46 -0
  18. package/dist/blocks/inputBlock.deserializer.js.map +1 -0
  19. package/dist/blocks/inputBlock.js +16 -6
  20. package/dist/blocks/inputBlock.js.map +1 -1
  21. package/dist/blocks/inputBlock.serialization.types.d.ts +74 -0
  22. package/dist/blocks/inputBlock.serialization.types.d.ts.map +1 -0
  23. package/dist/blocks/inputBlock.serialization.types.js +2 -0
  24. package/dist/blocks/inputBlock.serialization.types.js.map +1 -0
  25. package/dist/blocks/inputBlock.serializer.d.ts +6 -0
  26. package/dist/blocks/inputBlock.serializer.d.ts.map +1 -0
  27. package/dist/blocks/inputBlock.serializer.js +115 -0
  28. package/dist/blocks/inputBlock.serializer.js.map +1 -0
  29. package/dist/index.d.ts +2 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/serialization/index.d.ts +5 -0
  34. package/dist/serialization/index.d.ts.map +1 -0
  35. package/dist/serialization/index.js +5 -0
  36. package/dist/serialization/index.js.map +1 -0
  37. package/dist/serialization/serializedSmartFilter.d.ts +6 -0
  38. package/dist/serialization/serializedSmartFilter.d.ts.map +1 -0
  39. package/dist/serialization/serializedSmartFilter.js +2 -0
  40. package/dist/serialization/serializedSmartFilter.js.map +1 -0
  41. package/dist/serialization/smartFilterDeserializer.d.ts +25 -0
  42. package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -0
  43. package/dist/serialization/smartFilterDeserializer.js +90 -0
  44. package/dist/serialization/smartFilterDeserializer.js.map +1 -0
  45. package/dist/serialization/smartFilterSerializer.d.ts +23 -0
  46. package/dist/serialization/smartFilterSerializer.d.ts.map +1 -0
  47. package/dist/serialization/smartFilterSerializer.js +91 -0
  48. package/dist/serialization/smartFilterSerializer.js.map +1 -0
  49. package/dist/serialization/v1/defaultBlockSerializer.d.ts +9 -0
  50. package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -0
  51. package/dist/serialization/v1/defaultBlockSerializer.js +16 -0
  52. package/dist/serialization/v1/defaultBlockSerializer.js.map +1 -0
  53. package/dist/serialization/v1/index.d.ts +3 -0
  54. package/dist/serialization/v1/index.d.ts.map +1 -0
  55. package/dist/serialization/v1/index.js +3 -0
  56. package/dist/serialization/v1/index.js.map +1 -0
  57. package/dist/serialization/v1/serialization.types.d.ts +83 -0
  58. package/dist/serialization/v1/serialization.types.d.ts.map +1 -0
  59. package/dist/serialization/v1/serialization.types.js +2 -0
  60. package/dist/serialization/v1/serialization.types.js.map +1 -0
  61. package/dist/smartFilter.d.ts +2 -2
  62. package/dist/smartFilter.d.ts.map +1 -1
  63. package/dist/smartFilter.js +9 -6
  64. package/dist/smartFilter.js.map +1 -1
  65. package/dist/utils/buildTools/determineVersion.d.ts +36 -0
  66. package/dist/utils/buildTools/determineVersion.d.ts.map +1 -0
  67. package/dist/utils/buildTools/determineVersion.js +109 -0
  68. package/dist/utils/buildTools/determineVersion.js.map +1 -0
  69. package/dist/utils/buildTools/shaderConverter.d.ts +2 -0
  70. package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -0
  71. package/dist/utils/buildTools/shaderConverter.js +277 -0
  72. package/dist/utils/buildTools/shaderConverter.js.map +1 -0
  73. package/dist/utils/buildTools/versionUp.d.ts +2 -0
  74. package/dist/utils/buildTools/versionUp.d.ts.map +1 -0
  75. package/dist/utils/buildTools/versionUp.js +45 -0
  76. package/dist/utils/buildTools/versionUp.js.map +1 -0
  77. package/dist/utils/textureLoaders.d.ts +3 -1
  78. package/dist/utils/textureLoaders.d.ts.map +1 -1
  79. package/dist/utils/textureLoaders.js +3 -2
  80. package/dist/utils/textureLoaders.js.map +1 -1
  81. package/dist/utils/uniqueIdGenerator.d.ts +19 -0
  82. package/dist/utils/uniqueIdGenerator.d.ts.map +1 -0
  83. package/dist/utils/uniqueIdGenerator.js +27 -0
  84. package/dist/utils/uniqueIdGenerator.js.map +1 -0
  85. package/package.json +11 -6
  86. package/readme.md +12 -0
  87. package/src/blocks/baseBlock.ts +2 -3
  88. package/src/blocks/copyBlock.fragment.glsl +5 -0
  89. package/src/blocks/copyBlock.shader.ts +36 -0
  90. package/src/blocks/copyBlock.ts +4 -29
  91. package/src/blocks/inputBlock.deserializer.ts +60 -0
  92. package/src/blocks/inputBlock.serialization.types.ts +95 -0
  93. package/src/blocks/inputBlock.serializer.ts +132 -0
  94. package/src/blocks/inputBlock.ts +51 -7
  95. package/src/index.ts +2 -1
  96. package/src/serialization/index.ts +4 -0
  97. package/src/serialization/serializedSmartFilter.ts +6 -0
  98. package/src/serialization/smartFilterDeserializer.ts +127 -0
  99. package/src/serialization/smartFilterSerializer.ts +113 -0
  100. package/src/serialization/v1/defaultBlockSerializer.ts +18 -0
  101. package/src/serialization/v1/index.ts +2 -0
  102. package/src/serialization/v1/serialization.types.ts +108 -0
  103. package/src/smartFilter.ts +10 -8
  104. package/src/utils/buildTools/determineVersion.ts +127 -0
  105. package/src/utils/buildTools/shaderConverter.ts +399 -0
  106. package/src/utils/buildTools/versionUp.ts +52 -0
  107. package/src/utils/textureLoaders.ts +18 -3
  108. package/src/utils/uniqueIdGenerator.ts +28 -0
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAQ3E;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;;OAGG;IACI,UAAU,EAAE,GAAG,CAAQ;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAwB9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAkB7D"}
1
+ {"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAwB9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
@@ -25,7 +25,6 @@ export class SmartFilter {
25
25
  this.comments = null;
26
26
  /**
27
27
  * Data used by the smart filter editor.
28
- * TODO. strong type and hide this.
29
28
  */
30
29
  this.editorData = null;
31
30
  this.name = name;
@@ -143,11 +142,15 @@ export class SmartFilter {
143
142
  block._mergeIntoSmartFilter(mergedAggregateBlocks);
144
143
  }
145
144
  });
146
- // Do the passed in work
147
- work();
148
- // Restore all aggregate blocks
149
- for (const block of mergedAggregateBlocks) {
150
- block._unmergeFromSmartFilter();
145
+ try {
146
+ // Do the passed in work
147
+ work();
148
+ }
149
+ finally {
150
+ // Restore all aggregate blocks, even if work throws
151
+ for (const block of mergedAggregateBlocks) {
152
+ block._unmergeFromSmartFilter();
153
+ }
151
154
  }
152
155
  }
153
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D;;GAEG;AACH,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAsBpC;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IA0BpB;;;OAGG;IACH,YAAY,IAAY;QAjBxB;;WAEG;QACI,aAAQ,GAAqB,IAAI,CAAC;QAEzC;;WAEG;QACI,eAAU,GAA0B,IAAI,CAAC;QAU5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,EAAa,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,aAAa,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,KAAgB;QACjC,yDAAyD;QACzD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO;QACX,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,KAAgB;QAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE/D,8DAA8D;QAC9D,4CAA4C;QAC5C,IAAI,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7C,+CAA+C;YAC/C,KAAK,CAAC,UAAU,EAAE,CAAC;YAEnB,qDAAqD;YACrD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAEO,sCAAsC,CAAC,kBAAsC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QAEtC,WAAW,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAgB,EAAE,kBAAsC,EAAE,EAAE;;YAC/F,oCAAoC;YACpC,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACxB,yEAAyE;gBACzE,yFAAyF;gBACzF,sBAAsB;gBACtB,0FAA0F;gBAC1F,wCAAwC;gBACxC,IAAI,MAAA,WAAW,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,CAAC,OAAO,EAAE,CAAC;oBACpD,KAAK,CAAC,qCAAqC,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;gBAC1E,CAAC;gBACD,OAAO;YACX,CAAC;YAED,KAAK,CAAC,qCAAqC,CACvC,kBAAkB,EAClB,CAAA,MAAA,WAAW,CAAC,KAAK,CAAC,WAAW,0CAAE,UAAU,MAAK,KAAK,CACtD,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kBAAkB,CAC3B,MAAkB,EAClB,qBAA6C;QAE7C,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,kBAAkB,GAAuB;YAC3C,OAAO;YACP,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,sBAAsB,EAAE,EAAE;SAC7B,CAAC;QAEF,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YAEtC,qBAAqB,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClF,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAElE,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;YAEzC,IAAI,CAAC,sCAAsC,CAAC,kBAAkB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,kBAAkB,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;YAClG,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACxG,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC;YAC9E,IAAI,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,2BAA2B,CAAC,IAAgB;QAC/C,MAAM,qBAAqB,GAAqB,EAAE,CAAC;QAEnD,6BAA6B;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAgB,EAAE,UAAkB,EAAE,EAAE;YACjE,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBAClC,KAAK,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;YACvD,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,wBAAwB;YACxB,IAAI,EAAE,CAAC;QACX,CAAC;gBAAS,CAAC;YACP,oDAAoD;YACpD,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;gBACxC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,36 @@
1
+ import type { Nullable } from "@babylonjs/core/types";
2
+ import type { ExecException } from "child_process";
3
+ /**
4
+ * Takes in a semver string (e.g. "0.1.0" or "0.1.0-alpha") and removes any prerelease flag.
5
+ * @param version - The semver string to operate on
6
+ * @returns The version string with the prerelease flag removed
7
+ */
8
+ export declare function removePrereleaseFlags(version: string): string;
9
+ /**
10
+ * Given the npmVersion, packageJSONVersion, and alpha flag, determines the version to use
11
+ * @param npmVersion - The version from the NPM registry
12
+ * @param packageJSONVersion - The version from the package.json file
13
+ * @param alpha - A flag to indicate if the version should have an alpha prerelease flag
14
+ * @returns The version to use
15
+ */
16
+ export declare function determineVersion(npmVersion: Nullable<string>, packageJSONVersion: string, alpha: boolean): string;
17
+ /**
18
+ * The supported version types
19
+ */
20
+ export type VersionType = "preview" | "latest";
21
+ /**
22
+ * Handles error cases and returns the JSON of the package versions
23
+ * @param versionType - The type of version to get
24
+ * @param err - The error object
25
+ * @param stdout - The stdout string
26
+ * @returns The JSON of the package versions
27
+ */
28
+ export declare function getNpmVersion(versionType: VersionType, err: Nullable<ExecException>, stdout: string): Nullable<string>;
29
+ /**
30
+ * Compares two semver strings, returning -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
31
+ * @param version1 - The first semver string
32
+ * @param version2 - The second semver string
33
+ * @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
34
+ */
35
+ export declare function compareVersions(version1: string, version2: string): number;
36
+ //# sourceMappingURL=determineVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"determineVersion.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/determineVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA6BnD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAmBjH;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,aAAa,CACzB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC5B,MAAM,EAAE,MAAM,GACf,QAAQ,CAAC,MAAM,CAAC,CAWlB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB1E"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Determines if the major and minor versions of two semver strings match
3
+ * @param version1 - The first semver string
4
+ * @param version2 - The second semver string
5
+ * @returns True if the major and minor versions match, false otherwise
6
+ */
7
+ function majorAndMinorVersionsMatch(version1, version2) {
8
+ const version1split = version1.split(".");
9
+ const version2split = version2.split(".");
10
+ return version1split[0] === version2split[0] && version1split[1] === version2split[1];
11
+ }
12
+ /**
13
+ * Takes in a semver string (e.g. "0.1.0") and increments the patch version.
14
+ * Note: it does not preserve any prerelease flags in the patch version.
15
+ * @param version - The semver string to operate on
16
+ * @returns The incremented version string
17
+ */
18
+ function incrementPatchVersion(version) {
19
+ const spl = version.split(".");
20
+ if (spl.length < 3) {
21
+ throw new Error("version string must have at least 3 parts");
22
+ }
23
+ spl[spl.length - 1] = (Number.parseInt(spl[spl.length - 1]) + 1).toString();
24
+ return spl.join(".");
25
+ }
26
+ /**
27
+ * Takes in a semver string (e.g. "0.1.0" or "0.1.0-alpha") and removes any prerelease flag.
28
+ * @param version - The semver string to operate on
29
+ * @returns The version string with the prerelease flag removed
30
+ */
31
+ export function removePrereleaseFlags(version) {
32
+ const spl = version.split(".");
33
+ if (spl.length < 3) {
34
+ throw new Error("version string must have at least 3 parts");
35
+ }
36
+ spl[spl.length - 1] = Number.parseInt(spl[spl.length - 1]).toString();
37
+ return spl.join(".");
38
+ }
39
+ /**
40
+ * Given the npmVersion, packageJSONVersion, and alpha flag, determines the version to use
41
+ * @param npmVersion - The version from the NPM registry
42
+ * @param packageJSONVersion - The version from the package.json file
43
+ * @param alpha - A flag to indicate if the version should have an alpha prerelease flag
44
+ * @returns The version to use
45
+ */
46
+ export function determineVersion(npmVersion, packageJSONVersion, alpha) {
47
+ packageJSONVersion = removePrereleaseFlags(packageJSONVersion);
48
+ npmVersion = npmVersion === null ? null : removePrereleaseFlags(npmVersion);
49
+ let versionToUse;
50
+ if (npmVersion === null || !majorAndMinorVersionsMatch(npmVersion, packageJSONVersion)) {
51
+ console.log("Major & minor versions do not match: using the current package.json version");
52
+ versionToUse = packageJSONVersion;
53
+ }
54
+ else {
55
+ console.log("Major & minor versions match: using the NPM registry version with an incremented patch version.");
56
+ versionToUse = incrementPatchVersion(npmVersion);
57
+ }
58
+ if (alpha) {
59
+ console.log("Ensuring -alpha prerelease flag is present");
60
+ versionToUse += "-alpha";
61
+ }
62
+ return versionToUse;
63
+ }
64
+ /**
65
+ * Handles error cases and returns the JSON of the package versions
66
+ * @param versionType - The type of version to get
67
+ * @param err - The error object
68
+ * @param stdout - The stdout string
69
+ * @returns The JSON of the package versions
70
+ */
71
+ export function getNpmVersion(versionType, err, stdout) {
72
+ let npmVersion = null;
73
+ if ((err === null || err === void 0 ? void 0 : err.message) && err.message.indexOf("E404") !== -1) {
74
+ console.warn(`NPM registry does not have any ${versionType} version`);
75
+ }
76
+ else if (err) {
77
+ console.error(err);
78
+ throw err;
79
+ }
80
+ else {
81
+ npmVersion = stdout;
82
+ }
83
+ return npmVersion;
84
+ }
85
+ /**
86
+ * Compares two semver strings, returning -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
87
+ * @param version1 - The first semver string
88
+ * @param version2 - The second semver string
89
+ * @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
90
+ */
91
+ export function compareVersions(version1, version2) {
92
+ const version1split = removePrereleaseFlags(version1).split(".");
93
+ const version2split = removePrereleaseFlags(version2).split(".");
94
+ if (version1split.length !== 3 || version2split.length !== 3) {
95
+ throw new Error("version strings must have 3 parts");
96
+ }
97
+ for (let i = 0; i < 3; i++) {
98
+ const v1 = Number.parseInt(version1split[i]);
99
+ const v2 = Number.parseInt(version2split[i]);
100
+ if (v1 < v2) {
101
+ return -1;
102
+ }
103
+ else if (v1 > v2) {
104
+ return 1;
105
+ }
106
+ }
107
+ return 0;
108
+ }
109
+ //# sourceMappingURL=determineVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"determineVersion.js","sourceRoot":"","sources":["../../../src/utils/buildTools/determineVersion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shaderConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,277 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ const TYPE_IMPORT_PATH = "@TYPE_IMPORT_PATH@";
4
+ const VERTEX_SHADER = "@VERTEX_SHADER@";
5
+ const UNIFORMS = "@UNIFORMS@";
6
+ const CONSTS_VALUE = "@CONSTS@";
7
+ const CONSTS_PROPERTY = "@CONSTS_PROPERTY@";
8
+ const MAIN_INPUT_NAME = "@MAIN_INPUT_NAME@";
9
+ const MAIN_FUNCTION_NAME = "@MAIN_FUNCTION_NAME@";
10
+ const FUNCTIONS = "@FUNCTIONS@";
11
+ const FUNCTION_NAME = "@FUNCTION_NAME@";
12
+ const FUNCTION_CODE = "@FUNCTION_CODE@";
13
+ const UNIFORM_NAMES = "@UNIFORM_NAMES@";
14
+ const ConstsTemplate = `
15
+ const: \`${CONSTS_VALUE}\`,`;
16
+ const FunctionTemplate = `
17
+ {
18
+ name: "${FUNCTION_NAME}",
19
+ code: \`
20
+ ${FUNCTION_CODE}
21
+ \`,
22
+ },`;
23
+ const CodeLinePrefix = " ";
24
+ const UniformLinePrefix = " ";
25
+ const ConstLinePrefix = " ";
26
+ const ShaderTemplate = `import type { ShaderProgram } from "${TYPE_IMPORT_PATH}";
27
+
28
+ /**
29
+ * The shader program for the block.
30
+ */
31
+ export const shaderProgram: ShaderProgram = {
32
+ vertex: ${VERTEX_SHADER},
33
+ fragment: {
34
+ uniform: \`${UNIFORMS}
35
+ uniform bool _disabled_;\`,${CONSTS_PROPERTY}
36
+ mainInputTexture: "${MAIN_INPUT_NAME}",
37
+ mainFunctionName: "${MAIN_FUNCTION_NAME}",
38
+ functions: [${FUNCTIONS}
39
+ ],
40
+ },
41
+ };
42
+
43
+ /**
44
+ * The uniform names for this shader, to be used in the shader binding so
45
+ * that the names are always in sync.
46
+ */
47
+ export const uniforms = {
48
+ ${UNIFORM_NAMES}
49
+ };
50
+ `;
51
+ const UniformNameLinePrefix = " ";
52
+ const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
53
+ /**
54
+ * Converts a single shader
55
+ * @param fragmentShaderPath - The path to the fragment file for the shader
56
+ * @param importPath - The path to import the ShaderProgram type from
57
+ */
58
+ function convertShader(fragmentShaderPath, importPath) {
59
+ console.log(`Processing fragment shader: ${fragmentShaderPath}`);
60
+ // See if there is a corresponding vertex shader
61
+ let vertexShader = undefined;
62
+ const vertexShaderPath = fragmentShaderPath.replace(".fragment.glsl", ".vertex.glsl");
63
+ if (fs.existsSync(vertexShaderPath)) {
64
+ vertexShader = fs.readFileSync(vertexShaderPath, "utf8");
65
+ }
66
+ if (vertexShader) {
67
+ console.log("Found vertex shader");
68
+ }
69
+ // Read the fragment shader
70
+ const fragmentShader = fs.readFileSync(fragmentShaderPath, "utf8");
71
+ // Version check
72
+ const versionsFound = [...fragmentShader.matchAll(/\/\/\s+\[Smart Filter Shader Version\]\s*=\s*(\d+)/g)].map((match) => match[1]);
73
+ let version = 1;
74
+ if (versionsFound.length === 1 && versionsFound[0]) {
75
+ version = parseInt(versionsFound[0]);
76
+ }
77
+ console.log(`Shader version: ${version}`);
78
+ let fragmentShaderInfo;
79
+ switch (version) {
80
+ case 1:
81
+ {
82
+ fragmentShaderInfo = processFragmentShaderV1(fragmentShader);
83
+ }
84
+ break;
85
+ default: {
86
+ throw new Error(`Unsupported shader version: ${version}`);
87
+ }
88
+ }
89
+ // Write the shader TS file
90
+ const shaderFile = fragmentShaderPath.replace(".fragment.glsl", ".shader.ts");
91
+ const finalContents = ShaderTemplate.replace(VERTEX_SHADER, vertexShader ? `\`${vertexShader}\`` : "undefined")
92
+ .replace(TYPE_IMPORT_PATH, importPath)
93
+ .replace(UNIFORMS, "\n" + addLinePrefixes(fragmentShaderInfo.finalUniforms.join("\n"), UniformLinePrefix))
94
+ .replace(MAIN_FUNCTION_NAME, fragmentShaderInfo.mainFunctionName)
95
+ .replace(MAIN_INPUT_NAME, fragmentShaderInfo.mainInputName)
96
+ .replace(CONSTS_PROPERTY, fragmentShaderInfo.finalConsts.length > 0
97
+ ? ConstsTemplate.replace(CONSTS_VALUE, addLinePrefixes(fragmentShaderInfo.finalConsts.join("\n"), ConstLinePrefix))
98
+ : "")
99
+ .replace(FUNCTIONS, fragmentShaderInfo.extractedFunctions.join(""))
100
+ .replace(UNIFORM_NAMES, addLinePrefixes(fragmentShaderInfo.uniformNames.join("\n"), UniformNameLinePrefix));
101
+ fs.writeFileSync(shaderFile, finalContents);
102
+ }
103
+ /**
104
+ * Processes a fragment shader
105
+ * @param fragmentShader - The fragment shader to process
106
+ * @returns The processed fragment shader
107
+ */
108
+ function processFragmentShaderV1(fragmentShader) {
109
+ const fragmentShaderWithNoFunctionBodies = removeFunctionBodies(fragmentShader);
110
+ // Collect uniform, const, and function names which need to be decorated
111
+ // eslint-disable-next-line prettier/prettier
112
+ const uniforms = [...fragmentShader.matchAll(/\S*uniform.*\s(\w*);/g)].map((match) => match[1]);
113
+ console.log(`Uniforms found: ${JSON.stringify(uniforms)}`);
114
+ const consts = [...fragmentShader.matchAll(/\S*const\s+\w*\s+(\w*)\s*=.*;/g)].map((match) => match[1]);
115
+ console.log(`Consts found: ${JSON.stringify(consts)}`);
116
+ const functionNames = [...fragmentShaderWithNoFunctionBodies.matchAll(GetFunctionNamesRegEx)].map((match) => match[1]);
117
+ console.log(`Functions found: ${JSON.stringify(functionNames)}`);
118
+ // Decorate the uniforms, consts, and functions
119
+ const symbolsToDecorate = [...uniforms, ...consts, ...functionNames];
120
+ let fragmentShaderWithRenamedSymbols = fragmentShader;
121
+ for (const symbol of symbolsToDecorate) {
122
+ const regex = new RegExp(`(\\S*(?:\\s|;|,|\\)|\\()+)${symbol}((\\s|;|,|\\)|\\()+)`, "gs");
123
+ fragmentShaderWithRenamedSymbols = fragmentShaderWithRenamedSymbols.replace(regex, `$1_${symbol}_$2`);
124
+ }
125
+ console.log(`${symbolsToDecorate.length} symbol(s) renamed`);
126
+ const uniformNames = uniforms.map((uniform) => `${uniform}: "${uniform}",`);
127
+ // Extract all the uniforms
128
+ const finalUniforms = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(uniform\s.*)/gm)].map((match) => match[1]);
129
+ // Extract all the consts
130
+ const finalConsts = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(const\s.*)/gm)].map((match) => match[1]);
131
+ // Find the main input
132
+ const mainInputs = [...fragmentShaderWithRenamedSymbols.matchAll(/\S*uniform.*\s(\w*);\s*\/\/\s*main/gm)].map((match) => match[1]);
133
+ if (mainInputs.length !== 1 || !mainInputs[0]) {
134
+ throw new Error("Exactly one main input must be defined in the shader");
135
+ }
136
+ const mainInputName = mainInputs[0];
137
+ // Extract all the functions
138
+ const { extractedFunctions, mainFunctionName } = extractFunctions(fragmentShaderWithRenamedSymbols, mainInputName);
139
+ return {
140
+ finalUniforms,
141
+ mainFunctionName,
142
+ mainInputName,
143
+ finalConsts,
144
+ extractedFunctions,
145
+ uniformNames,
146
+ };
147
+ }
148
+ /**
149
+ * Prefixes each line in the input
150
+ * @param input - The input string
151
+ * @param prefix - The prefix to add to each line
152
+ * @returns The input with each line prefixed
153
+ */
154
+ function addLinePrefixes(input, prefix) {
155
+ return input
156
+ .split("\n")
157
+ .map((line) => prefix + line)
158
+ .join("\n");
159
+ }
160
+ /**
161
+ * Extracts all the functions from the shader
162
+ * @param fragment - The shader code to process
163
+ * @param mainInputName - The name of the main input
164
+ * @returns A list of functions
165
+ */
166
+ function extractFunctions(fragment, mainInputName) {
167
+ const lines = fragment.split("\n");
168
+ const extractedFunctions = [];
169
+ let mainFunctionName;
170
+ let inFunction = false;
171
+ let depth = 0;
172
+ let currentFunction = "";
173
+ for (const line of lines) {
174
+ if (!inFunction && line.includes("{")) {
175
+ inFunction = true;
176
+ }
177
+ if (inFunction) {
178
+ currentFunction += line + "\n";
179
+ }
180
+ for (let pos = 0; pos < line.length; pos++) {
181
+ if (line[pos] === "{") {
182
+ depth++;
183
+ }
184
+ else if (line[pos] === "}") {
185
+ depth--;
186
+ }
187
+ }
188
+ if (inFunction && depth === 0) {
189
+ inFunction = false;
190
+ const { functionBody, functionName, isMainFunction } = processFunctionBody(currentFunction);
191
+ let body = functionBody;
192
+ if (isMainFunction) {
193
+ body = functionBody.replace("{", `{\n if (_disabled_) return texture2D(${mainInputName}, vUV);\n`);
194
+ }
195
+ extractedFunctions.push(FunctionTemplate.replace(FUNCTION_NAME, functionName).replace(FUNCTION_CODE, addLinePrefixes(body, CodeLinePrefix)));
196
+ if (isMainFunction) {
197
+ if (mainFunctionName) {
198
+ throw new Error("Multiple main functions found in shader code");
199
+ }
200
+ mainFunctionName = functionName;
201
+ }
202
+ currentFunction = "";
203
+ }
204
+ }
205
+ if (!mainFunctionName) {
206
+ throw new Error("No main function found in shader code");
207
+ }
208
+ return { extractedFunctions, mainFunctionName };
209
+ }
210
+ /**
211
+ * Creates code for a ShaderFunction instance from the body of a function
212
+ * @param functionBody - The body of the function
213
+ * @returns The body, name, and whether the function is the main function
214
+ */
215
+ function processFunctionBody(functionBody) {
216
+ // Extract the function name
217
+ const functionNamesFound = [...functionBody.matchAll(GetFunctionNamesRegEx)].map((match) => match[1]);
218
+ const functionName = functionNamesFound[0];
219
+ if (!functionName) {
220
+ throw new Error("No function name found in shader code");
221
+ }
222
+ const isMainFunction = functionBody.includes("// main");
223
+ return { functionBody, functionName, isMainFunction };
224
+ }
225
+ /**
226
+ * Removes all function bodies from the shader code, leaving just curly braces behind at the top level
227
+ * @param input - The shader code to process
228
+ * @returns The shader code with all function bodies removed
229
+ */
230
+ function removeFunctionBodies(input) {
231
+ let output = "";
232
+ let depth = 0;
233
+ for (let pos = 0; pos < input.length; pos++) {
234
+ if (input[pos] === "{") {
235
+ depth++;
236
+ // Special case - if we just hit the first { then include it
237
+ if (depth === 1) {
238
+ output += "{";
239
+ }
240
+ }
241
+ else if (input[pos] === "}") {
242
+ depth--;
243
+ // Special case - if we just hit the last } then include it
244
+ if (depth === 0) {
245
+ output += "}";
246
+ }
247
+ }
248
+ else if (depth === 0) {
249
+ output += input[pos];
250
+ }
251
+ }
252
+ if (depth !== 0) {
253
+ console.error("Unbalanced curly braces in shader code");
254
+ }
255
+ return output;
256
+ }
257
+ /**
258
+ * Converts .fragment.glsl and vertex.glsl file pairs into .shader.ts files which export a ShaderProgram object.
259
+ * @param shaderPath - The path to the .glsl files to convert.
260
+ * @param importPath - The path to import the ShaderProgram type from.
261
+ */
262
+ function convertShaders(shaderPath, importPath) {
263
+ // Get all files in the path
264
+ const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
265
+ // Find all fragment shaders (excluding the template)
266
+ const fragmentShaderFiles = allFiles.filter((file) => file.isFile() && file.name.endsWith(".fragment.glsl") && !file.name.endsWith("template.fragment.glsl"));
267
+ // Convert all shaders
268
+ for (const fragmentShaderFile of fragmentShaderFiles) {
269
+ convertShader(path.join(fragmentShaderFile.path, fragmentShaderFile.name), importPath);
270
+ }
271
+ }
272
+ const externalArguments = process.argv.slice(2);
273
+ if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1]) {
274
+ convertShaders(externalArguments[0], externalArguments[1]);
275
+ }
276
+ // TODO: simple copy from shader file to .ts, get it to build (including import trick)
277
+ //# sourceMappingURL=shaderConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=versionUp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionUp.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/versionUp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import * as fs from "fs";
2
+ import { exec } from "child_process";
3
+ import { compareVersions, determineVersion, getNpmVersion } from "./determineVersion.js";
4
+ const alpha = process.argv.includes("--alpha");
5
+ const packageText = fs.readFileSync("package.json");
6
+ const packageJSON = JSON.parse(packageText.toString());
7
+ const packageName = packageJSON.name;
8
+ console.log("Processing package:", packageName);
9
+ console.log("Alpha flag:", alpha);
10
+ console.log("Current package.json version:", packageJSON.version);
11
+ /**
12
+ * Queries the NPM registry for the specified version type
13
+ * @param versionType - The type of version to query
14
+ * @param callback - The callback to call with the NPM version
15
+ */
16
+ function queryNpmFeed(versionType, callback) {
17
+ exec(`npm view ${packageName} dist-tags.${versionType}`, (err, stdout) => {
18
+ let npmVersion = getNpmVersion(versionType, err, stdout);
19
+ if (npmVersion !== null) {
20
+ npmVersion = npmVersion.trim();
21
+ console.log(`NPM Registry ${versionType} version:`, npmVersion);
22
+ }
23
+ callback(npmVersion);
24
+ });
25
+ }
26
+ queryNpmFeed("preview", (npmPreviewVersion) => {
27
+ queryNpmFeed("latest", (npmLatestVersion) => {
28
+ let highestNpmVersion = npmLatestVersion;
29
+ if (npmPreviewVersion && (!highestNpmVersion || compareVersions(npmPreviewVersion, highestNpmVersion) === 1)) {
30
+ highestNpmVersion = npmPreviewVersion;
31
+ }
32
+ console.log("Highest NPM Registry version:", highestNpmVersion);
33
+ const versionToUse = determineVersion(highestNpmVersion, packageJSON.version, alpha);
34
+ console.log("Version to use:", versionToUse);
35
+ if (packageJSON.version !== versionToUse) {
36
+ packageJSON.version = versionToUse;
37
+ fs.writeFileSync("package.json", JSON.stringify(packageJSON, null, 4));
38
+ console.log("Version updated in package.json");
39
+ }
40
+ else {
41
+ console.log("No need to update package.json");
42
+ }
43
+ });
44
+ });
45
+ //# sourceMappingURL=versionUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionUp.js","sourceRoot":"","sources":["../../../src/utils/buildTools/versionUp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAsB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AAG3G,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;AACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AAChD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAClC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AAElE;;;;GAIG;AACH,SAAS,YAAY,CAAC,WAAwB,EAAE,QAAgD;IAC5F,IAAI,CAAC,YAAY,WAAW,cAAc,WAAW,EAAE,EAAE,CAAC,GAA4B,EAAE,MAAM,EAAE,EAAE;QAC9F,IAAI,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,WAAW,EAAE,UAAU,CAAC,CAAC;QACpE,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,YAAY,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,EAAE;IAC1C,YAAY,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;QACxC,IAAI,iBAAiB,GAAqB,gBAAgB,CAAC;QAC3D,IAAI,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3G,iBAAiB,GAAG,iBAAiB,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,CAAC;QAEhE,MAAM,YAAY,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAE7C,IAAI,WAAW,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC;YACnC,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { ThinTexture } from "@babylonjs/core/Materials/Textures/thinTexture.js";
2
2
  import { type ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
3
+ import type { Nullable } from "@babylonjs/core/types";
3
4
  /**
4
5
  * Helper that takes in a URL to an image and returns a ThinTexture
5
6
  * @param engine - defines the engine to use to create the texture
@@ -8,7 +9,8 @@ import { type ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
8
9
  * * A base64 string of in-line texture data, e.g. 'data:image/jpg;base64,/...'
9
10
  * @param flipY - Indicates if the Y axis should be flipped
10
11
  * @param samplingMode - The sampling mode to use
12
+ * @param forcedExtension - defines the extension to use to pick the right loader
11
13
  * @returns A ThinTexture of the image
12
14
  */
13
- export declare function createImageTexture(engine: ThinEngine, url: string, flipY?: boolean, samplingMode?: number | undefined): ThinTexture;
15
+ export declare function createImageTexture(engine: ThinEngine, url: string, flipY?: Nullable<boolean>, samplingMode?: number | undefined, forcedExtension?: string | null): ThinTexture;
14
16
  //# sourceMappingURL=textureLoaders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"textureLoaders.d.ts","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,OAAc,EACrB,YAAY,GAAE,MAAM,GAAG,SAAqB,GAC7C,WAAW,CAGb"}
1
+ {"version":3,"file":"textureLoaders.d.ts","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,QAAQ,CAAC,OAAO,CAAQ,EAC/B,YAAY,GAAE,MAAM,GAAG,SAAqB,EAC5C,eAAe,GAAE,MAAM,GAAG,IAAW,GACtC,WAAW,CAeb"}
@@ -8,10 +8,11 @@ import {} from "@babylonjs/core/Engines/thinEngine.js";
8
8
  * * A base64 string of in-line texture data, e.g. 'data:image/jpg;base64,/...'
9
9
  * @param flipY - Indicates if the Y axis should be flipped
10
10
  * @param samplingMode - The sampling mode to use
11
+ * @param forcedExtension - defines the extension to use to pick the right loader
11
12
  * @returns A ThinTexture of the image
12
13
  */
13
- export function createImageTexture(engine, url, flipY = true, samplingMode = undefined) {
14
- const internalTexture = engine.createTexture(url, true, flipY, null, samplingMode);
14
+ export function createImageTexture(engine, url, flipY = null, samplingMode = undefined, forcedExtension = null) {
15
+ const internalTexture = engine.createTexture(url, true, flipY !== null && flipY !== void 0 ? flipY : true, null, samplingMode, null, null, null, null, null, forcedExtension);
15
16
  return new ThinTexture(internalTexture);
16
17
  }
17
18
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"textureLoaders.js","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAmB,MAAM,uCAAuC,CAAC;AAExE;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAC9B,MAAkB,EAClB,GAAW,EACX,QAAiB,IAAI,EACrB,eAAmC,SAAS;IAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACnF,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED;;;;EAIE"}
1
+ {"version":3,"file":"textureLoaders.js","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAmB,MAAM,uCAAuC,CAAC;AAGxE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAC9B,MAAkB,EAClB,GAAW,EACX,QAA2B,IAAI,EAC/B,eAAmC,SAAS,EAC5C,kBAAiC,IAAI;IAErC,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CACxC,GAAG,EACH,IAAI,EACJ,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,EACb,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAe,CAClB,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED;;;;EAIE"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Helper class used to generate IDs unique to the current session
3
+ */
4
+ export declare class UniqueIdGenerator {
5
+ /**
6
+ * The next unique ID to be returned
7
+ */
8
+ static _NextUniqueId: number;
9
+ /**
10
+ * Gets a unique (relatively to the current session) Id
11
+ */
12
+ static get UniqueId(): number;
13
+ /**
14
+ * Ensures future generated IDs are greater than the specified value
15
+ * @param minimum - The minimum value that future generated IDs should be greater than
16
+ */
17
+ static EnsureIdsGreaterThan(minimum: number): void;
18
+ }
19
+ //# sourceMappingURL=uniqueIdGenerator.d.ts.map