{"version":3,"file":"index.mjs","sources":["../../../src/stats/index.ts"],"sourcesContent":["import { ActiveStatsBuffer, statsBuffer } from \"./buffer\"\nimport type { LayoutProjectionMetrics } from \"./types\"\n\n/**\n * The metrics projection counts, in the order of the index it passes to\n * statsBuffer.countProjection.\n */\nconst projectionMetrics = [\n    \"nodes\",\n    \"calculatedTargetDeltas\",\n    \"calculatedProjections\",\n] as const\n\nfunction clearStatsBuffer() {\n    statsBuffer.value = null\n    statsBuffer.addProjectionMetrics = null\n    statsBuffer.countProjection = undefined\n}\n\nexport function recordStats() {\n    if (statsBuffer.value) {\n        clearStatsBuffer()\n        throw new Error(\"Stats are already being measured\")\n    }\n\n    const buffer = statsBuffer as unknown as ActiveStatsBuffer\n\n    buffer.value = {\n        layoutProjection: {\n            nodes: [],\n            calculatedTargetDeltas: [],\n            calculatedProjections: [],\n        },\n    }\n\n    buffer.addProjectionMetrics = (metrics) => {\n        const { layoutProjection } = buffer.value\n        layoutProjection.nodes.push(metrics.nodes)\n        layoutProjection.calculatedTargetDeltas.push(\n            metrics.calculatedTargetDeltas\n        )\n        layoutProjection.calculatedProjections.push(\n            metrics.calculatedProjections\n        )\n    }\n\n    /**\n     * Counting lives here rather than in projection, so bundles that never\n     * call recordStats() don't ship it.\n     */\n    const metrics: LayoutProjectionMetrics = {\n        nodes: 0,\n        calculatedTargetDeltas: 0,\n        calculatedProjections: 0,\n    }\n\n    buffer.countProjection = (metric) => {\n        if (metric !== undefined) {\n            metrics[projectionMetrics[metric]]++\n        } else {\n            buffer.addProjectionMetrics(metrics)\n            metrics.nodes =\n                metrics.calculatedTargetDeltas =\n                metrics.calculatedProjections =\n                    0\n        }\n    }\n}\n"],"names":[],"mappings":";;AAGA;;;AAGG;AACH,MAAM,iBAAiB,GAAG;IACtB,OAAO;IACP,wBAAwB;IACxB,uBAAuB;CACjB;AAEV,SAAS,gBAAgB,GAAA;AACrB,IAAA,WAAW,CAAC,KAAK,GAAG,IAAI;AACxB,IAAA,WAAW,CAAC,oBAAoB,GAAG,IAAI;AACvC,IAAA,WAAW,CAAC,eAAe,GAAG,SAAS;AAC3C;SAEgB,WAAW,GAAA;AACvB,IAAA,IAAI,WAAW,CAAC,KAAK,EAAE;AACnB,QAAA,gBAAgB,EAAE;AAClB,QAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC;IACvD;IAEA,MAAM,MAAM,GAAG,WAA2C;IAE1D,MAAM,CAAC,KAAK,GAAG;AACX,QAAA,gBAAgB,EAAE;AACd,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,sBAAsB,EAAE,EAAE;AAC1B,YAAA,qBAAqB,EAAE,EAAE;AAC5B,SAAA;KACJ;AAED,IAAA,MAAM,CAAC,oBAAoB,GAAG,CAAC,OAAO,KAAI;AACtC,QAAA,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,KAAK;QACzC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CACxC,OAAO,CAAC,sBAAsB,CACjC;QACD,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CACvC,OAAO,CAAC,qBAAqB,CAChC;AACL,IAAA,CAAC;AAED;;;AAGG;AACH,IAAA,MAAM,OAAO,GAA4B;AACrC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,sBAAsB,EAAE,CAAC;AACzB,QAAA,qBAAqB,EAAE,CAAC;KAC3B;AAED,IAAA,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,KAAI;AAChC,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE;QACxC;aAAO;AACH,YAAA,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC;AACpC,YAAA,OAAO,CAAC,KAAK;AACT,gBAAA,OAAO,CAAC,sBAAsB;AAC9B,oBAAA,OAAO,CAAC,qBAAqB;AACzB,wBAAA,CAAC;QACb;AACJ,IAAA,CAAC;AACL;;;;"}