@khanacademy/perseus-core 12.0.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/es/index.js +44 -47
  2. package/dist/es/index.js.map +1 -1
  3. package/dist/index.d.ts +6 -3
  4. package/dist/index.js +47 -48
  5. package/dist/index.js.map +1 -1
  6. package/dist/parse-perseus-json/perseus-parsers/categorizer-user-input.d.ts +3 -0
  7. package/dist/parse-perseus-json/perseus-parsers/categorizer-user-input.typetest.d.ts +1 -0
  8. package/dist/parse-perseus-json/perseus-parsers/cs-program-user-input.d.ts +4 -0
  9. package/dist/parse-perseus-json/perseus-parsers/cs-program-user-input.typetest.d.ts +1 -0
  10. package/dist/parse-perseus-json/perseus-parsers/free-response-user-input.d.ts +3 -0
  11. package/dist/parse-perseus-json/perseus-parsers/free-response-user-input.typetest.d.ts +1 -0
  12. package/dist/parse-perseus-json/perseus-parsers/grapher-user-input.d.ts +24 -0
  13. package/dist/parse-perseus-json/perseus-parsers/grapher-user-input.typetest.d.ts +1 -0
  14. package/dist/parse-perseus-json/perseus-parsers/grapher-widget.d.ts +2 -1
  15. package/dist/parse-perseus-json/perseus-parsers/iframe-user-input.d.ts +4 -0
  16. package/dist/parse-perseus-json/perseus-parsers/iframe-user-input.typetest.d.ts +1 -0
  17. package/dist/parse-perseus-json/perseus-parsers/input-number-user-input.d.ts +3 -0
  18. package/dist/parse-perseus-json/perseus-parsers/input-number-user-input.typetest.d.ts +1 -0
  19. package/dist/parse-perseus-json/perseus-parsers/label-image-user-input.d.ts +6 -0
  20. package/dist/parse-perseus-json/perseus-parsers/label-image-user-input.typetest.d.ts +1 -0
  21. package/dist/parse-perseus-json/perseus-parsers/matcher-user-input.d.ts +4 -0
  22. package/dist/parse-perseus-json/perseus-parsers/matcher-user-input.typetest.d.ts +1 -0
  23. package/dist/parse-perseus-json/perseus-parsers/matrix-user-input.d.ts +3 -0
  24. package/dist/parse-perseus-json/perseus-parsers/matrix-user-input.typetest.d.ts +1 -0
  25. package/dist/parse-perseus-json/perseus-parsers/number-line-user-input.d.ts +7 -0
  26. package/dist/parse-perseus-json/perseus-parsers/number-line-user-input.typetest.d.ts +1 -0
  27. package/dist/parse-perseus-json/perseus-parsers/orderer-user-input.d.ts +3 -0
  28. package/dist/parse-perseus-json/perseus-parsers/orderer-user-input.typetest.d.ts +1 -0
  29. package/dist/parse-perseus-json/perseus-parsers/plotter-user-input.d.ts +1 -0
  30. package/dist/parse-perseus-json/perseus-parsers/plotter-user-input.typetest.d.ts +1 -0
  31. package/dist/parse-perseus-json/perseus-parsers/sorter-user-input.d.ts +4 -0
  32. package/dist/parse-perseus-json/perseus-parsers/sorter-user-input.typetest.d.ts +1 -0
  33. package/dist/parse-perseus-json/perseus-parsers/table-user-input.d.ts +1 -0
  34. package/dist/parse-perseus-json/perseus-parsers/table-user-input.typetest.d.ts +1 -0
  35. package/dist/utils/get-default-answer-area.d.ts +2 -0
  36. package/dist/utils/split-perseus-item.d.ts +10 -0
  37. package/dist/widgets/apply-defaults.d.ts +3 -0
  38. package/dist/widgets/core-widget-registry.d.ts +0 -1
  39. package/dist/widgets/expression/index.d.ts +7 -1
  40. package/dist/widgets/interactive-graph/index.d.ts +1 -1
  41. package/dist/widgets/label-image/label-image-util.d.ts +2 -3
  42. package/dist/widgets/logic-export.types.d.ts +0 -1
  43. package/dist/widgets/measurer/index.d.ts +7 -1
  44. package/dist/widgets/radio/derive-num-correct.d.ts +2 -0
  45. package/dist/widgets/radio/index.d.ts +7 -1
  46. package/package.json +7 -7
  47. package/dist/widgets/expression/expression-upgrade.d.ts +0 -11
  48. package/dist/widgets/measurer/measurer-upgrade.d.ts +0 -10
  49. package/dist/widgets/radio/radio-upgrade.d.ts +0 -12
  50. package/dist/widgets/upgrade.d.ts +0 -3
