@researchdatabox/sails-ng-common 5.0.3 → 5.0.4-beta.12498

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 (60) hide show
  1. package/dist/src/config/component/checkbox-input.model.d.ts +1 -0
  2. package/dist/src/config/component/checkbox-input.model.js +2 -1
  3. package/dist/src/config/component/checkbox-input.outline.d.ts +2 -1
  4. package/dist/src/config/component/checkbox-input.outline.js +1 -1
  5. package/dist/src/config/component/data-location.outline.d.ts +1 -0
  6. package/dist/src/config/component/file-upload.outline.d.ts +2 -0
  7. package/dist/src/config/component/file-upload.outline.js +1 -1
  8. package/dist/src/config/component/related-object-data.model.d.ts +45 -0
  9. package/dist/src/config/component/related-object-data.model.js +39 -0
  10. package/dist/src/config/component/related-object-data.outline.d.ts +59 -0
  11. package/dist/src/config/component/related-object-data.outline.js +5 -0
  12. package/dist/src/config/component/save-button.model.d.ts +1 -0
  13. package/dist/src/config/component/save-button.model.js +2 -1
  14. package/dist/src/config/component/save-button.outline.d.ts +5 -0
  15. package/dist/src/config/component/save-status.model.d.ts +4 -0
  16. package/dist/src/config/component/save-status.model.js +5 -1
  17. package/dist/src/config/component/save-status.outline.d.ts +20 -0
  18. package/dist/src/config/component/workspace.model.d.ts +44 -0
  19. package/dist/src/config/component/workspace.model.js +44 -0
  20. package/dist/src/config/component/workspace.outline.d.ts +62 -0
  21. package/dist/src/config/component/workspace.outline.js +5 -0
  22. package/dist/src/config/dictionary.model.d.ts +28 -4
  23. package/dist/src/config/dictionary.model.js +7 -1
  24. package/dist/src/config/dictionary.outline.d.ts +5 -3
  25. package/dist/src/config/form-behaviour.outline.d.ts +120 -7
  26. package/dist/src/config/form-behaviour.outline.js +13 -5
  27. package/dist/src/config/form-component.model.d.ts +1 -0
  28. package/dist/src/config/form-component.model.js +2 -1
  29. package/dist/src/config/form-component.outline.d.ts +14 -0
  30. package/dist/src/config/form-config.model.d.ts +3 -0
  31. package/dist/src/config/form-config.model.js +2 -1
  32. package/dist/src/config/form-config.outline.d.ts +10 -0
  33. package/dist/src/config/form-override.model.js +4 -3
  34. package/dist/src/config/visitor/base.model.d.ts +6 -0
  35. package/dist/src/config/visitor/base.model.js +13 -1
  36. package/dist/src/config/visitor/base.outline.d.ts +6 -0
  37. package/dist/src/config/visitor/common.model.js +2 -1
  38. package/dist/src/index.d.ts +9 -0
  39. package/dist/src/index.js +10 -1
  40. package/dist/src/internal/plain-record.d.ts +11 -0
  41. package/dist/src/internal/plain-record.js +21 -0
  42. package/dist/src/jsonata-helpers.d.ts +15 -0
  43. package/dist/src/jsonata-helpers.js +49 -13
  44. package/dist/src/jsonata-parity.fixtures.d.ts +9 -0
  45. package/dist/src/jsonata-parity.fixtures.js +25 -0
  46. package/dist/src/record-concurrency.model.d.ts +118 -0
  47. package/dist/src/record-concurrency.model.js +199 -0
  48. package/dist/src/record-diff.d.ts +69 -0
  49. package/dist/src/record-diff.js +298 -0
  50. package/dist/src/record-save.model.d.ts +154 -0
  51. package/dist/src/record-save.model.js +289 -0
  52. package/dist/src/testing.d.ts +3 -0
  53. package/dist/src/testing.js +20 -0
  54. package/dist/src/validation/record-validation.model.d.ts +84 -0
  55. package/dist/src/validation/record-validation.model.js +53 -0
  56. package/dist/src/validation/validation-groups.d.ts +29 -0
  57. package/dist/src/validation/validation-groups.fixtures.d.ts +20 -0
  58. package/dist/src/validation/validation-groups.fixtures.js +83 -0
  59. package/dist/src/validation/validation-groups.js +82 -0
  60. package/package.json +16 -11
