@velarscript/cli 0.12.1 → 0.13.0

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 (140) hide show
  1. package/README.md +4 -12
  2. package/dist/browser-process-owner.d.ts +23 -0
  3. package/dist/browser-process-owner.d.ts.map +1 -1
  4. package/dist/browser-process-owner.js +46 -2
  5. package/dist/browser-process-owner.js.map +1 -1
  6. package/dist/browser-test-runner.d.ts.map +1 -1
  7. package/dist/browser-test-runner.js +110 -14
  8. package/dist/browser-test-runner.js.map +1 -1
  9. package/dist/cli.js +131 -68
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +28 -4
  13. package/dist/config.js.map +1 -1
  14. package/dist/dev-server.d.ts +18 -0
  15. package/dist/dev-server.d.ts.map +1 -1
  16. package/dist/dev-server.js +168 -8
  17. package/dist/dev-server.js.map +1 -1
  18. package/dist/extension-metadata.d.ts +6 -0
  19. package/dist/extension-metadata.d.ts.map +1 -1
  20. package/dist/extension-metadata.js +70 -4
  21. package/dist/extension-metadata.js.map +1 -1
  22. package/dist/format-guard.d.ts +20 -0
  23. package/dist/format-guard.d.ts.map +1 -0
  24. package/dist/format-guard.js +13 -0
  25. package/dist/format-guard.js.map +1 -0
  26. package/dist/framework-host.d.ts.map +1 -1
  27. package/dist/framework-host.js +15 -2
  28. package/dist/framework-host.js.map +1 -1
  29. package/dist/language-server-bundle-entry.js +0 -2
  30. package/dist/language-server-bundle-entry.js.map +1 -1
  31. package/dist/language-server-tool.d.ts.map +1 -1
  32. package/dist/language-server-tool.js +0 -2
  33. package/dist/language-server-tool.js.map +1 -1
  34. package/dist/language-server.d.ts +1 -1
  35. package/dist/language-server.d.ts.map +1 -1
  36. package/dist/language-server.js +87 -293
  37. package/dist/language-server.js.map +1 -1
  38. package/dist/local-request-guard.d.ts +18 -0
  39. package/dist/local-request-guard.d.ts.map +1 -0
  40. package/dist/local-request-guard.js +75 -0
  41. package/dist/local-request-guard.js.map +1 -0
  42. package/dist/mechanical-fixer.d.ts.map +1 -1
  43. package/dist/mechanical-fixer.js +116 -2
  44. package/dist/mechanical-fixer.js.map +1 -1
  45. package/dist/module-assets.d.ts +23 -0
  46. package/dist/module-assets.d.ts.map +1 -1
  47. package/dist/module-assets.js +216 -14
  48. package/dist/module-assets.js.map +1 -1
  49. package/dist/node-application.d.ts +7 -2
  50. package/dist/node-application.d.ts.map +1 -1
  51. package/dist/node-application.js +44 -14
  52. package/dist/node-application.js.map +1 -1
  53. package/dist/node-runtime-dependencies.d.ts +2 -0
  54. package/dist/node-runtime-dependencies.d.ts.map +1 -0
  55. package/dist/node-runtime-dependencies.js +24 -0
  56. package/dist/node-runtime-dependencies.js.map +1 -0
  57. package/dist/npm.d.ts +29 -0
  58. package/dist/npm.d.ts.map +1 -1
  59. package/dist/npm.js +39 -2
  60. package/dist/npm.js.map +1 -1
  61. package/dist/ownership-graph.d.ts.map +1 -1
  62. package/dist/ownership-graph.js +155 -38
  63. package/dist/ownership-graph.js.map +1 -1
  64. package/dist/package-manager.d.ts.map +1 -1
  65. package/dist/package-manager.js +4 -1
  66. package/dist/package-manager.js.map +1 -1
  67. package/dist/preview-server.d.ts.map +1 -1
  68. package/dist/preview-server.js +12 -4
  69. package/dist/preview-server.js.map +1 -1
  70. package/dist/production-build.d.ts.map +1 -1
  71. package/dist/production-build.js +24 -6
  72. package/dist/production-build.js.map +1 -1
  73. package/dist/production-verifier.js +3 -0
  74. package/dist/production-verifier.js.map +1 -1
  75. package/dist/project-check.d.ts +14 -1
  76. package/dist/project-check.d.ts.map +1 -1
  77. package/dist/project-check.js +17 -4
  78. package/dist/project-check.js.map +1 -1
  79. package/dist/project-format.d.ts +9 -0
  80. package/dist/project-format.d.ts.map +1 -1
  81. package/dist/project-format.js +13 -0
  82. package/dist/project-format.js.map +1 -1
  83. package/dist/project-semantic.d.ts.map +1 -1
  84. package/dist/project-semantic.js +15 -4
  85. package/dist/project-semantic.js.map +1 -1
  86. package/dist/project.d.ts +25 -0
  87. package/dist/project.d.ts.map +1 -1
  88. package/dist/project.js +341 -42
  89. package/dist/project.js.map +1 -1
  90. package/dist/reproduction.d.ts +18 -0
  91. package/dist/reproduction.d.ts.map +1 -1
  92. package/dist/reproduction.js +47 -6
  93. package/dist/reproduction.js.map +1 -1
  94. package/dist/stable-order.d.ts +17 -0
  95. package/dist/stable-order.d.ts.map +1 -0
  96. package/dist/stable-order.js +19 -0
  97. package/dist/stable-order.js.map +1 -0
  98. package/dist/standard-modules.d.ts +2 -2
  99. package/dist/standard-modules.d.ts.map +1 -1
  100. package/dist/standard-modules.js +2 -2
  101. package/dist/standard-modules.js.map +1 -1
  102. package/dist/static-deployment.d.ts.map +1 -1
  103. package/dist/static-deployment.js +27 -0
  104. package/dist/static-deployment.js.map +1 -1
  105. package/dist/test-runner.d.ts.map +1 -1
  106. package/dist/test-runner.js +196 -100
  107. package/dist/test-runner.js.map +1 -1
  108. package/dist/test-worker.d.ts +64 -0
  109. package/dist/test-worker.d.ts.map +1 -0
  110. package/dist/test-worker.js +161 -0
  111. package/dist/test-worker.js.map +1 -0
  112. package/dist/typescript-declarations.d.ts +1 -1
  113. package/dist/typescript-declarations.d.ts.map +1 -1
  114. package/dist/typescript-declarations.js +233 -21
  115. package/dist/typescript-declarations.js.map +1 -1
  116. package/dist/unowned-errors.d.ts +15 -2
  117. package/dist/unowned-errors.d.ts.map +1 -1
  118. package/dist/unowned-errors.js +13 -2
  119. package/dist/unowned-errors.js.map +1 -1
  120. package/dist/version.d.ts +1 -1
  121. package/dist/version.js +1 -1
  122. package/dist/workspace-index.d.ts.map +1 -1
  123. package/dist/workspace-index.js +42 -17
  124. package/dist/workspace-index.js.map +1 -1
  125. package/package.json +7 -8
  126. package/skill/ai-skill-node.md +74 -9
  127. package/skill/ai-skill-web.md +51 -1
  128. package/skill/ai-skill.md +36 -13
  129. package/dist/official-script-language-service.d.ts +0 -2
  130. package/dist/official-script-language-service.d.ts.map +0 -1
  131. package/dist/official-script-language-service.js +0 -10
  132. package/dist/official-script-language-service.js.map +0 -1
  133. package/dist/official-tool-assets.d.ts +0 -3
  134. package/dist/official-tool-assets.d.ts.map +0 -1
  135. package/dist/official-tool-assets.js +0 -60
  136. package/dist/official-tool-assets.js.map +0 -1
  137. package/dist/script-language-service.d.ts +0 -82
  138. package/dist/script-language-service.d.ts.map +0 -1
  139. package/dist/script-language-service.js +0 -18
  140. package/dist/script-language-service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"reproduction.js","sourceRoot":"","sources":["../src/reproduction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,oCAAoC;IACpC,yBAAyB;IACzB,oBAAoB;CACZ,CAAC,CAAC;AAEZ,2GAA2G;AAC3G,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,mBAAmB,GAAG,4EAA4E,CAAC;AAEzG;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,OAAO,mBAAmB,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC;AACzG,CAAC;AAoBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA4B;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACvH,MAAM,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,yEAAyE;YACzE,uEAAuE;YACvE,kCAAkC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,yEAAyE;QACzE,oEAAoE;QACpE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC;gBAAE,SAAS;YACnE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACjI,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM;QAClF,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,IAAI,CAAC;IACT,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,WAAW,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,SAAS,KAAK,WAAW,CAAC;IAE7C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC;QAC/D,WAAW;QACX,UAAU;QACV,SAAS;QACT,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;KACjC,CAAC,EAAE,MAAM,CAAC,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC;AAOD;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,OAAuB;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,qGAAqG;AACrG,SAAS,eAAe,CAAC,IAAY,EAAE,IAAY;IACjD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACvB,aAAa,EAAE,8BAA8B;QAC7C,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACtD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,MAA0B;IACrD,MAAM,eAAe,GAA2B,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,IAAI,aAAa,CAAC;IACrH,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACvB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,eAAe;KAChB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,WAA0B,EAAE,cAAsB;IACvG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;YAC/E,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,4CAA4C,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC;QAChG,MAAM,IAAI,GAAG,GAAG,gBAAgB,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SAClF,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAwB;IACzE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,MAAM,KAAK,CAAC;QACzF,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,SAAS,IAAI,sBAAsB,yCAAyC,CAAC,CAAC;IAC/H,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpD,4EAA4E;IAC5E,2EAA2E;IAC3E,0CAA0C;IAC1C,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,SAAS,4DAA4D,CAAC,CAAC;IACnH,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAWD,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACxG,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,EAAE;QACF,iFAAiF;QACjF,gFAAgF;QAChF,EAAE;QACF,mBAAmB,aAAa,WAAW,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;QAClG,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,OAAO;QACP,aAAa;QACb,OAAO;QACP,KAAK;QACL,EAAE;QACF,GAAG,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,wEAAwE;aACzE;YACD,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,+EAA+E;gBAC/E,8EAA8E;gBAC9E,gFAAgF;gBAChF,YAAY;aACb,CAAC;QACJ,EAAE;QACF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,qDAAqD;gBACrD,EAAE;gBACF,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;gBACjD,EAAE;aACH;YACD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,iFAAiF;QACjF,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB;QACjE,iFAAiF;QACjF,+CAA+C;QAC/C,EAAE;QACF,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,gFAAgF;QAChF,uDAAuD;QACvD,EAAE;QACF,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5B,EAAE;QACF,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,gFAAgF;QAChF,gFAAgF;QAChF,4CAA4C;QAC5C,EAAE;QACF,KAAK;QACL,EAAE;QACF,0CAA0C,mBAAmB,EAAE;QAC/D,GAAG,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACA,EAAE;gBACF,yCAAyC;gBACzC,EAAE;gBACF,+EAA+E;gBAC/E,8EAA8E;gBAC9E,EAAE;gBACF,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,yCAAyC,CAAC;aACxE,CAAC;QACJ,EAAE;KACH,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,kGAAkG;AAClG,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,KAAK,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"reproduction.js","sourceRoot":"","sources":["../src/reproduction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAuB,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,oCAAoC;IACpC,yBAAyB;IACzB,oBAAoB;CACZ,CAAC,CAAC;AAEZ,2GAA2G;AAC3G,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,mBAAmB,GAAG,4EAA4E,CAAC;AAEzG;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAoB;IACnD,OAAO,mBAAmB,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,oDAAoD,CAAC;AACzG,CAAC;AAoBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA4B;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACvH,MAAM,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,yEAAyE;YACzE,uEAAuE;YACvE,kCAAkC;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,yEAAyE;QACzE,oEAAoE;QACpE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC;gBAAE,SAAS;YACnE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACjI,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM;QAClF,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,IAAI,CAAC;IACT,2EAA2E;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,WAAW,GAAG,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,SAAS,KAAK,WAAW,CAAC;IAE7C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,kBAAkB,CAAC;QAC/D,WAAW;QACX,UAAU;QACV,SAAS;QACT,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,EAAE;KACjC,CAAC,EAAE,MAAM,CAAC,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC;AAOD;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,OAAuB;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,sFAAsF,CAAC;AAE7G;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IACxD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,2EAA2E;QAC3E,mEAAmE;QACnE,uEAAuE;QACvE,8CAA8C;QAC9C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAG,EAAE,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAiB;IAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACvB,aAAa,EAAE,8BAA8B;QAC7C,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACtD,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,MAA0B;IACrD,MAAM,eAAe,GAA2B,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,0EAA0E;QAC1E,yEAAyE;QACzE,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC;QAC1F,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,oEAAoE,IAAI,cAAc,CAAC,CAAC;QAC1G,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QACvB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,eAAe;KAChB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,oBAAoB,CAAC,SAAiB,EAAE,WAA0B,EAAE,cAAsB;IACvG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;YAC/E,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,4CAA4C,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC;QAChG,MAAM,IAAI,GAAG,GAAG,gBAAgB,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI;SACR,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;SAClF,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,SAAwB;IACzE,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,MAAM,KAAK,CAAC;QACzF,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,SAAS,IAAI,sBAAsB,yCAAyC,CAAC,CAAC;IAC/H,IAAI,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpD,4EAA4E;IAC5E,2EAA2E;IAC3E,0CAA0C;IAC1C,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,SAAS,4DAA4D,CAAC,CAAC;IACnH,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAWD,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,MAAM,OAAO,GAAG,kBAAkB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACrF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACxG,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,EAAE;QACF,iFAAiF;QACjF,gFAAgF;QAChF,EAAE;QACF,mBAAmB,aAAa,WAAW,OAAO,CAAC,OAAO,MAAM,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;QAClG,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,OAAO;QACP,aAAa;QACb,OAAO;QACP,KAAK;QACL,EAAE;QACF,GAAG,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,wEAAwE;aACzE;YACD,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,+EAA+E;gBAC/E,8EAA8E;gBAC9E,gFAAgF;gBAChF,YAAY;aACb,CAAC;QACJ,EAAE;QACF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAC5B,CAAC,CAAC;gBACA,+EAA+E;gBAC/E,qDAAqD;gBACrD,EAAE;gBACF,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC;gBACjD,EAAE;aACH;YACD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,iFAAiF;QACjF,OAAO,CAAC,CAAC,CAAC,sBAAsB,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB;QACjE,iFAAiF;QACjF,+CAA+C;QAC/C,EAAE;QACF,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,gFAAgF;QAChF,uDAAuD;QACvD,EAAE;QACF,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5B,EAAE;QACF,MAAM,sBAAsB,CAAC,CAAC,CAAC,EAAE;QACjC,EAAE;QACF,gFAAgF;QAChF,gFAAgF;QAChF,4CAA4C;QAC5C,EAAE;QACF,KAAK;QACL,EAAE;QACF,0CAA0C,mBAAmB,EAAE;QAC/D,GAAG,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACA,EAAE;gBACF,yCAAyC;gBACzC,EAAE;gBACF,+EAA+E;gBAC/E,8EAA8E;gBAC9E,EAAE;gBACF,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,yCAAyC,CAAC;aACxE,CAAC;QACJ,EAAE;KACH,CAAC;IACF,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,CAAC;AAED,kGAAkG;AAClG,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,KAAK,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * UTF-16 code-unit order — what `<` and `>` compare, and what
3
+ * `Array.prototype.sort` gives with no comparator. It differs from true code
4
+ * point order only for astral characters, and it is deliberately this order
5
+ * rather than that one: the production verifier checks the manifest inventory
6
+ * with a bare `.sort()`, so a producer ordering by code point would disagree
7
+ * with its own verifier on any name outside the BMP.
8
+ *
9
+ * D90 R3(a) rules the locale dependence out at the root: `localeCompare`
10
+ * follows the collation the process environment selects, so any list ordered
11
+ * with it reorders when the machine's `LC_ALL` changes. That decided module
12
+ * order — and with it the project stylesheet's bytes, its content hash,
13
+ * `buildId`, and which of two equal-specificity rules won — and it decides
14
+ * every other list this toolchain promises to produce the same way twice.
15
+ */
16
+ export declare function byCodeUnit(left: string, right: string): number;
17
+ //# sourceMappingURL=stable-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-order.d.ts","sourceRoot":"","sources":["../src/stable-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9D"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * UTF-16 code-unit order — what `<` and `>` compare, and what
3
+ * `Array.prototype.sort` gives with no comparator. It differs from true code
4
+ * point order only for astral characters, and it is deliberately this order
5
+ * rather than that one: the production verifier checks the manifest inventory
6
+ * with a bare `.sort()`, so a producer ordering by code point would disagree
7
+ * with its own verifier on any name outside the BMP.
8
+ *
9
+ * D90 R3(a) rules the locale dependence out at the root: `localeCompare`
10
+ * follows the collation the process environment selects, so any list ordered
11
+ * with it reorders when the machine's `LC_ALL` changes. That decided module
12
+ * order — and with it the project stylesheet's bytes, its content hash,
13
+ * `buildId`, and which of two equal-specificity rules won — and it decides
14
+ * every other list this toolchain promises to produce the same way twice.
15
+ */
16
+ export function byCodeUnit(left, right) {
17
+ return left < right ? -1 : left > right ? 1 : 0;
18
+ }
19
+ //# sourceMappingURL=stable-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-order.js","sourceRoot":"","sources":["../src/stable-order.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { CompilerExtension, ModuleInterface } from "@velarscript/compiler";
2
- import { CORE_WORKER_CONFIG_KEY, STANDARD_MODULE_ADAPTER_DEPENDENCIES, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, type StandardModuleApi } from "@velarscript/core";
3
- export { CORE_WORKER_CONFIG_KEY, STANDARD_MODULE_ADAPTER_DEPENDENCIES, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, type StandardModuleApi, };
2
+ import { CORE_WORKER_CONFIG_KEY, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, type StandardModuleApi } from "@velarscript/core";
3
+ export { CORE_WORKER_CONFIG_KEY, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, type StandardModuleApi, };
4
4
  export declare function standardModuleInterfaces(extensions?: readonly CompilerExtension[]): ReadonlyMap<string, ModuleInterface>;
5
5
  export declare function isStandardModule(source: string, extensions?: readonly CompilerExtension[]): boolean;
6
6
  export declare function standardModuleInterface(source: string, extensions?: readonly CompilerExtension[]): ModuleInterface | null;
@@ -1 +1 @@
1
- {"version":3,"file":"standard-modules.d.ts","sourceRoot":"","sources":["../src/standard-modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAQ5B,mBAAmB,EAGnB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAE5H;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,OAAO,CAEvG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,eAAe,GAAG,IAAI,CAE7H;AAED,wBAAgB,qBAAqB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhH;AAED,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,iBAAiB,CAElG;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,SAAS,MAAM,EAAE,GAAG,IAAI,CAE1B;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,WAAW,CAAC,MAAM,CAAC,CAErB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,MAAM,GAAG,IAAI,CAEf"}
1
+ {"version":3,"file":"standard-modules.d.ts","sourceRoot":"","sources":["../src/standard-modules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAQ5B,mBAAmB,EAGnB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAE5H;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,OAAO,CAEvG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,eAAe,GAAG,IAAI,CAE7H;AAED,wBAAgB,qBAAqB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhH;AAED,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAAG,iBAAiB,CAElG;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,MAAM,GAAG,IAAI,CAEf;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,SAAS,MAAM,EAAE,GAAG,IAAI,CAE1B;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,WAAW,CAAC,MAAM,CAAC,CAErB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,OAAuB,EACtC,UAAU,GAAE,SAAS,iBAAiB,EAAO,GAC5C,MAAM,GAAG,IAAI,CAEf"}
@@ -1,6 +1,6 @@
1
- import { CORE_WORKER_CONFIG_KEY, STANDARD_MODULE_ADAPTER_DEPENDENCIES, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, isStandardModule as coreIsStandardModule, standardModuleApi as coreStandardModuleApi, standardModuleAsset as coreStandardModuleAsset, standardModuleClosure as coreStandardModuleClosure, standardModuleDependencies as coreStandardModuleDependencies, standardModuleInterface as coreStandardModuleInterface, standardModuleInterfaces as coreStandardModuleInterfaces, standardModuleRoute, standardModuleSource as coreStandardModuleSource, standardModuleSources as coreStandardModuleSources, } from "@velarscript/core";
1
+ import { CORE_WORKER_CONFIG_KEY, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, isStandardModule as coreIsStandardModule, standardModuleApi as coreStandardModuleApi, standardModuleAsset as coreStandardModuleAsset, standardModuleClosure as coreStandardModuleClosure, standardModuleDependencies as coreStandardModuleDependencies, standardModuleInterface as coreStandardModuleInterface, standardModuleInterfaces as coreStandardModuleInterfaces, standardModuleRoute, standardModuleSource as coreStandardModuleSource, standardModuleSources as coreStandardModuleSources, } from "@velarscript/core";
2
2
  import { velarNodeCompilerExtension } from "@velarscript/node/compiler";
3
- export { CORE_WORKER_CONFIG_KEY, STANDARD_MODULE_ADAPTER_DEPENDENCIES, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, };
3
+ export { CORE_WORKER_CONFIG_KEY, VELAR_STANDARD_API_VERSION, VELAR_WORKER_MANIFEST_MODULE, standardModuleRoute, };
4
4
  function withDefaultNode(extensions) {
5
5
  return extensions.length === 0 ? [velarNodeCompilerExtension] : extensions;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"standard-modules.js","sourceRoot":"","sources":["../src/standard-modules.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,IAAI,oBAAoB,EACxC,iBAAiB,IAAI,qBAAqB,EAC1C,mBAAmB,IAAI,uBAAuB,EAC9C,qBAAqB,IAAI,yBAAyB,EAClD,0BAA0B,IAAI,8BAA8B,EAC5D,uBAAuB,IAAI,2BAA2B,EACtD,wBAAwB,IAAI,4BAA4B,EACxD,mBAAmB,EACnB,oBAAoB,IAAI,wBAAwB,EAChD,qBAAqB,IAAI,yBAAyB,GAEnD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EACL,sBAAsB,EACtB,oCAAoC,EACpC,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,GAEpB,CAAC;AAEF,SAAS,eAAe,CAAC,UAAwC;IAC/D,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAU,GAAiC,EAAE;IACpF,OAAO,4BAA4B,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,UAAU,GAAiC,EAAE;IAC5F,OAAO,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,UAAU,GAAiC,EAAE;IACnG,OAAO,2BAA2B,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAU,GAAiC,EAAE;IACjF,OAAO,yBAAyB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAU,GAAiC,EAAE;IAC7E,OAAO,qBAAqB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAuB,EACvB,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"standard-modules.js","sourceRoot":"","sources":["../src/standard-modules.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,IAAI,oBAAoB,EACxC,iBAAiB,IAAI,qBAAqB,EAC1C,mBAAmB,IAAI,uBAAuB,EAC9C,qBAAqB,IAAI,yBAAyB,EAClD,0BAA0B,IAAI,8BAA8B,EAC5D,uBAAuB,IAAI,2BAA2B,EACtD,wBAAwB,IAAI,4BAA4B,EACxD,mBAAmB,EACnB,oBAAoB,IAAI,wBAAwB,EAChD,qBAAqB,IAAI,yBAAyB,GAEnD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,GAEpB,CAAC;AAEF,SAAS,eAAe,CAAC,UAAwC;IAC/D,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAU,GAAiC,EAAE;IACpF,OAAO,4BAA4B,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,UAAU,GAAiC,EAAE;IAC5F,OAAO,oBAAoB,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,UAAU,GAAiC,EAAE;IACnG,OAAO,2BAA2B,CAAC,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,UAAU,GAAiC,EAAE;IACjF,OAAO,yBAAyB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAU,GAAiC,EAAE;IAC7E,OAAO,qBAAqB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,wBAAwB,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAc,EACd,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,8BAA8B,CAAC,MAAM,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAuB,EACvB,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,aAAa,GAAY,EAAE,IAAI,EAAE,GAAG,EAAE,EACtC,UAAU,GAAiC,EAAE;IAE7C,OAAO,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;AACvF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"static-deployment.d.ts","sourceRoot":"","sources":["../src/static-deployment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGpH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AACnE,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAQ/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,+BAA+B,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/G,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnD,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC;QACvD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;KAChC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBjI;AAmBD,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,2BAA2B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAuClC"}
1
+ {"version":3,"file":"static-deployment.d.ts","sourceRoot":"","sources":["../src/static-deployment.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAIpH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AACnE,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAuB/C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,+BAA+B,CAAC;IAC1D,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,GAAG,IAAI,CAAC;IACtD,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,oBAAoB,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/G,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACnD,EAAE,CAAC;IACJ,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,MAAM,EAAE,qCAAqC,CAAC;QACvD,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;KAChC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,4BAA4B,EAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,sBAAsB,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjI;AAmBD,wBAAsB,qBAAqB,CACzC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,EACjC,SAAS,EAAE,2BAA2B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA8ClC"}
@@ -1,15 +1,31 @@
1
1
  import { cp, lstat, mkdir, readdir, writeFile } from "node:fs/promises";
2
2
  import { dirname, join, relative } from "node:path";
3
+ import { BUILD_STAGING_MARKER } from "./build-staging.js";
3
4
  import { MAX_PRODUCTION_ASSETS } from "./file-integrity.js";
4
5
  import { VELAR_VERSION } from "./version.js";
5
6
  import { isHostErrorCode } from "./host-error.js";
6
7
  export const STATIC_DEPLOYMENT_MANIFEST_NAME = "velar-deploy.json";
7
8
  export const STATIC_FALLBACK_NAME = "404.html";
9
+ // Every name the builder writes at the root of the output, so a public file
10
+ // cannot take one: the manifest walk skips these at that one level, and a copy
11
+ // that survived there would be a file `velar verify` reports as undeclared for
12
+ // the rest of the build's life.
8
13
  const reservedRootFiles = new Set([
9
14
  "index.html",
10
15
  STATIC_FALLBACK_NAME,
11
16
  "velar-build.json",
12
17
  STATIC_DEPLOYMENT_MANIFEST_NAME,
18
+ BUILD_STAGING_MARKER,
19
+ ]);
20
+ /**
21
+ * `assets/` is the builder's own namespace: the deployment manifest gives
22
+ * everything under it a one-year `immutable` rule, which is only sound for the
23
+ * content-hashed names the builder produced. A public file copied there would
24
+ * inherit that rule under a stable name, so a replacement could never reach a
25
+ * browser that already fetched it.
26
+ */
27
+ const reservedRootNames = new Map([
28
+ ["assets", "'assets' holds the build's content-hashed output and carries a one-year immutable cache rule; put it under public/static/ instead"],
13
29
  ]);
14
30
  /**
15
31
  * A manifest field may name a public file the emitted document points at —
@@ -51,6 +67,10 @@ export async function copyPublicAssets(publicRoot, outputDirectory, allowReserve
51
67
  if (!allowReservedRootFiles && reservedRootFiles.has(entry.name)) {
52
68
  throw new Error(`public asset '${entry.name}' is reserved by the VelarScript production builder`);
53
69
  }
70
+ const reservation = allowReservedRootFiles ? undefined : reservedRootNames.get(entry.name);
71
+ if (reservation !== undefined) {
72
+ throw new Error(`public asset '${entry.name}' is reserved by the VelarScript production builder: ${reservation}`);
73
+ }
54
74
  await copySafe(join(publicRoot, entry.name), join(outputDirectory, entry.name), publicRoot, state);
55
75
  }
56
76
  }
@@ -100,6 +120,13 @@ export async function writeStaticDeployment(outputDirectory, html, config, frame
100
120
  spaFallback: config.spaFallback ? { source: "index.html", fallback: STATIC_FALLBACK_NAME } : null,
101
121
  headers: [
102
122
  { path: basePattern, values: securityHeaders },
123
+ // Every document the SPA fallback serves is a deep route the enumerated
124
+ // paths below cannot name, and `verify-deployment` requires `no-cache` on
125
+ // one of them. Stating the rule here is what makes a provider that
126
+ // projects this manifest literally indistinguishable from `velar preview`;
127
+ // the narrower rules that follow win under last-match-wins, so the hashed
128
+ // assets keep their immutable year.
129
+ { path: basePattern, values: { "Cache-Control": "no-cache" } },
103
130
  { path: `${config.base}assets/*`, values: { "Cache-Control": "public, max-age=31536000, immutable" } },
104
131
  ...documentPaths.map((path) => ({ path, values: { "Cache-Control": "no-cache" } })),
105
132
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"static-deployment.js","sourceRoot":"","sources":["../src/static-deployment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"static-deployment.js","sourceRoot":"","sources":["../src/static-deployment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../src/test-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA0BD,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAuIjB;AAwCD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpG"}
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../src/test-runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAQtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AA8CD,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA4GjB;AA4KD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpG"}
@@ -1,22 +1,28 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  import { mkdir, readdir, writeFile } from "node:fs/promises";
10
2
  import { join, relative } from "node:path";
11
- import { pathToFileURL } from "node:url";
3
+ import { Worker } from "node:worker_threads";
12
4
  import { formatDiagnostic } from "@velarscript/compiler";
13
5
  import { compileProject } from "./project.js";
14
6
  import { standardModuleSource, standardModuleSources } from "./standard-modules.js";
15
7
  import { compiledTestModulePath, createCompiledSandbox, portablePath, quoteReportedText, removeCompiledSandbox, writeCompiledTestProject } from "./test-output.js";
16
8
  import { hostErrorStack } from "./host-error.js";
17
- import { captureUnownedErrors, flushOutput, mapCompiledStacksToSources } from "./unowned-errors.js";
9
+ import { captureUnownedErrors, flushOutput, mapCompiledStacksToSources, unsettledWorkFailure } from "./unowned-errors.js";
18
10
  const defaultTestTimeoutMs = 120_000;
19
11
  const defaultTestSettleTimeoutMs = 10_000;
12
+ /**
13
+ * Room a report needs to cross the thread boundary. The thread owns the bound
14
+ * it can honour — an asynchronous hang, reported in order next to the test that
15
+ * caused it — and this process steps in only for the synchronous one, which no
16
+ * timer inside that thread will ever see.
17
+ */
18
+ const workerReportGraceMs = 1_000;
19
+ /** Upper bound on waiting for a terminated thread's piped output to arrive. */
20
+ const workerOutputFlushMs = 1_000;
21
+ /*
22
+ * `tsc` rewrites a relative import specifier, but not a URL built at run time,
23
+ * so the worker entry is named with the extension this module itself has.
24
+ */
25
+ const testWorkerEntry = new URL(import.meta.url.endsWith(".ts") ? "./test-worker.ts" : "./test-worker.js", import.meta.url);
20
26
  function testLimits(options) {
21
27
  const bounded = (value, fallback, name) => {
22
28
  const resolved = value ?? fallback;
@@ -45,25 +51,11 @@ export async function runTests(config, explicitInput, options = {}) {
45
51
  let passed = 0;
46
52
  let failed = 0;
47
53
  // The runner keeps running: an unowned failure belongs to the test, never to
48
- // the process. The channel is shared with the browser runner so that the one
49
- // stance has one implementation.
54
+ // the process. Each test file runs in its own thread, which owns the channel
55
+ // for its own tests; this one covers what happens in the runner itself, and
56
+ // is what the run-level settle below reads.
50
57
  const channel = captureUnownedErrors();
51
- const drainUnowned = () => channel.drain();
52
- // Work a test started is work the test owns. Waiting for the process to run
53
- // out of work before reading the verdict is what makes a late failure belong
54
- // to the test that started it instead of whichever later test happens to be
55
- // running when it lands — and what stops it from being dropped entirely.
56
- // A fixed sleep cannot do this job: a failure one millisecond past the sleep
57
- // is a failure nobody counts.
58
58
  let stuck = false;
59
- const settleWork = async (subject) => {
60
- if (stuck)
61
- return null;
62
- if (await channel.settle(limits.settleTimeoutMs))
63
- return null;
64
- stuck = true;
65
- return `work started ${subject} was still running ${limits.settleTimeoutMs} milliseconds later; a test owns the work it starts, and a failure from work that never finishes can never be reported`;
66
- };
67
59
  try {
68
60
  await prepareStandardModules(temporary, config);
69
61
  for (const file of files) {
@@ -94,66 +86,47 @@ export async function runTests(config, explicitInput, options = {}) {
94
86
  continue;
95
87
  }
96
88
  const outputEntry = entry ? compiledTestModulePath(project, entry, temporary) : join(temporary, relative(config.root, file).replace(/\.vel$/u, ".js"));
97
- let namespace;
98
- try {
99
- namespace = await import(__rewriteRelativeImportExtension(`${pathToFileURL(outputEntry).href}?run=${Date.now()}`));
100
- }
101
- catch (error) {
102
- failed += tests.length;
103
- process.stderr.write(`✗ ${portablePath(relative(config.root, file))} failed to load\n${stackOf(error)}\n`);
104
- await drainUnowned();
105
- continue;
106
- }
107
- // A module initialization error that surfaced on the host channel
108
- // instead of the import's own await (BLD-D1's exact shape) fails the
109
- // file's tests before any of them can run green.
110
- const loadTimeErrors = await drainUnowned();
111
- if (loadTimeErrors.length > 0) {
112
- failed += tests.length;
113
- process.stderr.write(`✗ ${portablePath(relative(config.root, file))} reported an unowned error while loading\n${loadTimeErrors.join("\n")}\n`);
114
- continue;
115
- }
116
- for (const declared of tests) {
117
- // D39 item 53 + D51 rule 105: the reporter quotes the author's name for
118
- // the test, escaped, because a verdict line must say what it means on
119
- // every terminal.
120
- const name = quoteReportedText(declared.title);
121
- const test = namespace[declared.name];
122
- try {
123
- if (typeof test !== "function")
124
- throw new Error(`Test ${name} was not emitted`);
125
- if (test.length !== 0)
126
- throw new Error(`Test ${name} cannot declare parameters`);
127
- await boundedTest(test, limits.testTimeoutMs);
128
- const leftover = await settleWork("by this test");
129
- const testErrors = await drainUnowned();
130
- if (testErrors.length > 0) {
131
- throw new Error(`an unowned error was reported while this test ran\n${testErrors.join("\n")}`);
132
- }
133
- if (leftover !== null)
134
- throw new Error(leftover);
135
- passed += 1;
136
- process.stdout.write(`✓ ${quoteReportedText(portablePath(relative(config.root, file)))} :: ${name}\n`);
137
- }
138
- catch (error) {
139
- failed += 1;
140
- await drainUnowned();
141
- process.stderr.write(`✗ ${quoteReportedText(portablePath(relative(config.root, file)))} :: ${name}\n${stackOf(error)}\n`);
142
- }
89
+ // D39 item 53 + D51 rule 105: author text — the file's path and each
90
+ // test's name — is escaped here, once, and the thread reports what it is
91
+ // given.
92
+ const path = portablePath(relative(config.root, file));
93
+ const input = {
94
+ entry: outputEntry,
95
+ label: quoteReportedText(path),
96
+ path,
97
+ tests: tests.map((declared) => ({ name: declared.name, title: quoteReportedText(declared.title) })),
98
+ testTimeoutMs: limits.testTimeoutMs,
99
+ settleTimeoutMs: limits.settleTimeoutMs,
100
+ };
101
+ // A thread that a test wedged cannot judge the tests after it, so the
102
+ // file resumes past that test in a fresh thread. Every resume starts
103
+ // beyond the test that ended its predecessor, so the file always
104
+ // finishes.
105
+ let firstIndex = 0;
106
+ for (;;) {
107
+ const outcome = await runTestFileInThread({ ...input, firstIndex });
108
+ passed += outcome.passed;
109
+ failed += outcome.failed;
110
+ if (outcome.resumeAt === null)
111
+ break;
112
+ firstIndex = outcome.resumeAt;
143
113
  }
144
114
  }
145
- // Work a test left behind (a straggling timer, a task that outlived its
146
- // test) still fails the run instead of crashing it after the guards come
147
- // down.
148
- const leftover = await settleWork("during this run");
149
- const trailing = await drainUnowned();
115
+ // Work the runner itself left behind still fails the run instead of
116
+ // crashing it after the guards come down. A test's own leftover work is no
117
+ // longer among it: the thread that started it was terminated with it. The
118
+ // settle comes first so that a report landing during it is still drained
119
+ // and printed rather than discarded when the channel is released.
120
+ const settled = await channel.settle(limits.settleTimeoutMs);
121
+ const trailing = await channel.drain();
150
122
  if (trailing.length > 0) {
151
123
  failed += 1;
152
124
  process.stderr.write(`✗ an unowned error was reported after the last test\n${trailing.join("\n")}\n`);
153
125
  }
154
- if (leftover !== null) {
126
+ if (!settled) {
127
+ stuck = true;
155
128
  failed += 1;
156
- process.stderr.write(`✗ ${leftover}\n`);
129
+ process.stderr.write(`✗ ${unsettledWorkFailure("during this run", limits.settleTimeoutMs)}\n`);
157
130
  }
158
131
  }
159
132
  finally {
@@ -163,9 +136,9 @@ export async function runTests(config, explicitInput, options = {}) {
163
136
  process.stdout.write(`\n${passed} passed, ${failed} failed\n`);
164
137
  const code = failed === 0 ? 0 : 1;
165
138
  if (stuck && limits.exitWhenStuck) {
166
- // The process cannot end on its own — work a test started still holds the
167
- // event loop. The verdict is already written; ending the run beats hanging
168
- // a gate forever on a failure that has already been reported.
139
+ // The process cannot end on its own — work started during this run still
140
+ // holds the event loop. The verdict is already written; ending the run
141
+ // beats hanging a gate forever on a failure that has already been reported.
169
142
  await flushOutput(process.stdout);
170
143
  await flushOutput(process.stderr);
171
144
  process.exit(code);
@@ -173,23 +146,149 @@ export async function runTests(config, explicitInput, options = {}) {
173
146
  return code;
174
147
  }
175
148
  /**
176
- * A test that never settles is a failure that never reaches a human. The bound
177
- * makes the hang a reported failure; the work itself keeps whatever handles it
178
- * holds, which the run-level settle then reports in its own right.
149
+ * Runs one test file in its own thread.
150
+ *
151
+ * Two bounds a test cannot reach live here. The hard one is termination: a
152
+ * synchronously spinning test never yields to the timer that would report it,
153
+ * so the only bound it obeys is the end of its thread. The quieter one is
154
+ * isolation: a fresh thread evaluates every module in the file's import graph
155
+ * again, so a test file's verdict no longer depends on which files ran before
156
+ * it.
179
157
  */
180
- async function boundedTest(test, timeoutMs) {
181
- let timer = null;
182
- const deadline = new Promise((_resolve, reject) => {
183
- timer = setTimeout(() => reject(new Error(`this test did not finish within its ${timeoutMs} millisecond bound`)), timeoutMs);
158
+ async function runTestFileInThread(input) {
159
+ const worker = new Worker(testWorkerEntry, { workerData: input, stdout: true, stderr: true });
160
+ worker.stdout.pipe(process.stdout, { end: false });
161
+ worker.stderr.pipe(process.stderr, { end: false });
162
+ let passed = 0;
163
+ let failed = 0;
164
+ let resumeAt = null;
165
+ // Tests up to this index have a verdict. Anything left when the thread ends
166
+ // is a test nobody judged.
167
+ let judged = input.firstIndex;
168
+ let bound = null;
169
+ let failure = null;
170
+ const disarm = () => {
171
+ if (bound !== null)
172
+ clearTimeout(bound);
173
+ bound = null;
174
+ };
175
+ const arm = (timeoutMs, expire) => {
176
+ disarm();
177
+ bound = setTimeout(expire, timeoutMs + workerReportGraceMs);
178
+ };
179
+ // Nothing this thread holds can be trusted and nothing more will be reported
180
+ // from it. Termination is the only bound synchronous work obeys, and reports
181
+ // already in flight are ignored so that a verdict cannot be counted twice.
182
+ let ended = false;
183
+ const abandon = () => {
184
+ ended = true;
185
+ disarm();
186
+ void worker.terminate();
187
+ };
188
+ // The parent is never left waiting without a bound. Between the last report
189
+ // it expects and the thread's own `exit` there is still a wait, and a module
190
+ // whose initialization armed a timer before it failed holds that thread's
191
+ // loop open forever — a hang through a different door than the one the
192
+ // per-test bound closes. Every path that stops expecting reports arms this
193
+ // instead of disarming into an unbounded wait.
194
+ const expectExit = () => {
195
+ arm(input.settleTimeoutMs, abandon);
196
+ };
197
+ const failTest = (index, text) => {
198
+ failed += 1;
199
+ judged = index + 1;
200
+ resumeAt = judged < input.tests.length ? judged : null;
201
+ process.stderr.write(`✗ ${input.label} :: ${input.tests[index].title}\n${text}\n`);
202
+ abandon();
203
+ };
204
+ const failFile = (text) => {
205
+ failed += input.tests.length - judged;
206
+ judged = input.tests.length;
207
+ process.stderr.write(`✗ ${input.path} ${text}\n`);
208
+ abandon();
209
+ };
210
+ // A thread that never reports `ready` never armed a bound of its own.
211
+ arm(input.testTimeoutMs, () => failFile(`did not start within its ${input.testTimeoutMs} millisecond bound`));
212
+ await new Promise((resolve) => {
213
+ worker.on("message", (message) => {
214
+ if (ended)
215
+ return;
216
+ switch (message.kind) {
217
+ case "ready":
218
+ // The thread is up, so the bound from here measures the file's own
219
+ // module initialization rather than thread startup. It stays armed
220
+ // until the first test begins.
221
+ arm(input.testTimeoutMs, () => failFile(`did not finish loading within its ${input.testTimeoutMs} millisecond bound`));
222
+ break;
223
+ case "load":
224
+ // The thread reported the failure itself and is ending; only the
225
+ // count is owed here — and a bound on the ending, because a module
226
+ // that failed after arming a timer never lets the thread end.
227
+ if (!message.ok) {
228
+ failed += input.tests.length - judged;
229
+ judged = input.tests.length;
230
+ expectExit();
231
+ }
232
+ break;
233
+ case "begin":
234
+ arm(input.testTimeoutMs, () => failTest(message.index, `this test did not finish within its ${input.testTimeoutMs} millisecond bound`));
235
+ break;
236
+ case "settling":
237
+ arm(input.settleTimeoutMs, () => failTest(message.index, unsettledWorkFailure("by this test", input.settleTimeoutMs)));
238
+ break;
239
+ case "verdict":
240
+ judged = message.index + 1;
241
+ if (message.passed)
242
+ passed += 1;
243
+ else
244
+ failed += 1;
245
+ if (message.usable) {
246
+ // The next test's `begin` re-arms; after the last one this is the
247
+ // wait for the thread to end, which is bounded like any other.
248
+ expectExit();
249
+ break;
250
+ }
251
+ resumeAt = judged < input.tests.length ? judged : null;
252
+ abandon();
253
+ break;
254
+ }
255
+ });
256
+ worker.once("error", (error) => { failure = error; });
257
+ worker.once("exit", () => {
258
+ disarm();
259
+ resolve();
260
+ });
184
261
  });
185
- void deadline.catch(() => { });
186
- try {
187
- await Promise.race([Promise.resolve().then(() => test()), deadline]);
188
- }
189
- finally {
190
- if (timer !== null)
191
- clearTimeout(timer);
262
+ // Piped output has to reach this process before the runner writes anything of
263
+ // its own, or a verdict overtakes the `print` output of the test it belongs
264
+ // to. A terminated thread may never end its pipes, so the wait is bounded.
265
+ await Promise.all([drainedOutput(worker.stdout), drainedOutput(worker.stderr)]);
266
+ worker.stdout.unpipe(process.stdout);
267
+ worker.stderr.unpipe(process.stderr);
268
+ if (judged < input.tests.length && resumeAt === null) {
269
+ failed += input.tests.length - judged;
270
+ process.stderr.write(`✗ ${input.path} ended before its tests were judged${failure === null ? "" : `\n${hostErrorStack(failure)}`}\n`);
192
271
  }
272
+ return { passed, failed, resumeAt };
273
+ }
274
+ function drainedOutput(stream) {
275
+ return new Promise((resolve) => {
276
+ if (stream.readableEnded || stream.destroyed) {
277
+ resolve();
278
+ return;
279
+ }
280
+ let timer = null;
281
+ const finish = () => {
282
+ if (timer !== null)
283
+ clearTimeout(timer);
284
+ stream.off("end", finish);
285
+ stream.off("close", finish);
286
+ resolve();
287
+ };
288
+ timer = setTimeout(finish, workerOutputFlushMs);
289
+ stream.once("end", finish);
290
+ stream.once("close", finish);
291
+ });
193
292
  }
194
293
  async function discoverTestFiles(root, excluded) {
195
294
  const output = [];
@@ -220,7 +319,4 @@ export async function prepareStandardModules(root, config) {
220
319
  }
221
320
  await writeFile(join(packageRoot, "package.json"), JSON.stringify({ name: "velar", private: true, type: "module", exports }), "utf8");
222
321
  }
223
- function stackOf(error) {
224
- return hostErrorStack(error);
225
- }
226
322
  //# sourceMappingURL=test-runner.js.map