@scenarist/core 0.1.2 → 0.1.3

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 (62) hide show
  1. package/README.md +179 -94
  2. package/dist/adapters/in-memory-registry.d.ts +2 -2
  3. package/dist/adapters/in-memory-sequence-tracker.d.ts +2 -2
  4. package/dist/adapters/in-memory-sequence-tracker.d.ts.map +1 -1
  5. package/dist/adapters/in-memory-sequence-tracker.js +5 -5
  6. package/dist/adapters/in-memory-state-manager.d.ts +1 -1
  7. package/dist/adapters/in-memory-state-manager.d.ts.map +1 -1
  8. package/dist/adapters/in-memory-state-manager.js +34 -14
  9. package/dist/adapters/in-memory-store.d.ts +2 -2
  10. package/dist/adapters/index.d.ts +4 -4
  11. package/dist/adapters/index.d.ts.map +1 -1
  12. package/dist/adapters/index.js +4 -4
  13. package/dist/constants/headers.js +1 -1
  14. package/dist/constants/index.d.ts +1 -1
  15. package/dist/constants/index.js +1 -1
  16. package/dist/contracts/framework-adapter.d.ts +17 -3
  17. package/dist/contracts/framework-adapter.d.ts.map +1 -1
  18. package/dist/contracts/index.d.ts +1 -1
  19. package/dist/domain/config-builder.d.ts +1 -1
  20. package/dist/domain/config-builder.d.ts.map +1 -1
  21. package/dist/domain/config-builder.js +4 -4
  22. package/dist/domain/index.d.ts +4 -4
  23. package/dist/domain/index.js +4 -4
  24. package/dist/domain/path-extraction.d.ts +1 -1
  25. package/dist/domain/path-extraction.d.ts.map +1 -1
  26. package/dist/domain/path-extraction.js +24 -9
  27. package/dist/domain/regex-matching.d.ts +1 -1
  28. package/dist/domain/regex-matching.js +1 -1
  29. package/dist/domain/response-selector.d.ts.map +1 -1
  30. package/dist/domain/response-selector.js +10 -5
  31. package/dist/domain/scenario-manager.d.ts.map +1 -1
  32. package/dist/domain/scenario-manager.js +3 -3
  33. package/dist/domain/template-replacement.d.ts.map +1 -1
  34. package/dist/domain/template-replacement.js +7 -7
  35. package/dist/index.d.ts +7 -7
  36. package/dist/index.js +4 -4
  37. package/dist/ports/driven/scenario-registry.d.ts +1 -1
  38. package/dist/ports/driven/scenario-store.d.ts +1 -1
  39. package/dist/ports/driven/sequence-tracker.d.ts +1 -1
  40. package/dist/ports/driving/scenario-manager.d.ts +1 -1
  41. package/dist/ports/driving/scenario-manager.d.ts.map +1 -1
  42. package/dist/ports/index.d.ts +7 -7
  43. package/dist/ports/index.d.ts.map +1 -1
  44. package/dist/schemas/index.d.ts +4 -4
  45. package/dist/schemas/index.d.ts.map +1 -1
  46. package/dist/schemas/index.js +4 -4
  47. package/dist/schemas/match-criteria.d.ts +1 -1
  48. package/dist/schemas/match-criteria.d.ts.map +1 -1
  49. package/dist/schemas/match-criteria.js +5 -5
  50. package/dist/schemas/scenario-definition.d.ts +1 -1
  51. package/dist/schemas/scenario-definition.d.ts.map +1 -1
  52. package/dist/schemas/scenario-definition.js +27 -9
  53. package/dist/schemas/scenario-requests.d.ts +1 -1
  54. package/dist/schemas/scenario-requests.js +2 -2
  55. package/dist/schemas/scenarios-object.d.ts +1 -1
  56. package/dist/schemas/scenarios-object.js +3 -3
  57. package/dist/types/config.d.ts +2 -2
  58. package/dist/types/config.d.ts.map +1 -1
  59. package/dist/types/index.d.ts +3 -3
  60. package/dist/types/index.d.ts.map +1 -1
  61. package/dist/types/scenario.d.ts +2 -2
  62. package/package.json +1 -2
