ushman-characterize 0.4.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 (99) hide show
  1. package/AGENTS.md +110 -0
  2. package/CHANGELOG.md +41 -0
  3. package/LICENSE.md +21 -0
  4. package/README.md +193 -0
  5. package/bin/ushman-characterize +19 -0
  6. package/dist/babel-config.d.ts +7 -0
  7. package/dist/babel-config.d.ts.map +1 -0
  8. package/dist/babel-config.js +17 -0
  9. package/dist/capture-server.d.ts +31 -0
  10. package/dist/capture-server.d.ts.map +1 -0
  11. package/dist/capture-server.js +199 -0
  12. package/dist/capture.d.ts +97 -0
  13. package/dist/capture.d.ts.map +1 -0
  14. package/dist/capture.js +620 -0
  15. package/dist/cli/logger.d.ts +7 -0
  16. package/dist/cli/logger.d.ts.map +1 -0
  17. package/dist/cli/logger.js +14 -0
  18. package/dist/cli/parse-flags.d.ts +8 -0
  19. package/dist/cli/parse-flags.d.ts.map +1 -0
  20. package/dist/cli/parse-flags.js +60 -0
  21. package/dist/cli.d.ts +39 -0
  22. package/dist/cli.d.ts.map +1 -0
  23. package/dist/cli.js +439 -0
  24. package/dist/constants.d.ts +20 -0
  25. package/dist/constants.d.ts.map +1 -0
  26. package/dist/constants.js +19 -0
  27. package/dist/dedupe-contract.d.ts +26 -0
  28. package/dist/dedupe-contract.d.ts.map +1 -0
  29. package/dist/dedupe-contract.js +12 -0
  30. package/dist/default-export.d.ts +6 -0
  31. package/dist/default-export.d.ts.map +1 -0
  32. package/dist/default-export.js +52 -0
  33. package/dist/format-contract.d.ts +25 -0
  34. package/dist/format-contract.d.ts.map +1 -0
  35. package/dist/format-contract.js +96 -0
  36. package/dist/function-utils.d.ts +6 -0
  37. package/dist/function-utils.d.ts.map +1 -0
  38. package/dist/function-utils.js +22 -0
  39. package/dist/generate-replay.d.ts +18 -0
  40. package/dist/generate-replay.d.ts.map +1 -0
  41. package/dist/generate-replay.js +158 -0
  42. package/dist/index.d.ts +13 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +11 -0
  45. package/dist/instrument.d.ts +39 -0
  46. package/dist/instrument.d.ts.map +1 -0
  47. package/dist/instrument.js +605 -0
  48. package/dist/ledger.d.ts +19 -0
  49. package/dist/ledger.d.ts.map +1 -0
  50. package/dist/ledger.js +50 -0
  51. package/dist/puppeteer-harness.d.ts +74 -0
  52. package/dist/puppeteer-harness.d.ts.map +1 -0
  53. package/dist/puppeteer-harness.js +248 -0
  54. package/dist/purity-classifier.d.ts +28 -0
  55. package/dist/purity-classifier.d.ts.map +1 -0
  56. package/dist/purity-classifier.js +363 -0
  57. package/dist/rebind.d.ts +26 -0
  58. package/dist/rebind.d.ts.map +1 -0
  59. package/dist/rebind.js +356 -0
  60. package/dist/replay-report.d.ts +18 -0
  61. package/dist/replay-report.d.ts.map +1 -0
  62. package/dist/replay-report.js +12 -0
  63. package/dist/scene.d.ts +24 -0
  64. package/dist/scene.d.ts.map +1 -0
  65. package/dist/scene.js +235 -0
  66. package/dist/schema-types.d.ts +40 -0
  67. package/dist/schema-types.d.ts.map +1 -0
  68. package/dist/schema-types.js +32 -0
  69. package/dist/seed-scaffolds.d.ts +31 -0
  70. package/dist/seed-scaffolds.d.ts.map +1 -0
  71. package/dist/seed-scaffolds.js +96 -0
  72. package/dist/shared.d.ts +36 -0
  73. package/dist/shared.d.ts.map +1 -0
  74. package/dist/shared.js +390 -0
  75. package/dist/state-dag.d.ts +5 -0
  76. package/dist/state-dag.d.ts.map +1 -0
  77. package/dist/state-dag.js +27 -0
  78. package/dist/stub-pure.d.ts +57 -0
  79. package/dist/stub-pure.d.ts.map +1 -0
  80. package/dist/stub-pure.js +987 -0
  81. package/dist/time.d.ts +3 -0
  82. package/dist/time.d.ts.map +1 -0
  83. package/dist/time.js +10 -0
  84. package/dist/trace-format.d.ts +24 -0
  85. package/dist/trace-format.d.ts.map +1 -0
  86. package/dist/trace-format.js +213 -0
  87. package/dist/trace-serializer.d.ts +94 -0
  88. package/dist/trace-serializer.d.ts.map +1 -0
  89. package/dist/trace-serializer.js +607 -0
  90. package/dist/tracer-runtime.d.ts +25 -0
  91. package/dist/tracer-runtime.d.ts.map +1 -0
  92. package/dist/tracer-runtime.js +291 -0
  93. package/dist/types.d.ts +13 -0
  94. package/dist/types.d.ts.map +1 -0
  95. package/dist/types.js +0 -0
  96. package/dist/workspace-paths.d.ts +64 -0
  97. package/dist/workspace-paths.d.ts.map +1 -0
  98. package/dist/workspace-paths.js +288 -0
  99. package/package.json +86 -0
