@clxmedia/clxforms-client 1.0.13 → 1.0.14

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/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { CLXFormLayoutProcessor, FilteredCLXFormLayout, ProcessedCLXFormSection, ProcessedCLXFormStep, ProcessedCLXFormLayout } from './layout-processor';
1
+ export { CLXFormLayoutProcessor, ProcessedCLXFormSection, ProcessedCLXFormStep, ProcessedCLXFormLayout } from './layout-processor';
2
+ export { CLXFormLayoutFilter, FilteredCLXFormLayout, } from './layout-filter';
2
3
  export { CLXRulesetProcessor } from './rules-processor';
3
4
  export { CLXRulesEngine } from './rules-engine';
4
5
  export { CLXFormConstants } from './constants';
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLXFormConstants = exports.CLXRulesEngine = exports.CLXRulesetProcessor = exports.CLXFormLayoutProcessor = void 0;
3
+ exports.CLXFormConstants = exports.CLXRulesEngine = exports.CLXRulesetProcessor = exports.CLXFormLayoutFilter = exports.CLXFormLayoutProcessor = void 0;
4
4
  var layout_processor_1 = require("./layout-processor");
5
5
  Object.defineProperty(exports, "CLXFormLayoutProcessor", { enumerable: true, get: function () { return layout_processor_1.CLXFormLayoutProcessor; } });
6
+ var layout_filter_1 = require("./layout-filter");
7
+ Object.defineProperty(exports, "CLXFormLayoutFilter", { enumerable: true, get: function () { return layout_filter_1.CLXFormLayoutFilter; } });
6
8
  var rules_processor_1 = require("./rules-processor");
7
9
  Object.defineProperty(exports, "CLXRulesetProcessor", { enumerable: true, get: function () { return rules_processor_1.CLXRulesetProcessor; } });
8
10
  var rules_engine_1 = require("./rules-engine");
@@ -0,0 +1,5 @@
1
+ import { ProcessedCLXFormLayout } from './layout-processor';
2
+ export type FilteredCLXFormLayout = ProcessedCLXFormLayout & {
3
+ usedSlugs: Set<string>;
4
+ };
5
+ export declare const CLXFormLayoutFilter: (processedLayout: ProcessedCLXFormLayout) => FilteredCLXFormLayout;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLXFormLayoutFilter = void 0;
4
+ const slugExtractor = (rs) => {
5
+ var _a;
6
+ return (_a = rs === null || rs === void 0 ? void 0 : rs.rules) === null || _a === void 0 ? void 0 : _a.reduce((acc, rule) => {
7
+ const subject = rule.subject;
8
+ if (subject) {
9
+ return acc.concat(subject);
10
+ }
11
+ return acc.concat(slugExtractor(rule));
12
+ }, []);
13
+ };
14
+ const determineUsedSlugs = (steps) => {
15
+ return steps.reduce((acc, step) => {
16
+ var _a, _b;
17
+ for (const section of step.sections) {
18
+ for (const ql of section.question_layouts) {
19
+ acc.add(ql.form_question_slug);
20
+ const conditionSlugs = slugExtractor(ql.conditions);
21
+ const overrideSlugs = (_b = (_a = ql.overrides) === null || _a === void 0 ? void 0 : _a.max_select_override) === null || _b === void 0 ? void 0 : _b.reduce((acc, rule) => {
22
+ return acc.concat(slugExtractor(rule === null || rule === void 0 ? void 0 : rule.ruleset));
23
+ }, []);
24
+ conditionSlugs === null || conditionSlugs === void 0 ? void 0 : conditionSlugs.forEach((slug) => acc.add(slug));
25
+ overrideSlugs === null || overrideSlugs === void 0 ? void 0 : overrideSlugs.forEach((slug) => acc.add(slug));
26
+ }
27
+ }
28
+ return acc;
29
+ }, new Set());
30
+ };
31
+ const CLXFormLayoutFilter = (processedLayout) => {
32
+ const filtered = {
33
+ form: processedLayout.form,
34
+ usedSlugs: new Set(),
35
+ steps: processedLayout.steps
36
+ .map((step) => {
37
+ return {
38
+ id: step.id,
39
+ name: step.name,
40
+ description: step.description,
41
+ is_gate: step.is_gate,
42
+ sections: step.sections
43
+ .map((section) => {
44
+ return {
45
+ id: section.id,
46
+ name: section.name,
47
+ question_layouts: section.question_layouts
48
+ .map((ql) => {
49
+ return {
50
+ id: ql.id,
51
+ form_question_slug: ql.form_question_slug,
52
+ is_enabled: ql.is_enabled,
53
+ is_required: ql.is_required,
54
+ conditions: ql.conditions,
55
+ overrides: ql.overrides,
56
+ };
57
+ })
58
+ .filter((ql) => {
59
+ return ql.is_enabled;
60
+ }),
61
+ };
62
+ })
63
+ .filter((section) => {
64
+ return section.question_layouts.length > 0;
65
+ }),
66
+ };
67
+ })
68
+ .filter((step) => {
69
+ return step.sections.length > 0;
70
+ }),
71
+ };
72
+ filtered.usedSlugs = determineUsedSlugs(filtered.steps);
73
+ ;
74
+ return filtered;
75
+ };
76
+ exports.CLXFormLayoutFilter = CLXFormLayoutFilter;
@@ -29,7 +29,6 @@ export declare const CLXFormLayoutProcessor: ({ mode, responseData, formRights }
29
29
  responseData: CLXFormResponses;
30
30
  formRights: XperienceAbility;
31
31
  }) => {
32
- filter: (pl: ProcessedCLXFormLayout) => FilteredCLXFormLayout;
33
32
  process: (layout: CLXFormLayout) => ProcessedCLXFormLayout;
34
33
  processRuleSet: (ruleSet?: CLXFormRuleSet) => boolean;
35
34
  };
