@cxtms/cx-schema 1.0.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.
Files changed (133) hide show
  1. package/README.md +384 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +1523 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +11 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/types.d.ts +111 -0
  11. package/dist/types.d.ts.map +1 -0
  12. package/dist/types.js +6 -0
  13. package/dist/types.js.map +1 -0
  14. package/dist/utils/schemaLoader.d.ts +17 -0
  15. package/dist/utils/schemaLoader.d.ts.map +1 -0
  16. package/dist/utils/schemaLoader.js +134 -0
  17. package/dist/utils/schemaLoader.js.map +1 -0
  18. package/dist/validator.d.ts +64 -0
  19. package/dist/validator.d.ts.map +1 -0
  20. package/dist/validator.js +380 -0
  21. package/dist/validator.js.map +1 -0
  22. package/dist/workflowValidator.d.ts +64 -0
  23. package/dist/workflowValidator.d.ts.map +1 -0
  24. package/dist/workflowValidator.js +410 -0
  25. package/dist/workflowValidator.js.map +1 -0
  26. package/package.json +50 -0
  27. package/schemas/actions/all.json +26 -0
  28. package/schemas/actions/confirm.json +21 -0
  29. package/schemas/actions/consoleLog.json +16 -0
  30. package/schemas/actions/dialog.json +25 -0
  31. package/schemas/actions/fileDownload.json +16 -0
  32. package/schemas/actions/forEach.json +31 -0
  33. package/schemas/actions/if.json +12 -0
  34. package/schemas/actions/mutation.json +25 -0
  35. package/schemas/actions/navigate.json +18 -0
  36. package/schemas/actions/navigateBack.json +22 -0
  37. package/schemas/actions/navigateBackOrClose.json +21 -0
  38. package/schemas/actions/notification.json +19 -0
  39. package/schemas/actions/openBarcodeScanner.json +104 -0
  40. package/schemas/actions/query.json +32 -0
  41. package/schemas/actions/refresh.json +13 -0
  42. package/schemas/actions/resetDirtyState.json +22 -0
  43. package/schemas/actions/setFields.json +21 -0
  44. package/schemas/actions/setStore.json +13 -0
  45. package/schemas/actions/validateForm.json +15 -0
  46. package/schemas/actions/workflow.json +24 -0
  47. package/schemas/components/README.md +147 -0
  48. package/schemas/components/appComponent.json +50 -0
  49. package/schemas/components/barcodeScanner.json +69 -0
  50. package/schemas/components/button.json +123 -0
  51. package/schemas/components/calendar.json +489 -0
  52. package/schemas/components/card.json +176 -0
  53. package/schemas/components/collection.json +54 -0
  54. package/schemas/components/dataGrid.json +119 -0
  55. package/schemas/components/datasource.json +151 -0
  56. package/schemas/components/dropdown.json +57 -0
  57. package/schemas/components/field-collection.json +618 -0
  58. package/schemas/components/field.json +265 -0
  59. package/schemas/components/form.json +234 -0
  60. package/schemas/components/index.json +68 -0
  61. package/schemas/components/layout.json +69 -0
  62. package/schemas/components/module.json +138 -0
  63. package/schemas/components/navDropdown.json +36 -0
  64. package/schemas/components/navbar.json +78 -0
  65. package/schemas/components/navbarItem.json +28 -0
  66. package/schemas/components/navbarLink.json +36 -0
  67. package/schemas/components/row.json +31 -0
  68. package/schemas/components/tab.json +34 -0
  69. package/schemas/components/tabs.json +35 -0
  70. package/schemas/components/timeline.json +172 -0
  71. package/schemas/components/timelineGrid.json +324 -0
  72. package/schemas/fields/README.md +66 -0
  73. package/schemas/fields/attachment.json +156 -0
  74. package/schemas/fields/autocomplete-googleplaces.json +130 -0
  75. package/schemas/fields/checkbox.json +82 -0
  76. package/schemas/fields/date.json +88 -0
  77. package/schemas/fields/datetime.json +75 -0
  78. package/schemas/fields/email.json +75 -0
  79. package/schemas/fields/index.json +53 -0
  80. package/schemas/fields/number.json +91 -0
  81. package/schemas/fields/password.json +70 -0
  82. package/schemas/fields/radio.json +94 -0
  83. package/schemas/fields/rangedatetime.json +56 -0
  84. package/schemas/fields/select-async.json +334 -0
  85. package/schemas/fields/select.json +115 -0
  86. package/schemas/fields/tel.json +79 -0
  87. package/schemas/fields/text.json +86 -0
  88. package/schemas/fields/textarea.json +95 -0
  89. package/schemas/fields/time.json +91 -0
  90. package/schemas/fields/url.json +74 -0
  91. package/schemas/schema.graphql +10492 -0
  92. package/schemas/schemas.json +598 -0
  93. package/schemas/workflows/activity.json +111 -0
  94. package/schemas/workflows/common/condition.json +48 -0
  95. package/schemas/workflows/common/expression.json +76 -0
  96. package/schemas/workflows/common/mapping.json +134 -0
  97. package/schemas/workflows/input.json +76 -0
  98. package/schemas/workflows/output.json +41 -0
  99. package/schemas/workflows/schedule.json +26 -0
  100. package/schemas/workflows/tasks/accounting-transaction.json +95 -0
  101. package/schemas/workflows/tasks/all.json +34 -0
  102. package/schemas/workflows/tasks/attachment.json +94 -0
  103. package/schemas/workflows/tasks/charge.json +90 -0
  104. package/schemas/workflows/tasks/commodity.json +89 -0
  105. package/schemas/workflows/tasks/contact.json +82 -0
  106. package/schemas/workflows/tasks/csv.json +79 -0
  107. package/schemas/workflows/tasks/document-render.json +105 -0
  108. package/schemas/workflows/tasks/document-send.json +84 -0
  109. package/schemas/workflows/tasks/email-send.json +110 -0
  110. package/schemas/workflows/tasks/error.json +72 -0
  111. package/schemas/workflows/tasks/export.json +90 -0
  112. package/schemas/workflows/tasks/foreach.json +69 -0
  113. package/schemas/workflows/tasks/generic.json +47 -0
  114. package/schemas/workflows/tasks/graphql.json +78 -0
  115. package/schemas/workflows/tasks/httpRequest.json +119 -0
  116. package/schemas/workflows/tasks/job.json +88 -0
  117. package/schemas/workflows/tasks/log.json +73 -0
  118. package/schemas/workflows/tasks/map.json +58 -0
  119. package/schemas/workflows/tasks/order.json +87 -0
  120. package/schemas/workflows/tasks/payment.json +85 -0
  121. package/schemas/workflows/tasks/setVariable.json +76 -0
  122. package/schemas/workflows/tasks/switch.json +75 -0
  123. package/schemas/workflows/tasks/template.json +73 -0
  124. package/schemas/workflows/tasks/validation.json +90 -0
  125. package/schemas/workflows/tasks/while.json +53 -0
  126. package/schemas/workflows/tasks/workflow-execute.json +82 -0
  127. package/schemas/workflows/trigger.json +86 -0
  128. package/schemas/workflows/variable.json +46 -0
  129. package/schemas/workflows/workflow.json +172 -0
  130. package/scripts/postinstall.js +161 -0
  131. package/scripts/setup-vscode.js +80 -0
  132. package/templates/module.yaml +83 -0
  133. package/templates/workflow.yaml +100 -0
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ /**
3
+ * Workflow validator for CargoXplorer YAML workflow files
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.WorkflowValidator = void 0;
43
+ const ajv_1 = __importDefault(require("ajv"));
44
+ const ajv_formats_1 = __importDefault(require("ajv-formats"));
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const yaml = __importStar(require("js-yaml"));
48
+ class WorkflowValidator {
49
+ constructor(options = {}) {
50
+ this.schemasDir = options.schemasPath || path.join(__dirname, '../schemas/workflows');
51
+ this.options = {
52
+ schemasPath: this.schemasDir,
53
+ strictMode: options.strictMode ?? true,
54
+ includeWarnings: options.includeWarnings ?? true,
55
+ validateTasks: options.validateTasks ?? true,
56
+ validateExpressions: options.validateExpressions ?? false
57
+ };
58
+ // Initialize Ajv with Draft 7 support
59
+ this.ajv = new ajv_1.default({
60
+ strict: false,
61
+ allErrors: true,
62
+ verbose: true,
63
+ validateFormats: true,
64
+ allowUnionTypes: true
65
+ });
66
+ // Add format validators
67
+ (0, ajv_formats_1.default)(this.ajv);
68
+ // Load all workflow schemas
69
+ this.schemas = this.loadWorkflowSchemas(this.schemasDir);
70
+ // Register schemas with Ajv
71
+ this.registerSchemas();
72
+ }
73
+ /**
74
+ * Load all workflow schemas from the schemas/workflows directory
75
+ */
76
+ loadWorkflowSchemas(schemasDir) {
77
+ const schemas = new Map();
78
+ // Load main workflow.json
79
+ const mainSchemaPath = path.join(schemasDir, 'workflow.json');
80
+ if (fs.existsSync(mainSchemaPath)) {
81
+ const schema = JSON.parse(fs.readFileSync(mainSchemaPath, 'utf-8'));
82
+ schemas.set('workflow.json', {
83
+ schema,
84
+ uri: `file:///${mainSchemaPath.replace(/\\/g, '/')}`
85
+ });
86
+ }
87
+ // Load workflow sub-schemas
88
+ const subSchemas = ['input.json', 'output.json', 'variable.json', 'trigger.json', 'schedule.json', 'activity.json'];
89
+ for (const schemaFile of subSchemas) {
90
+ const schemaPath = path.join(schemasDir, schemaFile);
91
+ if (fs.existsSync(schemaPath)) {
92
+ const schema = JSON.parse(fs.readFileSync(schemaPath, 'utf-8'));
93
+ schemas.set(schemaFile, {
94
+ schema,
95
+ uri: `file:///${schemaPath.replace(/\\/g, '/')}`
96
+ });
97
+ }
98
+ }
99
+ // Load task schemas from tasks/ subdirectory
100
+ const tasksDir = path.join(schemasDir, 'tasks');
101
+ if (fs.existsSync(tasksDir)) {
102
+ this.loadSchemasFromDir(tasksDir, 'tasks', schemas);
103
+ }
104
+ // Load common schemas from common/ subdirectory
105
+ const commonDir = path.join(schemasDir, 'common');
106
+ if (fs.existsSync(commonDir)) {
107
+ this.loadSchemasFromDir(commonDir, 'common', schemas);
108
+ }
109
+ return schemas;
110
+ }
111
+ /**
112
+ * Recursively load schemas from a directory
113
+ */
114
+ loadSchemasFromDir(dir, relativePath, schemas) {
115
+ const files = fs.readdirSync(dir);
116
+ for (const file of files) {
117
+ const filePath = path.join(dir, file);
118
+ const stat = fs.statSync(filePath);
119
+ if (stat.isDirectory()) {
120
+ this.loadSchemasFromDir(filePath, `${relativePath}/${file}`, schemas);
121
+ }
122
+ else if (file.endsWith('.json')) {
123
+ try {
124
+ const schema = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
125
+ const key = `${relativePath}/${file}`;
126
+ schemas.set(key, {
127
+ schema,
128
+ uri: `file:///${filePath.replace(/\\/g, '/')}`
129
+ });
130
+ }
131
+ catch (error) {
132
+ console.error(`Error loading schema ${filePath}:`, error);
133
+ }
134
+ }
135
+ }
136
+ }
137
+ /**
138
+ * Register all loaded schemas with Ajv
139
+ */
140
+ registerSchemas() {
141
+ for (const [key, entry] of this.schemas.entries()) {
142
+ try {
143
+ this.ajv.addSchema(entry.schema, key);
144
+ }
145
+ catch (error) {
146
+ console.error(`Error adding schema ${key}:`, error);
147
+ }
148
+ }
149
+ }
150
+ /**
151
+ * Validate a YAML workflow file
152
+ */
153
+ async validateWorkflow(filePath) {
154
+ const errors = [];
155
+ const warnings = [];
156
+ try {
157
+ // Check if file exists
158
+ if (!fs.existsSync(filePath)) {
159
+ errors.push({
160
+ type: 'file_not_found',
161
+ path: filePath,
162
+ message: `File not found: ${filePath}`
163
+ });
164
+ return this.createResult(filePath, errors, warnings);
165
+ }
166
+ // Read and parse YAML
167
+ const content = fs.readFileSync(filePath, 'utf-8');
168
+ let workflowData;
169
+ try {
170
+ workflowData = yaml.load(content);
171
+ }
172
+ catch (yamlError) {
173
+ errors.push({
174
+ type: 'yaml_syntax_error',
175
+ path: filePath,
176
+ message: `YAML syntax error: ${yamlError.message}`
177
+ });
178
+ return this.createResult(filePath, errors, warnings);
179
+ }
180
+ // Validate workflow structure
181
+ this.validateWorkflowStructure(workflowData, errors, warnings);
182
+ // Validate against main workflow schema
183
+ const validate = this.ajv.getSchema('workflow.json');
184
+ if (validate && !validate(workflowData)) {
185
+ this.addAjvErrors(validate.errors, '', errors);
186
+ }
187
+ // Validate activities recursively
188
+ if (workflowData.activities && Array.isArray(workflowData.activities)) {
189
+ this.validateActivities(workflowData.activities, 'activities', errors, warnings);
190
+ }
191
+ return this.createResult(filePath, errors, warnings);
192
+ }
193
+ catch (error) {
194
+ errors.push({
195
+ type: 'unexpected_error',
196
+ path: filePath,
197
+ message: `Unexpected error: ${error.message}`
198
+ });
199
+ return this.createResult(filePath, errors, warnings);
200
+ }
201
+ }
202
+ /**
203
+ * Validate top-level workflow structure
204
+ */
205
+ validateWorkflowStructure(workflowData, errors, warnings) {
206
+ // Check required top-level properties
207
+ if (!workflowData.workflow) {
208
+ errors.push({
209
+ type: 'missing_property',
210
+ path: 'workflow',
211
+ message: 'Missing required property: workflow'
212
+ });
213
+ return;
214
+ }
215
+ if (!workflowData.activities) {
216
+ errors.push({
217
+ type: 'missing_property',
218
+ path: 'activities',
219
+ message: 'Missing required property: activities'
220
+ });
221
+ }
222
+ // Validate workflow metadata
223
+ const workflow = workflowData.workflow;
224
+ if (!workflow.workflowId) {
225
+ errors.push({
226
+ type: 'missing_property',
227
+ path: 'workflow.workflowId',
228
+ message: 'Missing required property: workflow.workflowId'
229
+ });
230
+ }
231
+ if (!workflow.name) {
232
+ errors.push({
233
+ type: 'missing_property',
234
+ path: 'workflow.name',
235
+ message: 'Missing required property: workflow.name'
236
+ });
237
+ }
238
+ // Check for deprecated properties
239
+ this.checkDeprecatedProperties(workflow, 'workflow', warnings);
240
+ }
241
+ /**
242
+ * Validate activities array recursively
243
+ */
244
+ validateActivities(activities, basePath, errors, warnings) {
245
+ activities.forEach((activity, index) => {
246
+ const activityPath = `${basePath}[${index}]`;
247
+ this.validateActivity(activity, activityPath, errors, warnings);
248
+ });
249
+ }
250
+ /**
251
+ * Validate a single activity
252
+ */
253
+ validateActivity(activity, activityPath, errors, warnings) {
254
+ if (!activity || typeof activity !== 'object') {
255
+ errors.push({
256
+ type: 'invalid_activity',
257
+ path: activityPath,
258
+ message: 'Activity must be an object'
259
+ });
260
+ return;
261
+ }
262
+ // Check for required properties
263
+ if (!activity.name) {
264
+ errors.push({
265
+ type: 'missing_property',
266
+ path: `${activityPath}.name`,
267
+ message: 'Activity must have a name property'
268
+ });
269
+ }
270
+ if (!activity.steps || !Array.isArray(activity.steps)) {
271
+ errors.push({
272
+ type: 'missing_property',
273
+ path: `${activityPath}.steps`,
274
+ message: 'Activity must have a steps array'
275
+ });
276
+ return;
277
+ }
278
+ // Validate each step
279
+ activity.steps.forEach((step, stepIndex) => {
280
+ const stepPath = `${activityPath}.steps[${stepIndex}]`;
281
+ this.validateStep(step, stepPath, errors, warnings);
282
+ });
283
+ }
284
+ /**
285
+ * Validate a single step (task)
286
+ */
287
+ validateStep(step, stepPath, errors, warnings) {
288
+ if (!step || typeof step !== 'object') {
289
+ errors.push({
290
+ type: 'schema_violation',
291
+ path: stepPath,
292
+ message: 'Step must be an object'
293
+ });
294
+ return;
295
+ }
296
+ // Check for task type
297
+ if (!step.task) {
298
+ errors.push({
299
+ type: 'missing_property',
300
+ path: `${stepPath}.task`,
301
+ message: 'Step must have a task property'
302
+ });
303
+ return;
304
+ }
305
+ // Validate nested structures (foreach, switch, while)
306
+ this.validateNestedSteps(step, stepPath, errors, warnings);
307
+ }
308
+ /**
309
+ * Validate nested structures within control flow tasks
310
+ */
311
+ validateNestedSteps(step, stepPath, errors, warnings) {
312
+ const taskType = step.task;
313
+ // Handle foreach
314
+ if (taskType === 'foreach') {
315
+ if (step.steps && Array.isArray(step.steps)) {
316
+ step.steps.forEach((nestedStep, index) => {
317
+ this.validateStep(nestedStep, `${stepPath}.steps[${index}]`, errors, warnings);
318
+ });
319
+ }
320
+ }
321
+ // Handle switch
322
+ if (taskType === 'switch') {
323
+ if (step.cases && Array.isArray(step.cases)) {
324
+ step.cases.forEach((caseItem, caseIndex) => {
325
+ if (caseItem.steps && Array.isArray(caseItem.steps)) {
326
+ caseItem.steps.forEach((nestedStep, stepIndex) => {
327
+ this.validateStep(nestedStep, `${stepPath}.cases[${caseIndex}].steps[${stepIndex}]`, errors, warnings);
328
+ });
329
+ }
330
+ });
331
+ }
332
+ if (step.default && step.default.steps && Array.isArray(step.default.steps)) {
333
+ step.default.steps.forEach((nestedStep, index) => {
334
+ this.validateStep(nestedStep, `${stepPath}.default.steps[${index}]`, errors, warnings);
335
+ });
336
+ }
337
+ }
338
+ // Handle while
339
+ if (taskType === 'while') {
340
+ if (step.steps && Array.isArray(step.steps)) {
341
+ step.steps.forEach((nestedStep, index) => {
342
+ this.validateStep(nestedStep, `${stepPath}.steps[${index}]`, errors, warnings);
343
+ });
344
+ }
345
+ }
346
+ }
347
+ /**
348
+ * Convert Ajv errors to our error format
349
+ */
350
+ addAjvErrors(ajvErrors, basePath, errors) {
351
+ if (!ajvErrors)
352
+ return;
353
+ for (const error of ajvErrors) {
354
+ const errorPath = basePath ? `${basePath}${error.instancePath}` : error.instancePath.slice(1);
355
+ errors.push({
356
+ type: 'schema_violation',
357
+ path: errorPath || '/',
358
+ message: error.message || 'Schema validation failed',
359
+ schemaPath: error.schemaPath
360
+ });
361
+ }
362
+ }
363
+ /**
364
+ * Check for deprecated properties
365
+ */
366
+ checkDeprecatedProperties(obj, path, warnings) {
367
+ const deprecations = {
368
+ // Add deprecated workflow properties here as needed
369
+ };
370
+ for (const [oldProp, message] of Object.entries(deprecations)) {
371
+ if (oldProp in obj) {
372
+ warnings.push({
373
+ type: 'deprecated_property',
374
+ path: `${path}.${oldProp}`,
375
+ message
376
+ });
377
+ }
378
+ }
379
+ }
380
+ /**
381
+ * Create validation result
382
+ */
383
+ createResult(filePath, errors, warnings) {
384
+ const errorsByType = {};
385
+ errors.forEach(error => {
386
+ errorsByType[error.type] = (errorsByType[error.type] || 0) + 1;
387
+ });
388
+ return {
389
+ isValid: errors.length === 0,
390
+ errors,
391
+ warnings: this.options.includeWarnings ? warnings : [],
392
+ summary: {
393
+ file: filePath,
394
+ timestamp: new Date().toISOString(),
395
+ status: errors.length === 0 ? 'PASSED' : 'FAILED',
396
+ errorCount: errors.length,
397
+ warningCount: warnings.length,
398
+ errorsByType
399
+ }
400
+ };
401
+ }
402
+ /**
403
+ * Get all loaded schema keys
404
+ */
405
+ getLoadedSchemas() {
406
+ return Array.from(this.schemas.keys());
407
+ }
408
+ }
409
+ exports.WorkflowValidator = WorkflowValidator;
410
+ //# sourceMappingURL=workflowValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowValidator.js","sourceRoot":"","sources":["../src/workflowValidator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@cxtms/cx-schema",
3
+ "version": "1.0.0",
4
+ "description": "Schema validation package for CargoXplorer YAML modules",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "cx-validate": "dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "prepare": "npm run build",
13
+ "postinstall": "node scripts/postinstall.js",
14
+ "test": "echo \"Error: no test specified\" && exit 1"
15
+ },
16
+ "keywords": [
17
+ "schema",
18
+ "validation",
19
+ "yaml",
20
+ "tms",
21
+ "cargoxplorer",
22
+ "module"
23
+ ],
24
+ "author": "CargoXplorer",
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/cargoxplorer/cx-schema.git"
29
+ },
30
+ "files": [
31
+ "dist",
32
+ "schemas",
33
+ "scripts",
34
+ "templates"
35
+ ],
36
+ "dependencies": {
37
+ "ajv": "^8.12.0",
38
+ "ajv-formats": "^2.1.1",
39
+ "chalk": "^4.1.2",
40
+ "js-yaml": "^4.1.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/js-yaml": "^4.0.9",
44
+ "@types/node": "^20.10.0",
45
+ "typescript": "^5.3.3"
46
+ },
47
+ "engines": {
48
+ "node": ">=14.0.0"
49
+ }
50
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "All Actions",
4
+ "type": "object",
5
+ "oneOf": [
6
+ { "$ref": "navigate.json" },
7
+ { "$ref": "navigateBack.json" },
8
+ { "$ref": "navigateBackOrClose.json" },
9
+ { "$ref": "refresh.json" },
10
+ { "$ref": "notification.json" },
11
+ { "$ref": "confirm.json" },
12
+ { "$ref": "mutation.json" },
13
+ { "$ref": "query.json" },
14
+ { "$ref": "setFields.json" },
15
+ { "$ref": "setStore.json" },
16
+ { "$ref": "validateForm.json" },
17
+ { "$ref": "dialog.json" },
18
+ { "$ref": "workflow.json" },
19
+ { "$ref": "fileDownload.json" },
20
+ { "$ref": "forEach.json" },
21
+ { "$ref": "if.json" },
22
+ { "$ref": "consoleLog.json" },
23
+ { "$ref": "openBarcodeScanner.json" },
24
+ { "$ref": "resetDirtyState.json" }
25
+ ]
26
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "confirm Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "confirm": {
7
+ "type": "object",
8
+ "properties": {
9
+ "title": { "oneOf": [{ "type": "string" }, { "$ref": "../schemas.json#/definitions/localized" }] },
10
+ "message": { "oneOf": [{ "type": "string" }, { "$ref": "../schemas.json#/definitions/localized" }] }
11
+ },
12
+ "x-examples": [
13
+ {
14
+ "title": { "en-US": "Delete Calendar" },
15
+ "message": { "en-US": "Are you sure you want to delete this calendar?" }
16
+ }
17
+ ]
18
+ }
19
+ },
20
+ "additionalProperties": false
21
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "consoleLog Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "consoleLog": {
7
+ "type": "object",
8
+ "properties": {
9
+ "message": { "type": "string", "description": "Message to log" },
10
+ "level": { "type": "string", "enum": ["log", "info", "warn", "error"], "default": "log" }
11
+ },
12
+ "x-examples": [{ "message": "Scanned: {{ result.data }}", "level": "info" }]
13
+ }
14
+ },
15
+ "additionalProperties": false
16
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "dialog Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "dialog": {
7
+ "type": "object",
8
+ "properties": {
9
+ "name": { "type": "string", "description": "Dialog identifier" },
10
+ "props": { "type": "object", "description": "Props to pass to dialog" },
11
+ "component": { "$ref": "../schemas.json#/definitions/component" },
12
+ "onClose": { "$ref": "../schemas.json#/definitions/actionsList" }
13
+ },
14
+ "x-examples": [
15
+ { "name": "addCommoditiesDialog", "props": { "title": { "en-US": "Add Commodities" } } },
16
+ {
17
+ "component": "States/CreateState",
18
+ "props": { "title": "Create New State" },
19
+ "onClose": [{ "selectValue": "{{ result }}" }]
20
+ }
21
+ ]
22
+ }
23
+ },
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "fileDownload Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "fileDownload": {
7
+ "type": "object",
8
+ "properties": {
9
+ "url": { "type": "string", "description": "File download URL" },
10
+ "filename": { "type": "string", "description": "Suggested filename" }
11
+ },
12
+ "x-examples": [{ "url": "{{ outputs.labelUrl }}", "filename": "label.pdf" }]
13
+ }
14
+ },
15
+ "additionalProperties": false
16
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "forEach Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "forEach": {
7
+ "type": "object",
8
+ "properties": {
9
+ "items": { "type": "string", "description": "Template expression for items array" },
10
+ "item": { "type": "string", "description": "Variable name for current item" },
11
+ "actions": { "$ref": "../schemas.json#/definitions/actionsList" }
12
+ },
13
+ "x-examples": [
14
+ {
15
+ "items": "{{ existingRouteLegs.selectedItems }}",
16
+ "item": "routeLeg",
17
+ "actions": [
18
+ {
19
+ "mutation": {
20
+ "command": "mutation CreateRouteRouteLegMutation($input: CreateRouteRouteLegInput!) { createRouteRouteLeg(input: $input) { routeRouteLeg { routeLegId } } }",
21
+ "variables": { "input": { "routeLegId": "{{ number routeLeg.routeLegId }}" } }
22
+ }
23
+ },
24
+ { "refresh": "routeLegsGrid" }
25
+ ]
26
+ }
27
+ ]
28
+ }
29
+ },
30
+ "additionalProperties": false
31
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "if Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "if": { "type": "string", "description": "Template expression condition" },
7
+ "then": { "$ref": "../schemas.json#/definitions/actionsList" },
8
+ "else": { "$ref": "../schemas.json#/definitions/actionsList" }
9
+ },
10
+ "x-examples": [{ "if": "{{ result }}", "then": [{ "refresh": "warehouseReceiptsCommodities" }] }],
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "mutation Action",
4
+ "type": "object",
5
+ "properties": {
6
+ "mutation": {
7
+ "type": "object",
8
+ "properties": {
9
+ "command": { "type": "string", "description": "GraphQL mutation string" },
10
+ "variables": { "type": "object", "description": "Mutation variables" },
11
+ "onSuccess": { "$ref": "../schemas.json#/definitions/actionsList" },
12
+ "onError": { "$ref": "../schemas.json#/definitions/actionsList" }
13
+ },
14
+ "x-examples": [
15
+ {
16
+ "command": "mutation DeleteCalendarMutation($input: DeleteCalendarInput!) { deleteCalendar(input: $input) { deleteResult { rowsAffected } } }",
17
+ "variables": {
18
+ "input": { "organizationId": "{{number organizationId }}", "calendarId": "{{number calendarId }}" }
19
+ }
20
+ }
21
+ ]
22
+ }
23
+ },
24
+ "additionalProperties": false
25
+ }