@@ -0,0 +1,3 @@
1
+ export declare const parseCategorizerUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ values: number[];
3
+ }>>;
@@ -0,0 +1,4 @@
1
+ export declare const parseCSProgramUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ status: "correct" | "incorrect" | "incomplete";
3
+ message: string | null;
4
+ }>>;
@@ -0,0 +1,3 @@
1
+ export declare const parseFreeResponseUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ currentValue: string;
3
+ }>>;
@@ -0,0 +1,24 @@
1
+ export declare const parseGrapherUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ type: "absolute_value";
3
+ coords: [[number, number], [number, number]] | null;
4
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
5
+ type: "exponential";
6
+ asymptote: [[number, number], [number, number]];
7
+ coords: [[number, number], [number, number]] | null;
8
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
9
+ type: "linear";
10
+ coords: [[number, number], [number, number]] | null;
11
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
12
+ type: "logarithm";
13
+ asymptote: [[number, number], [number, number]];
14
+ coords: [[number, number], [number, number]] | null;
15
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
16
+ type: "quadratic";
17
+ coords: [[number, number], [number, number]] | null;
18
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
19
+ type: "sinusoid";
20
+ coords: [[number, number], [number, number]] | null;
21
+ }> | import("../general-purpose-parsers/object-types").OptionalizeProperties<{
22
+ type: "tangent";
23
+ coords: [[number, number], [number, number]] | null;
24
+ }>>;
@@ -1,4 +1,5 @@
1
- export declare const parseGrapherWidget: import("../parser-types").Parser<import("../..").WidgetOptions<"grapher", import("../general-purpose-parsers/object-types").OptionalizeProperties<{
1
+ import type { Parser } from "../parser-types";
2
+ export declare const parseGrapherWidget: Parser<import("../..").WidgetOptions<"grapher", import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
3
  availableTypes: ("absolute_value" | "exponential" | "linear" | "logarithm" | "quadratic" | "sinusoid" | "tangent")[];
3
4
  correct: import("../general-purpose-parsers/object-types").OptionalizeProperties<{
4
5
  type: "absolute_value";
@@ -0,0 +1,4 @@
1
+ export declare const parseIFrameUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ status: "correct" | "incorrect" | "incomplete";
3
+ message: string | null;
4
+ }>>;
@@ -0,0 +1,3 @@
1
+ export declare const parseInputNumberUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ currentValue: string;
3
+ }>>;
@@ -0,0 +1,6 @@
1
+ export declare const parseLabelImageUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ markers: import("../general-purpose-parsers/object-types").OptionalizeProperties<{
3
+ selected: string[] | undefined;
4
+ label: string;
5
+ }>[];
6
+ }>>;
@@ -0,0 +1,4 @@
1
+ export declare const parseMatcherUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ left: string[];
3
+ right: string[];
4
+ }>>;
@@ -0,0 +1,3 @@
1
+ export declare const parseMatrixUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ answers: number[][];
3
+ }>>;
@@ -0,0 +1,7 @@
1
+ export declare const parseNumberLineUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ isTickCrtl: boolean | undefined;
3
+ numLinePosition: number;
4
+ rel: "eq" | "lt" | "gt" | "le" | "ge";
5
+ numDivisions: number;
6
+ divisionRange: number[];
7
+ }>>;
@@ -0,0 +1,3 @@
1
+ export declare const parseOrdererUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ current: string[];
3
+ }>>;
@@ -0,0 +1 @@
1
+ export declare const parsePlotterUserInput: import("../parser-types").Parser<number[]>;
@@ -0,0 +1,4 @@
1
+ export declare const parseSorterUserInput: import("../parser-types").Parser<import("../general-purpose-parsers/object-types").OptionalizeProperties<{
2
+ options: string[];
3
+ changed: boolean;
4
+ }>>;
@@ -0,0 +1 @@
1
+ export declare const parseTableUserInput: import("../parser-types").Parser<string[][]>;
@@ -0,0 +1,2 @@
1
+ import { type PerseusAnswerArea } from "../data-schema";
2
+ export default function getDefaultAnswerArea(): PerseusAnswerArea;
@@ -5,3 +5,13 @@ import type { PerseusItem } from "../data-schema";
5
5
  * @param original - the original, full PerseusItem (which includes the rubric - aka answer data)
