@superbuilders/primer-tives 0.0.2 → 0.0.4

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 (42) hide show
  1. package/README.md +40 -46
  2. package/dist/choice-state.d.ts +8 -0
  3. package/dist/choice-state.d.ts.map +1 -0
  4. package/dist/client.d.ts +2 -8
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/consumed.d.ts +6 -0
  7. package/dist/consumed.d.ts.map +1 -0
  8. package/dist/errors.d.ts +2 -1
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/extended-text-state.d.ts +8 -0
  11. package/dist/extended-text-state.d.ts.map +1 -0
  12. package/dist/feedback-state.d.ts +7 -0
  13. package/dist/feedback-state.d.ts.map +1 -0
  14. package/dist/index.d.ts +9 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +573 -0
  17. package/dist/index.js.map +21 -0
  18. package/dist/observation-state.d.ts +6 -0
  19. package/dist/observation-state.d.ts.map +1 -0
  20. package/dist/pci-state.d.ts +6 -0
  21. package/dist/pci-state.d.ts.map +1 -0
  22. package/dist/session-context.d.ts +24 -0
  23. package/dist/session-context.d.ts.map +1 -0
  24. package/dist/session.d.ts +16 -0
  25. package/dist/session.d.ts.map +1 -0
  26. package/dist/text-entry-state.d.ts +8 -0
  27. package/dist/text-entry-state.d.ts.map +1 -0
  28. package/dist/transport.d.ts +46 -0
  29. package/dist/transport.d.ts.map +1 -0
  30. package/dist/types.d.ts +11 -3
  31. package/dist/types.d.ts.map +1 -1
  32. package/package.json +4 -20
  33. package/dist/client.js +0 -383
  34. package/dist/client.js.map +0 -11
  35. package/dist/content.js +0 -27
  36. package/dist/content.js.map +0 -10
  37. package/dist/errors.js +0 -36
  38. package/dist/errors.js.map +0 -10
  39. package/dist/pci.js +0 -2
  40. package/dist/pci.js.map +0 -9
  41. package/dist/types.js +0 -2
  42. package/dist/types.js.map +0 -9
