@media-quest/builder 0.0.24 → 0.0.25

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/src/BuilderTag.ts CHANGED
@@ -1,97 +1,96 @@
1
- import { BuilderObjectId, BuilderObject } from './BuilderObject';
2
-
3
- export interface BuilderTagDto {
4
- readonly id: BuilderObjectId.TagId;
5
- readonly tag: string;
6
- readonly description: string;
7
- }
8
-
9
- export class BuilderTag extends BuilderObject<'builder-tag', BuilderTagDto> {
10
- readonly objectType: 'builder-tag' = 'builder-tag';
11
- readonly id: BuilderObjectId.TagId;
12
- tagText = '';
13
- tagDescription = '';
14
- public static readonly MAX_LENGTH = 20;
15
- public static readonly MIN_LENGTH = 1;
16
-
17
- public static readonly create = (tag: string, description: string = '') => {
18
- const id = BuilderObjectId.createTagId();
19
- const dto: BuilderTagDto = {
20
- id,
21
- tag,
22
- description
23
- };
24
- return new BuilderTag(dto);
25
- };
26
- public static readonly fromDto = (dto: BuilderTagDto) => {
27
- return new BuilderTag(dto);
28
- };
29
- protected constructor(dto: BuilderTagDto) {
30
- const id = dto.id ?? BuilderObjectId.createTagId();
31
- const withId = { ...dto, id };
32
- super(withId);
33
- this.id = id;
34
- this.tagText = dto.tag ?? '';
35
- this.tagDescription = dto.description ?? '';
36
- }
37
- clone(): BuilderTagDto {
38
- return this.toJson();
39
- }
40
-
41
- toJson(): BuilderTagDto {
42
- return { tag: this.tagText, description: this.tagDescription, id: this.id };
43
- }
44
- }
45
-
46
- export class TagCollection implements Iterable<BuilderTag> {
47
- private readonly _tags = new Set<BuilderTag>();
48
- public static readonly create = () => {
49
- return new TagCollection([]);
50
- };
51
-
52
- [Symbol.iterator]() {
53
- const list = [...this._tags];
54
- return list[Symbol.iterator]();
55
- }
56
- private constructor(initialTags: ReadonlyArray<BuilderTag>) {
57
- initialTags.forEach(tag => {
58
- this._tags.add(tag);
59
- });
60
- }
61
-
62
- init(tags: ReadonlyArray<BuilderTagDto>) {
63
- const dtoList: ReadonlyArray<BuilderTagDto> = Array.isArray(tags)
64
- ? tags
65
- : [];
66
- const all = dtoList.map(BuilderTag.fromDto);
67
- all.forEach(tag => {
68
- this._tags.add(tag);
69
- });
70
- }
71
-
72
- add(tag: BuilderTag) {
73
- this._tags.add(tag);
74
- }
75
-
76
- /**
77
- * Delete this tag from collection;
78
- * @param tag
79
- */
80
- delete(tag: BuilderTag) {
81
- this._tags.delete(tag);
82
- }
83
-
84
- toJson(): ReadonlyArray<BuilderTagDto> {
85
- const list = [...this._tags];
86
- const dtoList = list.map(t => t.toJson());
87
- return dtoList;
88
- }
89
-
90
- deleteAll(tags: Iterable<BuilderTag>) {
91
- const l = tags[Symbol.iterator]();
92
- const asList = [...tags];
93
- asList.forEach(t => {
94
- this.delete(t);
95
- });
96
- }
97
- }
1
+ import { BuilderObject } from "./BuilderObject";
2
+ import { TagID } from "./primitives/ID";
3
+
4
+ export interface BuilderTagDto {
5
+ readonly id: TagID;
6
+ readonly tag: string;
7
+ readonly description: string;
8
+ }
9
+
10
+ export class BuilderTag extends BuilderObject<"builder-tag", BuilderTagDto> {
11
+ readonly objectType: "builder-tag" = "builder-tag";
12
+ readonly id: TagID;
13
+ tagText = "";
14
+ tagDescription = "";
15
+ public static readonly MAX_LENGTH = 20;
16
+ public static readonly MIN_LENGTH = 1;
17
+
18
+ public static readonly create = (tag: string, description: string = "") => {
19
+ const id = TagID.create();
20
+ const dto: BuilderTagDto = {
21
+ id,
22
+ tag,
23
+ description,
24
+ };
25
+ return new BuilderTag(dto);
26
+ };
27
+ public static readonly fromDto = (dto: BuilderTagDto) => {
28
+ return new BuilderTag(dto);
29
+ };
30
+ protected constructor(dto: BuilderTagDto) {
31
+ const id = TagID.validateOrCreate(dto.id);
32
+ const withId = { ...dto, id };
33
+ super(withId);
34
+ this.id = id;
35
+ this.tagText = dto.tag ?? "";
36
+ this.tagDescription = dto.description ?? "";
37
+ }
38
+ clone(): BuilderTagDto {
39
+ return this.toJson();
40
+ }
41
+
42
+ toJson(): BuilderTagDto {
43
+ return { tag: this.tagText, description: this.tagDescription, id: this.id };
44
+ }
45
+ }
46
+
47
+ export class TagCollection implements Iterable<BuilderTag> {
48
+ private readonly _tags = new Set<BuilderTag>();
49
+ public static readonly create = () => {
50
+ return new TagCollection([]);
51
+ };
52
+
53
+ [Symbol.iterator]() {
54
+ const list = [...this._tags];
55
+ return list[Symbol.iterator]();
56
+ }
57
+ private constructor(initialTags: ReadonlyArray<BuilderTag>) {
58
+ initialTags.forEach((tag) => {
59
+ this._tags.add(tag);
60
+ });
61
+ }
62
+
63
+ init(tags: ReadonlyArray<BuilderTagDto>) {
64
+ const dtoList: ReadonlyArray<BuilderTagDto> = Array.isArray(tags) ? tags : [];
65
+ const all = dtoList.map(BuilderTag.fromDto);
66
+ all.forEach((tag) => {
67
+ this._tags.add(tag);
68
+ });
69
+ }
70
+
71
+ add(tag: BuilderTag) {
72
+ this._tags.add(tag);
73
+ }
74
+
75
+ /**
76
+ * Delete this tag from collection;
77
+ * @param tag
78
+ */
79
+ delete(tag: BuilderTag) {
80
+ this._tags.delete(tag);
81
+ }
82
+
83
+ toJson(): ReadonlyArray<BuilderTagDto> {
84
+ const list = [...this._tags];
85
+ const dtoList = list.map((t) => t.toJson());
86
+ return dtoList;
87
+ }
88
+
89
+ deleteAll(tags: Iterable<BuilderTag>) {
90
+ const l = tags[Symbol.iterator]();
91
+ const asList = [...tags];
92
+ asList.forEach((t) => {
93
+ this.delete(t);
94
+ });
95
+ }
96
+ }
package/src/codebook.ts CHANGED
@@ -1,72 +1,72 @@
1
- import { BuilderPageDto } from "./Builder-page";
2
- import { BuilderSchemaDto } from "./Builder-schema";
3
- import { PageVariable, PredefinedVariable } from "./variable/mq-variable";
4
-
5
- export interface Codebook {
6
- readonly predefinedVariables: ReadonlyArray<PredefinedVariable>;
7
- readonly pageVariables: ReadonlyArray<PageVariable>;
8
- }
9
-
10
- const fromPage = (
11
- page: BuilderPageDto,
12
- pagePosition: number,
13
- modulePrefix: string,
14
- ): PageVariable[] => {
15
- const variables: PageVariable[] = [];
16
-
17
- if (page._type !== "question") {
18
- // TODO Implement form field variables
19
- return [];
20
- }
21
-
22
- const options: PageVariable["options"] = page.defaultQuestion.options.map((o) => {
23
- return { value: o.value, label: o.label };
24
- });
25
-
26
- const variable: PageVariable = {
27
- kind: "numeric-variable",
28
- label: page.mainText.text,
29
- options,
30
- modulePrefix,
31
- origin: "question",
32
- pageId: page.id,
33
- pagePosition,
34
- pagePrefix: page.prefix,
35
- varId: modulePrefix + "_" + page.prefix,
36
- };
37
-
38
- variables.push(variable);
39
-
40
- return variables;
41
- };
42
-
43
- /**
44
- * Converts a list of pages into a list of question-variables
45
- * @param pages
46
- * @param modulePrefix
47
- */
48
- const getPageVariablesFromPages = (
49
- pages: BuilderPageDto[],
50
- modulePrefix: string,
51
- ): PageVariable[] => {
52
- const variables: PageVariable[] = [];
53
- pages.forEach((page, index) => {
54
- const pageVariables = fromPage(page, index, modulePrefix);
55
- variables.push(...pageVariables);
56
- });
57
- return variables;
58
- };
59
-
60
- const fromSchema = (schema: BuilderSchemaDto): Codebook => {
61
- const modulePrefix = schema.prefix;
62
- const pageVariables = getPageVariablesFromPages(schema.pages, modulePrefix);
63
- const vs = schema.predefinedVariables;
64
- const predefinedVariables: PredefinedVariable[] = vs ? [...vs] : [];
65
- return { pageVariables, predefinedVariables };
66
- };
67
-
68
- export const _CodeBook = {
69
- fromSchema,
70
- } as const;
71
-
72
- export const CodeBook = Object.freeze(_CodeBook);
1
+ import { BuilderPageDto } from "./Builder-page";
2
+ import { BuilderSchemaDto } from "./Builder-schema";
3
+ import { PageVariable, PredefinedVariable } from "./variable/b-variable";
4
+
5
+ export interface Codebook {
6
+ readonly predefinedVariables: ReadonlyArray<PredefinedVariable>;
7
+ readonly pageVariables: ReadonlyArray<PageVariable>;
8
+ }
9
+
10
+ const fromPage = (
11
+ page: BuilderPageDto,
12
+ pagePosition: number,
13
+ modulePrefix: string,
14
+ ): PageVariable[] => {
15
+ const variables: PageVariable[] = [];
16
+
17
+ if (page._type !== "question") {
18
+ // TODO Implement form field variables
19
+ return [];
20
+ }
21
+
22
+ const options: PageVariable["options"] = page.defaultQuestion.options.map((o) => {
23
+ return { value: o.value, label: o.label };
24
+ });
25
+
26
+ const variable: PageVariable = {
27
+ kind: "numeric-variable",
28
+ label: page.mainText.text,
29
+ options,
30
+ modulePrefix,
31
+ origin: "question",
32
+ pageId: page.id,
33
+ pagePosition,
34
+ pagePrefix: page.prefix,
35
+ varId: modulePrefix + "_" + page.prefix,
36
+ };
37
+
38
+ variables.push(variable);
39
+
40
+ return variables;
41
+ };
42
+
43
+ /**
44
+ * Converts a list of pages into a list of question-variables
45
+ * @param pages
46
+ * @param modulePrefix
47
+ */
48
+ const getPageVariablesFromPages = (
49
+ pages: BuilderPageDto[],
50
+ modulePrefix: string,
51
+ ): PageVariable[] => {
52
+ const variables: PageVariable[] = [];
53
+ pages.forEach((page, index) => {
54
+ const pageVariables = fromPage(page, index, modulePrefix);
55
+ variables.push(...pageVariables);
56
+ });
57
+ return variables;
58
+ };
59
+
60
+ const fromSchema = (schema: BuilderSchemaDto): Codebook => {
61
+ const modulePrefix = schema.prefix;
62
+ const pageVariables = getPageVariablesFromPages(schema.pages, modulePrefix);
63
+ const vs = schema.predefinedVariables;
64
+ const predefinedVariables: PredefinedVariable[] = vs ? [...vs] : [];
65
+ return { pageVariables, predefinedVariables };
66
+ };
67
+
68
+ export const _CodeBook = {
69
+ fromSchema,
70
+ } as const;
71
+
72
+ export const CodeBook = Object.freeze(_CodeBook);
@@ -0,0 +1,39 @@
1
+ import { PageID, SchemaID } from "./ID";
2
+
3
+ describe("ID Functions work", () => {
4
+ //Generate test for schema prefix
5
+ test("SCHEMA_ID isFunction works", () => {
6
+ const id = SchemaID.create();
7
+ expect(SchemaID.is(id)).toBe(true);
8
+ expect(SchemaID.is("")).toBe(false);
9
+ expect(SchemaID.is("a")).toBe(false);
10
+ expect(SchemaID.is("a".repeat(10))).toBe(true);
11
+ expect(SchemaID.is("a".repeat(9))).toBe(false);
12
+ });
13
+ test("SCHEMA_ID ensure works", () => {
14
+ const id = SchemaID.create();
15
+ expect(SchemaID.validateOrCreate(id)).toBe(id);
16
+ expect(SchemaID.validateOrCreate("")).not.toBe("");
17
+ expect(SchemaID.validateOrCreate("")).not.toBe("a");
18
+ expect(SchemaID.validateOrCreate("a".repeat(10))).toBe("a".repeat(10));
19
+ expect(SchemaID.validateOrCreate("a".repeat(9))).not.toBe("a".repeat(9));
20
+ expect(SchemaID.validateOrCreate("ABcdefghigKLML")).toBe("ABcdefghigKLML");
21
+ });
22
+ test("PageID isFunction works", () => {
23
+ const id = PageID.create();
24
+ expect(PageID.is(id)).toBe(true);
25
+ expect(PageID.is("")).toBe(false);
26
+ expect(PageID.is("a")).toBe(false);
27
+ expect(PageID.is("a".repeat(10))).toBe(true);
28
+ expect(PageID.is("a".repeat(9))).toBe(false);
29
+ });
30
+ test("PageID ensure works", () => {
31
+ const id = PageID.create();
32
+ expect(PageID.validateOrCreate(id)).toBe(id);
33
+ expect(PageID.validateOrCreate("")).not.toBe("");
34
+ expect(PageID.validateOrCreate("")).not.toBe("a");
35
+ expect(PageID.validateOrCreate("a".repeat(10))).toBe("a".repeat(10));
36
+ expect(PageID.validateOrCreate("a".repeat(9))).not.toBe("a".repeat(9));
37
+ expect(PageID.validateOrCreate("ABcdefghigKLML")).toBe("ABcdefghigKLML");
38
+ });
39
+ });
@@ -0,0 +1,119 @@
1
+ // The default length of an ID
2
+ const ID_LENGTH = 32;
3
+
4
+ // The minimum length of an ID
5
+ const MIN_LENGTH = 10;
6
+
7
+ export type ID<B extends string> = string & { __ID__: B };
8
+
9
+ const isID = <const B extends string>(idName: B, id?: string): id is ID<B> => {
10
+ if (typeof id !== "string") return false;
11
+ return id.length >= MIN_LENGTH;
12
+ };
13
+
14
+ const createIDByName = <const B extends string>(idName: B): ID<B> => {
15
+ const letters = "abcdefghijklmnopqrstuvyz";
16
+ const all = letters + letters.toUpperCase();
17
+ let result = "";
18
+
19
+ for (let i = 0; i < ID_LENGTH; i++) {
20
+ const char = all.charAt(Math.floor(Math.random() * all.length));
21
+ result += char;
22
+ }
23
+
24
+ return result as ID<B>;
25
+ };
26
+ const createDummyID = <const B extends string>(idName: B, letter: string): ID<B> => {
27
+ return letter.repeat(ID_LENGTH) as ID<B>;
28
+ };
29
+ interface Id<T extends string> {
30
+ name: T;
31
+ is: (id: string) => id is ID<T>;
32
+ validateOrCreate: (id: string) => ID<T>;
33
+ validateOrThrow: (id: string) => ID<T>;
34
+ create: () => ID<T>;
35
+ dummy: {
36
+ a: ID<T>;
37
+ b: ID<T>;
38
+ c: ID<T>;
39
+ d: ID<T>;
40
+ e: ID<T>;
41
+ f: ID<T>;
42
+ g: ID<T>;
43
+ h: ID<T>;
44
+ i: ID<T>;
45
+ j: ID<T>;
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Creates a object with helper functions for a specific ID type
51
+ * @param idName
52
+ */
53
+ export const createTypedIdSingleton = <const B extends string>(idName: B): Id<B> => {
54
+ /**
55
+ * Creates a new ID of the correct type
56
+ */
57
+ const create = (): ID<B> => createIDByName(idName);
58
+
59
+ /**
60
+ * Checks if the id is of the correct type
61
+ * @param id
62
+ */
63
+ const is = (id: string): id is ID<B> => isID(idName, id);
64
+
65
+ /**
66
+ * Checks if the id is of the correct type, if not it throws an error
67
+ * @param id
68
+ */
69
+ const validateOrThrow = (id: string): ID<B> => {
70
+ if (!is(id)) {
71
+ throw new Error(`Invalid id: ${id}`);
72
+ }
73
+ return id;
74
+ };
75
+
76
+ /**
77
+ * The lowercase name of the id (SCHEMA, PAGE, etc)
78
+ */
79
+ const name: B = idName;
80
+
81
+ /**
82
+ * Ensures that the id is of the correct type, if not it creates a new one
83
+ * @param id
84
+ */
85
+ const validateOrCreate = (id: string): ID<B> => {
86
+ return is(id) ? id : create();
87
+ };
88
+
89
+ const dummy = {
90
+ a: createDummyID(idName, "a"),
91
+ b: createDummyID(idName, "b"),
92
+ c: createDummyID(idName, "c"),
93
+ d: createDummyID(idName, "d"),
94
+ e: createDummyID(idName, "e"),
95
+ f: createDummyID(idName, "f"),
96
+ g: createDummyID(idName, "g"),
97
+ h: createDummyID(idName, "h"),
98
+ i: createDummyID(idName, "i"),
99
+ j: createDummyID(idName, "j"),
100
+ };
101
+
102
+ return Object.freeze({ create, is, validateOrCreate, validateOrThrow, name, dummy });
103
+ };
104
+
105
+ export type SchemaID = ID<"SCHEMA">;
106
+ export const SchemaID = createTypedIdSingleton("SCHEMA");
107
+
108
+ export type PageID = ID<"PAGE">;
109
+ export const PageID = createTypedIdSingleton("PAGE");
110
+
111
+ export type TagID = ID<"TAG">;
112
+ export const TagID = createTypedIdSingleton("TAG");
113
+ export type OptionID = ID<"OPTION">;
114
+ export const OptionID = createTypedIdSingleton("OPTION");
115
+
116
+ export type TextID = ID<"TEXT">;
117
+ export const TextID = createTypedIdSingleton("TEXT");
118
+ export type QuestionID = ID<"QUESTION">;
119
+ export const QuestionID = createTypedIdSingleton("QUESTION");
@@ -1,58 +1,59 @@
1
- import { SchemaPrefix } from "./schema-prefix";
2
-
3
- export type PagePrefixValue = string & { __PAGE_PREFIX__: true };
4
- export const createRandomPrefix = <const P extends string>(length: number): P => {
5
- const letters = "abcdefghijklmnopqrstuvyz";
6
- const all = letters + letters.toUpperCase();
7
- let result = "";
8
- for (let i = 0; i < length; i++) {
9
- const char = all.charAt(Math.floor(Math.random() * all.length));
10
- result += char;
11
- }
12
- return result as P;
13
- };
14
-
15
- export class PagePrefix {
16
- public static readonly MIN_LENGTH = 1;
17
- private static randomLen = 5;
18
- public static readonly MAX_LENGTH = 16;
19
-
20
- public static create = (): PagePrefix => {
21
- const v = createRandomPrefix<PagePrefixValue>(PagePrefix.randomLen);
22
- return new PagePrefix(v);
23
- };
24
- public static fromString = (value: string): PagePrefix | false => {
25
- if (!PagePrefix.isValid(value)) return false;
26
- return new PagePrefix(value);
27
- };
28
-
29
- public static fromStringOrThrow = (value: string): PagePrefixValue => {
30
- if (!PagePrefix.isValid(value)) throw new Error("Invalid prefix");
31
- return value;
32
- };
33
- public static castOrCreateRandom = (value: string): PagePrefix => {
34
- const v = PagePrefix.isValid(value) ? value : createRandomPrefix<PagePrefixValue>(PagePrefix.randomLen);
35
- return new PagePrefix(v);
36
- };
37
-
38
- public static isValid = (prefix: string | 999): prefix is PagePrefixValue => {
39
- if (typeof prefix !== "string") return false;
40
- if (prefix.length < SchemaPrefix.MIN_LENGTH) return false;
41
- if (prefix.length > SchemaPrefix.MAX_LENGTH) return false;
42
- return true;
43
- };
44
-
45
- get value(): PagePrefixValue {
46
- return this._value;
47
- }
48
-
49
- set value(value: string) {
50
- if (!PagePrefix.isValid(value)) {
51
- console.log("INVALID PREFIX", value);
52
- } else {
53
- this._value = value;
54
- }
55
- }
56
-
57
- private constructor(private _value: PagePrefixValue) {}
58
- }
1
+ import { SchemaPrefix } from "./schema-prefix";
2
+
3
+ export type PagePrefixValue = string & { __PAGE_PREFIX__: true };
4
+ export const createRandomPrefix = <const P extends string>(length: number): P => {
5
+ const letters = "abcdefghijklmnopqrstuvyz";
6
+ const all = letters + letters.toUpperCase();
7
+ let result = "";
8
+ for (let i = 0; i < length; i++) {
9
+ const char = all.charAt(Math.floor(Math.random() * all.length));
10
+ result += char;
11
+ }
12
+ return result as P;
13
+ };
14
+
15
+ export class PagePrefix {
16
+ public static readonly MIN_LENGTH = 1;
17
+ private static randomLen = 5;
18
+ public static readonly MAX_LENGTH = 16;
19
+
20
+ public static create = (): PagePrefix => {
21
+ const v = createRandomPrefix<PagePrefixValue>(PagePrefix.randomLen);
22
+ return new PagePrefix(v);
23
+ };
24
+ public static fromString = (value: string): PagePrefix | false => {
25
+ if (!PagePrefix.isValid(value)) return false;
26
+ return new PagePrefix(value);
27
+ };
28
+
29
+ public static fromStringOrThrow = (value: string): PagePrefixValue => {
30
+ if (!PagePrefix.isValid(value)) throw new Error("Invalid prefix");
31
+ return value;
32
+ };
33
+ public static castOrCreateRandom = (value: string): PagePrefix => {
34
+ const v = PagePrefix.isValid(value)
35
+ ? value
36
+ : createRandomPrefix<PagePrefixValue>(PagePrefix.randomLen);
37
+ return new PagePrefix(v);
38
+ };
39
+
40
+ public static isValid = (prefix: string | 999): prefix is PagePrefixValue => {
41
+ if (typeof prefix !== "string") return false;
42
+ if (prefix.length < SchemaPrefix.MIN_LENGTH) return false;
43
+ return prefix.length <= SchemaPrefix.MAX_LENGTH;
44
+ };
45
+
46
+ get value(): PagePrefixValue {
47
+ return this._value;
48
+ }
49
+
50
+ set value(value: string) {
51
+ if (!PagePrefix.isValid(value)) {
52
+ console.log("INVALID PREFIX", value);
53
+ } else {
54
+ this._value = value;
55
+ }
56
+ }
57
+
58
+ private constructor(private _value: PagePrefixValue) {}
59
+ }
@@ -1,11 +1,12 @@
1
- import { PagePrefixValue } from "./page-prefix";
2
-
3
- import { SchemaPrefixValue } from "./schema-prefix";
4
-
5
- export type VarID = `${SchemaPrefixValue}_${PagePrefixValue}`;
6
- export const VarID = {
7
- create: (schemaPrefix: SchemaPrefixValue, pagePrefix: PagePrefixValue): VarID => {
8
- const varId = schemaPrefix + "_" + pagePrefix;
9
- return varId as VarID;
10
- },
11
- };
1
+ import { PagePrefixValue } from "./page-prefix";
2
+
3
+ import { SchemaPrefixValue } from "./schema-prefix";
4
+
5
+ export type VarID = `${SchemaPrefixValue}_${PagePrefixValue}`;
6
+
7
+ export const VarID = {
8
+ create: (schemaPrefix: SchemaPrefixValue, pagePrefix: PagePrefixValue): VarID => {
9
+ const varId = schemaPrefix + "_" + pagePrefix;
10
+ return varId as VarID;
11
+ },
12
+ };
package/src/public-api.ts CHANGED
@@ -19,6 +19,8 @@ export { SchemaPrefix, SchemaPrefixValue } from "./primitives/schema-prefix";
19
19
  export * from "./schema-config";
20
20
  export * from "./codebook";
21
21
  export { VarID } from "./primitives/varID";
22
- export * from "./variable/mq-variable";
22
+ export * from "./primitives/ID";
23
+ export * from "./variable/b-variable";
23
24
  export * from "./builder-compiler";
24
25
  export * from "./variable/sum-score";
26
+ export { SumScoreVariableDto } from "./variable/sum-score-variable";