@chronon-sim/engine 0.1.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 (151) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +19 -0
  3. package/dist/components/autoscaler.d.ts +47 -0
  4. package/dist/components/autoscaler.d.ts.map +1 -0
  5. package/dist/components/autoscaler.js +116 -0
  6. package/dist/components/autoscaler.js.map +1 -0
  7. package/dist/components/generator.d.ts +32 -0
  8. package/dist/components/generator.d.ts.map +1 -0
  9. package/dist/components/generator.js +124 -0
  10. package/dist/components/generator.js.map +1 -0
  11. package/dist/components/index.d.ts +14 -0
  12. package/dist/components/index.d.ts.map +1 -0
  13. package/dist/components/index.js +11 -0
  14. package/dist/components/index.js.map +1 -0
  15. package/dist/components/message-queue.d.ts +45 -0
  16. package/dist/components/message-queue.d.ts.map +1 -0
  17. package/dist/components/message-queue.js +152 -0
  18. package/dist/components/message-queue.js.map +1 -0
  19. package/dist/components/pullable.d.ts +24 -0
  20. package/dist/components/pullable.d.ts.map +1 -0
  21. package/dist/components/pullable.js +2 -0
  22. package/dist/components/pullable.js.map +1 -0
  23. package/dist/components/queue.d.ts +32 -0
  24. package/dist/components/queue.d.ts.map +1 -0
  25. package/dist/components/queue.js +88 -0
  26. package/dist/components/queue.js.map +1 -0
  27. package/dist/components/rate-limiter.d.ts +24 -0
  28. package/dist/components/rate-limiter.d.ts.map +1 -0
  29. package/dist/components/rate-limiter.js +77 -0
  30. package/dist/components/rate-limiter.js.map +1 -0
  31. package/dist/components/registry.d.ts +19 -0
  32. package/dist/components/registry.d.ts.map +1 -0
  33. package/dist/components/registry.js +43 -0
  34. package/dist/components/registry.js.map +1 -0
  35. package/dist/components/retry-policy.d.ts +41 -0
  36. package/dist/components/retry-policy.d.ts.map +1 -0
  37. package/dist/components/retry-policy.js +122 -0
  38. package/dist/components/retry-policy.js.map +1 -0
  39. package/dist/components/server.d.ts +26 -0
  40. package/dist/components/server.d.ts.map +1 -0
  41. package/dist/components/server.js +82 -0
  42. package/dist/components/server.js.map +1 -0
  43. package/dist/components/sink.d.ts +12 -0
  44. package/dist/components/sink.d.ts.map +1 -0
  45. package/dist/components/sink.js +35 -0
  46. package/dist/components/sink.js.map +1 -0
  47. package/dist/components/worker-pool.d.ts +68 -0
  48. package/dist/components/worker-pool.d.ts.map +1 -0
  49. package/dist/components/worker-pool.js +224 -0
  50. package/dist/components/worker-pool.js.map +1 -0
  51. package/dist/format/definition.d.ts +72 -0
  52. package/dist/format/definition.d.ts.map +1 -0
  53. package/dist/format/definition.js +17 -0
  54. package/dist/format/definition.js.map +1 -0
  55. package/dist/format/index.d.ts +5 -0
  56. package/dist/format/index.d.ts.map +1 -0
  57. package/dist/format/index.js +3 -0
  58. package/dist/format/index.js.map +1 -0
  59. package/dist/format/loader.d.ts +19 -0
  60. package/dist/format/loader.d.ts.map +1 -0
  61. package/dist/format/loader.js +275 -0
  62. package/dist/format/loader.js.map +1 -0
  63. package/dist/index.d.ts +9 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +9 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/kernel/heap.d.ts +14 -0
  68. package/dist/kernel/heap.d.ts.map +1 -0
  69. package/dist/kernel/heap.js +55 -0
  70. package/dist/kernel/heap.js.map +1 -0
  71. package/dist/kernel/index.d.ts +3 -0
  72. package/dist/kernel/index.d.ts.map +1 -0
  73. package/dist/kernel/index.js +2 -0
  74. package/dist/kernel/index.js.map +1 -0
  75. package/dist/kernel/kernel.d.ts +104 -0
  76. package/dist/kernel/kernel.d.ts.map +1 -0
  77. package/dist/kernel/kernel.js +236 -0
  78. package/dist/kernel/kernel.js.map +1 -0
  79. package/dist/model/entity.d.ts +78 -0
  80. package/dist/model/entity.d.ts.map +1 -0
  81. package/dist/model/entity.js +108 -0
  82. package/dist/model/entity.js.map +1 -0
  83. package/dist/model/fifo.d.ts +9 -0
  84. package/dist/model/fifo.d.ts.map +1 -0
  85. package/dist/model/fifo.js +24 -0
  86. package/dist/model/fifo.js.map +1 -0
  87. package/dist/model/index.d.ts +4 -0
  88. package/dist/model/index.d.ts.map +1 -0
  89. package/dist/model/index.js +3 -0
  90. package/dist/model/index.js.map +1 -0
  91. package/dist/rng/distributions.d.ts +98 -0
  92. package/dist/rng/distributions.d.ts.map +1 -0
  93. package/dist/rng/distributions.js +224 -0
  94. package/dist/rng/distributions.js.map +1 -0
  95. package/dist/rng/index.d.ts +4 -0
  96. package/dist/rng/index.d.ts.map +1 -0
  97. package/dist/rng/index.js +3 -0
  98. package/dist/rng/index.js.map +1 -0
  99. package/dist/rng/rng.d.ts +26 -0
  100. package/dist/rng/rng.d.ts.map +1 -0
  101. package/dist/rng/rng.js +101 -0
  102. package/dist/rng/rng.js.map +1 -0
  103. package/dist/run/assertions.d.ts +9 -0
  104. package/dist/run/assertions.d.ts.map +1 -0
  105. package/dist/run/assertions.js +57 -0
  106. package/dist/run/assertions.js.map +1 -0
  107. package/dist/run/index.d.ts +6 -0
  108. package/dist/run/index.d.ts.map +1 -0
  109. package/dist/run/index.js +4 -0
  110. package/dist/run/index.js.map +1 -0
  111. package/dist/run/results.d.ts +72 -0
  112. package/dist/run/results.d.ts.map +1 -0
  113. package/dist/run/results.js +2 -0
  114. package/dist/run/results.js.map +1 -0
  115. package/dist/run/run.d.ts +29 -0
  116. package/dist/run/run.d.ts.map +1 -0
  117. package/dist/run/run.js +80 -0
  118. package/dist/run/run.js.map +1 -0
  119. package/dist/run/simulation.d.ts +34 -0
  120. package/dist/run/simulation.d.ts.map +1 -0
  121. package/dist/run/simulation.js +104 -0
  122. package/dist/run/simulation.js.map +1 -0
  123. package/dist/schema/index.d.ts +5 -0
  124. package/dist/schema/index.d.ts.map +1 -0
  125. package/dist/schema/index.js +3 -0
  126. package/dist/schema/index.js.map +1 -0
  127. package/dist/schema/types.d.ts +83 -0
  128. package/dist/schema/types.d.ts.map +1 -0
  129. package/dist/schema/types.js +19 -0
  130. package/dist/schema/types.js.map +1 -0
  131. package/dist/schema/validate.d.ts +19 -0
  132. package/dist/schema/validate.d.ts.map +1 -0
  133. package/dist/schema/validate.js +120 -0
  134. package/dist/schema/validate.js.map +1 -0
  135. package/dist/stats/index.d.ts +6 -0
  136. package/dist/stats/index.d.ts.map +1 -0
  137. package/dist/stats/index.js +4 -0
  138. package/dist/stats/index.js.map +1 -0
  139. package/dist/stats/percentile.d.ts +38 -0
  140. package/dist/stats/percentile.d.ts.map +1 -0
  141. package/dist/stats/percentile.js +62 -0
  142. package/dist/stats/percentile.js.map +1 -0
  143. package/dist/stats/summary.d.ts +20 -0
  144. package/dist/stats/summary.d.ts.map +1 -0
  145. package/dist/stats/summary.js +38 -0
  146. package/dist/stats/summary.js.map +1 -0
  147. package/dist/stats/time-weighted.d.ts +31 -0
  148. package/dist/stats/time-weighted.d.ts.map +1 -0
  149. package/dist/stats/time-weighted.js +69 -0
  150. package/dist/stats/time-weighted.js.map +1 -0
  151. package/package.json +41 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/schema/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,iBAAiB,CAAC;AAYxE,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,MAAM,CAAC,CAAU;IACxB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,IAAe,EAAE,CAAS;IAC7C,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;QAAE,OAAO,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5E,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;QAAE,OAAO,cAAc,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oFAAoF;AACpF,SAAS,UAAU,CAAC,IAAe,EAAE,CAAU;IAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,OAAO,yBAAyB,CAAC;YACjD,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBAAE,OAAO,oBAAoB,CAAC;YACpE,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC;QACjE,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9D,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,CAAC,CAAC;gBAAE,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAsC,CAAC;YACjD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5F,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxC,OAAO,kEAAkE,CAAC;YAC5E,CAAC;YACD,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,OAAO,WAAW,CAAC,0DAA0D,CAAC;gBAChF,CAAC;gBACD,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,OAAO,WAAW,CAAC,6BAA6B,CAAC;gBACjE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,OAAO,WAAW,CAAC,8BAA8B,CAAC;gBAClE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI;oBAAE,OAAO,WAAW,CAAC,4CAA4C,CAAC;gBACpF,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAuB,EACvB,GAAY,EACZ,aAAqB;IAErB,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,GAAkB,EAAE,OAAe,EAAE,EAAE,CAClD,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1D,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,GAAG,EAAE,qBAAqB,MAAM,CAAC,IAAI,mBAAmB,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,WAAW,GACf,IAAI,CAAC,YAAY,KAAK,SAAS;gBAC/B,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,YAAa,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;oBACxG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;gBACjC,GAAG,CACD,IAAI,CAAC,GAAG,EACR,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAC3B,CAAC,CAAC,iBAAiB,IAAI,CAAC,YAAa,CAAC,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAa,CAAC,MAAM,CAAC,EAAE;oBAC7F,CAAC,CAAC,2BAA2B,CAChC,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAClC,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,OAAO,CAAgB,CAAC;AAC1B,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,CAAU;IACtC,OAAO,CAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { TimeWeightedStat } from "./time-weighted.js";