@@ -0,0 +1,6 @@
1
+ import type { SessionContext } from "./session-context";
2
+ import type { PciId } from "./pci";
3
+ import type { PrimerState, RendererStimulus } from "./types";
4
+ declare function observationState<Pcis extends PciId>(ctx: SessionContext<Pcis>, stimulus: RendererStimulus | null): PrimerState<Pcis>;
5
+ export { observationState };
6
+ //# sourceMappingURL=observation-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation-state.d.ts","sourceRoot":"","sources":["../src/observation-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAEtF,iBAAS,gBAAgB,CAAC,IAAI,SAAS,KAAK,EAC3C,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,EACzB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAC/B,WAAW,CAAC,IAAI,CAAC,CAenB;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { PciId } from "./pci";
2
+ import type { SessionContext } from "./session-context";
3
+ import type { PciInteraction, PciInteractionState, RendererStimulus } from "./types";
4
+ declare function pciInteractionState<Pcis extends PciId>(ctx: SessionContext<Pcis>, stimulus: RendererStimulus | null, interaction: PciInteraction<Pcis>): PciInteractionState<Pcis>;
5
+ export { pciInteractionState };
6
+ //# sourceMappingURL=pci-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pci-state.d.ts","sourceRoot":"","sources":["../src/pci-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAY,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAe,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAE3H,iBAAS,mBAAmB,CAAC,IAAI,SAAS,KAAK,EAC9C,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,EACzB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,GAC/B,mBAAmB,CAAC,IAAI,CAAC,CAkC3B;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { PciId } from "./pci";
2
+ import type { ErroredState, PrimerState, RendererSubmission } from "./types";
3
+ interface PrimerLogger {
4
+ debug(message: string, attributes?: Record<string, unknown>): void;
5
+ info(message: string, attributes?: Record<string, unknown>): void;
6
+ warn(message: string, attributes?: Record<string, unknown>): void;
7
+ error(message: string, attributes?: Record<string, unknown>): void;
8
+ }
9
+ type TransitionPhase = "observation" | "interaction" | "timeout";
10
+ type WireIntent<Pcis extends PciId = PciId> = {
11
+ kind: "observation";
12
+ } | {
13
+ kind: "interaction";
14
+ submission: RendererSubmission<Pcis>;
15
+ } | {
16
+ kind: "timeout";
17
+ };
18
+ interface SessionContext<Pcis extends PciId = PciId> {
19
+ readonly log: PrimerLogger | undefined;
20
+ execute(intent: WireIntent<Pcis>, phase: TransitionPhase): Promise<PrimerState<Pcis>>;
21
+ errored(error: Error, failedPhase: TransitionPhase, intent: WireIntent<Pcis>): ErroredState<Pcis>;
22
+ }
23
+ export type { PrimerLogger, SessionContext, TransitionPhase, WireIntent };
24
+ //# sourceMappingURL=session-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../src/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAEtG,UAAU,YAAY;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAClE;AAED,KAAK,eAAe,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,CAAA;AAEhE,KAAK,UAAU,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK,IACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtB,UAAU,cAAc,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IAClD,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,CAAA;IACtC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IACrF,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;CACjG;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { PciId } from "./pci";
2
+ import type { PrimerLogger, TransitionPhase, WireIntent } from "./session-context";
3
+ import type { TransportResult, WireRequestBody } from "./transport";
4
+ import type { PrimerState } from "./types";
5
+ interface SessionConfig<Pcis extends PciId = PciId> {
6
+ readonly studentId: string;
7
+ readonly supportedPcis: readonly Pcis[];
8
+ readonly log: PrimerLogger | undefined;
9
+ readonly transport: (body: WireRequestBody<Pcis>) => Promise<TransportResult<Pcis>>;
10
+ }
11
+ declare function makeSession<Pcis extends PciId>(sc: SessionConfig<Pcis>): {
12
+ execute: (intent: WireIntent<Pcis>, phase: TransitionPhase) => Promise<PrimerState<Pcis>>;
13
+ };
14
+ export { makeSession };
15
+ export type { SessionConfig };
16
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAkB,eAAe,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAA;AAC5H,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAc,MAAM,uCAAuC,CAAA;AACzG,OAAO,KAAK,EAEX,WAAW,EAGX,MAAM,mCAAmC,CAAA;AAQ1C,UAAU,aAAa,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;CACnF;AAED,iBAAS,WAAW,CAAC,IAAI,SAAS,KAAK,EAAE,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC;sBA8CtD,UAAU,CAAC,IAAI,CAAC,SACjB,eAAe,KACpB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;EA0E7B;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { SessionContext } from "./session-context";
2
+ import type { PciId } from "./pci";
3
+ import type { PrimerState, RendererInteraction, RendererStimulus } from "./types";
4
+ declare function textEntryState<Pcis extends PciId>(ctx: SessionContext<Pcis>, stimulus: RendererStimulus | null, interaction: Extract<RendererInteraction<Pcis>, {
5
+ type: "text-entry";
6
+ }>): PrimerState<Pcis>;
7
+ export { textEntryState };
8
+ //# sourceMappingURL=text-entry-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-entry-state.d.ts","sourceRoot":"","sources":["../src/text-entry-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAA;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AAE3G,iBAAS,cAAc,CAAC,IAAI,SAAS,KAAK,EACzC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,EACzB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,EACjC,WAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,GACrE,WAAW,CAAC,IAAI,CAAC,CA4BnB;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,46 @@
1
+ import type { PciId } from "./pci";
2
+ import type { SessionContext, WireIntent } from "./session-context";
3
+ import type { ContentInline } from "./content";
4
+ import type { RendererCorrectAnswer, RendererInteraction, RendererStimulus, RendererSubmission } from "./types";
5
+ declare const ADVANCE_PATH = "/api/v0/advance";
6
+ type WireResult<Pcis extends PciId = PciId> = {
7
+ outcome: "advanced";
8
+ stimulus: RendererStimulus | null;
9
+ interaction: RendererInteraction<Pcis> | null;
10
+ } | {
11
+ outcome: "submitted";
12
+ stimulus: RendererStimulus | null;
13
+ interaction: RendererInteraction<Pcis>;
14
+ submission: RendererSubmission<Pcis>;
15
+ isCorrect: boolean;
16
+ feedbackContent: ContentInline[];
17
+ correctAnswer: RendererCorrectAnswer | null;
18
+ } | {
19
+ outcome: "completed";
20
+ };
21
+ interface WireRequestBody<Pcis extends PciId = PciId> {
22
+ studentId: string;
23
+ supportedPcis: readonly PciId[];
24
+ intent: WireIntent<Pcis>;
25
+ }
26
+ type TransportResult<Pcis extends PciId = PciId> = {
27
+ ok: true;
28
+ data: WireResult<Pcis>;
29
+ } | {
30
+ ok: false;
31
+ error: Error;
32
+ };
33
+ interface TransportConfig<Pcis extends PciId = PciId> {
34
+ readonly publishableKey: string;
35
+ readonly supportedPcis: readonly Pcis[];
36
+ readonly origin?: string;
37
+ readonly fetch?: typeof globalThis.fetch;
38
+ readonly abort?: AbortController;
39
+ readonly log: SessionContext["log"];
40
+ }
41
+ declare function httpSentinel(status: number): Error;
42
+ declare function isAbortError(err: unknown): boolean;
43
+ declare function createTransport<Pcis extends PciId>(tc: TransportConfig<Pcis>): (body: WireRequestBody<Pcis>) => Promise<TransportResult<Pcis>>;
44
+ export { ADVANCE_PATH, createTransport, httpSentinel, isAbortError };
45
+ export type { TransportConfig, TransportResult, WireRequestBody, WireResult };
46
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAA;AAC7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAEzI,QAAA,MAAM,YAAY,oBAAoB,CAAA;AAEtC,KAAK,UAAU,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK,IACvC;IACA,OAAO,EAAE,UAAU,CAAA;IACnB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACjC,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC5C,GACD;IACA,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACjC,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACtC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAA;CAC1C,GACD;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAA;AAE3B,UAAU,eAAe,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,SAAS,KAAK,EAAE,CAAA;IAC/B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;CACxB;AAED,KAAK,eAAe,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK,IAC5C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9B,UAAU,eAAe,CAAC,IAAI,SAAS,KAAK,GAAG,KAAK;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CACnC;AAED,iBAAS,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CA0B3C;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ3C;AAED,iBAAS,eAAe,CAAC,IAAI,SAAS,KAAK,EAAE,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,UAWtC,eAAe,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CA+ErF;AAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA;AACpE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,CAAA"}
package/dist/types.d.ts CHANGED
@@ -110,6 +110,7 @@ interface ChoiceState<Pcis extends PciId = PciId> extends NonSerializable {
110
110
  readonly maxChoices: number;
111
111
  readonly minChoices: number;
112
112
  submitChoice(selectedKeys: string[]): Promise<PrimerState<Pcis>>;
113
+ timeout(): Promise<PrimerState<Pcis>>;
113
114
  }