@@ -1,4 +1,4 @@
1
- import type { ScenaristScenario, ActiveScenario, ScenaristResult } from '../../types/index.js';
1
+ import type { ScenaristScenario, ActiveScenario, ScenaristResult } from "../../types/index.js";
2
2
  /**
3
3
  * Primary port for scenario management.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-manager.d.ts","sourceRoot":"","sources":["../../../src/ports/driving/scenario-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;OAOG;IACH,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEtD;;;;;;;;;;;OAWG;IACH,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE9D;;;;;;;;OAQG;IACH,aAAa,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAElD;;;;;;;;OAQG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;CAC5D"}
1
+ {"version":3,"file":"scenario-manager.d.ts","sourceRoot":"","sources":["../../../src/ports/driving/scenario-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;OAOG;IACH,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEtD;;;;;;;;;;;OAWG;IACH,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE9D;;;;;;;;OAQG;IACH,aAAa,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAElD;;;;;;;;OAQG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;CAC5D"}
@@ -1,8 +1,8 @@
1
- export type { ScenarioManager } from './driving/scenario-manager.js';
2
- export type { ScenarioRegistry } from './driven/scenario-registry.js';
3
- export type { ScenarioStore } from './driven/scenario-store.js';
4
- export type { RequestContext } from './driven/request-context.js';
5
- export type { ResponseSelector } from './driven/response-selector.js';
6
- export type { SequenceTracker, SequencePosition } from './driven/sequence-tracker.js';
7
- export type { StateManager } from './driven/state-manager.js';
1
+ export type { ScenarioManager } from "./driving/scenario-manager.js";
2
+ export type { ScenarioRegistry } from "./driven/scenario-registry.js";
3
+ export type { ScenarioStore } from "./driven/scenario-store.js";
4
+ export type { RequestContext } from "./driven/request-context.js";
5
+ export type { ResponseSelector } from "./driven/response-selector.js";
6
+ export type { SequenceTracker, SequencePosition, } from "./driven/sequence-tracker.js";
7
+ export type { StateManager } from "./driven/state-manager.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACtF,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ports/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EACV,eAAe,EACf,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
@@ -11,8 +11,8 @@
11
11
  * 3. Adapters import and apply at trust boundaries
12
12
  * 4. NEVER duplicate schemas in adapters
13
13
  */
14
- export { ScenarioRequestSchema, type ScenarioRequest } from './scenario-requests.js';
15
- export { ScenariosObjectSchema } from './scenarios-object.js';
16
- export { HttpMethodSchema, ScenaristResponseSchema, MatchValueSchema, ScenaristMatchSchema, RepeatModeSchema, ScenaristSequenceSchema, ScenaristCaptureConfigSchema, ScenaristUrlPatternSchema, ScenaristMockSchema, ScenaristScenarioSchema, type HttpMethod, type ScenaristResponse, type MatchValue, type ScenaristMatch, type RepeatMode, type ScenaristSequence, type ScenaristCaptureConfig, type ScenaristUrlPattern, type ScenaristMock, type ScenaristScenario, } from './scenario-definition.js';
17
- export { SerializedRegexSchema, type SerializedRegex } from './match-criteria.js';
14
+ export { ScenarioRequestSchema, type ScenarioRequest, } from "./scenario-requests.js";
15
+ export { ScenariosObjectSchema } from "./scenarios-object.js";
16
+ export { HttpMethodSchema, ScenaristResponseSchema, MatchValueSchema, ScenaristMatchSchema, RepeatModeSchema, ScenaristSequenceSchema, ScenaristCaptureConfigSchema, ScenaristUrlPatternSchema, ScenaristMockSchema, ScenaristScenarioSchema, type HttpMethod, type ScenaristResponse, type MatchValue, type ScenaristMatch, type RepeatMode, type ScenaristSequence, type ScenaristCaptureConfig, type ScenaristUrlPattern, type ScenaristMock, type ScenaristScenario, } from "./scenario-definition.js";
17
+ export { SerializedRegexSchema, type SerializedRegex, } from "./match-criteria.js";
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EAEvB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EAEvB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,qBAAqB,CAAC"}
@@ -11,7 +11,7 @@
11
11
  * 3. Adapters import and apply at trust boundaries
