@iqbspecs/coding-scheme 3.3.0 → 3.4.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.
package/README.md CHANGED
@@ -1,15 +1,107 @@
1
1
  [![License: CC0-1.0](https://img.shields.io/badge/License-CC0_1.0-lightgrey.svg)](http://creativecommons.org/publicdomain/zero/1.0/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
2
  [![npm](https://img.shields.io/npm/v/%40iqbspecs%2Fcoding-scheme)](https://www.npmjs.com/package/@iqbspecs/coding-scheme)
3
3
 
4
- This package contains of the data specification for coding assessment output.
4
+ This package contains the data specification for coding assessment output.
5
5
 
6
- * JSON Schema (see `coding-scheme.schema.json`)
7
- * Schema documentation based on [AsyncAPI Generator](https://github.com/asyncapi/generator)
8
- * type definitions for TypeScript (see npm-link above)
6
+ It provides:
9
7
 
10
- Read more:
8
+ - **JSON Schema**: `coding-scheme.schema.json`
9
+ - **Schema documentation**: generated into `public/` (based on [AsyncAPI Generator](https://github.com/asyncapi/generator))
10
+ - **TypeScript types** for the schema (`CodingSchemeData`, `VariableCodingData`, `CodeData`, ...)
11
+ - A small helper class **`CodingScheme`** for reading/writing versioned scheme JSON
11
12
 
12
- * [All specifications of IQB](https://iqb-specifications.github.io/) (German only)
13
- * [Learn about TBA](https://iqb-berlin.github.io/tba-info/) (German only)
14
- * [Releases with change notes](https://github.com/iqb-specifications/coding-scheme/releases)
13
+ ## Installation
15
14
 
15
+ ```bash
16
+ npm i @iqbspecs/coding-scheme
17
+ ```
18
+
19
+ ## Usage (TypeScript)
20
+
21
+ Import from the package root:
22
+
23
+ ```ts
24
+ import {
25
+ CodingScheme,
26
+ type CodingSchemeData,
27
+ type VariableCodingData,
28
+ CodingSchemeVersionMajor,
29
+ CodingSchemeVersionMinor,
30
+ } from "@iqbspecs/coding-scheme";
31
+ ```
32
+
33
+ ### Parse a scheme and re-serialize it
34
+
35
+ `CodingScheme` accepts either a JSON string or a parsed object.
36
+
37
+ ```ts
38
+ const raw = '{"version":"3.4","variableCodings":[]}';
39
+ const scheme = new CodingScheme(raw);
40
+
41
+ // normalized, versioned JSON string
42
+ const normalized = scheme.toString();
43
+ ```
44
+
45
+ ### Check compatibility of a scheme version
46
+
47
+ ```ts
48
+ const status = CodingScheme.checkVersion({
49
+ version: "3.4",
50
+ variableCodings: [],
51
+ } satisfies CodingSchemeData);
52
+
53
+ // 'OK' | 'MAJOR_LESS' | 'MAJOR_GREATER' | 'MINOR_GREATER'
54
+ ```
55
+
56
+ The current library version constants are:
57
+
58
+ - **`CodingSchemeVersionMajor`**: `3`
59
+ - **`CodingSchemeVersionMinor`**: `3`
60
+
61
+ ### Types
62
+
63
+ The package exports the schema types from `coding-scheme.interface.ts`, including:
64
+
65
+ - **`CodingSchemeData`**: top-level object with `version` and `variableCodings`
66
+ - **`VariableCodingData`**: per-variable coding configuration
67
+ - **`CodeData`**, **`RuleSet`**, **`CodingRule`**: rule-driven coding definitions
68
+
69
+ ## Public API exports
70
+
71
+ In addition to the TypeScript types, the package exports constants and helpers from `coding-scheme.ts`:
72
+
73
+ - **`CodingScheme`**
74
+ - **State constants**:
75
+ - `validStatesForDerivingValue`
76
+ - `validStatesForDerivingCode`
77
+ - `validStatesToStartDeriving`
78
+ - `statesToReplaceByDeriveError`
79
+ - **Rule constants**:
80
+ - `RuleMethodParameterCount`
81
+ - `numericRules`
82
+ - `booleanRules`
83
+ - **Derive constants**:
84
+ - `deriveMethodsFromValue`
85
+ - `DeriveConcatDelimiter`
86
+
87
+ ## Schema validation and documentation generation (repo)
88
+
89
+ This repository includes scripts to validate and generate documentation.
90
+
91
+ - **Validate schema against test cases**:
92
+
93
+ ```bash
94
+ npm run test_schema
95
+ ```
96
+
97
+ - **Generate HTML docs into `public/`**:
98
+
99
+ ```bash
100
+ npm run generate_docs
101
+ ```
102
+
103
+ ## Read more
104
+
105
+ - [All specifications of IQB](https://iqb-specifications.github.io/) (German only)
106
+ - [Learn about TBA](https://iqb-berlin.github.io/tba-info/) (German only)
107
+ - [Releases with change notes](https://github.com/iqb-specifications/coding-scheme/releases)
@@ -0,0 +1,34 @@
1
+ import type { VariableCodingData } from './coding-scheme.interface';
2
+ export declare const validStatesForDerivingValue: string[];
3
+ export declare const validStatesForDerivingCode: string[];
4
+ export declare const validStatesToStartDeriving: string[];
5
+ export declare const statesToReplaceByDeriveError: string[];
6
+ export declare const deriveMethodsFromValue: string[];
7
+ export declare const RuleMethodParameterCount: {
8
+ MATCH: number;
9
+ MATCH_REGEX: number;
10
+ NUMERIC_MATCH: number;
11
+ NUMERIC_RANGE: number;
12
+ NUMERIC_FULL_RANGE: number;
13
+ NUMERIC_LESS_THAN: number;
14
+ NUMERIC_MORE_THAN: number;
15
+ NUMERIC_MAX: number;
16
+ NUMERIC_MIN: number;
17
+ IS_EMPTY: number;
18
+ IS_NULL: number;
19
+ IS_TRUE: number;
20
+ IS_FALSE: number;
21
+ };
22
+ export declare const numericRules: string[];
23
+ export declare const booleanRules: string[];
24
+ export declare const DeriveConcatDelimiter = "_";
25
+ export declare const CodingSchemeVersionMajor = 3;
26
+ export declare const CodingSchemeVersionMinor = 4;
27
+ export declare class CodingScheme {
28
+ variableCodings: VariableCodingData[];
29
+ constructor(givenScheme: any);
30
+ private static getCodeVersionLessThan3;
31
+ private static applyLegacyFixes;
32
+ static checkVersion(givenScheme: any): 'OK' | 'MAJOR_LESS' | 'MAJOR_GREATER' | 'MINOR_GREATER';
33
+ toString(): string;
34
+ }
@@ -1,79 +1,51 @@
1
- export declare const validStatesForDerivingValue: string[];
2
- export declare const validStatesForDerivingCode: string[];
3
- export declare const validStatesToStartDeriving: string[];
4
- export declare const statesToReplaceByDeriveError: string[];
5
- export declare const deriveMethodsFromValue: string[];
6
1
  export type ResponseValueSingleType = null | string | number | boolean;
7
2
  export type ResponseValueType = ResponseValueSingleType | ResponseValueSingleType[];
8
3
  export type TransformedResponseValueType = ResponseValueType | string[][];
9
4
  export type RuleMethod = 'MATCH' | 'MATCH_REGEX' | 'NUMERIC_MATCH' | 'NUMERIC_RANGE' | 'NUMERIC_FULL_RANGE' | 'NUMERIC_LESS_THAN' | 'NUMERIC_MORE_THAN' | 'NUMERIC_MAX' | 'NUMERIC_MIN' | 'IS_EMPTY' | 'IS_NULL' | 'IS_TRUE' | 'IS_FALSE';
10
- export declare const RuleMethodParameterCount: {
11
- MATCH: number;
12
- MATCH_REGEX: number;
13
- NUMERIC_MATCH: number;
14
- NUMERIC_RANGE: number;
15
- NUMERIC_FULL_RANGE: number;
16
- NUMERIC_LESS_THAN: number;
17
- NUMERIC_MORE_THAN: number;
18
- NUMERIC_MAX: number;
19
- NUMERIC_MIN: number;
20
- IS_EMPTY: number;
21
- IS_NULL: number;
22
- IS_TRUE: number;
23
- IS_FALSE: number;
24
- };
25
- export declare const numericRules: string[];
26
- export declare const booleanRules: string[];
27
5
  export type ProcessingParameterType = 'IGNORE_CASE' | 'IGNORE_ALL_SPACES' | 'IGNORE_DISPENSABLE_SPACES' | 'SORT_ARRAY' | 'REPLAY_REQUIRED' | 'ATTACHMENT' | 'CODER_TRAINING_REQUIRED';
28
- export type CodeModelType = 'NONE' | 'RULES_ONLY' | 'MANUAL_ONLY';
6
+ export type CodeModelType = 'MANUAL_AND_RULES' | 'RULES_ONLY' | 'MANUAL_ONLY';
29
7
  export type CodeType = 'UNSET' | 'FULL_CREDIT' | 'PARTIAL_CREDIT' | 'NO_CREDIT' | 'TO_CHECK' | 'RESIDUAL' | 'RESIDUAL_AUTO' | 'INTENDED_INCOMPLETE';
30
8
  export type SourceType = 'BASE' | 'BASE_NO_VALUE' | 'MANUAL' | 'COPY_VALUE' | 'CONCAT_CODE' | 'SUM_CODE' | 'SUM_SCORE' | 'UNIQUE_VALUES' | 'SOLVER';
31
- export type SourceProcessingType = 'TO_LOWER_CASE' | 'TO_NUMBER' | 'REMOVE_ALL_SPACES' | 'REMOVE_DISPENSABLE_SPACES' | 'TAKE_DISPLAYED_AS_VALUE_CHANGED' | 'TAKE_EMPTY_AS_VALID' | 'SORT' | 'NO_CODING' | 'TAKE_NOT_REACHED_AS_VALUE_CHANGED';
32
- export declare const DeriveConcatDelimiter = "_";
33
- export type CodingSchemeProblemType = 'VACANT' | 'SOURCE_MISSING' | 'INVALID_SOURCE' | 'RULE_PARAMETER_COUNT_MISMATCH' | 'MORE_THAN_ONE_SOURCE' | 'ONLY_ONE_SOURCE' | 'VALUE_COPY_NOT_FROM_BASE';
9
+ export type SourceProcessingType = 'TO_LOWER_CASE' | 'TO_NUMBER' | 'REMOVE_ALL_SPACES' | 'REMOVE_DISPENSABLE_SPACES' | 'TAKE_DISPLAYED_AS_VALUE_CHANGED' | 'TAKE_EMPTY_AS_VALID' | 'SORT' | 'TAKE_NOT_REACHED_AS_VALUE_CHANGED';
10
+ export type CodingSchemeProblemType = 'VACANT' | 'SOURCE_MISSING' | 'INVALID_SOURCE' | 'RULE_PARAMETER_COUNT_MISMATCH' | 'RULE_REGEX_INVALID' | 'RULE_PARAMETER_INVALID' | 'RULE_NUMERIC_RANGE_INVALID' | 'RULESET_VALUE_ARRAY_POS_INVALID' | 'MORE_THAN_ONE_SOURCE' | 'ONLY_ONE_SOURCE' | 'VALUE_COPY_NOT_FROM_BASE';
34
11
  export interface CodingRule {
35
12
  method: RuleMethod;
36
13
  parameters?: string[];
37
14
  fragment?: number;
38
15
  }
39
16
  export interface RuleSet {
40
- ruleOperatorAnd: boolean;
41
17
  rules: CodingRule[];
18
+ ruleOperatorAnd?: boolean;
42
19
  valueArrayPos?: number | 'ANY' | 'ANY_OPEN' | 'SUM' | 'LENGTH';
43
20
  }
44
21
  export interface CodeData {
45
22
  id: number | 'INVALID' | 'INTENDED_INCOMPLETE';
46
- type: CodeType;
47
- label: string;
48
- score: number;
49
- ruleSetOperatorAnd: boolean;
50
- ruleSets: RuleSet[];
51
- manualInstruction: string;
23
+ type?: CodeType;
24
+ label?: string;
25
+ score?: number;
26
+ manualInstruction?: string;
27
+ ruleSetOperatorAnd?: boolean;
28
+ ruleSets?: RuleSet[];
29
+ }
30
+ export interface CodingSchemeData {
31
+ version: string;
32
+ variableCodings: VariableCodingData[];
52
33
  }
53
- export declare const CodingSchemeVersionMajor = 3;
54
- export declare const CodingSchemeVersionMinor = 0;
55
34
  export interface VariableSourceParameters {
56
35
  solverExpression?: string;
57
36
  processing?: SourceProcessingType[];
58
37
  }
59
38
  export interface VariableCodingData {
60
39
  id: string;
61
- alias: string;
62
- label: string;
63
40
  sourceType: SourceType;
64
- sourceParameters: VariableSourceParameters;
65
- deriveSources: string[];
66
- processing: ProcessingParameterType[];
41
+ alias?: string;
42
+ label?: string;
43
+ sourceParameters?: VariableSourceParameters;
44
+ deriveSources?: string[];
45
+ processing?: ProcessingParameterType[];
67
46
  fragmenting?: string;
68
- manualInstruction: string;
47
+ manualInstruction?: string;
69
48
  codeModel?: CodeModelType;
70
49
  page?: string;
71
- codes: CodeData[];
72
- }
73
- export declare class CodingScheme {
74
- variableCodings: VariableCodingData[];
75
- constructor(givenScheme: any);
76
- private static getCodeVersionLessThan3;
77
- static checkVersion(givenScheme: any): 'OK' | 'MAJOR_LESS' | 'MAJOR_GREATER' | 'MINOR_GREATER';
78
- toString(): string;
50
+ codes?: CodeData[];
79
51
  }
@@ -1,196 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodingScheme = exports.CodingSchemeVersionMinor = exports.CodingSchemeVersionMajor = exports.DeriveConcatDelimiter = exports.booleanRules = exports.numericRules = exports.RuleMethodParameterCount = exports.deriveMethodsFromValue = exports.statesToReplaceByDeriveError = exports.validStatesToStartDeriving = exports.validStatesForDerivingCode = exports.validStatesForDerivingValue = void 0;
4
- exports.validStatesForDerivingValue = ['VALUE_CHANGED', 'NO_CODING', 'CODING_INCOMPLETE',
5
- 'CODING_ERROR', 'CODING_COMPLETE'];
6
- exports.validStatesForDerivingCode = ['CODING_COMPLETE'];
7
- exports.validStatesToStartDeriving = ['UNSET', 'CODING_ERROR', 'CODING_INCOMPLETE'];
8
- exports.statesToReplaceByDeriveError = ['NO_CODING', 'CODING_INCOMPLETE', 'CODING_ERROR'];
9
- exports.deriveMethodsFromValue = ['SOLVER', 'COPY_VALUE', 'UNIQUE_VALUES'];
10
- exports.RuleMethodParameterCount = {
11
- MATCH: -1,
12
- MATCH_REGEX: -1,
13
- NUMERIC_MATCH: -1,
14
- NUMERIC_RANGE: 2,
15
- NUMERIC_FULL_RANGE: 2,
16
- NUMERIC_LESS_THAN: 1,
17
- NUMERIC_MORE_THAN: 1,
18
- NUMERIC_MAX: 1,
19
- NUMERIC_MIN: 1,
20
- IS_EMPTY: 0,
21
- IS_NULL: 0,
22
- IS_TRUE: 0,
23
- IS_FALSE: 0
24
- };
25
- exports.numericRules = ['NUMERIC_MATCH', 'NUMERIC_LESS_THAN', 'NUMERIC_MAX', 'NUMERIC_MORE_THAN',
26
- 'NUMERIC_MIN', 'NUMERIC_RANGE'];
27
- exports.booleanRules = ['IS_TRUE', 'IS_FALSE'];
28
- exports.DeriveConcatDelimiter = '_';
29
- exports.CodingSchemeVersionMajor = 3;
30
- exports.CodingSchemeVersionMinor = 0;
31
- // todo: not interface but class, so better extract in separate file
32
- class CodingScheme {
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
- constructor(givenScheme) {
35
- this.variableCodings = [];
36
- const transformedScheme = typeof givenScheme === 'string' ? JSON.parse(givenScheme) : givenScheme;
37
- let codingSchemeMajorVersion = 0;
38
- // let codingSchemeMinorVersion = 0;
39
- if (!Array.isArray(transformedScheme) && transformedScheme.version) {
40
- const versionMatches = /^(\d+).(\d+)$/.exec(transformedScheme.version);
41
- if (versionMatches && versionMatches.length > 2) {
42
- codingSchemeMajorVersion = Number.parseInt(versionMatches[1], 10);
43
- // codingSchemeMinorVersion = Number.parseInt(versionMatches[2], 10);
44
- }
45
- }
46
- const givenCodings = Array.isArray(transformedScheme) ?
47
- transformedScheme :
48
- transformedScheme.variableCodings || [];
49
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
- givenCodings.forEach((c) => {
51
- this.variableCodings.map(vc => vc.codes.map(code => {
52
- if (code.id === null)
53
- code.id = 'INVALID';
54
- return code;
55
- }));
56
- if (codingSchemeMajorVersion < 3) {
57
- this.variableCodings.push(CodingScheme.getCodeVersionLessThan3(c));
58
- }
59
- else {
60
- this.variableCodings.push(c);
61
- }
62
- });
63
- }
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
- static getCodeVersionLessThan3(givenCoding) {
66
- let valueProcessing = givenCoding.processing ||
67
- givenCoding.preProcessing ||
68
- givenCoding.valueTransformations ||
69
- [];
70
- if (valueProcessing && valueProcessing.includes('REMOVE_WHITE_SPACES')) {
71
- valueProcessing = valueProcessing.filter(vp => vp !== 'REMOVE_WHITE_SPACES');
72
- valueProcessing.push('IGNORE_ALL_SPACES');
73
- }
74
- const newCoding = {
75
- id: givenCoding.id,
76
- alias: givenCoding.alias || givenCoding.id,
77
- label: givenCoding.label || '',
78
- sourceType: 'BASE',
79
- sourceParameters: {
80
- solverExpression: givenCoding.sourceParameters ?
81
- givenCoding.sourceParameters.solverExpression || '' :
82
- '',
83
- processing: givenCoding.sourceParameters ?
84
- givenCoding.sourceParameters.processing || [] :
85
- []
86
- },
87
- deriveSources: givenCoding.deriveSources || [],
88
- processing: valueProcessing,
89
- fragmenting: givenCoding.fragmenting || '',
90
- manualInstruction: givenCoding.manualInstruction || '',
91
- codeModel: givenCoding.codeModel || 'NONE',
92
- page: givenCoding.page || '0',
93
- codes: []
94
- };
95
- if (givenCoding.sourceType === 'DERIVE_CONCAT') {
96
- if (givenCoding.deriveSourceType === 'VALUE') {
97
- newCoding.sourceType = 'COPY_VALUE';
98
- }
99
- else {
100
- // concat score will be changed to concat code
101
- newCoding.sourceType = 'CONCAT_CODE';
102
- }
103
- }
104
- else if (givenCoding.sourceType === 'DERIVE_SUM') {
105
- if (givenCoding.deriveSourceType === 'VALUE') {
106
- // sum of values is invalid
107
- newCoding.sourceType = 'COPY_VALUE';
108
- }
109
- else if (givenCoding.deriveSourceType === 'CODE') {
110
- newCoding.sourceType = 'SUM_CODE';
111
- }
112
- else {
113
- newCoding.sourceType = 'SUM_SCORE';
114
- }
115
- }
116
- else if (givenCoding.sourceType === 'COPY_FIRST_VALUE') {
117
- newCoding.sourceType = 'COPY_VALUE';
118
- }
119
- else {
120
- newCoding.sourceType = givenCoding.sourceType;
121
- }
122
- if (givenCoding.codeModel !== 'NONE') {
123
- newCoding.codeModel =
124
- givenCoding.codeModel === 'MANUAL' ? 'MANUAL_ONLY' : 'NONE';
125
- }
126
- if (givenCoding.codes && Array.isArray(givenCoding.codes)) {
127
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
128
- givenCoding.codes.forEach((code) => {
129
- if (code.ruleSets) {
130
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
- const elseRule = code.ruleSets.find((rs) => !!rs.rules.find((r) => r.method === 'ELSE'));
132
- if (elseRule) {
133
- newCoding.codes.push({
134
- id: code.id,
135
- type: 'RESIDUAL_AUTO',
136
- label: code.label,
137
- score: 0,
138
- ruleSetOperatorAnd: false,
139
- ruleSets: [],
140
- manualInstruction: code.manualInstruction
141
- });
142
- }
143
- else {
144
- if (!code.type)
145
- code.type = 'UNSET';
146
- newCoding.codes.push(code);
147
- }
148
- }
149
- else if (code.rules && Array.isArray(code.rules)) {
150
- newCoding.codes.push({
151
- id: code.id,
152
- type: 'UNSET',
153
- label: code.label || '',
154
- score: code.score || 0,
155
- ruleSetOperatorAnd: false,
156
- ruleSets: [
157
- {
158
- ruleOperatorAnd: code.ruleOperatorAnd || false,
159
- rules: code.rules
160
- }
161
- ],
162
- manualInstruction: code.manualInstruction || ''
163
- });
164
- }
165
- });
166
- }
167
- return newCoding;
168
- }
169
- static checkVersion(givenScheme) {
170
- const transformedScheme = typeof givenScheme === 'string' ? JSON.parse(givenScheme) : givenScheme;
171
- let localCodingSchemeVersionMajor = 0;
172
- let localCodingSchemeVersionMinor = 0;
173
- if (!Array.isArray(transformedScheme) && transformedScheme.version) {
174
- const versionMatches = /^(\d+).(\d+)$/.exec(transformedScheme.version);
175
- if (versionMatches && versionMatches.length > 2) {
176
- localCodingSchemeVersionMajor = Number.parseInt(versionMatches[1], 10);
177
- localCodingSchemeVersionMinor = Number.parseInt(versionMatches[2], 10);
178
- }
179
- }
180
- if (exports.CodingSchemeVersionMajor < localCodingSchemeVersionMajor)
181
- return 'MAJOR_GREATER';
182
- if (exports.CodingSchemeVersionMajor > localCodingSchemeVersionMajor)
183
- return 'MAJOR_LESS';
184
- if (exports.CodingSchemeVersionMinor > localCodingSchemeVersionMinor)
185
- return 'MINOR_GREATER';
186
- return 'OK';
187
- }
188
- toString() {
189
- return JSON.stringify({
190
- version: `${exports.CodingSchemeVersionMajor}.${exports.CodingSchemeVersionMinor}`,
191
- variables: this.variableCodings
192
- });
193
- }
194
- }
195
- exports.CodingScheme = CodingScheme;
196
3
  //# sourceMappingURL=coding-scheme.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coding-scheme.interface.js","sourceRoot":"","sources":["../coding-scheme.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coding-scheme.interface.js","sourceRoot":"","sources":["../coding-scheme.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,259 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodingScheme = exports.CodingSchemeVersionMinor = exports.CodingSchemeVersionMajor = exports.DeriveConcatDelimiter = exports.booleanRules = exports.numericRules = exports.RuleMethodParameterCount = exports.deriveMethodsFromValue = exports.statesToReplaceByDeriveError = exports.validStatesToStartDeriving = exports.validStatesForDerivingCode = exports.validStatesForDerivingValue = void 0;
4
+ exports.validStatesForDerivingValue = [
5
+ 'VALUE_CHANGED',
6
+ 'NO_CODING',
7
+ 'CODING_INCOMPLETE',
8
+ 'CODING_ERROR',
9
+ 'CODING_COMPLETE'
10
+ ];
11
+ exports.validStatesForDerivingCode = ['CODING_COMPLETE'];
12
+ exports.validStatesToStartDeriving = [
13
+ 'UNSET',
14
+ 'CODING_ERROR',
15
+ 'CODING_INCOMPLETE'
16
+ ];
17
+ exports.statesToReplaceByDeriveError = [
18
+ 'NO_CODING',
19
+ 'CODING_INCOMPLETE',
20
+ 'CODING_ERROR'
21
+ ];
22
+ exports.deriveMethodsFromValue = ['SOLVER', 'COPY_VALUE', 'UNIQUE_VALUES'];
23
+ exports.RuleMethodParameterCount = {
24
+ MATCH: -1,
25
+ MATCH_REGEX: -1,
26
+ NUMERIC_MATCH: -1,
27
+ NUMERIC_RANGE: 2,
28
+ NUMERIC_FULL_RANGE: 2,
29
+ NUMERIC_LESS_THAN: 1,
30
+ NUMERIC_MORE_THAN: 1,
31
+ NUMERIC_MAX: 1,
32
+ NUMERIC_MIN: 1,
33
+ IS_EMPTY: 0,
34
+ IS_NULL: 0,
35
+ IS_TRUE: 0,
36
+ IS_FALSE: 0
37
+ };
38
+ exports.numericRules = [
39
+ 'NUMERIC_MATCH',
40
+ 'NUMERIC_LESS_THAN',
41
+ 'NUMERIC_MAX',
42
+ 'NUMERIC_MORE_THAN',
43
+ 'NUMERIC_MIN',
44
+ 'NUMERIC_RANGE'
45
+ ];
46
+ exports.booleanRules = ['IS_TRUE', 'IS_FALSE'];
47
+ exports.DeriveConcatDelimiter = '_';
48
+ exports.CodingSchemeVersionMajor = 3;
49
+ exports.CodingSchemeVersionMinor = 4;
50
+ class CodingScheme {
51
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
+ constructor(givenScheme) {
53
+ this.variableCodings = [];
54
+ const transformedScheme = typeof givenScheme === 'string' ?
55
+ JSON.parse(givenScheme) :
56
+ givenScheme;
57
+ let codingSchemeMajorVersion = 0;
58
+ // let codingSchemeMinorVersion = 0;
59
+ if (!Array.isArray(transformedScheme) && transformedScheme.version) {
60
+ const versionMatches = /^(\d+)\.(\d+)$/.exec(transformedScheme.version);
61
+ if (versionMatches && versionMatches.length > 2) {
62
+ codingSchemeMajorVersion = Number.parseInt(versionMatches[1], 10);
63
+ // codingSchemeMinorVersion = Number.parseInt(versionMatches[2], 10);
64
+ }
65
+ }
66
+ const givenCodings = Array.isArray(transformedScheme) ?
67
+ transformedScheme :
68
+ transformedScheme.variableCodings || [];
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ givenCodings.forEach((c) => {
71
+ let vc;
72
+ if (codingSchemeMajorVersion < 3) {
73
+ vc = CodingScheme.getCodeVersionLessThan3(c);
74
+ }
75
+ else {
76
+ vc = c;
77
+ }
78
+ CodingScheme.applyLegacyFixes(vc);
79
+ this.variableCodings.push(vc);
80
+ });
81
+ this.variableCodings.forEach(vc => {
82
+ var _a;
83
+ (_a = vc.codes) === null || _a === void 0 ? void 0 : _a.forEach(code => {
84
+ if (code.id === null)
85
+ code.id = 'INVALID';
86
+ });
87
+ });
88
+ }
89
+ static getCodeVersionLessThan3(
90
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
+ givenCoding) {
92
+ const codes = [];
93
+ let valueProcessing = givenCoding.processing ||
94
+ givenCoding.preProcessing ||
95
+ givenCoding.valueTransformations ||
96
+ [];
97
+ if (valueProcessing &&
98
+ valueProcessing.includes('REMOVE_WHITE_SPACES')) {
99
+ valueProcessing = valueProcessing.filter(vp => vp !== 'REMOVE_WHITE_SPACES');
100
+ valueProcessing.push('IGNORE_ALL_SPACES');
101
+ }
102
+ const newCoding = {
103
+ id: givenCoding.id,
104
+ alias: givenCoding.alias || givenCoding.id,
105
+ label: givenCoding.label || '',
106
+ sourceType: 'BASE',
107
+ sourceParameters: {
108
+ solverExpression: givenCoding.sourceParameters ?
109
+ givenCoding.sourceParameters.solverExpression || '' :
110
+ '',
111
+ processing: givenCoding.sourceParameters ?
112
+ givenCoding.sourceParameters.processing || [] :
113
+ []
114
+ },
115
+ deriveSources: givenCoding.deriveSources || [],
116
+ processing: valueProcessing,
117
+ fragmenting: givenCoding.fragmenting || '',
118
+ manualInstruction: givenCoding.manualInstruction || '',
119
+ codeModel: givenCoding.codeModel || 'MANUAL_AND_RULES',
120
+ page: givenCoding.page || '0',
121
+ codes
122
+ };
123
+ if (givenCoding.sourceType === 'DERIVE_CONCAT') {
124
+ if (givenCoding.deriveSourceType === 'VALUE') {
125
+ newCoding.sourceType = 'COPY_VALUE';
126
+ }
127
+ else {
128
+ newCoding.sourceType = 'CONCAT_CODE';
129
+ }
130
+ }
131
+ else if (givenCoding.sourceType === 'DERIVE_SUM') {
132
+ if (givenCoding.deriveSourceType === 'VALUE') {
133
+ newCoding.sourceType = 'COPY_VALUE';
134
+ }
135
+ else if (givenCoding.deriveSourceType === 'CODE') {
136
+ newCoding.sourceType = 'SUM_CODE';
137
+ }
138
+ else {
139
+ newCoding.sourceType = 'SUM_SCORE';
140
+ }
141
+ }
142
+ else if (givenCoding.sourceType === 'COPY_FIRST_VALUE') {
143
+ newCoding.sourceType = 'COPY_VALUE';
144
+ }
145
+ else {
146
+ newCoding.sourceType = givenCoding.sourceType;
147
+ }
148
+ if (givenCoding.codeModel && givenCoding.codeModel !== 'NONE') {
149
+ newCoding.codeModel =
150
+ givenCoding.codeModel === 'MANUAL' ?
151
+ 'MANUAL_ONLY' :
152
+ 'MANUAL_AND_RULES';
153
+ }
154
+ if (givenCoding.codes && Array.isArray(givenCoding.codes)) {
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ givenCoding.codes.forEach((code) => {
157
+ if (code.ruleSets) {
158
+ const elseRule = code.ruleSets.find(
159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
+ (rs) => !!rs.rules.find((r) => r.method === 'ELSE'));
161
+ if (elseRule) {
162
+ codes.push({
163
+ id: code.id,
164
+ type: 'RESIDUAL_AUTO',
165
+ label: code.label,
166
+ score: 0,
167
+ ruleSetOperatorAnd: false,
168
+ ruleSets: [],
169
+ manualInstruction: code.manualInstruction
170
+ });
171
+ }
172
+ else {
173
+ if (!code.type)
174
+ code.type = 'UNSET';
175
+ codes.push(code);
176
+ }
177
+ }
178
+ else if (code.rules && Array.isArray(code.rules)) {
179
+ codes.push({
180
+ id: code.id,
181
+ type: 'UNSET',
182
+ label: code.label || '',
183
+ score: code.score || 0,
184
+ ruleSetOperatorAnd: false,
185
+ ruleSets: [
186
+ {
187
+ ruleOperatorAnd: code.ruleOperatorAnd || false,
188
+ rules: code.rules
189
+ }
190
+ ],
191
+ manualInstruction: code.manualInstruction || ''
192
+ });
193
+ }
194
+ });
195
+ }
196
+ return newCoding;
197
+ }
198
+ static applyLegacyFixes(vc) {
199
+ var _a, _b, _c;
200
+ if (vc.codeModel === 'NONE') {
201
+ const hasRules = (_a = vc.codes) === null || _a === void 0 ? void 0 : _a.some(c => (c.ruleSets && c.ruleSets.length > 0));
202
+ const hasManualInstruction = !!vc.manualInstruction || ((_b = vc.codes) === null || _b === void 0 ? void 0 : _b.some(c => !!c.manualInstruction));
203
+ if (vc.sourceType === 'MANUAL') {
204
+ vc.codeModel = 'MANUAL_ONLY';
205
+ }
206
+ else if (hasRules && hasManualInstruction) {
207
+ vc.codeModel = 'MANUAL_AND_RULES';
208
+ }
209
+ else if (hasRules) {
210
+ vc.codeModel = 'RULES_ONLY';
211
+ }
212
+ else if (hasManualInstruction) {
213
+ vc.codeModel = 'MANUAL_ONLY';
214
+ }
215
+ else {
216
+ vc.codeModel = 'RULES_ONLY';
217
+ }
218
+ }
219
+ (_c = vc.codes) === null || _c === void 0 ? void 0 : _c.forEach(c => {
220
+ if (c.ruleSets && Array.isArray(c.ruleSets)) {
221
+ c.ruleSets.forEach(rs => {
222
+ if (rs.valueArrayPos === -1)
223
+ rs.valueArrayPos = 'ANY';
224
+ });
225
+ }
226
+ });
227
+ }
228
+ static checkVersion(
229
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
230
+ givenScheme) {
231
+ const transformedScheme = typeof givenScheme === 'string' ?
232
+ JSON.parse(givenScheme) :
233
+ givenScheme;
234
+ let localCodingSchemeVersionMajor = 0;
235
+ let localCodingSchemeVersionMinor = 0;
236
+ if (!Array.isArray(transformedScheme) && transformedScheme.version) {
237
+ const versionMatches = /^(\d+)\.(\d+)$/.exec(transformedScheme.version);
238
+ if (versionMatches && versionMatches.length > 2) {
239
+ localCodingSchemeVersionMajor = Number.parseInt(versionMatches[1], 10);
240
+ localCodingSchemeVersionMinor = Number.parseInt(versionMatches[2], 10);
241
+ }
242
+ }
243
+ if (exports.CodingSchemeVersionMajor < localCodingSchemeVersionMajor)
244
+ return 'MAJOR_GREATER';
245
+ if (exports.CodingSchemeVersionMajor > localCodingSchemeVersionMajor)
246
+ return 'MAJOR_LESS';
247
+ if (exports.CodingSchemeVersionMinor < localCodingSchemeVersionMinor)
248
+ return 'MINOR_GREATER';
249
+ return 'OK';
250
+ }
251
+ toString() {
252
+ return JSON.stringify({
253
+ version: `${exports.CodingSchemeVersionMajor}.${exports.CodingSchemeVersionMinor}`,
254
+ variableCodings: this.variableCodings
255
+ });
256
+ }
257
+ }
258
+ exports.CodingScheme = CodingScheme;
259
+ //# sourceMappingURL=coding-scheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-scheme.js","sourceRoot":"","sources":["../coding-scheme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ {
2
+ "$id": "coding-scheme@iqb-standard@3.4",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Coding Scheme",
5
+ "description": "Data structure to specify all processing steps of response data in order to get coded and scored data for analyses.",
6
+ "type": "object",
7
+ "properties": {
8
+ "version": {
9
+ "type": "string",
10
+ "description": "Major and minor of the version of the data structure.",
11
+ "pattern": "^\\d+\\.\\d+$",
12
+ "examples": ["3.5", "4.10"]
13
+ },
14
+ "variableCodings": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "object",
18
+ "properties": {
19
+ "id": {
20
+ "type": "string",
21
+ "description": "Identifier for the variable. In case of a scheme for a base variable, this id is identical with the source variable's id. All ids of a response scheme should be unique.",
22
+ "pattern": "^[0-9a-zA-Z_-]+$"
23
+ },
24
+ "alias": {
25
+ "type": "string",
26
+ "description": "Alternative identifier for the variable. In case of a scheme for a base variable, this id is identical with the source variable's alternative id. All alternative ids of a response scheme should be unique.",
27
+ "pattern": "^[0-9a-zA-Z_-]+$"
28
+ },
29
+ "label": {
30
+ "type": "string",
31
+ "description": "Some additional info for UI"
32
+ },
33
+ "sourceType": {
34
+ "type": "string",
35
+ "description": "Specifies how to derive (concatenate, check uniqueness, sum code etc.).",
36
+ "enum": [
37
+ "BASE",
38
+ "BASE_NO_VALUE",
39
+ "MANUAL",
40
+ "COPY_VALUE",
41
+ "CONCAT_CODE",
42
+ "SUM_CODE",
43
+ "SUM_SCORE",
44
+ "UNIQUE_VALUES",
45
+ "SOLVER"
46
+ ]
47
+ },
48
+ "sourceParameters": {
49
+ "type": "object",
50
+ "description": "Parameters to specify the derive method",
51
+ "properties": {
52
+ "solverExpression": {
53
+ "type": "string",
54
+ "description": "If sourceType 'solver', this expression is evaluated when deriving. Placeholder for variables are in curly brakes.",
55
+ "examples": [
56
+ "${01}*${03}-100"
57
+ ]
58
+ },
59
+ "processing": {
60
+ "type": "array",
61
+ "description": "Some options to change value or status",
62
+ "items": {
63
+ "type": "string",
64
+ "enum": [
65
+ "TO_LOWER_CASE",
66
+ "TO_NUMBER",
67
+ "REMOVE_ALL_SPACES",
68
+ "REMOVE_DISPENSABLE_SPACES",
69
+ "TAKE_DISPLAYED_AS_VALUE_CHANGED",
70
+ "TAKE_NOT_REACHED_AS_VALUE_CHANGED",
71
+ "TAKE_EMPTY_AS_VALID",
72
+ "SORT"
73
+ ]
74
+ }
75
+ }
76
+ },
77
+ "additionalProperties": false
78
+ },
79
+ "deriveSources": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string",
83
+ "pattern": "^[0-9a-zA-Z_-]+$"
84
+ }
85
+ },
86
+ "processing": {
87
+ "type": "array",
88
+ "description": "This parameter defines what (pre)processing should be done.",
89
+ "items": {
90
+ "type": "string",
91
+ "enum": [
92
+ "IGNORE_CASE",
93
+ "IGNORE_ALL_SPACES",
94
+ "IGNORE_DISPENSABLE_SPACES",
95
+ "SORT_ARRAY",
96
+ "REPLAY_REQUIRED",
97
+ "CODER_TRAINING_REQUIRED",
98
+ "ATTACHMENT"
99
+ ]
100
+ }
101
+ },
102
+ "fragmenting": {
103
+ "type": "string",
104
+ "description": "Regular expression to get fragments out of the value if of type string"
105
+ },
106
+ "manualInstruction": {
107
+ "type": "string",
108
+ "description": "Instructions for manual coding."
109
+ },
110
+ "codeModel": {
111
+ "type": "string",
112
+ "enum": [
113
+ "MANUAL_AND_RULES",
114
+ "RULES_ONLY",
115
+ "MANUAL_ONLY"
116
+ ],
117
+ "description": "Info for applications to simplify UI"
118
+ },
119
+ "page": {
120
+ "type": "string",
121
+ "description": "If the unit supports paging, this property defines the page to be presented to the coder if manually coded."
122
+ },
123
+ "codes": {
124
+ "type": "array",
125
+ "items": {
126
+ "type": "object",
127
+ "properties": {
128
+ "id": {
129
+ "oneOf": [
130
+ {
131
+ "type": "integer"
132
+ },
133
+ {
134
+ "type": "string",
135
+ "enum": [
136
+ "INVALID",
137
+ "INTENDED_INCOMPLETE"
138
+ ]
139
+ }
140
+ ],
141
+ "description": "If this code's rules/instructions match, the code and score is taken for the response. If the code id is of type 'string', the status 'INVALID' or 'INTENDED_INCOMPLETE' will be set."
142
+ },
143
+ "type": {
144
+ "type": "string",
145
+ "enum": [
146
+ "UNSET",
147
+ "FULL_CREDIT",
148
+ "PARTIAL_CREDIT",
149
+ "TO_CHECK",
150
+ "NO_CREDIT",
151
+ "RESIDUAL",
152
+ "RESIDUAL_AUTO",
153
+ "INTENDED_INCOMPLETE"
154
+ ],
155
+ "description": "To ease some processing and documentation"
156
+ },
157
+ "label": {
158
+ "type": "string"
159
+ },
160
+ "score": {
161
+ "type": "integer"
162
+ },
163
+ "manualInstruction": {
164
+ "type": "string",
165
+ "description": "Instructions for manual coding."
166
+ },
167
+ "ruleSetOperatorAnd": {
168
+ "type": "boolean",
169
+ "description": "If true, all rule sets must match to take that code. Otherwise (default: false), one matching rule set will satisfy."
170
+ },
171
+ "ruleSets": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "object",
175
+ "properties": {
176
+ "valueArrayPos": {
177
+ "anyOf": [
178
+ {
179
+ "type": "integer",
180
+ "description": "Refers to a specific position in the value array [0..n-1]."
181
+ },
182
+ {
183
+ "type": "string",
184
+ "description": "Refers to any position in the value array, to the sum of all array values or the length of the value array.",
185
+ "enum": [
186
+ "ANY",
187
+ "ANY_OPEN",
188
+ "SUM",
189
+ "LENGTH"
190
+ ]
191
+ }
192
+ ]
193
+ },
194
+ "ruleOperatorAnd": {
195
+ "type": "boolean",
196
+ "description": "If true, all rules must match to take that code. Otherwise (default: false), one matching rule will satisfy."
197
+ },
198
+ "rules": {
199
+ "type": "array",
200
+ "items": {
201
+ "type": "object",
202
+ "properties": {
203
+ "fragment": {
204
+ "type": "integer",
205
+ "description": "Refers to a specific fragment of the value [0..n-1] or to any -1."
206
+ },
207
+ "method": {
208
+ "type": "string",
209
+ "description": "Condition for evaluation",
210
+ "enum": [
211
+ "MATCH",
212
+ "MATCH_REGEX",
213
+ "NUMERIC_MATCH",
214
+ "NUMERIC_FULL_RANGE",
215
+ "NUMERIC_RANGE",
216
+ "NUMERIC_LESS_THAN",
217
+ "NUMERIC_MORE_THAN",
218
+ "NUMERIC_MAX",
219
+ "NUMERIC_MIN",
220
+ "IS_EMPTY",
221
+ "IS_NULL",
222
+ "IS_TRUE",
223
+ "IS_FALSE"
224
+ ]
225
+ },
226
+ "parameters": {
227
+ "type": "array",
228
+ "description": "Depending on the method, additional parameter(s) is needed. See separate documentation",
229
+ "items": {
230
+ "type": "string"
231
+ }
232
+ }
233
+ },
234
+ "additionalProperties": false,
235
+ "required": [
236
+ "method"
237
+ ]
238
+ }
239
+ }
240
+ },
241
+ "additionalProperties": false,
242
+ "required": [
243
+ "rules"
244
+ ]
245
+ }
246
+ }
247
+ },
248
+ "additionalProperties": false,
249
+ "required": [
250
+ "id"
251
+ ]
252
+ }
253
+ }
254
+ },
255
+ "additionalProperties": false,
256
+ "required": [
257
+ "id",
258
+ "sourceType"
259
+ ]
260
+ }
261
+ }
262
+ },
263
+ "additionalProperties": false,
264
+ "required": [
265
+ "version",
266
+ "variableCodings"
267
+ ]
268
+ }
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export type { ResponseValueSingleType, ResponseValueType, TransformedResponseValueType, RuleMethod, ProcessingParameterType, CodeModelType, CodeType, SourceType, SourceProcessingType, CodingSchemeProblemType, CodingRule, RuleSet, CodeData, CodingSchemeData, VariableSourceParameters, VariableCodingData } from './coding-scheme.interface';
2
+ export { validStatesForDerivingValue, validStatesForDerivingCode, validStatesToStartDeriving, statesToReplaceByDeriveError, deriveMethodsFromValue, RuleMethodParameterCount, numericRules, booleanRules, DeriveConcatDelimiter, CodingSchemeVersionMajor, CodingSchemeVersionMinor, CodingScheme } from './coding-scheme';
package/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodingScheme = exports.CodingSchemeVersionMinor = exports.CodingSchemeVersionMajor = exports.DeriveConcatDelimiter = exports.booleanRules = exports.numericRules = exports.RuleMethodParameterCount = exports.deriveMethodsFromValue = exports.statesToReplaceByDeriveError = exports.validStatesToStartDeriving = exports.validStatesForDerivingCode = exports.validStatesForDerivingValue = void 0;
4
+ var coding_scheme_1 = require("./coding-scheme");
5
+ Object.defineProperty(exports, "validStatesForDerivingValue", { enumerable: true, get: function () { return coding_scheme_1.validStatesForDerivingValue; } });
6
+ Object.defineProperty(exports, "validStatesForDerivingCode", { enumerable: true, get: function () { return coding_scheme_1.validStatesForDerivingCode; } });
7
+ Object.defineProperty(exports, "validStatesToStartDeriving", { enumerable: true, get: function () { return coding_scheme_1.validStatesToStartDeriving; } });
8
+ Object.defineProperty(exports, "statesToReplaceByDeriveError", { enumerable: true, get: function () { return coding_scheme_1.statesToReplaceByDeriveError; } });
9
+ Object.defineProperty(exports, "deriveMethodsFromValue", { enumerable: true, get: function () { return coding_scheme_1.deriveMethodsFromValue; } });
10
+ Object.defineProperty(exports, "RuleMethodParameterCount", { enumerable: true, get: function () { return coding_scheme_1.RuleMethodParameterCount; } });
11
+ Object.defineProperty(exports, "numericRules", { enumerable: true, get: function () { return coding_scheme_1.numericRules; } });
12
+ Object.defineProperty(exports, "booleanRules", { enumerable: true, get: function () { return coding_scheme_1.booleanRules; } });
13
+ Object.defineProperty(exports, "DeriveConcatDelimiter", { enumerable: true, get: function () { return coding_scheme_1.DeriveConcatDelimiter; } });
14
+ Object.defineProperty(exports, "CodingSchemeVersionMajor", { enumerable: true, get: function () { return coding_scheme_1.CodingSchemeVersionMajor; } });
15
+ Object.defineProperty(exports, "CodingSchemeVersionMinor", { enumerable: true, get: function () { return coding_scheme_1.CodingSchemeVersionMinor; } });
16
+ Object.defineProperty(exports, "CodingScheme", { enumerable: true, get: function () { return coding_scheme_1.CodingScheme; } });
17
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAmBA,iDAayB;AAZvB,4HAAA,2BAA2B,OAAA;AAC3B,2HAAA,0BAA0B,OAAA;AAC1B,2HAAA,0BAA0B,OAAA;AAC1B,6HAAA,4BAA4B,OAAA;AAC5B,uHAAA,sBAAsB,OAAA;AACtB,yHAAA,wBAAwB,OAAA;AACxB,6GAAA,YAAY,OAAA;AACZ,6GAAA,YAAY,OAAA;AACZ,sHAAA,qBAAqB,OAAA;AACrB,yHAAA,wBAAwB,OAAA;AACxB,yHAAA,wBAAwB,OAAA;AACxB,6GAAA,YAAY,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqbspecs/coding-scheme",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "author": "IQB - Institut zur Qualitätsentwicklung im Bildungswesen",
5
5
  "license": "CC0 1.0",
6
6
  "description": "Data interface: coding-scheme",