6
6
  */
7
7
  export default function splitPerseusItem(original: PerseusItem): PerseusItem;
8
+ /**
9
+ * Returns a JSON copy of a PerseusItem with rubric data (i.e. answers and
10
+ * hints) removed. Idempotent and deterministic.
11
+ *
12
+ * @param data a {@linkcode PerseusItem}, either as JSON or as an object.
13
+ * @returns {string} the answerless data formatted as JSON
14
+ * @throws {SyntaxError} given malformed JSON or data that can't be parsed as
15
+ * a Perseus item.
16
+ */
17
+ export declare function splitPerseusItemJSON(data: unknown): string;
@@ -0,0 +1,3 @@
1
+ import type { PerseusWidget, PerseusWidgetsMap } from "../data-schema";
2
+ export declare const applyDefaultsToWidget: (oldWidgetInfo: PerseusWidget) => PerseusWidget;
3
+ export declare function applyDefaultsToWidgets(oldWidgetOptions: PerseusWidgetsMap): PerseusWidgetsMap;
@@ -3,7 +3,6 @@ import type { Alignment } from "../types";
3
3
  export declare function isWidgetRegistered(type: string): boolean;
4
4
  export declare function getCurrentVersion(type: string): import("..").Version;
5
5
  export declare const getPublicWidgetOptionsFunction: (type: string) => PublicWidgetOptionsFunction;
6
- export declare function getWidgetOptionsUpgrades(type: string): import("./logic-export.types").WidgetOptionsUpgradeMap;
7
6
  export declare function getDefaultWidgetOptions(type: string): any;
8
7
  /**
9
8
  * Handling for the optional alignments for widgets
@@ -1,4 +1,10 @@
1
+ import type { PerseusExpressionWidgetOptions } from "../../data-schema";
1
2
  import type { WidgetLogic } from "../logic-export.types";
2
- export type { ExpressionDefaultWidgetOptions } from "./expression-upgrade";
3
+ export declare const currentVersion: {
4
+ major: number;
5
+ minor: number;
6
+ };
7
+ export type ExpressionDefaultWidgetOptions = Pick<PerseusExpressionWidgetOptions, "answerForms" | "times" | "buttonSets" | "functions">;
8
+ export declare const defaultWidgetOptions: ExpressionDefaultWidgetOptions;
3
9
  declare const expressionWidgetLogic: WidgetLogic;
4
10
  export default expressionWidgetLogic;
@@ -1,5 +1,5 @@
1
1
  import type { PerseusInteractiveGraphWidgetOptions } from "../../data-schema";
2
2
  import type { WidgetLogic } from "../logic-export.types";
3
- export type InteractiveGraphDefaultWidgetOptions = Pick<PerseusInteractiveGraphWidgetOptions, "labels" | "range" | "step" | "backgroundImage" | "markings" | "showTooltips" | "showProtractor" | "graph" | "correct">;
3
+ export type InteractiveGraphDefaultWidgetOptions = Pick<PerseusInteractiveGraphWidgetOptions, "labels" | "labelLocation" | "range" | "step" | "backgroundImage" | "markings" | "showTooltips" | "showProtractor" | "graph" | "correct">;
4
4
  declare const interactiveGraphWidgetLogic: WidgetLogic;
5
5
  export default interactiveGraphWidgetLogic;
@@ -3,7 +3,7 @@ import type { PerseusLabelImageMarker, PerseusLabelImageWidgetOptions } from "..
3
3
  * For details on the individual options, see the
4
4
  * PerseusLabelImageWidgetOptions type
5
5
  */