@@ -0,0 +1,20 @@
1
+ import { FormFieldValidationGroup, FormValidationGroups } from './form.model';
2
+ import { FormValidationGroupsChangeInitial } from './validation-groups';
3
+ /** @internal Shared client/server parity fixture. */
4
+ export interface ValidationGroupCalculationFixture {
5
+ name: string;
6
+ currentValidationGroups: string[];
7
+ validationGroups: FormValidationGroups;
8
+ initial?: FormValidationGroupsChangeInitial;
9
+ groups?: FormFieldValidationGroup;
10
+ operationEnabledValidationGroups?: string[];
11
+ expectedGroups: string[];
12
+ expectedDiagnosticCodes?: string[];
13
+ }
14
+ /**
15
+ * Fixtures consumed by both sails-ng-common and Angular tests. They document
16
+ * the deliberately retained edge cases as executable compatibility data.
17
+ *
18
+ * @internal
19
+ */
20
+ export declare const validationGroupCalculationFixtures: ValidationGroupCalculationFixture[];
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validationGroupCalculationFixtures = void 0;
4
+ const availableGroups = {
5
+ all: { description: 'All validators', initialMembership: 'all' },
6
+ none: { description: 'No validators', initialMembership: 'none' },
7
+ draft: { description: 'Draft validators', initialMembership: 'none' },
8
+ publish: { description: 'Publish validators', initialMembership: 'none' },
9
+ };
10
+ /**
11
+ * Fixtures consumed by both sails-ng-common and Angular tests. They document
12
+ * the deliberately retained edge cases as executable compatibility data.
13
+ *
14
+ * @internal
15
+ */
16
+ exports.validationGroupCalculationFixtures = [
17
+ {
18
+ name: 'keeps an empty current group array',
19
+ currentValidationGroups: [],
20
+ validationGroups: availableGroups,
21
+ expectedGroups: [],
22
+ },
23
+ {
24
+ name: 'starts with every declared group in declaration order',
25
+ currentValidationGroups: ['draft'],
26
+ validationGroups: availableGroups,
27
+ initial: 'all',
28
+ expectedGroups: ['all', 'none', 'draft', 'publish'],
29
+ },
30
+ {
31
+ name: 'starts with no groups',
32
+ currentValidationGroups: ['all'],
33
+ validationGroups: availableGroups,
34
+ initial: 'none',
35
+ expectedGroups: [],
36
+ },
37
+ {
38
+ name: 'keeps current groups and applies include then exclude',
39
+ currentValidationGroups: ['all'],
40
+ validationGroups: availableGroups,
41
+ groups: { include: ['draft', 'all'], exclude: ['all'] },
42
+ expectedGroups: ['draft'],
43
+ },
44
+ {
45
+ name: 'retains unknown group names for authoritative configuration checks',
46
+ currentValidationGroups: ['all'],
47
+ validationGroups: availableGroups,
48
+ groups: { include: ['not-configured'] },
49
+ expectedGroups: ['all', 'not-configured'],
50
+ },
51
+ {
52
+ name: 'suppresses duplicate includes while preserving legacy current duplicates',
53
+ currentValidationGroups: ['draft', 'draft'],
54
+ validationGroups: availableGroups,
55
+ groups: { include: ['draft', 'publish'], exclude: ['draft'] },
56
+ expectedGroups: ['draft', 'publish'],
57
+ },
58
+ {
59
+ name: 'supports the deprecated empty alias',
60
+ currentValidationGroups: ['all'],
61
+ validationGroups: availableGroups,
62
+ initial: 'empty',
63
+ expectedGroups: [],
64
+ expectedDiagnosticCodes: ['validation-group-initial-empty-deprecated'],
65
+ },
66
+ {
67
+ name: 'applies the operation exact group set last',
68
+ currentValidationGroups: ['all'],
69
+ validationGroups: availableGroups,
70
+ initial: 'none',
71
+ groups: { include: ['draft'] },
72
+ operationEnabledValidationGroups: ['publish', 'publish'],
73
+ expectedGroups: ['publish'],
74
+ },
75
+ {
76
+ name: 'preserves an exact empty operation set',
77
+ currentValidationGroups: ['all'],
78
+ validationGroups: availableGroups,
79
+ operationEnabledValidationGroups: [],
80
+ expectedGroups: [],
81
+ },
82
+ ];
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1ncm91cHMuZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0aW9uLWdyb3Vwcy5maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFlQSxNQUFNLGVBQWUsR0FBeUI7SUFDNUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRTtJQUNoRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRTtJQUNqRSxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFO0lBQ3JFLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUU7Q0FDMUUsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ1UsUUFBQSxrQ0FBa0MsR0FBd0M7SUFDckY7UUFDRSxJQUFJLEVBQUUsb0NBQW9DO1FBQzFDLHVCQUF1QixFQUFFLEVBQUU7UUFDM0IsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxjQUFjLEVBQUUsRUFBRTtLQUNuQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLHVEQUF1RDtRQUM3RCx1QkFBdUIsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxnQkFBZ0IsRUFBRSxlQUFlO1FBQ2pDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsY0FBYyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO0tBQ3BEO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLHVCQUF1QixFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2hDLGdCQUFnQixFQUFFLGVBQWU7UUFDakMsT0FBTyxFQUFFLE1BQU07UUFDZixjQUFjLEVBQUUsRUFBRTtLQUNuQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLHVEQUF1RDtRQUM3RCx1QkFBdUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQyxnQkFBZ0IsRUFBRSxlQUFlO1FBQ2pDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2RCxjQUFjLEVBQUUsQ0FBQyxPQUFPLENBQUM7S0FDMUI7SUFDRDtRQUNFLElBQUksRUFBRSxvRUFBb0U7UUFDMUUsdUJBQXVCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEMsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ3ZDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztLQUMxQztJQUNEO1FBQ0UsSUFBSSxFQUFFLDBFQUEwRTtRQUNoRix1QkFBdUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDM0MsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDN0QsY0FBYyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztLQUNyQztJQUNEO1FBQ0UsSUFBSSxFQUFFLHFDQUFxQztRQUMzQyx1QkFBdUIsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQyxnQkFBZ0IsRUFBRSxlQUFlO1FBQ2pDLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLGNBQWMsRUFBRSxFQUFFO1FBQ2xCLHVCQUF1QixFQUFFLENBQUMsMkNBQTJDLENBQUM7S0FDdkU7SUFDRDtRQUNFLElBQUksRUFBRSw0Q0FBNEM7UUFDbEQsdUJBQXVCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEMsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxPQUFPLEVBQUUsTUFBTTtRQUNmLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLGdDQUFnQyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUN4RCxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUM7S0FDNUI7SUFDRDtRQUNFLElBQUksRUFBRSx3Q0FBd0M7UUFDOUMsdUJBQXVCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEMsZ0JBQWdCLEVBQUUsZUFBZTtRQUNqQyxnQ0FBZ0MsRUFBRSxFQUFFO1FBQ3BDLGNBQWMsRUFBRSxFQUFFO0tBQ25CO0NBQ0YsQ0FBQyJ9
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VALIDATION_GROUP_UNKNOWN_INITIAL_DIAGNOSTIC = exports.VALIDATION_GROUP_EMPTY_INITIAL_DIAGNOSTIC = exports.formValidationGroupsChangeInitial = void 0;
4
+ exports.calculateValidationGroups = calculateValidationGroups;
5
+ const form_model_1 = require("./form.model");
6
+ /** Initial source used by a validation-group change. */
7
+ exports.formValidationGroupsChangeInitial = [...form_model_1.formValidationGroupMembership, 'current', 'empty'];
8
+ exports.VALIDATION_GROUP_EMPTY_INITIAL_DIAGNOSTIC = 'validation-group-initial-empty-deprecated';
9
+ exports.VALIDATION_GROUP_UNKNOWN_INITIAL_DIAGNOSTIC = 'validation-group-initial-unknown';
10
+ function describeUnknownInitial(value) {
11
+ if (typeof value === 'string') {
12
+ const maxLength = 64;
13
+ const bounded = value.length > maxLength ? `${value.slice(0, maxLength)}...` : value;
14
+ return JSON.stringify(bounded);
15
+ }
16
+ if (value === null || typeof value === 'number' || typeof value === 'boolean') {
17
+ return String(value);
18
+ }
19
+ return `[${Array.isArray(value) ? 'array' : typeof value}]`;
20
+ }
21
+ /**
22
+ * Fold one validation-group change using the historical Angular semantics.
23
+ *
24
+ * Important compatibility behavior:
25
+ * - an empty resulting array is preserved (ValidatorsSupport interprets it as
26
+ * all validators);
27
+ * - `none`/legacy `empty` start from an empty array, while the configured
28
+ * `none` group is represented by the literal group name `none`;
29
+ * - includes append only missing names and excludes remove the first present
30
+ * occurrence, matching the original client implementation;
31
+ * - unknown names are retained for the authoritative caller to diagnose;
32
+ * - an operation group array, when supplied, replaces the folded array last.
33
+ */
34
+ function calculateValidationGroups(currentValidationGroups, validationGroups, initial = 'current', groups, operationEnabledValidationGroups) {
35
+ let enabledNames = [...currentValidationGroups];
36
+ const diagnostics = [];
37
+ switch (initial) {
38
+ case 'all':
39
+ enabledNames = Object.keys(validationGroups);
40
+ break;
41
+ case 'none':
42
+ enabledNames = [];
43
+ break;
44
+ case 'empty':
45
+ enabledNames = [];
46
+ diagnostics.push({
47
+ code: exports.VALIDATION_GROUP_EMPTY_INITIAL_DIAGNOSTIC,
48
+ severity: 'warning',
49
+ message: "Validation-group initial state 'empty' is deprecated; use 'none'.",
50
+ });
51
+ break;
52
+ case 'current':
53
+ break;
54
+ default:
55
+ diagnostics.push({
56
+ code: exports.VALIDATION_GROUP_UNKNOWN_INITIAL_DIAGNOSTIC,
57
+ severity: 'error',
58
+ message: `The validation-group initial state ${describeUnknownInitial(initial)} is not supported.`,
59
+ });
60
+ }
61
+ for (const name of groups?.include ?? []) {
62
+ if (!enabledNames.includes(name)) {
63
+ enabledNames.push(name);
64
+ }
65
+ }
66
+ for (const name of groups?.exclude ?? []) {
67
+ const index = enabledNames.indexOf(name);
68
+ if (index >= 0) {
69
+ enabledNames.splice(index, 1);
70
+ }
71
+ }
72
+ if (operationEnabledValidationGroups !== undefined) {
73
+ enabledNames = [];
74
+ for (const name of operationEnabledValidationGroups) {
75
+ if (!enabledNames.includes(name)) {
76
+ enabledNames.push(name);
77
+ }
78
+ }
79
+ }
80
+ return { enabledValidationGroups: enabledNames, diagnostics };
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1ncm91cHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmFsaWRhdGlvbi92YWxpZGF0aW9uLWdyb3Vwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpREEsOERBMERDO0FBM0dELDZDQUlzQjtBQUd0Qix3REFBd0Q7QUFDM0MsUUFBQSxpQ0FBaUMsR0FBRyxDQUFDLEdBQUcsMENBQTZCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBVSxDQUFDO0FBYXBHLFFBQUEseUNBQXlDLEdBQUcsMkNBQW9ELENBQUM7QUFDakcsUUFBQSwyQ0FBMkMsR0FBRyxrQ0FBMkMsQ0FBQztBQUV2RyxTQUFTLHNCQUFzQixDQUFDLEtBQWM7SUFDNUMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5RSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztBQUM5RCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQ3ZDLHVCQUEwQyxFQUMxQyxnQkFBZ0QsRUFDaEQsVUFBNkMsU0FBUyxFQUN0RCxNQUFpQyxFQUNqQyxnQ0FBb0Q7SUFFcEQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQWlDLEVBQUUsQ0FBQztJQUVyRCxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssS0FBSztZQUNSLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDN0MsTUFBTTtRQUNSLEtBQUssTUFBTTtZQUNULFlBQVksR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTTtRQUNSLEtBQUssT0FBTztZQUNWLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDbEIsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsaURBQXlDO2dCQUMvQyxRQUFRLEVBQUUsU0FBUztnQkFDbkIsT0FBTyxFQUFFLG1FQUFtRTthQUM3RSxDQUFDLENBQUM7WUFDSCxNQUFNO1FBQ1IsS0FBSyxTQUFTO1lBQ1osTUFBTTtRQUNSO1lBQ0UsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDZixJQUFJLEVBQUUsbURBQTJDO2dCQUNqRCxRQUFRLEVBQUUsT0FBTztnQkFDakIsT0FBTyxFQUFFLHNDQUFzQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CO2FBQ25HLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksZ0NBQWdDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDbkQsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sSUFBSSxJQUFJLGdDQUFnQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ2hFLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@researchdatabox/sails-ng-common",
3
- "version": "5.0.3",
3
+ "version": "5.0.4-beta.12498",
4
4
  "description": "Common models shared between Sails API endpoints and client-side Angular code",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -38,19 +38,19 @@
38
38
  "node": ">=20.0.0"
39
39
  },
