@case-framework/survey-core 0.4.0 → 0.4.2
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 +31 -34
- package/build/editor.d.mts +34 -90
- package/build/editor.d.mts.map +1 -1
- package/build/editor.mjs +93 -312
- package/build/editor.mjs.map +1 -1
- package/build/index.d.mts +41 -11
- package/build/index.d.mts.map +1 -1
- package/build/index.mjs +176 -2
- package/build/index.mjs.map +1 -1
- package/build/package.json +26 -26
- package/build/{survey-DShEOjyz.d.mts → survey-DZ3RHkd2.d.mts} +38 -29
- package/build/survey-DZ3RHkd2.d.mts.map +1 -0
- package/build/{survey-yXdl8xkf.mjs → survey-Dxt6iolo.mjs} +24 -2
- package/build/survey-Dxt6iolo.mjs.map +1 -0
- package/package.json +21 -21
- package/build/survey-DShEOjyz.d.mts.map +0 -1
- package/build/survey-yXdl8xkf.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -52,15 +52,18 @@ import {
|
|
|
52
52
|
ValueRefTypeLookup,
|
|
53
53
|
ValueType,
|
|
54
54
|
ItemTypeRegistry,
|
|
55
|
-
} from
|
|
55
|
+
} from "@case-framework/survey-core";
|
|
56
56
|
|
|
57
57
|
type SingleChoiceConfig = {
|
|
58
58
|
id: string;
|
|
59
59
|
options: Array<{ id: string; key: string; type: string }>;
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
class SingleChoiceQuestionItemCore extends SurveyItemCore<
|
|
63
|
-
|
|
62
|
+
class SingleChoiceQuestionItemCore extends SurveyItemCore<
|
|
63
|
+
"singleChoiceQuestion",
|
|
64
|
+
SingleChoiceConfig
|
|
65
|
+
> {
|
|
66
|
+
readonly type = "singleChoiceQuestion";
|
|
64
67
|
|
|
65
68
|
parseConfig(rawConfig: unknown): SingleChoiceConfig {
|
|
66
69
|
const cfg = (rawConfig ?? {}) as Partial<SingleChoiceConfig>;
|
|
@@ -96,45 +99,42 @@ import {
|
|
|
96
99
|
ResponseItem,
|
|
97
100
|
ValueType,
|
|
98
101
|
ReservedSurveyItemTypes,
|
|
99
|
-
} from
|
|
102
|
+
} from "@case-framework/survey-core";
|
|
100
103
|
|
|
101
104
|
const survey = Survey.fromJson(
|
|
102
105
|
{
|
|
103
106
|
$schema:
|
|
104
|
-
|
|
107
|
+
"https://github.com/case-framework/case-survey-toolkit/packages/survey-core/schemas/survey-schema.json",
|
|
105
108
|
surveyItems: [
|
|
106
109
|
{
|
|
107
|
-
id:
|
|
108
|
-
key:
|
|
110
|
+
id: "root",
|
|
111
|
+
key: "root",
|
|
109
112
|
itemType: ReservedSurveyItemTypes.Group,
|
|
110
|
-
config: { isRoot: true, items: [
|
|
113
|
+
config: { isRoot: true, items: ["q1"] },
|
|
111
114
|
},
|
|
112
115
|
{
|
|
113
|
-
id:
|
|
114
|
-
key:
|
|
115
|
-
itemType:
|
|
116
|
+
id: "q1",
|
|
117
|
+
key: "q1",
|
|
118
|
+
itemType: "singleChoiceQuestion",
|
|
116
119
|
config: {
|
|
117
|
-
id:
|
|
120
|
+
id: "q1",
|
|
118
121
|
options: [
|
|
119
|
-
{ id:
|
|
120
|
-
{ id:
|
|
122
|
+
{ id: "yes", key: "yes", type: "option" },
|
|
123
|
+
{ id: "no", key: "no", type: "option" },
|
|
121
124
|
],
|
|
122
125
|
},
|
|
123
126
|
},
|
|
124
127
|
],
|
|
125
128
|
},
|
|
126
|
-
pluginRegistry
|
|
129
|
+
pluginRegistry,
|
|
127
130
|
);
|
|
128
131
|
|
|
129
|
-
const engine = new SurveyEngineCore(survey, { locale:
|
|
132
|
+
const engine = new SurveyEngineCore(survey, { locale: "en" });
|
|
130
133
|
|
|
131
134
|
// Set one item response (slot id == config.id in this example).
|
|
132
|
-
engine.setResponse(
|
|
133
|
-
'q1',
|
|
134
|
-
new ResponseItem([['q1', { type: ValueType.reference, value: 'yes' }]])
|
|
135
|
-
);
|
|
135
|
+
engine.setResponse("q1", new ResponseItem([["q1", { type: ValueType.reference, value: "yes" }]]));
|
|
136
136
|
|
|
137
|
-
const pages = engine.getSurveyPages(
|
|
137
|
+
const pages = engine.getSurveyPages("large");
|
|
138
138
|
const responses = engine.getResponses();
|
|
139
139
|
const events = engine.getEvents();
|
|
140
140
|
```
|
|
@@ -142,19 +142,16 @@ const events = engine.getEvents();
|
|
|
142
142
|
### 3. Export responses to CSV
|
|
143
143
|
|
|
144
144
|
```ts
|
|
145
|
-
import {
|
|
146
|
-
SurveyResponse,
|
|
147
|
-
SurveyResponseExporter,
|
|
148
|
-
} from '@case-framework/survey-core';
|
|
145
|
+
import { SurveyResponse, SurveyResponseExporter } from "@case-framework/survey-core";
|
|
149
146
|
|
|
150
|
-
const response = new SurveyResponse(
|
|
147
|
+
const response = new SurveyResponse("response-1", "v1");
|
|
151
148
|
response.responses = new Map(responses.map((r) => [r.itemId, r]));
|
|
152
149
|
response.submittedAt = Math.floor(Date.now() / 1000);
|
|
153
150
|
|
|
154
151
|
const exporter = new SurveyResponseExporter([
|
|
155
152
|
{
|
|
156
|
-
versionId:
|
|
157
|
-
surveyKey: survey.surveyKey ??
|
|
153
|
+
versionId: "v1",
|
|
154
|
+
surveyKey: survey.surveyKey ?? "survey",
|
|
158
155
|
survey,
|
|
159
156
|
},
|
|
160
157
|
]);
|
|
@@ -165,17 +162,17 @@ const csv = exporter.exportResponsesToCsv([response]);
|
|
|
165
162
|
### 4. Edit surveys with the editor entrypoint
|
|
166
163
|
|
|
167
164
|
```ts
|
|
168
|
-
import { SurveyEditor, CommitSource } from
|
|
165
|
+
import { SurveyEditor, CommitSource } from "@case-framework/survey-core/editor";
|
|
169
166
|
|
|
170
167
|
const editor = new SurveyEditor(survey, { pluginRegistry });
|
|
171
168
|
|
|
172
169
|
const newItem = survey.createItemFromRaw({
|
|
173
|
-
id:
|
|
174
|
-
key:
|
|
175
|
-
itemType:
|
|
176
|
-
config: { id:
|
|
170
|
+
id: "q2",
|
|
171
|
+
key: "q2",
|
|
172
|
+
itemType: "singleChoiceQuestion",
|
|
173
|
+
config: { id: "q2", options: [] },
|
|
177
174
|
});
|
|
178
175
|
|
|
179
176
|
editor.addItem({ parentId: survey.rootItem!.id }, newItem);
|
|
180
|
-
editor.commit({ label:
|
|
177
|
+
editor.commit({ label: "Add q2", source: CommitSource.USER });
|
|
181
178
|
```
|
package/build/editor.d.mts
CHANGED
|
@@ -1,83 +1,5 @@
|
|
|
1
|
-
import { D as SurveyCardContent, E as NavigationContent, Gt as SurveyItemCore, Jt as RawSurveyItem, M as Content, S as RawSurveyAsset, k as SurveyItemTranslations, m as ItemTypeRegistry, t as Survey, vt as TemplateValueDefinition, w as JsonComponentContent, x as RawSurvey } from "./survey-
|
|
1
|
+
import { D as SurveyCardContent, E as NavigationContent, Gt as SurveyItemCore, Jt as RawSurveyItem, M as Content, S as RawSurveyAsset, k as SurveyItemTranslations, m as ItemTypeRegistry, t as Survey, vt as TemplateValueDefinition, w as JsonComponentContent, x as RawSurvey } from "./survey-DZ3RHkd2.mjs";
|
|
2
2
|
|
|
3
|
-
//#region src/editor/ai-context.d.ts
|
|
4
|
-
type SurveyAIContextScope = "tiny" | "focused" | "full";
|
|
5
|
-
type SurveyAIContextPurpose = "generic" | "key-suggestion" | "label-suggestion" | "item-generation" | "translation" | "condition-management";
|
|
6
|
-
interface SurveyAIOutlineNode {
|
|
7
|
-
itemId: string;
|
|
8
|
-
parentId?: string;
|
|
9
|
-
depth: number;
|
|
10
|
-
itemType: string;
|
|
11
|
-
key: string;
|
|
12
|
-
fullKey: string;
|
|
13
|
-
itemLabel?: string;
|
|
14
|
-
childCount: number;
|
|
15
|
-
}
|
|
16
|
-
interface SurveyAIFocus {
|
|
17
|
-
focusItemId: string;
|
|
18
|
-
parentItemId?: string;
|
|
19
|
-
pathItemIds: string[];
|
|
20
|
-
siblingItemIds: string[];
|
|
21
|
-
childItemIds: string[];
|
|
22
|
-
}
|
|
23
|
-
interface SurveyAITranslationSnippet {
|
|
24
|
-
locale: string;
|
|
25
|
-
contentKey: string;
|
|
26
|
-
text: string;
|
|
27
|
-
}
|
|
28
|
-
interface SurveyAIItemContextNode {
|
|
29
|
-
itemId: string;
|
|
30
|
-
itemType: string;
|
|
31
|
-
itemKey: string;
|
|
32
|
-
fullKey: string;
|
|
33
|
-
itemLabel?: string;
|
|
34
|
-
siblingKeys: string[];
|
|
35
|
-
translations: SurveyAITranslationSnippet[];
|
|
36
|
-
descendants: SurveyAIItemContextNode[];
|
|
37
|
-
}
|
|
38
|
-
interface SurveyAIKeyIndexEntry {
|
|
39
|
-
itemId: string;
|
|
40
|
-
itemType: string;
|
|
41
|
-
key: string;
|
|
42
|
-
fullKey: string;
|
|
43
|
-
itemLabel?: string;
|
|
44
|
-
path: string[];
|
|
45
|
-
}
|
|
46
|
-
interface SurveyAIContextIndexes {
|
|
47
|
-
keyIndex: SurveyAIKeyIndexEntry[];
|
|
48
|
-
responseSlots?: string[];
|
|
49
|
-
}
|
|
50
|
-
interface SurveyAIContextPack {
|
|
51
|
-
purpose: SurveyAIContextPurpose;
|
|
52
|
-
scope: SurveyAIContextScope;
|
|
53
|
-
surveyKey?: string;
|
|
54
|
-
locales: string[];
|
|
55
|
-
itemCount: number;
|
|
56
|
-
outline: SurveyAIOutlineNode[];
|
|
57
|
-
focus?: SurveyAIFocus;
|
|
58
|
-
focusItem?: SurveyAIItemContextNode;
|
|
59
|
-
indexes?: SurveyAIContextIndexes;
|
|
60
|
-
flags: {
|
|
61
|
-
outlineTruncated: boolean;
|
|
62
|
-
rawSurveyIncluded: boolean;
|
|
63
|
-
focusItemTreeTruncated: boolean;
|
|
64
|
-
};
|
|
65
|
-
rawSurvey?: RawSurvey;
|
|
66
|
-
}
|
|
67
|
-
interface BuildSurveyAIContextPackOptions {
|
|
68
|
-
purpose?: SurveyAIContextPurpose;
|
|
69
|
-
scope?: SurveyAIContextScope;
|
|
70
|
-
focusItemId?: string;
|
|
71
|
-
includeRawSurvey?: boolean;
|
|
72
|
-
outlineLimit?: number;
|
|
73
|
-
includeIndexes?: boolean;
|
|
74
|
-
includeFocusItemTree?: boolean;
|
|
75
|
-
focusItemTreeLimit?: number;
|
|
76
|
-
translationSnippetsPerItemLimit?: number;
|
|
77
|
-
translationSnippetTextLimit?: number;
|
|
78
|
-
}
|
|
79
|
-
declare function buildSurveyAIContextPack(survey: Survey, options?: BuildSurveyAIContextPackOptions): SurveyAIContextPack;
|
|
80
|
-
//#endregion
|
|
81
3
|
//#region src/editor/types.d.ts
|
|
82
4
|
interface Target {
|
|
83
5
|
parentId: string;
|
|
@@ -89,7 +11,7 @@ type SerializedTranslations = {
|
|
|
89
11
|
[locale: string]: JsonComponentContent;
|
|
90
12
|
};
|
|
91
13
|
interface SurveyItemClipboardData {
|
|
92
|
-
type:
|
|
14
|
+
type: "survey-item";
|
|
93
15
|
version: string;
|
|
94
16
|
items: Array<{
|
|
95
17
|
itemId: string;
|
|
@@ -145,12 +67,12 @@ declare class ItemCopyPaste {
|
|
|
145
67
|
*/
|
|
146
68
|
private updateExpressionReferences;
|
|
147
69
|
/**
|
|
148
|
-
|
|
149
|
-
|
|
70
|
+
* Update translation keys for the pasted item
|
|
71
|
+
*/
|
|
150
72
|
private updateTranslations;
|
|
151
73
|
/**
|
|
152
|
-
|
|
153
|
-
|
|
74
|
+
* Validate clipboard data format
|
|
75
|
+
*/
|
|
154
76
|
static isValidClipboardData(data: unknown): data is SurveyItemClipboardData;
|
|
155
77
|
}
|
|
156
78
|
//#endregion
|
|
@@ -163,8 +85,9 @@ interface UndoRedoConfig {
|
|
|
163
85
|
declare const CommitSource: {
|
|
164
86
|
readonly USER: "user";
|
|
165
87
|
readonly SYSTEM: "system";
|
|
88
|
+
readonly ASSISTANT: "assistant";
|
|
166
89
|
};
|
|
167
|
-
type CommitSource = typeof CommitSource[keyof typeof CommitSource];
|
|
90
|
+
type CommitSource = (typeof CommitSource)[keyof typeof CommitSource];
|
|
168
91
|
interface CommitMeta {
|
|
169
92
|
label: string;
|
|
170
93
|
source?: CommitSource;
|
|
@@ -180,14 +103,22 @@ interface BaseHistoryEntry {
|
|
|
180
103
|
memorySize: number;
|
|
181
104
|
}
|
|
182
105
|
interface SurveySnapshotHistoryEntry extends BaseHistoryEntry {
|
|
183
|
-
kind:
|
|
106
|
+
kind: "survey-snapshot";
|
|
184
107
|
survey: RawSurvey;
|
|
185
108
|
}
|
|
186
109
|
interface AssetChangeHistoryEntry extends BaseHistoryEntry {
|
|
187
|
-
kind:
|
|
110
|
+
kind: "asset-change";
|
|
188
111
|
changes: AssetPatch[];
|
|
189
112
|
}
|
|
190
113
|
type HistoryEntry = SurveySnapshotHistoryEntry | AssetChangeHistoryEntry;
|
|
114
|
+
interface SurveyEditorHistoryCommit {
|
|
115
|
+
index: number;
|
|
116
|
+
kind: HistoryEntry["kind"];
|
|
117
|
+
meta: CommitMeta;
|
|
118
|
+
timestamp: number;
|
|
119
|
+
memorySize: number;
|
|
120
|
+
isCurrent: boolean;
|
|
121
|
+
}
|
|
191
122
|
type SerializedHistoryEntry = SurveySnapshotHistoryEntry | AssetChangeHistoryEntry | (BaseHistoryEntry & {
|
|
192
123
|
survey: RawSurvey;
|
|
193
124
|
});
|
|
@@ -226,12 +157,19 @@ declare class SurveyEditorUndoRedo {
|
|
|
226
157
|
*/
|
|
227
158
|
getHistory(): Array<{
|
|
228
159
|
index: number;
|
|
229
|
-
kind: HistoryEntry[
|
|
160
|
+
kind: HistoryEntry["kind"];
|
|
230
161
|
meta: CommitMeta;
|
|
231
162
|
timestamp: number;
|
|
232
163
|
memorySize: number;
|
|
233
164
|
isCurrent: boolean;
|
|
234
165
|
}>;
|
|
166
|
+
/**
|
|
167
|
+
* Get committed history entries after the initial state up to the current index.
|
|
168
|
+
*
|
|
169
|
+
* Redo-only future entries are intentionally omitted so the returned list describes the active
|
|
170
|
+
* change chain from the initial state to the current editor state.
|
|
171
|
+
*/
|
|
172
|
+
getCommitsSinceInitial(): SurveyEditorHistoryCommit[];
|
|
235
173
|
/**
|
|
236
174
|
* Get the current index in the history
|
|
237
175
|
*/
|
|
@@ -277,7 +215,7 @@ declare class SurveyEditorUndoRedo {
|
|
|
277
215
|
interface SerializedSurveyEditor {
|
|
278
216
|
version: string;
|
|
279
217
|
survey: RawSurvey;
|
|
280
|
-
undoRedo: ReturnType<SurveyEditorUndoRedo[
|
|
218
|
+
undoRedo: ReturnType<SurveyEditorUndoRedo["serialize"]>;
|
|
281
219
|
hasUncommittedChanges: boolean;
|
|
282
220
|
}
|
|
283
221
|
interface SurveyEditorConfig extends Partial<UndoRedoConfig> {
|
|
@@ -312,6 +250,10 @@ declare class SurveyEditor {
|
|
|
312
250
|
entries: number;
|
|
313
251
|
};
|
|
314
252
|
getUndoRedoConfig(): UndoRedoConfig;
|
|
253
|
+
/**
|
|
254
|
+
* Get committed changes after the initial editor state up to the current undo/redo position.
|
|
255
|
+
*/
|
|
256
|
+
getCommitsSinceInitial(): SurveyEditorHistoryCommit[];
|
|
315
257
|
/**
|
|
316
258
|
* Serialize the SurveyEditor state to JSON
|
|
317
259
|
* @returns A JSON-serializable object containing the complete editor state
|
|
@@ -325,6 +267,8 @@ declare class SurveyEditor {
|
|
|
325
267
|
*/
|
|
326
268
|
static fromJson(jsonData: SerializedSurveyEditor, pluginRegistry?: ItemTypeRegistry): SurveyEditor;
|
|
327
269
|
private markAsModified;
|
|
270
|
+
private createEditorTimestamp;
|
|
271
|
+
private touchItemModifiedMetadata;
|
|
328
272
|
addItem(target: Target, item: SurveyItemCore, content?: SurveyItemTranslations): void;
|
|
329
273
|
removeItem(itemId: string, nested?: boolean): boolean;
|
|
330
274
|
moveItem(itemId: string, newTarget: Target): boolean;
|
|
@@ -445,5 +389,5 @@ declare class SurveyEditor {
|
|
|
445
389
|
pasteItem(clipboardData: SurveyItemClipboardData, target: Target): string;
|
|
446
390
|
}
|
|
447
391
|
//#endregion
|
|
448
|
-
export { AssetPatch,
|
|
392
|
+
export { AssetPatch, CommitMeta, CommitSource, ItemCopyPaste, SerializedSurveyEditor, SerializedTranslations, SurveyEditor, SurveyEditorConfig, SurveyEditorHistoryCommit, SurveyEditorUndoRedo, SurveyItemClipboardData, Target, UndoRedoConfig };
|
|
449
393
|
//# sourceMappingURL=editor.d.mts.map
|
package/build/editor.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.mts","names":[],"sources":["../src/editor/
|
|
1
|
+
{"version":3,"file":"editor.d.mts","names":[],"sources":["../src/editor/types.ts","../src/editor/item-copy-paste.ts","../src/editor/undo-redo.ts","../src/editor/survey-editor.ts"],"mappings":"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"}
|