@@ -0,0 +1,97 @@
1
+ import { type PuppeteerHarness } from './puppeteer-harness.ts';
2
+ import { type TraceDrainPayload } from './tracer-runtime.ts';
3
+ import type { CaptureServerHost, SceneInspectorDriver } from './types.ts';
4
+ export type CapturedTraceRecord = {
5
+ readonly args: unknown;
6
+ readonly bindingName: string;
7
+ readonly className: null | string;
8
+ readonly count: number;
9
+ readonly expected: unknown;
10
+ readonly functionName: string;
11
+ readonly memberKind: 'function' | 'method';
12
+ readonly methodName: null | string;
13
+ readonly sideEffects: readonly unknown[];
14
+ readonly state: string;
15
+ readonly thisArg: unknown;
16
+ readonly threw: unknown;
17
+ };
18
+ export type CaptureStateResult = {
19
+ readonly dedupeLimitReached: boolean;
20
+ readonly droppedUniqueCalls: number;
21
+ readonly functionCount: number;
22
+ readonly mergedExistingRecords: number;
23
+ readonly rawCalls: number;
24
+ readonly skippedExistingRecords: number;
25
+ readonly state: string;
26
+ readonly traceBytes: number;
27
+ readonly uniqueCalls: number;
28
+ };
29
+ export type CaptureStateFailure = {
30
+ readonly error: string;
31
+ readonly phase: 'capture' | 'existing-traces';
32
+ readonly successfulStatesBeforeFailure: readonly string[];
33
+ readonly state: string;
34
+ };
35
+ export type CaptureCharacterizationOptions = {
36
+ readonly bundlePath?: null | string;
37
+ readonly captureSideEffects?: boolean;
38
+ readonly harnessFactory?: (options: {
39
+ readonly headless?: boolean;
40
+ }) => PuppeteerHarness;
41
+ readonly maxUniqueRecordsPerState?: number;
42
+ readonly maxTraceBytes?: number;
43
+ readonly mode?: 'dev' | 'preview';
44
+ readonly perFunctionCap?: number;
45
+ readonly sceneInspectorDriver?: SceneInspectorDriver;
46
+ readonly sceneOnly?: boolean;
47
+ readonly serverHost?: CaptureServerHost;
48
+ readonly states?: readonly string[];
49
+ readonly workspaceRoot: string;
50
+ };
51
+ export type CaptureCharacterizationResult = {
52
+ readonly attemptedStates: readonly string[];
53
+ readonly completedStates: readonly string[];
54
+ readonly failures: readonly CaptureStateFailure[];
55
+ readonly requestedStates: readonly string[];
56
+ readonly skippedStates: readonly string[];
57
+ readonly status: 'partial' | 'success';
58
+ readonly states: readonly CaptureStateResult[];
59
+ readonly traceDir: string;
60
+ };
61
+ type MutableTraceState = {
62
+ dedupeLimitReached: boolean;
63
+ droppedUniqueCalls: number;
64
+ readonly functionNames: Set<string>;
65
+ mergedExistingRecords: number;
66
+ rawCalls: number;
67
+ readonly recordsByKey: Map<string, CapturedTraceRecord>;
68
+ readonly recordBytesByKey: Map<string, number>;
69
+ skippedExistingRecords: number;
70
+ readonly state: string;
71
+ traceBytes: number;
72
+ uniqueCalls: number;
73
+ };
74
+ /**
75
+ * Capture instrumented call traces for the requested workspace states.
76
+ */
77
+ export declare const captureCharacterization: ({ bundlePath, captureSideEffects, harnessFactory, maxTraceBytes, mode, maxUniqueRecordsPerState, perFunctionCap, sceneInspectorDriver, sceneOnly, serverHost, states, workspaceRoot, }: CaptureCharacterizationOptions) => Promise<CaptureCharacterizationResult>;
78
+ export declare const readCapturedTraceState: ({ stateId, workspaceRoot, }: {
79
+ readonly stateId: string;
80
+ readonly workspaceRoot: string;
81
+ }) => Promise<CapturedTraceRecord[]>;
82
+ export declare const __testOnly: {
83
+ buildRecordKey: (record: Omit<CapturedTraceRecord, "count" | "state">) => string;
84
+ mergeDrainPayload: ({ disableTracer, maxUniqueRecordsPerState, maxTraceBytes, payload, state, }: {
85
+ readonly disableTracer: () => Promise<void>;
86
+ readonly maxUniqueRecordsPerState?: number;
87
+ readonly maxTraceBytes: number;
88
+ readonly payload: TraceDrainPayload;
89
+ readonly state: MutableTraceState;
90
+ }) => Promise<void>;
91
+ resolveServedBundlePath: ({ bundlePath, workspaceRoot, }: {
92
+ readonly bundlePath: string;
93
+ readonly workspaceRoot: string;
94
+ }) => string;
95
+ };
96
+ export {};
97
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}