2
+ export { ExactPercentileTracker, Tally } from "./percentile.js";
3
+ export type { PercentileTracker } from "./percentile.js";
4
+ export { summarize, tQuantile975 } from "./summary.js";
5
+ export type { SampleSummary } from "./summary.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stats/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { TimeWeightedStat } from "./time-weighted.js";
2
+ export { ExactPercentileTracker, Tally } from "./percentile.js";
3
+ export { summarize, tQuantile975 } from "./summary.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stats/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Collects observations and answers mean/percentile queries. Implementations may be exact or
3
+ * approximate (e.g. a future t-digest or HDR histogram) behind this interface.
4
+ */
5
+ export interface PercentileTracker {
6
+ /** Record one observation. */
7
+ add(value: number): void;
8
+ /** Number of observations recorded. */
9
+ readonly count: number;
10
+ /** Arithmetic mean, or NaN if empty. */
11
+ mean(): number;
12
+ /** The p-th percentile for p in [0, 100], or NaN if empty. */
13
+ percentile(p: number): number;
14
+ /** Discard all observations. */
15
+ reset(): void;
16
+ }
17
+ /** Exact tracker: stores every sample and sorts lazily at query time (linear interpolation). */
18
+ export declare class ExactPercentileTracker implements PercentileTracker {
19
+ private samples;
20
+ private sum;
21
+ private sorted;
22
+ add(value: number): void;
23
+ get count(): number;
24
+ mean(): number;
25
+ percentile(p: number): number;
26
+ reset(): void;
27
+ }
28
+ /** Running count/mean/min/max of observations (no storage). */
29
+ export declare class Tally {
30
+ count: number;
31
+ private sum;
32
+ min: number;
33
+ max: number;
34
+ add(value: number): void;
35
+ mean(): number;
36
+ reset(): void;
37
+ }
38
+ //# sourceMappingURL=percentile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percentile.d.ts","sourceRoot":"","sources":["../../src/stats/percentile.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,IAAI,IAAI,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,gCAAgC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,gGAAgG;AAChG,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,MAAM,CAAQ;IAEtB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,IAAI,MAAM;IAId,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAe7B,KAAK,IAAI,IAAI;CAKd;AAED,+DAA+D;AAC/D,qBAAa,KAAK;IAChB,KAAK,SAAK;IACV,OAAO,CAAC,GAAG,CAAK;IAChB,GAAG,SAA4B;IAC/B,GAAG,SAA4B;IAE/B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOxB,IAAI,IAAI,MAAM;IAId,KAAK,IAAI,IAAI;CAMd"}
@@ -0,0 +1,62 @@
1
+ /** Exact tracker: stores every sample and sorts lazily at query time (linear interpolation). */
2
+ export class ExactPercentileTracker {
3
+ samples = [];
4
+ sum = 0;
5
+ sorted = true;
6
+ add(value) {
7
+ this.samples.push(value);
8
+ this.sum += value;
9
+ this.sorted = false;
10
+ }
11
+ get count() {
12
+ return this.samples.length;
13
+ }
14
+ mean() {
15
+ return this.samples.length === 0 ? NaN : this.sum / this.samples.length;
16
+ }
17
+ percentile(p) {
18
+ const n = this.samples.length;
19
+ if (n === 0 || !(p >= 0 && p <= 100))
20
+ return NaN;
21
+ if (!this.sorted) {
22
+ this.samples.sort((a, b) => a - b);
23
+ this.sorted = true;
24
+ }
25
+ const rank = (p / 100) * (n - 1);
26
+ const lo = Math.floor(rank);
27
+ const hi = Math.ceil(rank);
28
+ const a = this.samples[lo];
29
+ const b = this.samples[hi];
30
+ return a + (b - a) * (rank - lo);
31
+ }
32
+ reset() {
33
+ this.samples = [];
34
+ this.sum = 0;
35
+ this.sorted = true;
36
+ }
37
+ }
38
+ /** Running count/mean/min/max of observations (no storage). */
39
+ export class Tally {
40
+ count = 0;
41
+ sum = 0;
42
+ min = Number.POSITIVE_INFINITY;
43
+ max = Number.NEGATIVE_INFINITY;
44
+ add(value) {
45
+ this.count++;
46
+ this.sum += value;
47
+ if (value < this.min)
48
+ this.min = value;
49
+ if (value > this.max)
50
+ this.max = value;
51
+ }
52
+ mean() {
53
+ return this.count === 0 ? NaN : this.sum / this.count;
54
+ }
55
+ reset() {
56
+ this.count = 0;
57
+ this.sum = 0;
58
+ this.min = Number.POSITIVE_INFINITY;
59
+ this.max = Number.NEGATIVE_INFINITY;
60
+ }
61
+ }
62
+ //# sourceMappingURL=percentile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"percentile.js","sourceRoot":"","sources":["../../src/stats/percentile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** The 0.975 quantile of Student's t distribution with `df` degrees of freedom. */
2
+ export declare function tQuantile975(df: number): number;
3
+ /** Summary of a sample of per-replication values. */
4
+ export interface SampleSummary {
5
+ /** Number of finite values summarised. */
6
+ n: number;
7
+ /** Sample mean, or null if n = 0. */
8
+ mean: number | null;
9
+ /** Sample standard deviation, or null if n < 2. */
10
+ stdDev: number | null;
11
+ /** 95% confidence interval for the mean (Student t), or null if n < 2. */
12
+ ci95: {
13
+ low: number;
14
+ high: number;
15
+ halfWidth: number;
16
+ } | null;
17
+ }
18
+ /** Mean, standard deviation and 95% t-confidence interval of `values` (non-finite values ignored). */
19
+ export declare function summarize(values: readonly number[]): SampleSummary;
20
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/stats/summary.ts"],"names":[],"mappings":"AAOA,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAe/C;AAED,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,CAAC,EAAE,MAAM,CAAC;IACV,qCAAqC;IACrC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,0EAA0E;IAC1E,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAUlE"}
@@ -0,0 +1,38 @@
1
+ /** Two-sided 95% critical values of Student's t for df = 1..30. */
2
+ const T_975 = [
3
+ 12.7062, 4.3027, 3.1824, 2.7764, 2.5706, 2.4469, 2.3646, 2.306, 2.2622, 2.2281, 2.201, 2.1788,
4
+ 2.1604, 2.1448, 2.1314, 2.1199, 2.1098, 2.1009, 2.093, 2.086, 2.0796, 2.0739, 2.0687, 2.0639,
5
+ 2.0595, 2.0555, 2.0518, 2.0484, 2.0452, 2.0423,
6
+ ];
7
+ /** The 0.975 quantile of Student's t distribution with `df` degrees of freedom. */
8
+ export function tQuantile975(df) {
9
+ if (!(df >= 1))
10
+ return NaN;
11
+ const d = Math.floor(df);
12
+ if (d <= 30)
13
+ return T_975[d - 1];
14
+ // Cornish–Fisher expansion around the normal quantile; error < 1e-4 for df > 30.
15
+ const z = 1.959964;
16
+ const z3 = z ** 3;
17
+ const z5 = z ** 5;
18
+ const z7 = z ** 7;
19
+ return (z +
20
+ (z3 + z) / (4 * d) +
21
+ (5 * z5 + 16 * z3 + 3 * z) / (96 * d * d) +
22
+ (3 * z7 + 19 * z5 + 17 * z3 - 15 * z) / (384 * d ** 3));
23
+ }
24
+ /** Mean, standard deviation and 95% t-confidence interval of `values` (non-finite values ignored). */
25
+ export function summarize(values) {
26
+ const xs = values.filter((v) => Number.isFinite(v));
27
+ const n = xs.length;
28
+ if (n === 0)
29
+ return { n, mean: null, stdDev: null, ci95: null };
30
+ const mean = xs.reduce((a, b) => a + b, 0) / n;
31
+ if (n < 2)
32
+ return { n, mean, stdDev: null, ci95: null };
33
+ const variance = xs.reduce((a, b) => a + (b - mean) ** 2, 0) / (n - 1);
34
+ const stdDev = Math.sqrt(variance);
35
+ const halfWidth = tQuantile975(n - 1) * (stdDev / Math.sqrt(n));
36
+ return { n, mean, stdDev, ci95: { low: mean - halfWidth, high: mean + halfWidth, halfWidth } };
37
+ }
38
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/stats/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Time-weighted statistic of a piecewise-constant signal (e.g. queue length, busy workers).
3
+ *
4
+ * The mean is the integral of the value over time divided by elapsed time — not an average of
5
+ * samples. Call {@link set} whenever the value changes.
6
+ */
7
+ export declare class TimeWeightedStat {
8
+ private value;
9
+ private lastTick;
10
+ private startTick;
11
+ private area;
12
+ private maxValue;
13
+ constructor(startTick?: number, initialValue?: number);
14
+ /** The current value of the signal. */
15
+ get current(): number;
16
+ /** Record that the signal changes to `value` at time `tick` (ticks must not decrease). */
17
+ set(tick: number, value: number): void;
18
+ /** Change the value by `delta` at time `tick`. */
19
+ add(tick: number, delta: number): void;
20
+ /** Time-weighted mean over [start, tick]. Returns the current value if no time has elapsed. */
21
+ mean(tick: number): number;
22
+ /** Integral of the signal over [start, tick] in value-ticks (e.g. busy-worker-ticks). */
23
+ integral(tick: number): number;
24
+ /** Largest value that persisted for a positive duration, up to `tick` (or the current value if none). */
25
+ max(tick: number): number;
26
+ /** Total time (ticks) covered since the last reset, up to `tick`. */
27
+ elapsed(tick: number): number;
28
+ /** Restart accumulation at `tick`, keeping the current value. */
29
+ reset(tick: number): void;
30
+ }
31
+ //# sourceMappingURL=time-weighted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-weighted.d.ts","sourceRoot":"","sources":["../../src/stats/time-weighted.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,SAAI,EAAE,YAAY,SAAI;IAO3C,uCAAuC;IACvC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,0FAA0F;IAC1F,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWtC,kDAAkD;IAClD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC,+FAA+F;IAC/F,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAM1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B,yGAAyG;IACzG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMzB,qEAAqE;IACrE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7B,iEAAiE;IACjE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAM1B"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Time-weighted statistic of a piecewise-constant signal (e.g. queue length, busy workers).
3
+ *
4
+ * The mean is the integral of the value over time divided by elapsed time — not an average of
5
+ * samples. Call {@link set} whenever the value changes.
6
+ */
7
+ export class TimeWeightedStat {
8
+ value;
9
+ lastTick;
10
+ startTick;
11
+ area = 0;
12
+ maxValue;
13
+ constructor(startTick = 0, initialValue = 0) {
14
+ this.value = initialValue;
15
+ this.lastTick = startTick;
16
+ this.startTick = startTick;
17
+ this.maxValue = Number.NEGATIVE_INFINITY;
18
+ }
19
+ /** The current value of the signal. */
20
+ get current() {
21
+ return this.value;
22
+ }
23
+ /** Record that the signal changes to `value` at time `tick` (ticks must not decrease). */
24
+ set(tick, value) {
25
+ if (tick > this.lastTick) {
26
+ this.area += this.value * (tick - this.lastTick);
27
+ // Only values that persisted for a positive duration count towards the maximum, so
28
+ // transient same-tick values (e.g. enqueue-then-immediately-dequeue) are ignored.
29
+ if (this.value > this.maxValue)
30
+ this.maxValue = this.value;
31
+ this.lastTick = tick;
32
+ }
33
+ this.value = value;
34
+ }
35
+ /** Change the value by `delta` at time `tick`. */
36
+ add(tick, delta) {
37
+ this.set(tick, this.value + delta);
38
+ }
39
+ /** Time-weighted mean over [start, tick]. Returns the current value if no time has elapsed. */
40
+ mean(tick) {
41
+ const elapsed = tick - this.startTick;
42
+ if (elapsed <= 0)
43
+ return this.value;
44
+ return (this.area + this.value * (tick - this.lastTick)) / elapsed;
45
+ }
46
+ /** Integral of the signal over [start, tick] in value-ticks (e.g. busy-worker-ticks). */
47
+ integral(tick) {
48
+ return this.area + this.value * Math.max(0, tick - this.lastTick);
49
+ }
50
+ /** Largest value that persisted for a positive duration, up to `tick` (or the current value if none). */
51
+ max(tick) {
52
+ let m = this.maxValue;
53
+ if (tick > this.lastTick && this.value > m)
54
+ m = this.value;
55
+ return m === Number.NEGATIVE_INFINITY ? this.value : m;
56
+ }
57
+ /** Total time (ticks) covered since the last reset, up to `tick`. */
58
+ elapsed(tick) {
59
+ return Math.max(0, tick - this.startTick);
60
+ }
61
+ /** Restart accumulation at `tick`, keeping the current value. */
62
+ reset(tick) {
63
+ this.startTick = tick;
64
+ this.lastTick = tick;
65
+ this.area = 0;
66
+ this.maxValue = Number.NEGATIVE_INFINITY;
67
+ }
68
+ }
69
+ //# sourceMappingURL=time-weighted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-weighted.js","sourceRoot":"","sources":["../../src/stats/time-weighted.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IACnB,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,SAAS,CAAS;IAClB,IAAI,GAAG,CAAC,CAAC;IACT,QAAQ,CAAS;IAEzB,YAAY,SAAS,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC3C,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,0FAA0F;IAC1F,GAAG,CAAC,IAAY,EAAE,KAAa;QAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,mFAAmF;YACnF,kFAAkF;YAClF,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,kDAAkD;IAClD,GAAG,CAAC,IAAY,EAAE,KAAa;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,+FAA+F;IAC/F,IAAI,CAAC,IAAY;QACf,MAAM,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,IAAI,OAAO,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC;IACrE,CAAC;IAED,yFAAyF;IACzF,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,yGAAyG;IACzG,GAAG,CAAC,IAAY;QACd,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3D,OAAO,CAAC,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,qEAAqE;IACrE,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC3C,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@chronon-sim/engine",
3
+ "version": "0.1.0",
4
+ "description": "Chronon Sim engine: a discrete event simulator for cloud and distributed systems (queues, worker pools, retries, autoscaling). No DOM or Node APIs, no runtime dependencies.",
5
+ "keywords": [
6
+ "simulation",
7
+ "discrete-event",
8
+ "queueing",
9
+ "capacity-planning",
10
+ "sqs",
11
+ "lambda",
12
+ "autoscaling"
13
+ ],
14
+ "license": "Apache-2.0",
15
+ "homepage": "https://github.com/NiloyBhattacharjee/chronon-sim#readme",
16
+ "bugs": {
17
+ "url": "https://github.com/NiloyBhattacharjee/chronon-sim/issues"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/NiloyBhattacharjee/chronon-sim.git",
22
+ "directory": "packages/engine"
23
+ },
24
+ "type": "module",
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "sideEffects": false,
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "scripts": {}
41
+ }