114
115
  interface TextEntryState<Pcis extends PciId = PciId> extends NonSerializable {
115
116
  readonly phase: "interaction";
@@ -119,6 +120,7 @@ interface TextEntryState<Pcis extends PciId = PciId> extends NonSerializable {
119
120
  type: "text-entry";
120
121
  }>;
121
122
  submitText(value: string): Promise<PrimerState<Pcis>>;
123
+ timeout(): Promise<PrimerState<Pcis>>;
122
124
  }
123
125
  interface ExtendedTextSingleState<Pcis extends PciId = PciId> extends NonSerializable {
124
126
  readonly phase: "interaction";
@@ -129,6 +131,7 @@ interface ExtendedTextSingleState<Pcis extends PciId = PciId> extends NonSeriali
129
131
  type: "extended-text";
130
132
  }>;
131
133
  submitText(value: string): Promise<PrimerState<Pcis>>;
134
+ timeout(): Promise<PrimerState<Pcis>>;
132
135
  }
133
136
  interface ExtendedTextMultipleState<Pcis extends PciId = PciId> extends NonSerializable {
134
137
  readonly phase: "interaction";
@@ -141,6 +144,7 @@ interface ExtendedTextMultipleState<Pcis extends PciId = PciId> extends NonSeria
141
144
  readonly maxStrings: number;
142
145
  readonly minStrings: number;
143
146
  submitTexts(values: string[]): Promise<PrimerState<Pcis>>;
147
+ timeout(): Promise<PrimerState<Pcis>>;
144
148
  }
