@prairielearn/node-metrics 2.0.10 → 2.0.11

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @prairielearn/node-metrics
2
2
 
3
+ ## 2.0.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 0425922: Upgrade all JavaScript dependencies
8
+
3
9
  ## 2.0.10
4
10
 
5
11
  ### Patch Changes
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ async function emit(options) {
13
13
  const elapsedTime = process.hrtime.bigint() - time;
14
14
  // This conversion should be safe, as `Number.MAX_SAFE_INTEGER` microseconds
15
15
  // corresponds to about 258 years.
16
- const elapsedMicroseconds = Number(elapsedTime / BigInt(1000));
16
+ const elapsedMicroseconds = Number(elapsedTime / 1000n);
17
17
  const userCpuPercent = (100 * elapsedCpuUsage.user) / elapsedMicroseconds;
18
18
  const systemCpuPercent = (100 * elapsedCpuUsage.system) / elapsedMicroseconds;
19
19
  const totalCpuPercent = userCpuPercent + systemCpuPercent;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { setTimeout } from 'node:timers/promises';\n\nimport {\n CloudWatch,\n type CloudWatchClientConfig,\n type Dimension,\n} from '@aws-sdk/client-cloudwatch';\nimport loopbench from 'loopbench';\n\nconst loopbenchInstance = loopbench();\n\nlet abortController: AbortController | null = null;\nlet cpuUsage = process.cpuUsage();\nlet time = process.hrtime.bigint();\n\ninterface NodeMetricsOptions {\n awsConfig: CloudWatchClientConfig;\n intervalSeconds: number;\n namespace: string;\n dimensions: Dimension[];\n onError: (err: Error) => void;\n}\n\nasync function emit(options: NodeMetricsOptions) {\n try {\n const memoryStats = process.memoryUsage();\n\n const elapsedCpuUsage = process.cpuUsage(cpuUsage);\n // This delta is in nanoseconds.\n const elapsedTime = process.hrtime.bigint() - time;\n // This conversion should be safe, as `Number.MAX_SAFE_INTEGER` microseconds\n // corresponds to about 258 years.\n const elapsedMicroseconds = Number(elapsedTime / BigInt(1000));\n\n const userCpuPercent = (100 * elapsedCpuUsage.user) / elapsedMicroseconds;\n const systemCpuPercent = (100 * elapsedCpuUsage.system) / elapsedMicroseconds;\n const totalCpuPercent = userCpuPercent + systemCpuPercent;\n\n cpuUsage = process.cpuUsage();\n time = process.hrtime.bigint();\n\n const metrics = [\n {\n MetricName: 'NodeEventLoopDelay',\n Unit: 'Milliseconds',\n Value: loopbenchInstance.delay,\n },\n {\n MetricName: 'NodeMemoryRss',\n Unit: 'Bytes',\n Value: memoryStats.rss,\n },\n {\n MetricName: 'NodeMemoryHeapTotal',\n Unit: 'Bytes',\n Value: memoryStats.heapTotal,\n },\n {\n MetricName: 'NodeMemoryHeapUsed',\n Unit: 'Bytes',\n Value: memoryStats.heapUsed,\n },\n {\n MetricName: 'NodeMemoryExternal',\n Unit: 'Bytes',\n Value: memoryStats.external,\n },\n {\n MetricName: 'NodeCpuUser',\n Unit: 'Percent',\n Value: userCpuPercent,\n },\n {\n MetricName: 'NodeCpuSystem',\n Unit: 'Percent',\n Value: systemCpuPercent,\n },\n {\n MetricName: 'NodeCpuTotal',\n Unit: 'Percent',\n Value: totalCpuPercent,\n },\n ] as const;\n\n // We must use a config passed in from outside this package.\n // eslint-disable-next-line @prairielearn/aws-client-shared-config\n const cloudwatch = new CloudWatch(options.awsConfig);\n await cloudwatch.putMetricData({\n Namespace: options.namespace,\n MetricData: metrics.map((m) => ({\n ...m,\n StorageResolution: 1,\n Timestamp: new Date(),\n Dimensions: options.dimensions,\n })),\n });\n } catch (err: any) {\n options.onError(err);\n }\n}\n\nasync function emitLoop({\n signal,\n ...options\n}: NodeMetricsOptions & {\n signal: AbortSignal;\n}) {\n try {\n while (!signal.aborted) {\n await setTimeout(options.intervalSeconds * 1000, null, { signal, ref: false });\n await emit(options);\n }\n } catch (err: any) {\n if (err.name === 'AbortError') return;\n throw err;\n }\n}\n\nexport function start(options: NodeMetricsOptions) {\n abortController = new AbortController();\n\n // Initialize these so that we can compute a valid delta on the first run of `emit()`.\n cpuUsage = process.cpuUsage();\n time = process.hrtime.bigint();\n\n (() => emitLoop({ signal: abortController.signal, ...options }))();\n}\n\nexport function stop() {\n abortController?.abort();\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EACL,UAAU,GAGX,MAAM,4BAA4B,CAAC;AACpC,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,MAAM,iBAAiB,GAAG,SAAS,EAAE,CAAC;AAEtC,IAAI,eAAe,GAA2B,IAAI,CAAC;AACnD,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;AAClC,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAUnC,KAAK,UAAU,IAAI,CAAC,OAA2B;IAC7C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE1C,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnD,gCAAgC;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;QACnD,4EAA4E;QAC5E,kCAAkC;QAClC,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;QAExD,MAAM,cAAc,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC;QAC1E,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC;QAC9E,MAAM,eAAe,GAAG,cAAc,GAAG,gBAAgB,CAAC;QAE1D,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG;YACd;gBACE,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,iBAAiB,CAAC,KAAK;aAC/B;YACD;gBACE,UAAU,EAAE,eAAe;gBAC3B,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW,CAAC,GAAG;aACvB;YACD;gBACE,UAAU,EAAE,qBAAqB;gBACjC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW,CAAC,SAAS;aAC7B;YACD;gBACE,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW,CAAC,QAAQ;aAC5B;YACD;gBACE,UAAU,EAAE,oBAAoB;gBAChC,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,WAAW,CAAC,QAAQ;aAC5B;YACD;gBACE,UAAU,EAAE,aAAa;gBACzB,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,cAAc;aACtB;YACD;gBACE,UAAU,EAAE,eAAe;gBAC3B,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,gBAAgB;aACxB;YACD;gBACE,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,eAAe;aACvB;SACO,CAAC;QAEX,4DAA4D;QAC5D,kEAAkE;QAClE,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,CAAC,aAAa,CAAC;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,CAAC;gBACJ,iBAAiB,EAAE,CAAC;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EACtB,MAAM,EACN,GAAG,OAAO,EAGX;IACC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO;QACtC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAA2B;IAC/C,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAExC,sFAAsF;IACtF,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9B,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAE/B,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,eAAe,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC","sourcesContent":["import { setTimeout } from 'node:timers/promises';\n\nimport {\n CloudWatch,\n type CloudWatchClientConfig,\n type Dimension,\n} from '@aws-sdk/client-cloudwatch';\nimport loopbench from 'loopbench';\n\nconst loopbenchInstance = loopbench();\n\nlet abortController: AbortController | null = null;\nlet cpuUsage = process.cpuUsage();\nlet time = process.hrtime.bigint();\n\ninterface NodeMetricsOptions {\n awsConfig: CloudWatchClientConfig;\n intervalSeconds: number;\n namespace: string;\n dimensions: Dimension[];\n onError: (err: Error) => void;\n}\n\nasync function emit(options: NodeMetricsOptions) {\n try {\n const memoryStats = process.memoryUsage();\n\n const elapsedCpuUsage = process.cpuUsage(cpuUsage);\n // This delta is in nanoseconds.\n const elapsedTime = process.hrtime.bigint() - time;\n // This conversion should be safe, as `Number.MAX_SAFE_INTEGER` microseconds\n // corresponds to about 258 years.\n const elapsedMicroseconds = Number(elapsedTime / 1000n);\n\n const userCpuPercent = (100 * elapsedCpuUsage.user) / elapsedMicroseconds;\n const systemCpuPercent = (100 * elapsedCpuUsage.system) / elapsedMicroseconds;\n const totalCpuPercent = userCpuPercent + systemCpuPercent;\n\n cpuUsage = process.cpuUsage();\n time = process.hrtime.bigint();\n\n const metrics = [\n {\n MetricName: 'NodeEventLoopDelay',\n Unit: 'Milliseconds',\n Value: loopbenchInstance.delay,\n },\n {\n MetricName: 'NodeMemoryRss',\n Unit: 'Bytes',\n Value: memoryStats.rss,\n },\n {\n MetricName: 'NodeMemoryHeapTotal',\n Unit: 'Bytes',\n Value: memoryStats.heapTotal,\n },\n {\n MetricName: 'NodeMemoryHeapUsed',\n Unit: 'Bytes',\n Value: memoryStats.heapUsed,\n },\n {\n MetricName: 'NodeMemoryExternal',\n Unit: 'Bytes',\n Value: memoryStats.external,\n },\n {\n MetricName: 'NodeCpuUser',\n Unit: 'Percent',\n Value: userCpuPercent,\n },\n {\n MetricName: 'NodeCpuSystem',\n Unit: 'Percent',\n Value: systemCpuPercent,\n },\n {\n MetricName: 'NodeCpuTotal',\n Unit: 'Percent',\n Value: totalCpuPercent,\n },\n ] as const;\n\n // We must use a config passed in from outside this package.\n // eslint-disable-next-line @prairielearn/aws-client-shared-config\n const cloudwatch = new CloudWatch(options.awsConfig);\n await cloudwatch.putMetricData({\n Namespace: options.namespace,\n MetricData: metrics.map((m) => ({\n ...m,\n StorageResolution: 1,\n Timestamp: new Date(),\n Dimensions: options.dimensions,\n })),\n });\n } catch (err: any) {\n options.onError(err);\n }\n}\n\nasync function emitLoop({\n signal,\n ...options\n}: NodeMetricsOptions & {\n signal: AbortSignal;\n}) {\n try {\n while (!signal.aborted) {\n await setTimeout(options.intervalSeconds * 1000, null, { signal, ref: false });\n await emit(options);\n }\n } catch (err: any) {\n if (err.name === 'AbortError') return;\n throw err;\n }\n}\n\nexport function start(options: NodeMetricsOptions) {\n abortController = new AbortController();\n\n // Initialize these so that we can compute a valid delta on the first run of `emit()`.\n cpuUsage = process.cpuUsage();\n time = process.hrtime.bigint();\n\n (() => emitLoop({ signal: abortController.signal, ...options }))();\n}\n\nexport function stop() {\n abortController?.abort();\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prairielearn/node-metrics",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,13 +13,13 @@
13
13
  "dev": "tsc --watch --preserveWatchOutput"
14
14
  },
15
15
  "dependencies": {
16
- "@aws-sdk/client-cloudwatch": "^3.899.0",
16
+ "@aws-sdk/client-cloudwatch": "^3.922.0",
17
17
  "loopbench": "^2.0.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@prairielearn/tsconfig": "^0.0.0",
21
21
  "@types/loopbench": "^1.2.4",
22
- "@types/node": "^22.18.8",
22
+ "@types/node": "^22.18.13",
23
23
  "typescript": "^5.9.3"
24
24
  }
25
25
  }
package/src/index.ts CHANGED
@@ -30,7 +30,7 @@ async function emit(options: NodeMetricsOptions) {
30
30
  const elapsedTime = process.hrtime.bigint() - time;
31
31
  // This conversion should be safe, as `Number.MAX_SAFE_INTEGER` microseconds
32
32
  // corresponds to about 258 years.
33
- const elapsedMicroseconds = Number(elapsedTime / BigInt(1000));
33
+ const elapsedMicroseconds = Number(elapsedTime / 1000n);
34
34
 
35
35
  const userCpuPercent = (100 * elapsedCpuUsage.user) / elapsedMicroseconds;
36
36
  const systemCpuPercent = (100 * elapsedCpuUsage.system) / elapsedMicroseconds;