@@ -76,78 +76,6 @@ const CLXFormLayoutProcessor = ({ mode, responseData, formRights }) => {
76
76
  const value = responseData[key];
77
77
  return !!value && value.type === 'BOOLEAN' && value.value;
78
78
  };
79
- const slugExtractor = (rs) => {
80
- var _a;
81
- return (_a = rs === null || rs === void 0 ? void 0 : rs.rules) === null || _a === void 0 ? void 0 : _a.reduce((acc, rule) => {
82
- const subject = rule.subject;
83
- if (subject) {
84
- return acc.concat(subject);
85
- }
86
- return acc.concat(slugExtractor(rule));
87
- }, []);
88
- };
89
- const determineUsedSlugs = (steps) => {
90
- return steps.reduce((acc, step) => {
91
- var _a, _b;
92
- for (const section of step.sections) {
93
- for (const ql of section.question_layouts) {
94
- acc.add(ql.form_question_slug);
95
- const conditionSlugs = slugExtractor(ql.conditions);
96
- const overrideSlugs = (_b = (_a = ql.overrides) === null || _a === void 0 ? void 0 : _a.max_select_override) === null || _b === void 0 ? void 0 : _b.reduce((acc, rule) => {
97
- return acc.concat(slugExtractor(rule === null || rule === void 0 ? void 0 : rule.ruleset));
98
- }, []);
99
- conditionSlugs === null || conditionSlugs === void 0 ? void 0 : conditionSlugs.forEach((slug) => acc.add(slug));
100
- overrideSlugs === null || overrideSlugs === void 0 ? void 0 : overrideSlugs.forEach((slug) => acc.add(slug));
101
- }
102
- }
103
- return acc;
104
- }, new Set());
105
- };
106
- const filter = (pl) => {
107
- const filtered = {
108
- form: pl.form,
109
- usedSlugs: new Set(),
110
- steps: pl.steps
111
- .map((step) => {
112
- return {
113
- id: step.id,
114
- name: step.name,
115
- description: step.description,
116
- is_gate: step.is_gate,
117
- sections: step.sections
118
- .map((section) => {
119
- return {
120
- id: section.id,
121
- name: section.name,
122
- question_layouts: section.question_layouts
123
- .map((ql) => {
124
- return {
125
- id: ql.id,
126
- form_question_slug: ql.form_question_slug,
127
- is_enabled: ql.is_enabled,
128
- is_required: ql.is_required,
129
- conditions: ql.conditions,
130
- overrides: ql.overrides,
131
- };
132
- })
133
- .filter((ql) => {
134
- return ql.is_enabled;
135
- }),
136
- };
137
- })
138
- .filter((section) => {
139
- return section.question_layouts.length > 0;
140
- }),
141
- };
142
- })
143
- .filter((step) => {
144
- return step.sections.length > 0;
145
- }),
146
- };
147
- filtered.usedSlugs = determineUsedSlugs(filtered.steps);
148
- ;
149
- return filtered;
150
- };
151
79
  const MockProcessor = (layout) => {
152
80
  return {
153
81
  form: layout.form,
@@ -183,7 +111,6 @@ const CLXFormLayoutProcessor = ({ mode, responseData, formRights }) => {
183
111
  return { form: layout.form, steps, stats: gatherFormStats(steps) };
184
112
  };
185
113
  return {
186
- filter,
187
114
  process,
188
115
  processRuleSet: (0, rules_processor_1.CLXRulesetProcessor)({ responseData }).processRuleSet
189
116
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clxmedia/clxforms-client",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "CLXperience Forms Client",
5
5
  "author": "Brandon Thompson <brandont@clxmedia.com>",
6
6
  "license": "MIT",