case-editor-tools 1.0.0-beta.45 → 1.0.0-beta.48

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/exporter/index.js CHANGED
@@ -4,6 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var fs = require('fs');
6
6
  var logger_logger = require('../logger/logger.js');
7
+ var types_messageConfig = require('../types/messageConfig.js');
8
+ require('../types/duration.js');
7
9
 
8
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
11
 
@@ -22,6 +24,8 @@ const generateFilesForStudy = (study, pretty) => {
22
24
  generateStudyRuleFile(study, outputRoot, pretty);
23
25
  // Custom Study rules: (manually triggered rules)
24
26
  generateCustomStudyRules(study, outputRoot, pretty);
27
+ // Message configs:
28
+ generateMessageConfigs(study, outputRoot, pretty);
25
29
  };
26
30
  const generateSurveyFiles = (study, outputPath, pretty) => {
27
31
  if (study.surveys.length > 0) {
@@ -93,6 +97,31 @@ const generateCustomStudyRules = (study, outputPath, pretty) => {
93
97
  }
94
98
  logger_logger.Logger.success(`\t\tRule ${studyRule.name} saved`);
95
99
  });
100
+ };
101
+ const generateMessageConfigs = (study, outputPath, pretty) => {
102
+ if (!study.messageConfigs || study.messageConfigs.length < 1) {
103
+ logger_logger.Logger.log(`\tNo message configs in the study.`);
104
+ return;
105
+ }
106
+ else {
107
+ logger_logger.Logger.log(`\tMessage configs:`);
108
+ }
109
+ const messageConfigPath = `${outputPath}/messageConfigs`;
110
+ if (!fs__default["default"].existsSync(messageConfigPath)) {
111
+ fs__default["default"].mkdirSync(messageConfigPath, { recursive: true });
112
+ }
113
+ study.messageConfigs.forEach(conf => {
114
+ const fileName = `${messageConfigPath}/${conf.label.replace(' ', '_').toLocaleLowerCase()}.json`;
115
+ const outputObject = types_messageConfig.buildMessageConfig(conf, study.studyKey);
116
+ try {
117
+ fs__default["default"].writeFileSync(fileName, JSON.stringify(outputObject, undefined, pretty ? 2 : undefined));
118
+ }
119
+ catch (err) {
120
+ logger_logger.Logger.error(err);
121
+ return;
122
+ }
123
+ logger_logger.Logger.success(`\t\tConfig for "${conf.label}" saved`);
124
+ });
96
125
  };
97
126
 
98
127
  exports.generateFilesForStudy = generateFilesForStudy;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "case-editor-tools",
3
3
  "description": "Javascript tools to simplify survey and study coding for CASE.",
4
- "version": "1.0.0-beta.45",
4
+ "version": "1.0.0-beta.48",
5
5
  "main": "index.js",
6
6
  "license": "Apache-2.0",
7
7
  "repository": "github:case-framework/case-editor-tools",
@@ -0,0 +1,49 @@
1
+ import { Expression } from "survey-engine/data_types";
2
+ import { Duration } from "./duration";
3
+ export declare type MessageType = 'registration' | 'invitation' | 'verify-email' | 'verification-code' | 'password-reset' | 'password-changed' | 'account-id-changed' | 'weekly' | 'study-reminder' | 'newsletter' | 'account-deleted';
4
+ export interface MessageConfig {
5
+ sendTo: 'study-participants' | 'all-users' | 'scheduled-participant-messages';
6
+ label: string;
7
+ headerOverrides?: {
8
+ from: string;
9
+ sender: string;
10
+ replyTo: string[];
11
+ };
12
+ messageType: MessageType;
13
+ sendingTime: {
14
+ hour: number;
15
+ minute: number;
16
+ };
17
+ period: Duration;
18
+ defaultLanguage: string;
19
+ condition?: Expression;
20
+ translations: Array<{
21
+ lang: string;
22
+ subject: string;
23
+ }>;
24
+ }
25
+ export declare const buildMessageConfig: (props: MessageConfig, studyKey: string) => {
26
+ sendTo: "study-participants" | "all-users" | "scheduled-participant-messages";
27
+ studyKey: string;
28
+ label: string;
29
+ headerOverrides: {
30
+ from: string;
31
+ sender: string;
32
+ replyTo: string[];
33
+ } | undefined;
34
+ messageType: MessageType;
35
+ sendingTime: {
36
+ hour: number;
37
+ minute: number;
38
+ };
39
+ condition: {
40
+ dtype: string;
41
+ exp: Expression | undefined;
42
+ };
43
+ period: number;
44
+ defaultLanguage: string;
45
+ translations: {
46
+ lang: string;
47
+ subject: string;
48
+ }[];
49
+ };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var types_duration = require('./duration.js');
6
+
7
+ const buildMessageConfig = (props, studyKey) => {
8
+ return {
9
+ sendTo: props.sendTo,
10
+ studyKey: studyKey,
11
+ label: props.label,
12
+ headerOverrides: props.headerOverrides,
13
+ messageType: props.messageType,
14
+ sendingTime: props.sendingTime,
15
+ condition: { dtype: 'exp', exp: props.condition },
16
+ period: Math.floor(types_duration.durationObjectToSeconds(props.period)),
17
+ defaultLanguage: props.defaultLanguage,
18
+ translations: props.translations,
19
+ };
20
+ };
21
+
22
+ exports.buildMessageConfig = buildMessageConfig;
23
+ //# sourceMappingURL=messageConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageConfig.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
package/types/study.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Expression } from "survey-engine/data_types";
2
2
  import { StudyRules } from "./studyRules";
3
3
  import { SurveyDefinition } from "../surveys/types/survey-definition";
4
+ import { MessageConfig } from "./messageConfig";
4
5
  export interface Study {
5
6
  studyKey: string;
6
7
  outputFolderName?: string;
@@ -10,4 +11,5 @@ export interface Study {
10
11
  name: string;
11
12
  rules: Expression[];
12
13
  }>;
14
+ messageConfigs?: Array<MessageConfig>;
13
15
  }