12
12
  * 4. NEVER duplicate schemas in adapters
13
13
  */
14
- export { ScenarioRequestSchema } from './scenario-requests.js';
15
- export { ScenariosObjectSchema } from './scenarios-object.js';
16
- export { HttpMethodSchema, ScenaristResponseSchema, MatchValueSchema, ScenaristMatchSchema, RepeatModeSchema, ScenaristSequenceSchema, ScenaristCaptureConfigSchema, ScenaristUrlPatternSchema, ScenaristMockSchema, ScenaristScenarioSchema, } from './scenario-definition.js';
17
- export { SerializedRegexSchema } from './match-criteria.js';
14
+ export { ScenarioRequestSchema, } from "./scenario-requests.js";
15
+ export { ScenariosObjectSchema } from "./scenarios-object.js";
16
+ export { HttpMethodSchema, ScenaristResponseSchema, MatchValueSchema, ScenaristMatchSchema, RepeatModeSchema, ScenaristSequenceSchema, ScenaristCaptureConfigSchema, ScenaristUrlPatternSchema, ScenaristMockSchema, ScenaristScenarioSchema, } from "./scenario-definition.js";
17
+ export { SerializedRegexSchema, } from "./match-criteria.js";
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  /**
3
3
  * Schema for serialized regex patterns.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"match-criteria.d.ts","sourceRoot":"","sources":["../../src/schemas/match-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB;;;iBAWhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"match-criteria.d.ts","sourceRoot":"","sources":["../../src/schemas/match-criteria.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,qBAAqB;;;iBAchC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { isSafePattern } from 'redos-detector';
1
+ import { z } from "zod";
2
+ import { isSafePattern } from "redos-detector";
3
3
  /**
4
4
  * Zod schemas for match criteria with regex support.
5
5
  *
@@ -60,12 +60,12 @@ const isPatternSafeFromReDoS = (pattern) => {
60
60
  export const SerializedRegexSchema = z.object({
61
61
  source: z
62
62
  .string()
63
- .min(1, 'Regex source must not be empty')
63
+ .min(1, "Regex source must not be empty")
64
64
  .refine(isPatternSafeFromReDoS, {
65
- message: 'Regex pattern is unsafe (ReDoS vulnerability detected)',
65
+ message: "Regex pattern is unsafe (ReDoS vulnerability detected)",
66
66
  }),
67
67
  flags: z
68
68
  .string()
69
- .regex(VALID_REGEX_FLAGS, 'Invalid regex flags (only g, i, m, s, u, v, y allowed)')
69
+ .regex(VALID_REGEX_FLAGS, "Invalid regex flags (only g, i, m, s, u, v, y allowed)")
70
70
  .optional(),
71
71
  });
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  /**
3
3
  * Zod schemas for scenario definitions.
4
4
  * These schemas validate the structure of scenario data at trust boundaries.
@@ -1 +1 @@
1
- {"version":3,"file":"scenario-definition.d.ts","sourceRoot":"","sources":["../../src/schemas/scenario-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;EAAuE,CAAC;AACrG,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;mBAiB3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;EAAoC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAGlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,4BAA4B,uCAAmC,CAAC;AAC7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,iEAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"scenario-definition.d.ts","sourceRoot":"","sources":["../../src/schemas/scenario-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;GAMG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;EAQ3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;mBA4B3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,gBAAgB;;;;EAAoC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;iBAGlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,4BAA4B,uCAAmC,CAAC;AAC7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC1C,OAAO,4BAA4B,CACpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,iEAGpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAO9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { SerializedRegexSchema } from './match-criteria.js';
1
+ import { z } from "zod";
2
+ import { SerializedRegexSchema } from "./match-criteria.js";
3
3
  /**
4
4
  * Zod schemas for scenario definitions.
5
5
  * These schemas validate the structure of scenario data at trust boundaries.
@@ -7,7 +7,15 @@ import { SerializedRegexSchema } from './match-criteria.js';
7
7
  * **IMPORTANT**: TypeScript types are inferred from these schemas to maintain
8
8
  * a single source of truth. The schemas in this file are the canonical definition.
9
9
  */