40
40
  "devDependencies": {
41
- "@tsconfig/node24": "24.0.4",
41
+ "@tsconfig/node24": "24.0.5",
42
42
  "@types/chai": "5.2.3",
43
- "@types/lodash": "4.17.24",
43
+ "@types/lodash": "4.17.25",
44
44
  "@types/lodash-es": "4.17.12",
45
- "@types/luxon": "3.7.1",
45
+ "@types/luxon": "3.7.5",
46
46
  "@types/mocha": "10.0.10",
47
- "@types/node": "24.12.4",
47
+ "@types/node": "26.3.0",
48
48
  "chai": "6.2.2",
49
- "jsonata": "2.2.1",
50
- "mocha": "11.7.6",
49
+ "jsonata": "2.2.2",
50
+ "mocha": "11.8.0",
51
51
  "mocha-junit-reporter": "2.2.1",
52
52
  "nyc": "18.0.0",
53
- "serialize-javascript": "7.0.5",
53
+ "serialize-javascript": "7.1.0",
54
54
  "typescript": "5.9.3"
55
55
  },
56
56
  "nyc": {
@@ -63,7 +63,11 @@
63
63
  "include": [
64
64
  "**/src/handlebars-helpers.*",
65
65
  "**/src/config/names/**/*.*",
66
- "**/src/validation/**/*.*"
66
+ "**/src/validation/**/*.*",
67
+ "**/src/internal/plain-record.*",
68
+ "**/src/record-concurrency.model.*",
69
+ "**/src/record-diff.*",
70
+ "**/src/record-save.model.*"
67
71
  ],
68
72
  "reporter": [
69
73
  "lcov",
@@ -73,10 +77,11 @@
73
77
  },
74
78
  "dependencies": {
75
79
  "@jsonjoy.com/json-pointer": "18.28.0",
80
+ "handlebars": "4.7.9",
76
81
  "lodash": "4.18.1",
77
82
  "lodash-es": "4.18.1",
78
83
  "luxon": "3.7.2",
79
- "marked": "18.0.5",
84
+ "marked": "18.0.11",
80
85
  "ts-json-schema-generator": "2.9.0"
81
86
  },
82
87
  "overrides": {
@@ -87,7 +92,7 @@
87
92
  }
88
93
  },
89
94
  "peerDependencies": {
90
- "jsonata": "2.2.1"
95
+ "jsonata": "2.2.2"
91
96
  },
92
97
  "publishConfig": {
93
98
  "access": "public",