145
149
  type ExtendedTextState<Pcis extends PciId = PciId> = ExtendedTextSingleState<Pcis> | ExtendedTextMultipleState<Pcis>;
146
150
  type PciInteractionState<Pcis extends PciId = PciId> = {
@@ -152,6 +156,7 @@ type PciInteractionState<Pcis extends PciId = PciId> = {
152
156
  readonly pciId: K;
153
157
  readonly properties: PciProps<K>;
154
158
  submit(value: PciValue<K>): Promise<PrimerState<Pcis>>;
159
+ timeout(): Promise<PrimerState<Pcis>>;
155
160
  };
156
161
  }[Pcis];
157
162
  type InteractionState<Pcis extends PciId = PciId> = ChoiceState<Pcis> | TextEntryState<Pcis> | ExtendedTextState<Pcis> | PciInteractionState<Pcis>;
@@ -168,21 +173,24 @@ interface FeedbackState<Pcis extends PciId = PciId> extends NonSerializable {
168
173
  interface CompletedState extends NonSerializable {
169
174
  readonly phase: "completed";
170
175
  }
176
+ interface ConsumedState extends NonSerializable {
177
+ readonly phase: "consumed";
178
+ }
171
179
  interface ErroredState<Pcis extends PciId = PciId> extends NonSerializable {
172
180
  readonly phase: "errored";
173
181
  readonly error: Error;
174
- readonly failedPhase: "observation" | "interaction";
182
+ readonly failedPhase: "observation" | "interaction" | "timeout";
175
183
  retry(): Promise<PrimerState<Pcis>>;
176
184
  }
177
185
  interface FatalState extends NonSerializable {
178
186
  readonly phase: "fatal";
179
187
  readonly error: Error;
180
188
  }
181
- type PrimerState<Pcis extends PciId = PciId> = ObservationState<Pcis> | InteractionState<Pcis> | FeedbackState<Pcis> | CompletedState | ErroredState<Pcis> | FatalState;
189
+ type PrimerState<Pcis extends PciId = PciId> = ObservationState<Pcis> | InteractionState<Pcis> | FeedbackState<Pcis> | CompletedState | ConsumedState | ErroredState<Pcis> | FatalState;
182
190
  interface PciRenderProps<K extends PciId> {
183
191
  properties: PciProps<K>;
184
192
  submitted: boolean;
185
193
  onValueChange: (value: PciValue<K> | null) => void;
186
194
  }
187
- export type { BodyStimulus, ChoiceState, CompletedState, ErroredState, ExtendedTextMultipleState, ExtendedTextSingleState, ExtendedTextState, FatalState, FeedbackState, ImageStimulus, InteractionState, NonSerializable, ObservationState, PciInteraction, PciInteractionState, PciRenderProps, PciSubmission, PrimerState, RendererChoice, RendererCorrectAnswer, RendererCorrectScalarValue, RendererInteraction, RendererStimulus, RendererSubmission, TextEntryState };
195
+ export type { BodyStimulus, ChoiceState, CompletedState, ConsumedState, ErroredState, ExtendedTextMultipleState, ExtendedTextSingleState, ExtendedTextState, FatalState, FeedbackState, ImageStimulus, InteractionState, NonSerializable, ObservationState, PciInteraction, PciInteractionState, PciRenderProps, PciSubmission, PrimerState, RendererChoice, RendererCorrectAnswer, RendererCorrectScalarValue, RendererInteraction, RendererStimulus, RendererSubmission, TextEntryState };
188
196
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,27 +1,11 @@
1
1
  {
2
2
  "name": "@superbuilders/primer-tives",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "exports": {
6
- "./client": {
7
- "types": "./dist/client.d.ts",
8
- "import": "./dist/client.js"
9
- },
10
- "./types": {
11
- "types": "./dist/types.d.ts",
12
- "import": "./dist/types.js"
13
- },
14
- "./content": {
15
- "types": "./dist/content.d.ts",
16
- "import": "./dist/content.js"
17
- },
18
- "./errors": {
19
- "types": "./dist/errors.d.ts",
20
- "import": "./dist/errors.js"
21
- },
22
- "./pci": {
23
- "types": "./dist/pci.d.ts",
24
- "import": "./dist/pci.js"
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js"
25
9
  }
26
10
  },
27
11
  "files": [
package/dist/client.js DELETED
@@ -1,383 +0,0 @@
1
- // src/errors.ts
2
- import * as errors from "@superbuilders/errors";
3
- var ErrNetwork = errors.new("network");
4
- var ErrJsonParse = errors.new("json parse");
5
- var ErrUnsupportedPci = errors.new("unsupported pci");
6
- var ErrInvalidPublishableKey = errors.new("invalid publishable key");
7
- var ErrBadRequest = errors.new("bad request");
8
- var ErrServerError = errors.new("server error");
9
- var ErrTimeout = errors.new("timeout");
10
- var ErrForbidden = errors.new("forbidden");
11
- var ErrNotFound = errors.new("not found");
12
- var ErrConflict = errors.new("conflict");
13
- var ErrRateLimited = errors.new("rate limited");
14
- var ErrServiceUnavailable = errors.new("service unavailable");
15
- var ErrNotSerializable = errors.new("PrimerState is live in-memory state and must not be serialized or stored");
16
- var ErrInvalidSubmission = errors.new("invalid submission");
17
- var ErrMalformedPublishableKey = errors.new("malformed publishable key");
18
- // src/client.ts
19
- import * as errors2 from "@superbuilders/errors";
20
- var DEFAULT_ORIGIN = "https://sb-primer.vercel.app";
21
- var ADVANCE_PATH = "/api/v0/advance";
22
- function poisonToJSON() {
23
- throw ErrNotSerializable;
24
- }
25
- function httpSentinel(status) {
26
- if (status === 400) {
27
- return ErrBadRequest;
28
- }
29
- if (status === 401) {
30
- return ErrInvalidPublishableKey;
31
- }
32
- if (status === 403) {
33
- return ErrForbidden;
34
- }
35
- if (status === 404) {
36
- return ErrNotFound;
37
- }
38
- if (status === 409) {
39
- return ErrConflict;
40
- }
41
- if (status === 422) {
42
- return ErrUnsupportedPci;
43
- }
44
- if (status === 429) {
45
- return ErrRateLimited;
46
- }
47
- if (status === 502 || status === 503 || status === 504) {
48
- return ErrServiceUnavailable;
49
- }
50
- return ErrServerError;
51
- }
52
- function isAbortError(err) {
53
- if (err instanceof DOMException && err.name === "AbortError") {
54
- return true;
55
- }
56
- if (err instanceof DOMException && err.name === "TimeoutError") {
57
- return true;
58
- }
59
- return false;
60
- }
61
- var PK_PREFIX = "pk_";
62
- function create(config) {
63
- const configFetch = config.fetch;
64
- const fetchFn = configFetch ? configFetch : globalThis.fetch;
65
- const log = config.logger;
66
- if (!config.publishableKey.startsWith(PK_PREFIX)) {
67
- log?.error("malformed publishable key", { prefix: PK_PREFIX });
68
- throw errors2.wrap(ErrMalformedPublishableKey, `key must start with '${PK_PREFIX}'`);
69
- }
70
- function transportSignal() {
71
- if (config.abort) {
72
- return config.abort.signal;
73
- }
74
- return;
75
- }
76
- async function transport(body) {
77
- log?.debug("transport request", {
78
- studentId: body.studentId,
79
- intentKind: body.intent.kind
80
- });
81
- const url = config.origin ? `${config.origin}${ADVANCE_PATH}` : ADVANCE_PATH;
82
- const fetchResult = await fetchFn(url, {
83
- method: "POST",
84
- headers: {
85
- "Content-Type": "application/json",
86
- "X-Primer-Publishable-Key": config.publishableKey
87
- },
88
- body: JSON.stringify(body),
89
- signal: transportSignal()
90
- }).then(function ok(r) {
91
- return { ok: true, response: r };
92
- }, function fail(err) {
93
- return { ok: false, error: err };
94
- });
95
- if (!fetchResult.ok) {
96
- if (isAbortError(fetchResult.error)) {
97
- log?.error("transport timeout", {
98
- studentId: body.studentId,
99
- intentKind: body.intent.kind
100
- });
101
- return { ok: false, error: errors2.wrap(ErrTimeout, fetchResult.error.message) };
102
- }
103
- log?.error("transport network error", {
104
- studentId: body.studentId,
105
- error: fetchResult.error
106
- });
107
- return { ok: false, error: errors2.wrap(ErrNetwork, fetchResult.error.message) };
108
- }
109
- const res = fetchResult.response;
110
- if (!res.ok) {
111
- const text = await res.text().catch(function fallback() {
112
- return "";
113
- });
114
- const sentinel = httpSentinel(res.status);
115
- log?.error("transport http error", {
116
- studentId: body.studentId,
117
- status: res.status
118
- });
119
- return { ok: false, error: errors2.wrap(sentinel, text) };
120
- }
121
- const jsonResult = await res.json().then(function ok(data) {
122
- return { ok: true, data };
123
- }, function fail(err) {
124
- return { ok: false, error: err };
125
- });
126
- if (!jsonResult.ok) {
127
- log?.error("transport json parse failed", {
128
- studentId: body.studentId,
129
- error: jsonResult.error
130
- });
131
- return { ok: false, error: errors2.wrap(ErrJsonParse, jsonResult.error.message) };
132
- }
133
- log?.debug("transport success", {
134
- studentId: body.studentId,
135
- intentKind: body.intent.kind
136
- });
137
- return { ok: true, data: jsonResult.data };
138
- }
139
- function makeSession(studentId) {
140
- function resolve(result) {
141
- switch (result.outcome) {
142
- case "advanced":
143
- return fromAdvanced(result.stimulus, result.interaction);
144
- case "submitted":
145
- return feedbackState(result.stimulus, result.interaction, result.submission, result.isCorrect, result.feedbackContent, result.correctAnswer);
146
- case "completed":
147
- return { phase: "completed", toJSON: poisonToJSON };
148
- }
149
- }
150
- function errored(error, failedPhase, intent) {
151
- return {
152
- phase: "errored",
153
- error,
154
- failedPhase,
155
- retry: function retry() {
156
- log?.debug("retrying from errored state", { failedPhase });
157
- return execute(intent, failedPhase);
158
- },
159
- toJSON: poisonToJSON
160
- };
161
- }
162
- async function execute(intent, phase) {
163
- const body = {
164
- studentId,
165
- supportedPcis: config.supportedPcis,
166
- intent
167
- };
168
- const result = await transport(body);
169
- if (!result.ok) {
170
- return errored(result.error, phase, intent);
171
- }
172
- return resolve(result.data);
173
- }
174
- function isPciSupported(pciId) {
175
- for (const id of config.supportedPcis) {
176
- if (id === pciId) {
177
- return true;
178
- }
179
- }
180
- return false;
181
- }
182
- function fromAdvanced(stimulus, interaction) {
183
- if (interaction === null) {
184
- return observationState(stimulus);
185
- }
186
- if (interaction.type === "portable-custom") {
187
- if (!isPciSupported(interaction.pciId)) {
188
- log?.error("unsupported pci in frame", { pciId: interaction.pciId });
189
- return {
190
- phase: "fatal",
191
- error: errors2.wrap(ErrUnsupportedPci, `pci '${interaction.pciId}'`),
192
- toJSON: poisonToJSON
193
- };
194
- }
195
- }
196
- return pendingInteractionState(stimulus, interaction);
197
- }
198
- function observationState(stimulus) {
199
- return {
200
- phase: "observation",
201
- stimulus,
202
- advance: function advance() {
203
- return execute({ kind: "observation" }, "observation");
204
- },
205
- toJSON: poisonToJSON
206
- };
207
- }
208
- function pendingInteractionState(stimulus, interaction) {
209
- switch (interaction.type) {
210
- case "choice":
211
- return choiceState(stimulus, interaction, interaction.options, interaction.maxChoices, interaction.minChoices);
212
- case "text-entry":
213
- return textEntryState(stimulus, interaction);
214
- case "extended-text":
215
- return extendedTextState(stimulus, interaction);
216
- case "portable-custom":
217
- return pciInteractionState(stimulus, interaction);
218
- }
219
- }
220
- function findUnknownKey(selectedKeys, options) {
221
- const optionIds = new Set(options.map(function getId(o) {
222
- return o.identifier;
223
- }));
224
- for (const key of selectedKeys) {
225
- if (!optionIds.has(key)) {
226
- return key;
227
- }
228
- }
229
- return null;
230
- }
231
- function validateChoiceSubmission(selectedKeys, options, maxChoices, minChoices) {
232
- if (selectedKeys.length < minChoices) {
233
- log?.error("choice submit below minChoices", { selectedKeys, minChoices });
234
- return errors2.wrap(ErrInvalidSubmission, `need at least ${minChoices} selections`);
235
- }
236
- if (selectedKeys.length > maxChoices) {
237
- log?.error("choice submit above maxChoices", { selectedKeys, maxChoices });
238
- return errors2.wrap(ErrInvalidSubmission, `at most ${maxChoices} selections`);
239
- }
240
- const uniqueKeys = new Set(selectedKeys);
241
- if (uniqueKeys.size !== selectedKeys.length) {
242
- log?.error("choice submit has duplicates", { selectedKeys });
243
- return errors2.wrap(ErrInvalidSubmission, "duplicate selections");
244
- }
245
- const unknownKey = findUnknownKey(selectedKeys, options);
246
- if (unknownKey) {
247
- log?.error("choice submit has unknown key", { key: unknownKey });
248
- return errors2.wrap(ErrInvalidSubmission, `unknown option '${unknownKey}'`);
249
- }
250
- return null;
251
- }
252
- function choiceState(stimulus, interaction, options, maxChoices, minChoices) {
253
- return {
254
- phase: "interaction",
255
- kind: "choice",
256
- stimulus,
257
- interaction,
258
- options,
259
- maxChoices,
260
- minChoices,
261
- submitChoice: function submitChoice(selectedKeys) {
262
- const validationError = validateChoiceSubmission(selectedKeys, options, maxChoices, minChoices);
263
- if (validationError) {
264
- return Promise.resolve(errored(validationError, "interaction", {
265
- kind: "interaction",
266
- submission: { type: "choice", selectedKeys }
267
- }));
268
- }
269
- return execute({ kind: "interaction", submission: { type: "choice", selectedKeys } }, "interaction");
270
- },
271
- toJSON: poisonToJSON
272
- };
273
- }
274
- function textEntryState(stimulus, interaction) {
275
- return {
276
- phase: "interaction",
277
- kind: "text-entry",
278
- stimulus,
279
- interaction,
280
- submitText: function submitText(value) {
281
- return execute({ kind: "interaction", submission: { type: "text-entry", value } }, "interaction");
282
- },
283
- toJSON: poisonToJSON
284
- };
285
- }
286
- function validateExtendedTextSubmission(values, minStrings, maxStrings) {
287
- if (values.length < minStrings) {
288
- log?.error("extended-text submit below minStrings", { count: values.length, minStrings });
289
- return errors2.wrap(ErrInvalidSubmission, `need at least ${minStrings} values`);
290
- }
291
- if (values.length > maxStrings) {
292
- log?.error("extended-text submit above maxStrings", { count: values.length, maxStrings });
293
- return errors2.wrap(ErrInvalidSubmission, `at most ${maxStrings} values`);
294
- }
295
- return null;
296
- }
297
- function extendedTextState(stimulus, interaction) {
298
- const maxStrings = interaction.maxStrings;
299
- const minStrings = interaction.minStrings;
300
- if (maxStrings === 1) {
301
- return {
302
- phase: "interaction",
303
- kind: "extended-text",
304
- cardinality: "single",
305
- stimulus,
306
- interaction,
307
- submitText: function submitText(value) {
308
- return execute({ kind: "interaction", submission: { type: "extended-text", values: [value] } }, "interaction");
309
- },
310
- toJSON: poisonToJSON
311
- };
312
- }
313
- return {
314
- phase: "interaction",
315
- kind: "extended-text",
316
- cardinality: "multiple",
317
- stimulus,
318
- interaction,
319
- maxStrings,
320
- minStrings,
321
- submitTexts: function submitTexts(values) {
322
- const validationError = validateExtendedTextSubmission(values, minStrings, maxStrings);
323
- if (validationError) {
324
- return Promise.resolve(errored(validationError, "interaction", {
325
- kind: "interaction",
326
- submission: { type: "extended-text", values }
327
- }));
328
- }
329
- return execute({ kind: "interaction", submission: { type: "extended-text", values } }, "interaction");
330
- },
331
- toJSON: poisonToJSON
332
- };
333
- }
334
- function pciInteractionState(stimulus, interaction) {
335
- const { pciId, properties } = interaction;
336
- function submit(value) {
337
- log?.debug("pci submit", { pciId });
338
- const submission = { type: "portable-custom", pciId, value };
339
- return execute({ kind: "interaction", submission }, "interaction");
340
- }
341
- return {
342
- phase: "interaction",
343
- kind: "portable-custom",
344
- stimulus,
345
- interaction,
346
- pciId,
347
- properties,
348
- submit,
349
- toJSON: poisonToJSON
350
- };
351
- }
352
- function feedbackState(stimulus, interaction, submission, isCorrect, feedbackContent, correctAnswer) {
353
- return {
354
- phase: "feedback",
355
- stimulus,
356
- interaction,
357
- submission,
358
- isCorrect,
359
- feedbackContent,
360
- correctAnswer,
361
- advance: function advance() {
362
- return execute({ kind: "observation" }, "observation");
363
- },
364
- toJSON: poisonToJSON
365
- };
366
- }
367
- return { execute };
368
- }
369
- return {
370
- async start(studentId) {
371
- log?.debug("start", { studentId });
372
- const s = makeSession(studentId);
373
- return s.execute({ kind: "observation" }, "observation");
374
- }
375
- };
376
- }
377
- export {
378
- create,
379
- DEFAULT_ORIGIN,
380
- ADVANCE_PATH
381
- };
382
-
383
- //# debugId=B2799CD48726B75C64756E2164756E21