10
- export const HttpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS', 'HEAD']);
10
+ export const HttpMethodSchema = z.enum([
11
+ "GET",
12
+ "POST",
13
+ "PUT",
14
+ "DELETE",
15
+ "PATCH",
16
+ "OPTIONS",
17
+ "HEAD",
18
+ ]);
11
19
  export const ScenaristResponseSchema = z.object({
12
20
  status: z.number().int().min(100).max(599),
13
21
  body: z.unknown().optional(),
@@ -29,17 +37,27 @@ export const ScenaristResponseSchema = z.object({
29
37
  export const MatchValueSchema = z.union([
30
38
  z.string(),
31
39
  z.instanceof(RegExp),
32
- z.object({
40
+ z
41
+ .object({
33
42
  equals: z.string().optional(),
34
43
  contains: z.string().optional(),
35
44
  startsWith: z.string().optional(),
36
45
  endsWith: z.string().optional(),
37
46
  regex: SerializedRegexSchema.optional(),
38
- }).refine((obj) => {
39
- const strategies = [obj.equals, obj.contains, obj.startsWith, obj.endsWith, obj.regex];
40
- const defined = strategies.filter(s => s !== undefined);
47
+ })
48
+ .refine((obj) => {
49
+ const strategies = [
50
+ obj.equals,
51
+ obj.contains,
52
+ obj.startsWith,
53
+ obj.endsWith,
54
+ obj.regex,
55
+ ];
56
+ const defined = strategies.filter((s) => s !== undefined);
41
57
  return defined.length === 1;
42
- }, { message: 'Exactly one matching strategy must be defined (equals, contains, startsWith, endsWith, or regex)' }),
58
+ }, {
59
+ message: "Exactly one matching strategy must be defined (equals, contains, startsWith, endsWith, or regex)",
60
+ }),
43
61
  ]);
44
62
  export const ScenaristMatchSchema = z.object({
45
63
  url: MatchValueSchema.optional(),
@@ -47,7 +65,7 @@ export const ScenaristMatchSchema = z.object({
47
65
  headers: z.record(z.string(), MatchValueSchema).optional(),
48
66
  query: z.record(z.string(), MatchValueSchema).optional(),
49
67
  });
50
- export const RepeatModeSchema = z.enum(['last', 'cycle', 'none']);
68
+ export const RepeatModeSchema = z.enum(["last", "cycle", "none"]);
51
69
  export const ScenaristSequenceSchema = z.object({
52
70
  responses: z.array(ScenaristResponseSchema).min(1),
53
71
  repeat: RepeatModeSchema.optional(),
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  /**
3
3
  * Schema for scenario switch request body.
4
4
  *
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  /**
3
3
  * Schema for scenario switch request body.
4
4
  *
@@ -25,5 +25,5 @@ export const ScenarioRequestSchema = z.object({
25
25
  * Scenario ID to switch to.
26
26
  * Must be a non-empty string matching a registered scenario ID.
27
27
  */
28
- scenario: z.string().min(1, 'Scenario ID must not be empty'),
28
+ scenario: z.string().min(1, "Scenario ID must not be empty"),
29
29
  });
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  /**
3
3
  * Validates that a scenarios object has a 'default' key.
4
4
  *
@@ -1,5 +1,5 @@
1
- import { z } from 'zod';
2
- import { ScenaristScenarioSchema } from './scenario-definition.js';
1
+ import { z } from "zod";
2
+ import { ScenaristScenarioSchema } from "./scenario-definition.js";
3
3
  /**
4
4
  * Validates that a scenarios object has a 'default' key.
5
5
  *
@@ -12,6 +12,6 @@ import { ScenaristScenarioSchema } from './scenario-definition.js';
12
12
  */
13
13
  export const ScenariosObjectSchema = z
14
14
  .record(z.string(), ScenaristScenarioSchema)
15
- .refine((scenarios) => 'default' in scenarios, {
15
+ .refine((scenarios) => "default" in scenarios, {
16
16
  message: "Scenarios object must have a 'default' key",
17
17
  });
@@ -1,4 +1,4 @@
1
- import type { ScenaristScenarios } from './scenario.js';
1
+ import type { ScenaristScenarios } from "./scenario.js";
2
2
  /**
3
3
  * Configuration for the scenario management system.
4
4
  * All properties are readonly for immutability.
@@ -43,7 +43,7 @@ export type ScenaristConfig = {
43
43
  export type ScenaristConfigInput<T extends ScenaristScenarios = ScenaristScenarios> = {
44
44
  readonly enabled: boolean;
45
45
  readonly strictMode?: boolean;
46
- readonly endpoints?: Partial<ScenaristConfig['endpoints']>;
46
+ readonly endpoints?: Partial<ScenaristConfig["endpoints"]>;
47
47
  /**
48
48
  * All scenarios defined as a named object.
49
49
  * Keys become scenario IDs that enable type-safe autocomplete.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE;QAClB,kEAAkE;QAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,kEAAkE;QAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACpF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE;QAClB,kEAAkE;QAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,kEAAkE;QAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAC/C;IACF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC"}
@@ -1,4 +1,4 @@
1
- export type { HttpMethod, ScenaristResponse, ScenaristMock, ScenaristMatch, RepeatMode, ScenaristSequence, ScenaristCaptureConfig, ScenaristScenario, } from '../schemas/scenario-definition.js';
2
- export type { HttpRequestContext, ScenaristMockWithParams, ActiveScenario, ScenaristResult, ScenaristScenarios, ScenarioIds, } from './scenario.js';
3
- export type { ScenaristConfig, ScenaristConfigInput, } from './config.js';
1
+ export type { HttpMethod, ScenaristResponse, ScenaristMock, ScenaristMatch, RepeatMode, ScenaristSequence, ScenaristCaptureConfig, ScenaristScenario, } from "../schemas/scenario-definition.js";
2
+ export type { HttpRequestContext, ScenaristMockWithParams, ActiveScenario, ScenaristResult, ScenaristScenarios, ScenarioIds, } from "./scenario.js";
3
+ export type { ScenaristConfig, ScenaristConfigInput } from "./config.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { HttpMethod, ScenaristScenario } from '../schemas/index.js';
1
+ import type { HttpMethod, ScenaristScenario } from "../schemas/index.js";
2
2
  /**
3
3
  * HTTP request data for response selection.
4
4
  * Framework adapters extract this from their specific request objects.
@@ -36,7 +36,7 @@ export type HttpRequestContext = {
36
36
  * ```
37
37
  */
38
38
  export type ScenaristMockWithParams = {
39
- readonly mock: import('../schemas/index.js').ScenaristMock;
39
+ readonly mock: import("../schemas/index.js").ScenaristMock;
40
40
  readonly params?: Readonly<Record<string, string | ReadonlyArray<string>>>;
41
41
  };
42
42
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scenarist/core",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Internal: Hexagonal architecture core for scenario-based testing with MSW",
5
5
  "author": "Paul Hammond (citypaul) <paul@packsoftware.co.uk>",
6
6
  "license": "MIT",
@@ -46,7 +46,6 @@
46
46
  "LICENSE"
47
47
  ],
48
48
  "dependencies": {
49
- "msw": "^2.12.3",
50
49
  "redos-detector": "^6.1.2",
51
50
  "zod": "^4.1.13"
52
51
  },