qnce-engine 1.3.2 → 1.4.1
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/README.md +134 -2
- package/dist/adapters/contracts.d.ts +1 -1
- package/dist/adapters/contracts.d.ts.map +1 -1
- package/dist/adapters/storage/MockAdapters.d.ts +89 -0
- package/dist/adapters/storage/MockAdapters.d.ts.map +1 -0
- package/dist/adapters/storage/MockAdapters.js +109 -0
- package/dist/adapters/storage/MockAdapters.js.map +1 -0
- package/dist/adapters/story/CustomJSONAdapter.d.ts +1 -1
- package/dist/adapters/story/CustomJSONAdapter.d.ts.map +1 -1
- package/dist/adapters/story/CustomJSONAdapter.js +20 -14
- package/dist/adapters/story/CustomJSONAdapter.js.map +1 -1
- package/dist/adapters/story/InkAdapter.d.ts +1 -1
- package/dist/adapters/story/InkAdapter.d.ts.map +1 -1
- package/dist/adapters/story/InkAdapter.js +7 -10
- package/dist/adapters/story/InkAdapter.js.map +1 -1
- package/dist/adapters/story/TwisonAdapter.d.ts +1 -1
- package/dist/adapters/story/TwisonAdapter.d.ts.map +1 -1
- package/dist/adapters/story/TwisonAdapter.js +2 -2
- package/dist/adapters/story/TwisonAdapter.js.map +1 -1
- package/dist/cli/audit.js +1 -0
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +31 -20
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/init.js +1 -0
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/perf.d.ts.map +1 -1
- package/dist/cli/perf.js +30 -0
- package/dist/cli/perf.js.map +1 -1
- package/dist/cli/play.d.ts.map +1 -1
- package/dist/cli/play.js +90 -77
- package/dist/cli/play.js.map +1 -1
- package/dist/engine/condition.d.ts +25 -3
- package/dist/engine/condition.d.ts.map +1 -1
- package/dist/engine/condition.js +358 -64
- package/dist/engine/condition.js.map +1 -1
- package/dist/engine/core.d.ts +93 -1
- package/dist/engine/core.d.ts.map +1 -1
- package/dist/engine/core.js +405 -33
- package/dist/engine/core.js.map +1 -1
- package/dist/engine/demo-story.d.ts +1 -0
- package/dist/engine/demo-story.d.ts.map +1 -1
- package/dist/engine/demo-story.js +1 -0
- package/dist/engine/demo-story.js.map +1 -1
- package/dist/engine/error-factory.d.ts +86 -0
- package/dist/engine/error-factory.d.ts.map +1 -0
- package/dist/engine/error-factory.js +87 -0
- package/dist/engine/error-factory.js.map +1 -0
- package/dist/engine/errors.d.ts +3 -0
- package/dist/engine/errors.d.ts.map +1 -1
- package/dist/engine/errors.js +3 -0
- package/dist/engine/errors.js.map +1 -1
- package/dist/engine/validation.js +1 -1
- package/dist/engine/validation.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/react.d.ts +20 -3
- package/dist/integrations/react.d.ts.map +1 -1
- package/dist/integrations/react.js +15 -2
- package/dist/integrations/react.js.map +1 -1
- package/dist/narrative/branching/models.d.ts +1 -0
- package/dist/narrative/branching/models.d.ts.map +1 -1
- package/dist/narrative/branching/models.js.map +1 -1
- package/dist/performance/AdaptiveControllers.d.ts +51 -0
- package/dist/performance/AdaptiveControllers.d.ts.map +1 -0
- package/dist/performance/AdaptiveControllers.js +87 -0
- package/dist/performance/AdaptiveControllers.js.map +1 -0
- package/dist/performance/ContextPool.d.ts +1 -0
- package/dist/performance/ContextPool.d.ts.map +1 -0
- package/dist/performance/ContextPool.js +2 -0
- package/dist/performance/ContextPool.js.map +1 -0
- package/dist/performance/HotReloadDelta.d.ts +5 -0
- package/dist/performance/HotReloadDelta.d.ts.map +1 -1
- package/dist/performance/HotReloadDelta.js +18 -4
- package/dist/performance/HotReloadDelta.js.map +1 -1
- package/dist/performance/ObjectPool.d.ts.map +1 -1
- package/dist/performance/ObjectPool.js +4 -1
- package/dist/performance/ObjectPool.js.map +1 -1
- package/dist/performance/PerfReporter.d.ts +69 -0
- package/dist/performance/PerfReporter.d.ts.map +1 -1
- package/dist/performance/PerfReporter.js +314 -28
- package/dist/performance/PerfReporter.js.map +1 -1
- package/dist/performance/ThreadPool.d.ts +5 -0
- package/dist/performance/ThreadPool.d.ts.map +1 -1
- package/dist/performance/ThreadPool.js +33 -5
- package/dist/performance/ThreadPool.js.map +1 -1
- package/dist/persistence/StorageAdapters.d.ts.map +1 -1
- package/dist/persistence/StorageAdapters.js +13 -19
- package/dist/persistence/StorageAdapters.js.map +1 -1
- package/dist/qnce-engine.d.ts +2258 -0
- package/dist/quantum/entangler.d.ts +13 -0
- package/dist/quantum/entangler.d.ts.map +1 -0
- package/dist/quantum/entangler.js +24 -0
- package/dist/quantum/entangler.js.map +1 -0
- package/dist/quantum/flags.d.ts +24 -0
- package/dist/quantum/flags.d.ts.map +1 -0
- package/dist/quantum/flags.js +29 -0
- package/dist/quantum/flags.js.map +1 -0
- package/dist/quantum/integration.d.ts +26 -0
- package/dist/quantum/integration.d.ts.map +1 -0
- package/dist/quantum/integration.js +38 -0
- package/dist/quantum/integration.js.map +1 -0
- package/dist/quantum/measurement.d.ts +22 -0
- package/dist/quantum/measurement.d.ts.map +1 -0
- package/dist/quantum/measurement.js +44 -0
- package/dist/quantum/measurement.js.map +1 -0
- package/dist/quantum/phase.d.ts +20 -0
- package/dist/quantum/phase.d.ts.map +1 -0
- package/dist/quantum/phase.js +22 -0
- package/dist/quantum/phase.js.map +1 -0
- package/dist/quantum/types.d.ts +12 -0
- package/dist/quantum/types.d.ts.map +1 -0
- package/dist/quantum/types.js +5 -0
- package/dist/quantum/types.js.map +1 -0
- package/dist/schemas/validateStoryData.d.ts.map +1 -1
- package/dist/schemas/validateStoryData.js +8 -2
- package/dist/schemas/validateStoryData.js.map +1 -1
- package/dist/telemetry/core.d.ts +27 -1
- package/dist/telemetry/core.d.ts.map +1 -1
- package/dist/telemetry/core.js +63 -8
- package/dist/telemetry/core.js.map +1 -1
- package/dist/telemetry/types.d.ts +27 -0
- package/dist/telemetry/types.d.ts.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/ui/__tests__/AutosaveIndicator.test.js +10 -13
- package/dist/ui/__tests__/AutosaveIndicator.test.js.map +1 -1
- package/dist/ui/__tests__/UndoRedoControls.test.js +7 -9
- package/dist/ui/__tests__/UndoRedoControls.test.js.map +1 -1
- package/dist/ui/components/AutosaveIndicator.d.ts +1 -0
- package/dist/ui/components/AutosaveIndicator.d.ts.map +1 -1
- package/dist/ui/components/AutosaveIndicator.js +2 -1
- package/dist/ui/components/AutosaveIndicator.js.map +1 -1
- package/dist/ui/components/UndoRedoControls.d.ts +1 -0
- package/dist/ui/components/UndoRedoControls.d.ts.map +1 -1
- package/dist/ui/components/UndoRedoControls.js +1 -0
- package/dist/ui/components/UndoRedoControls.js.map +1 -1
- package/dist/ui/hooks/useKeyboardShortcuts.d.ts +1 -0
- package/dist/ui/hooks/useKeyboardShortcuts.d.ts.map +1 -1
- package/dist/ui/hooks/useKeyboardShortcuts.js +17 -5
- package/dist/ui/hooks/useKeyboardShortcuts.js.map +1 -1
- package/dist/ui/types.d.ts +6 -0
- package/dist/ui/types.d.ts.map +1 -1
- package/dist/ui/types.js +1 -0
- package/dist/ui/types.js.map +1 -1
- package/dist/utils/debug-logger.d.ts +20 -0
- package/dist/utils/debug-logger.d.ts.map +1 -0
- package/dist/utils/debug-logger.js +24 -0
- package/dist/utils/debug-logger.js.map +1 -0
- package/dist/utils/hot-profiler.d.ts +21 -0
- package/dist/utils/hot-profiler.d.ts.map +1 -0
- package/dist/utils/hot-profiler.js +36 -0
- package/dist/utils/hot-profiler.js.map +1 -0
- package/dist/utils/intern.d.ts +11 -0
- package/dist/utils/intern.d.ts.map +1 -0
- package/dist/utils/intern.js +45 -0
- package/dist/utils/intern.js.map +1 -0
- package/dist/utils/logger.d.ts +34 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +115 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/PERFORMANCE.md +330 -0
- package/examples/fluent-builder-prototype.ts +71 -0
- package/examples/quantum-integration-demo.ts +51 -0
- package/package.json +25 -9
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entangler primitive for declarative variable binding
|
|
3
|
+
* @beta
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
export type TransformFn = (value: unknown) => unknown;
|
|
7
|
+
/** @beta @experimental */
|
|
8
|
+
export declare class Entangler<TKey extends string = string> {
|
|
9
|
+
private bindings;
|
|
10
|
+
bind(from: TKey, to: TKey, transform?: TransformFn): this;
|
|
11
|
+
apply(flags: Record<string, unknown>): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=entangler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entangler.d.ts","sourceRoot":"","sources":["../../src/quantum/entangler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAEtD,0BAA0B;AAC1B,qBAAa,SAAS,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IACjD,OAAO,CAAC,QAAQ,CAAgE;IAEhF,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,WAAW;IAKlD,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMrC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Entangler primitive for declarative variable binding
|
|
4
|
+
* @beta
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Entangler = void 0;
|
|
9
|
+
/** @beta @experimental */
|
|
10
|
+
class Entangler {
|
|
11
|
+
bindings = [];
|
|
12
|
+
bind(from, to, transform) {
|
|
13
|
+
this.bindings.push({ from, to, transform });
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
apply(flags) {
|
|
17
|
+
for (const b of this.bindings) {
|
|
18
|
+
const v = flags[b.from];
|
|
19
|
+
flags[b.to] = b.transform ? b.transform(v) : v;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Entangler = Entangler;
|
|
24
|
+
//# sourceMappingURL=entangler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entangler.js","sourceRoot":"","sources":["../../src/quantum/entangler.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,0BAA0B;AAC1B,MAAa,SAAS;IACZ,QAAQ,GAA6D,EAAE,CAAC;IAEhF,IAAI,CAAC,IAAU,EAAE,EAAQ,EAAE,SAAuB;QAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAA8B;QAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAc,CAAC,CAAC;YAClC,KAAK,CAAC,CAAC,CAAC,EAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAdD,8BAcC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature flags utility to gate experimental behavior
|
|
3
|
+
* @beta
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @beta
|
|
8
|
+
* @experimental
|
|
9
|
+
*/
|
|
10
|
+
export type FeatureFlagsConfig = {
|
|
11
|
+
[flag: string]: boolean;
|
|
12
|
+
};
|
|
13
|
+
/** @beta @experimental */
|
|
14
|
+
export declare class FeatureFlags {
|
|
15
|
+
private flags;
|
|
16
|
+
constructor(initial?: FeatureFlagsConfig);
|
|
17
|
+
enable(flag: string): void;
|
|
18
|
+
disable(flag: string): void;
|
|
19
|
+
isEnabled(flag: string): boolean;
|
|
20
|
+
getAll(): {
|
|
21
|
+
[x: string]: boolean;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/quantum/flags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF,0BAA0B;AAC1B,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqB;gBAEtB,OAAO,CAAC,EAAE,kBAAkB;IAIxC,MAAM,CAAC,IAAI,EAAE,MAAM;IAInB,OAAO,CAAC,IAAI,EAAE,MAAM;IAIpB,SAAS,CAAC,IAAI,EAAE,MAAM;IAItB,MAAM;;;CAGP"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Feature flags utility to gate experimental behavior
|
|
4
|
+
* @beta
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.FeatureFlags = void 0;
|
|
9
|
+
/** @beta @experimental */
|
|
10
|
+
class FeatureFlags {
|
|
11
|
+
flags;
|
|
12
|
+
constructor(initial) {
|
|
13
|
+
this.flags = { ...(initial || {}) };
|
|
14
|
+
}
|
|
15
|
+
enable(flag) {
|
|
16
|
+
this.flags[flag] = true;
|
|
17
|
+
}
|
|
18
|
+
disable(flag) {
|
|
19
|
+
this.flags[flag] = false;
|
|
20
|
+
}
|
|
21
|
+
isEnabled(flag) {
|
|
22
|
+
return !!this.flags[flag];
|
|
23
|
+
}
|
|
24
|
+
getAll() {
|
|
25
|
+
return { ...this.flags };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.FeatureFlags = FeatureFlags;
|
|
29
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/quantum/flags.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAUH,0BAA0B;AAC1B,MAAa,YAAY;IACf,KAAK,CAAqB;IAElC,YAAY,OAA4B;QACtC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AAtBD,oCAsBC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional integration helpers for quantum primitives behind feature flags
|
|
3
|
+
* @beta
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
import type { QNCEEngine } from '../engine/core.js';
|
|
7
|
+
import { Phase } from './phase.js';
|
|
8
|
+
import { Entangler } from './entangler.js';
|
|
9
|
+
import { FeatureFlags, type FeatureFlagsConfig } from './flags.js';
|
|
10
|
+
/** @beta @experimental */
|
|
11
|
+
export type QuantumIntegration = {
|
|
12
|
+
isPhaseActive: (phase: Phase, ctx?: {
|
|
13
|
+
nodeId?: string;
|
|
14
|
+
}) => boolean;
|
|
15
|
+
entangle: (configure: (e: Entangler) => Entangler) => void;
|
|
16
|
+
detach: () => void;
|
|
17
|
+
flags: FeatureFlags;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Attach optional quantum helpers to an engine instance. No-ops unless the corresponding
|
|
21
|
+
* feature flags are enabled. This does not mutate engine behavior; it only provides
|
|
22
|
+
* opt-in utilities that operate against engine.flags.
|
|
23
|
+
*/
|
|
24
|
+
/** @beta @experimental */
|
|
25
|
+
export declare function attachQuantumFeatures(engine: Pick<QNCEEngine, 'flags'>, flagsConfig?: FeatureFlags | FeatureFlagsConfig): QuantumIntegration;
|
|
26
|
+
//# sourceMappingURL=integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/quantum/integration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACpE,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,CAAC;IAC3D,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,0BAA0B;AAC1B,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EACjC,WAAW,CAAC,EAAE,YAAY,GAAG,kBAAkB,GAC9C,kBAAkB,CAoBpB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Optional integration helpers for quantum primitives behind feature flags
|
|
4
|
+
* @beta
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.attachQuantumFeatures = attachQuantumFeatures;
|
|
9
|
+
const entangler_js_1 = require("./entangler.js");
|
|
10
|
+
const flags_js_1 = require("./flags.js");
|
|
11
|
+
/**
|
|
12
|
+
* Attach optional quantum helpers to an engine instance. No-ops unless the corresponding
|
|
13
|
+
* feature flags are enabled. This does not mutate engine behavior; it only provides
|
|
14
|
+
* opt-in utilities that operate against engine.flags.
|
|
15
|
+
*/
|
|
16
|
+
/** @beta @experimental */
|
|
17
|
+
function attachQuantumFeatures(engine, flagsConfig) {
|
|
18
|
+
const flags = flagsConfig instanceof flags_js_1.FeatureFlags ? flagsConfig : new flags_js_1.FeatureFlags(flagsConfig);
|
|
19
|
+
const isOn = (key) => flags.isEnabled(key);
|
|
20
|
+
return {
|
|
21
|
+
flags,
|
|
22
|
+
isPhaseActive: (phase, ctx) => {
|
|
23
|
+
if (!isOn('quantum.phases'))
|
|
24
|
+
return false;
|
|
25
|
+
return phase.isActive({ flags: engine.flags, nodeId: ctx?.nodeId });
|
|
26
|
+
},
|
|
27
|
+
entangle: (configure) => {
|
|
28
|
+
if (!isOn('quantum.entanglement'))
|
|
29
|
+
return; // no-op when disabled
|
|
30
|
+
const e = new entangler_js_1.Entangler();
|
|
31
|
+
configure(e).apply(engine.flags);
|
|
32
|
+
},
|
|
33
|
+
detach: () => {
|
|
34
|
+
// currently stateless; reserved for future wiring
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/quantum/integration.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAqBH,sDAuBC;AAxCD,iDAA2C;AAC3C,yCAAmE;AAUnE;;;;GAIG;AACH,0BAA0B;AAC1B,SAAgB,qBAAqB,CACnC,MAAiC,EACjC,WAA+C;IAE/C,MAAM,KAAK,GAAG,WAAW,YAAY,uBAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,uBAAY,CAAC,WAAW,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAEnD,OAAO;QACL,KAAK;QACL,aAAa,EAAE,CAAC,KAAY,EAAE,GAAyB,EAAE,EAAE;YACzD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1C,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,QAAQ,EAAE,CAAC,SAAsC,EAAE,EAAE;YACnD,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBAAE,OAAO,CAAC,sBAAsB;YACjE,MAAM,CAAC,GAAG,IAAI,wBAAS,EAAE,CAAC;YAC1B,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,kDAAkD;QACpD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** @beta @experimental */
|
|
2
|
+
export type MeasurementContext = {
|
|
3
|
+
flags: Record<string, unknown>;
|
|
4
|
+
nodeId?: string;
|
|
5
|
+
};
|
|
6
|
+
/** @beta @experimental */
|
|
7
|
+
export type Sampler = (ctx: MeasurementContext) => boolean | number;
|
|
8
|
+
/** @beta @experimental */
|
|
9
|
+
export declare class Measurement {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
private sampler?;
|
|
12
|
+
private trials;
|
|
13
|
+
private successes;
|
|
14
|
+
constructor(name: string, sampler?: Sampler);
|
|
15
|
+
sample(ctx?: MeasurementContext): boolean;
|
|
16
|
+
getStats(): {
|
|
17
|
+
trials: number;
|
|
18
|
+
successes: number;
|
|
19
|
+
rate: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=measurement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurement.d.ts","sourceRoot":"","sources":["../../src/quantum/measurement.ts"],"names":[],"mappings":"AAGA,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,0BAA0B;AAC1B,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,GAAG,MAAM,CAAC;AAEpE,0BAA0B;AAC1B,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;IAK3C,MAAM,CAAC,GAAG,GAAE,kBAAkC,GAAG,OAAO;IAmBxD,QAAQ;;;;;CAKT"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Experimental Measurement primitive
|
|
3
|
+
// Allows sampling outcomes (boolean or probabilistic) and tracking rates.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.Measurement = void 0;
|
|
6
|
+
/** @beta @experimental */
|
|
7
|
+
class Measurement {
|
|
8
|
+
name;
|
|
9
|
+
sampler;
|
|
10
|
+
trials = 0;
|
|
11
|
+
successes = 0;
|
|
12
|
+
constructor(name, sampler) {
|
|
13
|
+
this.name = name;
|
|
14
|
+
this.sampler = sampler;
|
|
15
|
+
}
|
|
16
|
+
sample(ctx = { flags: {} }) {
|
|
17
|
+
let result;
|
|
18
|
+
if (this.sampler) {
|
|
19
|
+
const out = this.sampler(ctx);
|
|
20
|
+
if (typeof out === 'number') {
|
|
21
|
+
const p = Math.max(0, Math.min(1, out));
|
|
22
|
+
result = Math.random() < p;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
result = !!out;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// default fair coin
|
|
30
|
+
result = Math.random() < 0.5;
|
|
31
|
+
}
|
|
32
|
+
this.trials++;
|
|
33
|
+
if (result)
|
|
34
|
+
this.successes++;
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
getStats() {
|
|
38
|
+
const { trials, successes } = this;
|
|
39
|
+
const rate = trials > 0 ? successes / trials : 0;
|
|
40
|
+
return { trials, successes, rate };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.Measurement = Measurement;
|
|
44
|
+
//# sourceMappingURL=measurement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measurement.js","sourceRoot":"","sources":["../../src/quantum/measurement.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,0EAA0E;;;AAQ1E,0BAA0B;AAC1B,MAAa,WAAW;IACb,IAAI,CAAS;IACd,OAAO,CAAW;IAClB,MAAM,GAAG,CAAC,CAAC;IACX,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,IAAY,EAAE,OAAiB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,MAA0B,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5C,IAAI,MAAe,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,oBAAoB;YACpB,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,MAAM;YAAE,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;CACF;AAnCD,kCAmCC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase primitive representing a labeled coexistence region
|
|
3
|
+
* @beta
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
/** @beta @experimental */
|
|
7
|
+
export interface PhaseContext {
|
|
8
|
+
flags: Record<string, unknown>;
|
|
9
|
+
nodeId?: string;
|
|
10
|
+
}
|
|
11
|
+
/** @beta @experimental */
|
|
12
|
+
export type PhasePredicate = (ctx: PhaseContext) => boolean;
|
|
13
|
+
/** @beta @experimental */
|
|
14
|
+
export declare class Phase {
|
|
15
|
+
readonly name: string;
|
|
16
|
+
when?: PhasePredicate | undefined;
|
|
17
|
+
constructor(name: string, when?: PhasePredicate | undefined);
|
|
18
|
+
isActive(ctx: PhaseContext): boolean;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../../src/quantum/phase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0BAA0B;AAC1B,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC;AAE5D,0BAA0B;AAC1B,qBAAa,KAAK;aACY,IAAI,EAAE,MAAM;IAAS,IAAI,CAAC,EAAE,cAAc;gBAA1C,IAAI,EAAE,MAAM,EAAS,IAAI,CAAC,EAAE,cAAc,YAAA;IACtE,QAAQ,CAAC,GAAG,EAAE,YAAY;CAG3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Phase primitive representing a labeled coexistence region
|
|
4
|
+
* @beta
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Phase = void 0;
|
|
9
|
+
/** @beta @experimental */
|
|
10
|
+
class Phase {
|
|
11
|
+
name;
|
|
12
|
+
when;
|
|
13
|
+
constructor(name, when) {
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.when = when;
|
|
16
|
+
}
|
|
17
|
+
isActive(ctx) {
|
|
18
|
+
return !this.when || this.when(ctx);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Phase = Phase;
|
|
22
|
+
//# sourceMappingURL=phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/quantum/phase.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAWH,0BAA0B;AAC1B,MAAa,KAAK;IACY;IAAqB;IAAjD,YAA4B,IAAY,EAAS,IAAqB;QAA1C,SAAI,GAAJ,IAAI,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAC1E,QAAQ,CAAC,GAAiB;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;CACF;AALD,sBAKC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @beta @experimental */
|
|
2
|
+
export type FeatureFlagKey = string;
|
|
3
|
+
/** @beta @experimental */
|
|
4
|
+
export type EntangleTransform = (value: unknown) => unknown;
|
|
5
|
+
/** @beta @experimental */
|
|
6
|
+
export interface PhasePredicateContext {
|
|
7
|
+
flags: Record<string, unknown>;
|
|
8
|
+
nodeId?: string;
|
|
9
|
+
}
|
|
10
|
+
/** @beta @experimental */
|
|
11
|
+
export type PhasePredicate = (ctx: PhasePredicateContext) => boolean;
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/quantum/types.ts"],"names":[],"mappings":"AAGA,0BAA0B;AAC1B,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,0BAA0B;AAC1B,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAE5D,0BAA0B;AAC1B,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0BAA0B;AAC1B,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,qBAAqB,KAAK,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/quantum/types.ts"],"names":[],"mappings":";AAAA,mDAAmD;AACnD,mCAAmC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateStoryData.d.ts","sourceRoot":"","sources":["../../src/schemas/validateStoryData.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"validateStoryData.d.ts","sourceRoot":"","sources":["../../src/schemas/validateStoryData.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,WAAW,EAAyC,MAAM,KAAK,CAAC;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAUhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,CAInE"}
|
|
@@ -8,9 +8,15 @@ exports.validateStoryData = validateStoryData;
|
|
|
8
8
|
const ajv_1 = __importDefault(require("ajv"));
|
|
9
9
|
const story_data_schema_json_1 = __importDefault(require("./story-data.schema.json"));
|
|
10
10
|
const ajv = new ajv_1.default({ allErrors: true });
|
|
11
|
-
const
|
|
11
|
+
const _validateFn = ajv.compile(story_data_schema_json_1.default);
|
|
12
|
+
const validateFn = ((data) => _validateFn(data));
|
|
13
|
+
// Attach errors getter compatibility
|
|
14
|
+
Object.defineProperty(validateFn, 'errors', {
|
|
15
|
+
get: () => _validateFn.errors,
|
|
16
|
+
});
|
|
12
17
|
function validateStoryData(data) {
|
|
13
18
|
const valid = validateFn(data);
|
|
14
|
-
|
|
19
|
+
const errs = validateFn.errors;
|
|
20
|
+
return { valid, errors: valid ? undefined : (errs || undefined) };
|
|
15
21
|
}
|
|
16
22
|
//# sourceMappingURL=validateStoryData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateStoryData.js","sourceRoot":"","sources":["../../src/schemas/validateStoryData.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"validateStoryData.js","sourceRoot":"","sources":["../../src/schemas/validateStoryData.ts"],"names":[],"mappings":";;;;;AAkBA,8CAIC;AAtBD,sDAAsD;AACtD,8CAA8E;AAC9E,sFAA8C;AAG9C,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,gCAA8B,CAAgC,CAAC;AAC/F,MAAM,UAAU,GAAG,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAY,CAA8D,CAAC;AACpI,qCAAqC;AACrC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE;IAC1C,GAAG,EAAE,GAAG,EAAE,CAAE,WAAW,CAAC,MAA+C;CACxE,CAAC,CAAC;AAOH,SAAgB,iBAAiB,CAAC,IAAe;IAC/C,MAAM,KAAK,GAAY,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,IAAI,GAAI,UAAoD,CAAC,MAAM,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC;AACpE,CAAC"}
|
package/dist/telemetry/core.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { QEvent, Telemetry, TelemetryAdapter, TelemetryOptions } from './types.js';
|
|
2
|
+
/** Simple fixed-size ring buffer used by telemetry queue */
|
|
3
|
+
/** @beta @experimental */
|
|
2
4
|
export declare class RingBuffer<T> {
|
|
3
5
|
private capacity;
|
|
4
6
|
private buf;
|
|
@@ -13,6 +15,8 @@ export declare class RingBuffer<T> {
|
|
|
13
15
|
pop(): T | undefined;
|
|
14
16
|
drain(max: number): T[];
|
|
15
17
|
}
|
|
18
|
+
/** Internal telemetry implementation */
|
|
19
|
+
/** @beta @experimental */
|
|
16
20
|
export declare class TelemetryImpl implements Telemetry {
|
|
17
21
|
private opts;
|
|
18
22
|
private adapter;
|
|
@@ -41,6 +45,11 @@ export declare class TelemetryImpl implements Telemetry {
|
|
|
41
45
|
private restartTimer;
|
|
42
46
|
dispose(): Promise<void>;
|
|
43
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Built-in console adapter (dev-friendly pretty print)
|
|
50
|
+
* @beta
|
|
51
|
+
* @experimental
|
|
52
|
+
*/
|
|
44
53
|
export declare class ConsoleAdapter implements TelemetryAdapter {
|
|
45
54
|
configure(): void;
|
|
46
55
|
send(batch: QEvent[]): Promise<void>;
|
|
@@ -49,6 +58,11 @@ export interface FileAdapterOptions {
|
|
|
49
58
|
path: string;
|
|
50
59
|
rotateBytes?: number;
|
|
51
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* File adapter writing newline-delimited JSON events
|
|
63
|
+
* @beta
|
|
64
|
+
* @experimental
|
|
65
|
+
*/
|
|
52
66
|
export declare class FileAdapter implements TelemetryAdapter {
|
|
53
67
|
private opts;
|
|
54
68
|
private stream;
|
|
@@ -57,6 +71,18 @@ export declare class FileAdapter implements TelemetryAdapter {
|
|
|
57
71
|
flush(): Promise<void>;
|
|
58
72
|
dispose(): Promise<void>;
|
|
59
73
|
}
|
|
60
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Factory for built-in telemetry adapters
|
|
76
|
+
* @beta
|
|
77
|
+
* @experimental
|
|
78
|
+
*/
|
|
79
|
+
export declare function createTelemetryAdapter(kind: 'console' | 'file', opts?: {
|
|
80
|
+
path?: string;
|
|
81
|
+
}): TelemetryAdapter;
|
|
82
|
+
/**
|
|
83
|
+
* Create a telemetry instance; pass adapter + options
|
|
84
|
+
* @beta
|
|
85
|
+
* @experimental
|
|
86
|
+
*/
|
|
61
87
|
export declare function createTelemetry(options: TelemetryOptions): Telemetry;
|
|
62
88
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAanF,qBAAa,UAAU,CAAC,CAAC;IAKX,OAAO,CAAC,QAAQ;IAJ5B,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAK;gBACE,QAAQ,EAAE,MAAM;IAIpC,IAAI,IAAI,IAAI,MAAM,CAAuB;IACzC,IAAI,MAAM,IAAI,OAAO,CAAyC;IAC9D,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAOtB,GAAG,IAAI,CAAC,GAAG,SAAS;IAQpB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;CAQxB;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAanF,4DAA4D;AAC5D,0BAA0B;AAC1B,qBAAa,UAAU,CAAC,CAAC;IAKX,OAAO,CAAC,QAAQ;IAJ5B,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAK;gBACE,QAAQ,EAAE,MAAM;IAIpC,IAAI,IAAI,IAAI,MAAM,CAAuB;IACzC,IAAI,MAAM,IAAI,OAAO,CAAyC;IAC9D,IAAI,OAAO,IAAI,OAAO,CAA6B;IACnD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAOtB,GAAG,IAAI,CAAC,GAAG,SAAS;IAQpB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;CAQxB;AAED,wCAAwC;AACxC,0BAA0B;AAC1B,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,IAAI,CAA6O;IACzP,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,SAAS,CAAgB;gBAErB,OAAO,EAAE,gBAAgB;IAuBrC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAkBhD,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAyC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B,OAAO,CAAC,UAAU;IAOlB,KAAK;;;;;;;;IAWL,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;IAMd,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B;AAGD;;;;GAIG;AACH,qBAAa,cAAe,YAAW,gBAAgB;IACrD,SAAS,IAAI,IAAI;IACX,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;;;GAIG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAEtC,OAAO,CAAC,IAAI;IADxB,OAAO,CAAC,MAAM,CAAc;gBACR,IAAI,EAAE,kBAAkB;IAGtC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAM3G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAEpE"}
|
package/dist/telemetry/core.js
CHANGED
|
@@ -15,6 +15,8 @@ function xorshift32(seed) {
|
|
|
15
15
|
return ((x >>> 0) / 0xFFFFFFFF);
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
+
/** Simple fixed-size ring buffer used by telemetry queue */
|
|
19
|
+
/** @beta @experimental */
|
|
18
20
|
class RingBuffer {
|
|
19
21
|
capacity;
|
|
20
22
|
buf;
|
|
@@ -58,6 +60,8 @@ class RingBuffer {
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
exports.RingBuffer = RingBuffer;
|
|
63
|
+
/** Internal telemetry implementation */
|
|
64
|
+
/** @beta @experimental */
|
|
61
65
|
class TelemetryImpl {
|
|
62
66
|
opts;
|
|
63
67
|
adapter;
|
|
@@ -79,7 +83,8 @@ class TelemetryImpl {
|
|
|
79
83
|
onDrop: options.onDrop ?? (() => { }),
|
|
80
84
|
enabled: options.enabled ?? false,
|
|
81
85
|
defaultCtx: options.defaultCtx,
|
|
82
|
-
sampleSeed: options.sampleSeed
|
|
86
|
+
sampleSeed: options.sampleSeed,
|
|
87
|
+
overflowStrategy: options.overflowStrategy ?? 'drop'
|
|
83
88
|
};
|
|
84
89
|
this.queue = new RingBuffer(this.opts.maxQueue);
|
|
85
90
|
const seed = (options.sampleSeed ?? Date.now()) & 0xffffffff;
|
|
@@ -111,6 +116,8 @@ class TelemetryImpl {
|
|
|
111
116
|
this.opts.enabled = opts.enabled;
|
|
112
117
|
if (opts.defaultCtx !== undefined)
|
|
113
118
|
this.opts.defaultCtx = opts.defaultCtx;
|
|
119
|
+
if (opts.overflowStrategy)
|
|
120
|
+
this.opts.overflowStrategy = opts.overflowStrategy;
|
|
114
121
|
}
|
|
115
122
|
emit(event) {
|
|
116
123
|
if (!this.opts.enabled)
|
|
@@ -125,8 +132,34 @@ class TelemetryImpl {
|
|
|
125
132
|
const ctx = { ...this.opts.defaultCtx, ...event.ctx };
|
|
126
133
|
const enriched = { ...event, ctx, meta: { ...(event.meta || {}), seq: this.seq++ } };
|
|
127
134
|
if (!this.queue.push(enriched)) {
|
|
128
|
-
this.
|
|
129
|
-
|
|
135
|
+
switch (this.opts.overflowStrategy) {
|
|
136
|
+
case 'drop':
|
|
137
|
+
this.dropped++;
|
|
138
|
+
this.opts.onDrop('queue_full');
|
|
139
|
+
return;
|
|
140
|
+
case 'drop-oldest': {
|
|
141
|
+
// Drain all, discard oldest (first), requeue rest, then push new
|
|
142
|
+
const drained = this.queue.drain(this.queue.size);
|
|
143
|
+
if (drained.length > 0) {
|
|
144
|
+
drained.shift();
|
|
145
|
+
this.dropped++;
|
|
146
|
+
this.opts.onDrop('queue_full');
|
|
147
|
+
for (const ev of drained)
|
|
148
|
+
this.queue.push(ev);
|
|
149
|
+
this.queue.push(enriched);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Queue reported full but drained empty (race) -> drop
|
|
153
|
+
this.dropped++;
|
|
154
|
+
this.opts.onDrop('queue_full');
|
|
155
|
+
}
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
case 'error':
|
|
159
|
+
this.dropped++;
|
|
160
|
+
this.opts.onDrop('queue_full');
|
|
161
|
+
return; // emit silently ignores new event
|
|
162
|
+
}
|
|
130
163
|
}
|
|
131
164
|
}
|
|
132
165
|
async flush() {
|
|
@@ -144,8 +177,8 @@ class TelemetryImpl {
|
|
|
144
177
|
await this.adapter.send(batch);
|
|
145
178
|
const dt = Date.now() - t0;
|
|
146
179
|
this.latencies.push(dt);
|
|
147
|
-
if (this.latencies.length >
|
|
148
|
-
this.latencies.shift(); // cap memory
|
|
180
|
+
if (this.latencies.length > 100)
|
|
181
|
+
this.latencies.shift(); // cap memory (reduced from 200 to 100 to lower footprint)
|
|
149
182
|
this.sent += batch.length;
|
|
150
183
|
}
|
|
151
184
|
catch {
|
|
@@ -177,9 +210,11 @@ class TelemetryImpl {
|
|
|
177
210
|
if (this.timer)
|
|
178
211
|
return;
|
|
179
212
|
this.timer = setInterval(() => { void this.flush(); }, this.opts.flushIntervalMs);
|
|
180
|
-
// Avoid keeping process alive
|
|
181
|
-
|
|
182
|
-
|
|
213
|
+
// Avoid keeping process alive (Node-specific). Narrow type before calling unref.
|
|
214
|
+
const maybeTimer = this.timer;
|
|
215
|
+
if (maybeTimer && typeof maybeTimer.unref === 'function') {
|
|
216
|
+
maybeTimer.unref();
|
|
217
|
+
}
|
|
183
218
|
}
|
|
184
219
|
restartTimer() {
|
|
185
220
|
if (this.timer)
|
|
@@ -199,6 +234,11 @@ class TelemetryImpl {
|
|
|
199
234
|
}
|
|
200
235
|
exports.TelemetryImpl = TelemetryImpl;
|
|
201
236
|
// Built-in adapters
|
|
237
|
+
/**
|
|
238
|
+
* Built-in console adapter (dev-friendly pretty print)
|
|
239
|
+
* @beta
|
|
240
|
+
* @experimental
|
|
241
|
+
*/
|
|
202
242
|
class ConsoleAdapter {
|
|
203
243
|
configure() { }
|
|
204
244
|
async send(batch) {
|
|
@@ -210,6 +250,11 @@ class ConsoleAdapter {
|
|
|
210
250
|
}
|
|
211
251
|
}
|
|
212
252
|
exports.ConsoleAdapter = ConsoleAdapter;
|
|
253
|
+
/**
|
|
254
|
+
* File adapter writing newline-delimited JSON events
|
|
255
|
+
* @beta
|
|
256
|
+
* @experimental
|
|
257
|
+
*/
|
|
213
258
|
class FileAdapter {
|
|
214
259
|
opts;
|
|
215
260
|
stream;
|
|
@@ -235,6 +280,11 @@ class FileAdapter {
|
|
|
235
280
|
async dispose() { await this.flush(); this.stream.end(); }
|
|
236
281
|
}
|
|
237
282
|
exports.FileAdapter = FileAdapter;
|
|
283
|
+
/**
|
|
284
|
+
* Factory for built-in telemetry adapters
|
|
285
|
+
* @beta
|
|
286
|
+
* @experimental
|
|
287
|
+
*/
|
|
238
288
|
function createTelemetryAdapter(kind, opts) {
|
|
239
289
|
switch (kind) {
|
|
240
290
|
case 'console': return new ConsoleAdapter();
|
|
@@ -242,6 +292,11 @@ function createTelemetryAdapter(kind, opts) {
|
|
|
242
292
|
default: throw new Error(`Unknown adapter: ${kind}`);
|
|
243
293
|
}
|
|
244
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Create a telemetry instance; pass adapter + options
|
|
297
|
+
* @beta
|
|
298
|
+
* @experimental
|
|
299
|
+
*/
|
|
245
300
|
function createTelemetry(options) {
|
|
246
301
|
return new TelemetryImpl(options);
|
|
247
302
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/telemetry/core.ts"],"names":[],"mappings":"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"}
|