6
- type LabelImagePublicWidgetOptions = {
6
+ export type LabelImagePublicWidgetOptions = {
7
7
  choices: PerseusLabelImageWidgetOptions["choices"];
8
8
  imageUrl: PerseusLabelImageWidgetOptions["imageUrl"];
9
9
  imageAlt: PerseusLabelImageWidgetOptions["imageAlt"];
@@ -14,6 +14,5 @@ type LabelImagePublicWidgetOptions = {
14
14
  multipleAnswers: PerseusLabelImageWidgetOptions["multipleAnswers"];
15
15
  static: PerseusLabelImageWidgetOptions["static"];
16
16
  };
17
- type LabelImageMarkerPublicData = Pick<PerseusLabelImageMarker, "x" | "y" | "label">;
17
+ export type LabelImageMarkerPublicData = Pick<PerseusLabelImageMarker, "x" | "y" | "label">;
18
18
  export default function getLabelImagePublicWidgetOptions(options: PerseusLabelImageWidgetOptions): LabelImagePublicWidgetOptions;
19
- export {};
@@ -33,7 +33,6 @@ export type PublicWidgetOptionsFunction = typeof getCategorizerPublicWidgetOptio
33
33
  export type WidgetLogic = {
34
34
  name: string;
35
35
  version?: Version;
36
- widgetOptionsUpgrades?: WidgetOptionsUpgradeMap;
37
36
  defaultWidgetOptions?: any;
38
37
  supportedAlignments?: ReadonlyArray<Alignment>;
39
38
  defaultAlignment?: Alignment;
@@ -1,4 +1,10 @@
1
+ import type { PerseusMeasurerWidgetOptions } from "../../data-schema";
1
2
  import type { WidgetLogic } from "../logic-export.types";
2
- export type { MeasurerDefaultWidgetOptions } from "./measurer-upgrade";
3
+ export declare const currentVersion: {
4
+ major: number;
5
+ minor: number;
6
+ };
7
+ export type MeasurerDefaultWidgetOptions = Pick<PerseusMeasurerWidgetOptions, "box" | "image" | "showProtractor" | "showRuler" | "rulerLabel" | "rulerTicks" | "rulerPixels" | "rulerLength">;
8
+ export declare const defaultWidgetOptions: MeasurerDefaultWidgetOptions;
3
9
  declare const measurerWidgetLogic: WidgetLogic;
4
10
  export default measurerWidgetLogic;
@@ -0,0 +1,2 @@
1
+ import type { PerseusRadioWidgetOptions } from "../../data-schema";
2
+ export declare function deriveNumCorrect(options: PerseusRadioWidgetOptions): number;
@@ -1,4 +1,10 @@
1
+ import type { PerseusRadioWidgetOptions } from "../../data-schema";
1
2
  import type { WidgetLogic } from "../logic-export.types";
2
- export type { RadioDefaultWidgetOptions } from "./radio-upgrade";
3
+ export declare const currentVersion: {
4
+ major: number;
5
+ minor: number;
6
+ };
7
+ export type RadioDefaultWidgetOptions = Pick<PerseusRadioWidgetOptions, "choices" | "displayCount" | "randomize" | "hasNoneOfTheAbove" | "multipleSelect" | "countChoices" | "deselectEnabled">;
8
+ export declare const defaultWidgetOptions: RadioDefaultWidgetOptions;
3
9
  declare const radioWidgetLogic: WidgetLogic;
4
10
  export default radioWidgetLogic;
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Shared Perseus infrastructure",
4
4
  "author": "Khan Academy",
5
5
  "license": "MIT",
6
- "version": "12.0.0",
6
+ "version": "13.0.0",
7
7
  "publishConfig": {
8
8
  "access": "public"
9
9
  },
@@ -22,17 +22,17 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "tiny-invariant": "^1.3.1",
26
- "@khanacademy/kas": "2.0.4",
27
- "@khanacademy/perseus-utils": "2.0.3"
25
+ "tiny-invariant": "1.3.1",
26
+ "@khanacademy/kas": "2.0.5",
27
+ "@khanacademy/perseus-utils": "2.0.4"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@khanacademy/wonder-stuff-core": "1.5.4",
31
- "underscore": "^1.4.4",
32
- "perseus-build-settings": "0.6.1"
31
+ "underscore": "1.4.4",
32
+ "perseus-build-settings": "0.6.2"
33
33
  },
34
34
  "peerDependencies": {
35
- "@khanacademy/wonder-stuff-core": "1.5.4",
35
+ "@khanacademy/wonder-stuff-core": "^1.5.4",
36
36
  "underscore": "^1.4.4"
37
37
  },
38
38
  "keywords": [],
@@ -1,11 +0,0 @@
1
- import type { PerseusExpressionWidgetOptions } from "../../data-schema";
2
- export declare const currentVersion: {
3
- major: number;
4
- minor: number;
5
- };
6
- export declare const widgetOptionsUpgrades: {
7
- readonly "2": (v1options: any) => PerseusExpressionWidgetOptions;
8
- readonly "1": (v0options: any) => PerseusExpressionWidgetOptions;
9
- };
10
- export type ExpressionDefaultWidgetOptions = Pick<PerseusExpressionWidgetOptions, "answerForms" | "times" | "buttonSets" | "functions">;
11
- export declare const defaultWidgetOptions: ExpressionDefaultWidgetOptions;
@@ -1,10 +0,0 @@
1
- import type { PerseusMeasurerWidgetOptions } from "../../data-schema";
2
- export declare const currentVersion: {
3
- major: number;
4
- minor: number;
5
- };
6
- export declare const widgetOptionsUpgrades: {
7
- readonly "1": (v0options: any) => PerseusMeasurerWidgetOptions;
8
- };
9
- export type MeasurerDefaultWidgetOptions = Pick<PerseusMeasurerWidgetOptions, "box" | "image" | "showProtractor" | "showRuler" | "rulerLabel" | "rulerTicks" | "rulerPixels" | "rulerLength">;
10
- export declare const defaultWidgetOptions: MeasurerDefaultWidgetOptions;
@@ -1,12 +0,0 @@
1
- import type { PerseusRadioWidgetOptions } from "../../data-schema";
2
- export declare const currentVersion: {
3
- major: number;
4
- minor: number;
5
- };
6
- export declare function deriveNumCorrect(options: PerseusRadioWidgetOptions): number;
7
- export declare const widgetOptionsUpgrades: {
8
- readonly "2": (v1props: any) => PerseusRadioWidgetOptions;
9
- readonly "1": (v0props: any) => PerseusRadioWidgetOptions;
10
- };
11
- export type RadioDefaultWidgetOptions = Pick<PerseusRadioWidgetOptions, "choices" | "displayCount" | "randomize" | "hasNoneOfTheAbove" | "multipleSelect" | "countChoices" | "deselectEnabled">;
12
- export declare const defaultWidgetOptions: RadioDefaultWidgetOptions;
@@ -1,3 +0,0 @@
1
- import type { PerseusWidget, PerseusWidgetsMap } from "../data-schema";
2
- export declare const upgradeWidgetInfoToLatestVersion: (oldWidgetInfo: PerseusWidget) => PerseusWidget;
3
- export declare function getUpgradedWidgetOptions(oldWidgetOptions: PerseusWidgetsMap): PerseusWidgetsMap;