@tinacms/graphql 2.4.2 → 2.4.4
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/database/datalayer.d.ts +3 -0
- package/dist/index.js +62 -21
- package/package.json +4 -4
|
@@ -41,6 +41,7 @@ export type IndexDefinition = {
|
|
|
41
41
|
export type PadDefinition = {
|
|
42
42
|
fillString: string;
|
|
43
43
|
maxLength: number;
|
|
44
|
+
decimalPrecision?: number;
|
|
44
45
|
};
|
|
45
46
|
export type FilterOperand = string | number | boolean | string[] | number[];
|
|
46
47
|
export type FilterCondition = {
|
|
@@ -53,6 +54,8 @@ export declare const REFS_COLLECTIONS_SORT_KEY = "__refs__";
|
|
|
53
54
|
export declare const REFS_REFERENCE_FIELD = "__tina_ref__";
|
|
54
55
|
export declare const REFS_PATH_FIELD = "__tina_ref_path__";
|
|
55
56
|
export declare const DEFAULT_NUMERIC_LPAD = 4;
|
|
57
|
+
export declare const DEFAULT_NUMERIC_DECIMAL_PRECISION = 3;
|
|
58
|
+
export declare const DEFAULT_NUMERIC_PAD: PadDefinition;
|
|
56
59
|
export declare const coerceFilterChainOperands: (filterChain: (BinaryFilter | TernaryFilter)[], escapeString?: StringEscaper) => (BinaryFilter | TernaryFilter)[];
|
|
57
60
|
export declare const makeFilter: ({ filterChain, }: {
|
|
58
61
|
filterChain?: (BinaryFilter | TernaryFilter)[];
|
package/dist/index.js
CHANGED
|
@@ -3028,14 +3028,31 @@ var validateField = async (field) => {
|
|
|
3028
3028
|
});
|
|
3029
3029
|
await schema.validate(field);
|
|
3030
3030
|
const validField = await schema.cast(field);
|
|
3031
|
+
assertCheckboxGroupIsList(validField);
|
|
3031
3032
|
return validField;
|
|
3032
3033
|
};
|
|
3034
|
+
var assertCheckboxGroupIsList = (field) => {
|
|
3035
|
+
if (field.ui?.component === "checkbox-group" && !field.list) {
|
|
3036
|
+
throw new Error(
|
|
3037
|
+
`Field "${field.name}" uses "checkbox-group" without list: true at ${field.namespace.join(
|
|
3038
|
+
"."
|
|
3039
|
+
)}. Add list: true or use "select" instead.`
|
|
3040
|
+
);
|
|
3041
|
+
}
|
|
3042
|
+
if (field.type === "object" || field.type === "rich-text") {
|
|
3043
|
+
const nested = [
|
|
3044
|
+
...field.type === "object" ? field.fields ?? [] : [],
|
|
3045
|
+
...(field.templates ?? []).flatMap((template) => template.fields ?? [])
|
|
3046
|
+
];
|
|
3047
|
+
nested.forEach(assertCheckboxGroupIsList);
|
|
3048
|
+
}
|
|
3049
|
+
};
|
|
3033
3050
|
|
|
3034
3051
|
// package.json
|
|
3035
3052
|
var package_default = {
|
|
3036
3053
|
name: "@tinacms/graphql",
|
|
3037
3054
|
type: "module",
|
|
3038
|
-
version: "2.4.
|
|
3055
|
+
version: "2.4.4",
|
|
3039
3056
|
main: "dist/index.js",
|
|
3040
3057
|
module: "./dist/index.js",
|
|
3041
3058
|
files: [
|
|
@@ -3808,14 +3825,39 @@ var REFS_COLLECTIONS_SORT_KEY = "__refs__";
|
|
|
3808
3825
|
var REFS_REFERENCE_FIELD = "__tina_ref__";
|
|
3809
3826
|
var REFS_PATH_FIELD = "__tina_ref_path__";
|
|
3810
3827
|
var DEFAULT_NUMERIC_LPAD = 4;
|
|
3828
|
+
var DEFAULT_NUMERIC_DECIMAL_PRECISION = 3;
|
|
3829
|
+
var DEFAULT_NUMERIC_PAD = {
|
|
3830
|
+
fillString: "0",
|
|
3831
|
+
maxLength: DEFAULT_NUMERIC_LPAD + 1 + DEFAULT_NUMERIC_DECIMAL_PRECISION,
|
|
3832
|
+
decimalPrecision: DEFAULT_NUMERIC_DECIMAL_PRECISION
|
|
3833
|
+
};
|
|
3834
|
+
var ensureUTC = (value) => {
|
|
3835
|
+
const s = String(value);
|
|
3836
|
+
if (s.includes("T") && !/[Zz]|[+-]\d{2}:\d{2}$/.test(s)) {
|
|
3837
|
+
return `${s}Z`;
|
|
3838
|
+
}
|
|
3839
|
+
return s;
|
|
3840
|
+
};
|
|
3841
|
+
var parseDatetimeUTC = (value) => {
|
|
3842
|
+
const n = Number(value);
|
|
3843
|
+
const d = Number.isNaN(n) ? new Date(ensureUTC(String(value))) : new Date(n);
|
|
3844
|
+
return Number.isNaN(d.getTime()) ? String(value) : d.toISOString();
|
|
3845
|
+
};
|
|
3846
|
+
var padValue = (val, pad) => {
|
|
3847
|
+
if (pad.decimalPrecision !== void 0) {
|
|
3848
|
+
const n = Number(val);
|
|
3849
|
+
if (!Number.isNaN(n)) {
|
|
3850
|
+
return n.toFixed(pad.decimalPrecision).padStart(pad.maxLength, pad.fillString);
|
|
3851
|
+
}
|
|
3852
|
+
}
|
|
3853
|
+
return String(val).padStart(pad.maxLength, pad.fillString);
|
|
3854
|
+
};
|
|
3811
3855
|
var applyPadding = (input, pad) => {
|
|
3812
3856
|
if (pad) {
|
|
3813
3857
|
if (Array.isArray(input)) {
|
|
3814
|
-
return input.map(
|
|
3815
|
-
(val) => String(val).padStart(pad.maxLength, pad.fillString)
|
|
3816
|
-
);
|
|
3858
|
+
return input.map((val) => padValue(val, pad));
|
|
3817
3859
|
} else {
|
|
3818
|
-
return
|
|
3860
|
+
return padValue(input, pad);
|
|
3819
3861
|
}
|
|
3820
3862
|
}
|
|
3821
3863
|
return input;
|
|
@@ -3854,7 +3896,7 @@ var makeKeyForField = (definition, data, stringEscaper2, maxStringLength = 100)
|
|
|
3854
3896
|
const rawValue = data[field.name];
|
|
3855
3897
|
let resolvedValue;
|
|
3856
3898
|
if (field.type === "datetime") {
|
|
3857
|
-
resolvedValue =
|
|
3899
|
+
resolvedValue = parseDatetimeUTC(rawValue);
|
|
3858
3900
|
} else {
|
|
3859
3901
|
if (field.type === "string") {
|
|
3860
3902
|
const escapedString = stringEscaper2(rawValue);
|
|
@@ -3885,23 +3927,23 @@ var coerceFilterChainOperands = (filterChain, escapeString = stringEscaper) => {
|
|
|
3885
3927
|
if (filter.leftOperand !== void 0) {
|
|
3886
3928
|
result.push({
|
|
3887
3929
|
...filter,
|
|
3888
|
-
rightOperand:
|
|
3889
|
-
leftOperand:
|
|
3930
|
+
rightOperand: parseDatetimeUTC(filter.rightOperand),
|
|
3931
|
+
leftOperand: parseDatetimeUTC(
|
|
3890
3932
|
filter.leftOperand
|
|
3891
|
-
)
|
|
3933
|
+
)
|
|
3892
3934
|
});
|
|
3893
3935
|
} else {
|
|
3894
3936
|
if (Array.isArray(filter.rightOperand)) {
|
|
3895
3937
|
result.push({
|
|
3896
3938
|
...filter,
|
|
3897
3939
|
rightOperand: filter.rightOperand.map(
|
|
3898
|
-
(operand) =>
|
|
3940
|
+
(operand) => parseDatetimeUTC(operand)
|
|
3899
3941
|
)
|
|
3900
3942
|
});
|
|
3901
3943
|
} else {
|
|
3902
3944
|
result.push({
|
|
3903
3945
|
...filter,
|
|
3904
|
-
rightOperand:
|
|
3946
|
+
rightOperand: parseDatetimeUTC(filter.rightOperand)
|
|
3905
3947
|
});
|
|
3906
3948
|
}
|
|
3907
3949
|
}
|
|
@@ -4046,13 +4088,11 @@ var makeFilter = ({
|
|
|
4046
4088
|
} else if (dataType === "datetime") {
|
|
4047
4089
|
operands = resolvedValues.map((resolvedValue) => {
|
|
4048
4090
|
if (isList) {
|
|
4049
|
-
return resolvedValue.map(
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
});
|
|
4091
|
+
return resolvedValue.map(
|
|
4092
|
+
(listValue) => parseDatetimeUTC(listValue)
|
|
4093
|
+
);
|
|
4053
4094
|
}
|
|
4054
|
-
|
|
4055
|
-
return isNaN(coerced) ? Number(resolvedValue) : coerced;
|
|
4095
|
+
return parseDatetimeUTC(resolvedValue);
|
|
4056
4096
|
});
|
|
4057
4097
|
} else if (dataType === "boolean") {
|
|
4058
4098
|
operands = resolvedValues.map((resolvedValue) => {
|
|
@@ -4138,7 +4178,7 @@ var makeFilterChain = ({
|
|
|
4138
4178
|
rightOperand: filterExpression[key1],
|
|
4139
4179
|
operator: inferOperatorFromFilter(key1),
|
|
4140
4180
|
type: _type,
|
|
4141
|
-
pad: _type === "number" ?
|
|
4181
|
+
pad: _type === "number" ? DEFAULT_NUMERIC_PAD : void 0
|
|
4142
4182
|
});
|
|
4143
4183
|
} else if (key1 && key2) {
|
|
4144
4184
|
const leftFilterOperator = getFilterOperator(filterExpression, "gt") || getFilterOperator(filterExpression, "gte") || getFilterOperator(filterExpression, "after") || void 0;
|
|
@@ -4161,7 +4201,7 @@ var makeFilterChain = ({
|
|
|
4161
4201
|
leftOperator: inferOperatorFromFilter(leftFilterOperator),
|
|
4162
4202
|
rightOperator: inferOperatorFromFilter(rightFilterOperator),
|
|
4163
4203
|
type: _type,
|
|
4164
|
-
pad: _type === "number" ?
|
|
4204
|
+
pad: _type === "number" ? DEFAULT_NUMERIC_PAD : void 0
|
|
4165
4205
|
});
|
|
4166
4206
|
} else {
|
|
4167
4207
|
throw new Error(
|
|
@@ -7292,7 +7332,7 @@ var Database = class {
|
|
|
7292
7332
|
name: field.name,
|
|
7293
7333
|
type: field.type,
|
|
7294
7334
|
list: !!field.list,
|
|
7295
|
-
pad: field.type === "number" ?
|
|
7335
|
+
pad: field.type === "number" ? DEFAULT_NUMERIC_PAD : void 0
|
|
7296
7336
|
}
|
|
7297
7337
|
]
|
|
7298
7338
|
};
|
|
@@ -7308,7 +7348,8 @@ var Database = class {
|
|
|
7308
7348
|
return {
|
|
7309
7349
|
name: indexField.name,
|
|
7310
7350
|
type: field?.type,
|
|
7311
|
-
list: !!field?.list
|
|
7351
|
+
list: !!field?.list,
|
|
7352
|
+
pad: field?.type === "number" ? DEFAULT_NUMERIC_PAD : void 0
|
|
7312
7353
|
};
|
|
7313
7354
|
})
|
|
7314
7355
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinacms/graphql",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.4.
|
|
4
|
+
"version": "2.4.4",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
7
7
|
"files": [
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"normalize-path": "^3.0.0",
|
|
44
44
|
"readable-stream": "^4.7.0",
|
|
45
45
|
"yup": "^1.6.1",
|
|
46
|
-
"@tinacms/
|
|
47
|
-
"@tinacms/
|
|
46
|
+
"@tinacms/mdx": "2.1.6",
|
|
47
|
+
"@tinacms/schema-tools": "2.8.1"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"registry": "https://registry.npmjs.org"
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"vite": "^4.5.9",
|
|
73
73
|
"vitest": "^0.32.4",
|
|
74
74
|
"zod": "^3.24.2",
|
|
75
|
-
"@tinacms/schema-tools": "2.8.
|
|
75
|
+
"@tinacms/schema-tools": "2.8.1",
|
|
76
76
|
"@tinacms/scripts": "1.6.1"
|
|
77
77
|
},
|
|
78
78
|
"scripts": {
|