@openframe-org/criteria-set-protocol 2.7.4 → 2.7.6

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.
@@ -1,4 +1,4 @@
1
- import { Color, CriteriaTree, CriteriaTreeElement, Theme, Criterion, Task, TaskGroup, TaskItem, CertificationDefinition, TaskItemValueReference, TaskItemData, ElementData, TreeResult } from "./types";
1
+ import { Color, CriteriaTree, CriteriaTreeElement, Theme, Criterion, Task, TaskGroup, TaskItem, CertificationDefinition, TaskItemValueReference, TaskItemData, ElementData, TreeResult, CriteriaTreeElementType } from "./types";
2
2
  interface ApplyBreadcrumbTextFormattingPlaceholdersFunction {
3
3
  (options: {
4
4
  breadcrumbTextFormat: string | undefined;
@@ -83,5 +83,7 @@ export declare const getCertificationsByValue: (certificationDefinitions: Certif
83
83
  * - If it is a different type, throw an error
84
84
  * In all cases, the data should contain 'text' and 'readOnly' properties
85
85
  */
86
- export declare const validateData: (dataOrTreeElement: CriteriaTreeElement | TaskItemData | ElementData | TreeResult) => void;
86
+ export declare function validateData(data: TaskItemData | ElementData | TreeResult, dataType: Exclude<CriteriaTreeElementType, "task-group" | "task-item">): data is ElementData;
87
+ export declare function validateData(data: TaskItemData | ElementData | TreeResult, dataType: Extract<CriteriaTreeElementType, "task-item">): data is TaskItemData;
88
+ export declare function validateData(data: TaskItemData | ElementData | TreeResult, dataType: "tree-result"): data is TreeResult;
87
89
  export {};
package/dist/v1/utils.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateData = exports.getCertificationsByValue = exports.isNil = exports.applyReportTitleTextFormatFormattingPlaceholders = exports.applyCriteriaTreeElementTextFormatFormattingPlaceholders = exports.applyDocumentTreeFolderTextFormattingPlaceholders = exports.applyBreadcrumbTextFormattingPlaceholders = exports.findInTree = exports.toColorHexString = exports.isTaskItem = exports.isTask = exports.isTaskGroup = exports.isCriterion = exports.isTheme = void 0;
3
+ exports.getCertificationsByValue = exports.isNil = exports.applyReportTitleTextFormatFormattingPlaceholders = exports.applyCriteriaTreeElementTextFormatFormattingPlaceholders = exports.applyDocumentTreeFolderTextFormattingPlaceholders = exports.applyBreadcrumbTextFormattingPlaceholders = exports.findInTree = exports.toColorHexString = exports.isTaskItem = exports.isTask = exports.isTaskGroup = exports.isCriterion = exports.isTheme = void 0;
4
+ exports.validateData = validateData;
4
5
  const isTheme = (element) => element.type === "theme";
5
6
  exports.isTheme = isTheme;
6
7
  const isCriterion = (element) => element.type === "criterion";
@@ -91,25 +92,9 @@ const getCertificationsByValue = (certificationDefinitions, value) => {
91
92
  });
92
93
  };
93
94
  exports.getCertificationsByValue = getCertificationsByValue;
94
- /**
95
- * Given a tree element or a data object, validate that it contains valid data. If it is a tree element,
96
- * extract the data object from it and validate it:
97
- * - If the data is a number/<undefined> type, ensure that it has a numeric value and total
98
- * - If the data is a percentage type, ensure that it has a numeric value
99
- * - If the data is a boolean type, ensure that it has a boolean value
100
- * - If it is a different type, throw an error
101
- * In all cases, the data should contain 'text' and 'readOnly' properties
102
- */
103
- const validateData = (dataOrTreeElement) => {
104
- if ("type" in dataOrTreeElement && dataOrTreeElement.type === "task-group") {
105
- throw new Error("Task groups cannot have data");
106
- }
107
- if (("type" in dataOrTreeElement) && dataOrTreeElement.type === "task-item" && !("readOnly" in dataOrTreeElement)) {
108
- throw new Error("Data is missing 'readOnly' property");
109
- }
110
- const data = "data" in dataOrTreeElement ? dataOrTreeElement.data : dataOrTreeElement;
111
- if (!data) {
112
- throw new Error("Invalid data object");
95
+ function validateData(data, dataType) {
96
+ if (!["theme", "criterion", "task", "task-item", "tree-result"].includes(dataType)) {
97
+ throw new Error(`Invalid element type: '${dataType}'`);
113
98
  }
114
99
  ["value", "text"].forEach((property) => {
115
100
  if (!(property in data)) {
@@ -142,5 +127,10 @@ const validateData = (dataOrTreeElement) => {
142
127
  default:
143
128
  throw new Error(`Data has an invalid 'type' property: ${data.type}`);
144
129
  }
145
- };
146
- exports.validateData = validateData;
130
+ if (dataType === 'task-item') {
131
+ if (!("readOnly" in data)) {
132
+ throw new Error("Data is missing 'readOnly' property");
133
+ }
134
+ }
135
+ return true;
136
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openframe-org/criteria-set-protocol",
3
- "version": "2.7.4",
3
+ "version": "2.7.6",
4
4
  "description": "A protocol and tools for defining and working with criteria sets",
5
5
  "private": false,
6
6
  "author": "Andrés Angulo <aa@openframe.org>",