@prismicio/types-internal 2.2.0-alpha.0 → 2.2.0-alpha.10

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 (167) hide show
  1. package/lib/common/Asset.d.ts +16 -0
  2. package/lib/common/Asset.js +11 -0
  3. package/lib/common/Embed.d.ts +15 -0
  4. package/lib/common/Embed.js +10 -0
  5. package/lib/common/index.d.ts +2 -0
  6. package/lib/common/index.js +2 -0
  7. package/lib/content/Document.d.ts +40 -40
  8. package/lib/content/fields/GroupContent.d.ts +12 -12
  9. package/lib/content/fields/GroupContent.js +11 -4
  10. package/lib/content/fields/WidgetContent.d.ts +56 -56
  11. package/lib/content/fields/nestable/NestableContent.d.ts +7 -7
  12. package/lib/content/fields/nestable/RichTextContent/Blocks.d.ts +12 -12
  13. package/lib/content/fields/nestable/RichTextContent/index.d.ts +9 -9
  14. package/lib/content/fields/slices/Slice/CompositeSliceContent.d.ts +14 -14
  15. package/lib/content/fields/slices/Slice/RepeatableContent.d.ts +5 -5
  16. package/lib/content/fields/slices/Slice/SharedSliceContent.d.ts +14 -14
  17. package/lib/content/fields/slices/Slice/SimpleSliceContent.d.ts +14 -14
  18. package/lib/content/fields/slices/Slice/index.d.ts +30 -30
  19. package/lib/content/fields/slices/SliceItem.d.ts +30 -30
  20. package/lib/content/fields/slices/SlicesContent.d.ts +42 -42
  21. package/lib/customtypes/CustomType.d.ts +2 -0
  22. package/lib/customtypes/CustomType.js +8 -1
  23. package/lib/customtypes/widgets/nestable/NestableWidget.d.ts +0 -157
  24. package/lib/customtypes/widgets/nestable/NestableWidget.js +1 -17
  25. package/lib/import/converters/Document.d.ts +4 -2
  26. package/lib/import/converters/Document.js +9 -7
  27. package/lib/import/converters/fields/UID.d.ts +3 -0
  28. package/lib/import/converters/fields/UID.js +12 -0
  29. package/lib/import/converters/fields/index.d.ts +1 -0
  30. package/lib/import/converters/fields/index.js +1 -0
  31. package/lib/import/converters/fields/nestable/Boolean.d.ts +3 -0
  32. package/lib/import/converters/fields/nestable/Boolean.js +12 -0
  33. package/lib/import/converters/fields/nestable/Color.js +9 -6
  34. package/lib/import/converters/fields/nestable/Date.d.ts +1 -1
  35. package/lib/import/converters/fields/nestable/Date.js +5 -5
  36. package/lib/import/converters/fields/nestable/Embed.d.ts +4 -0
  37. package/lib/import/converters/fields/nestable/Embed.js +32 -0
  38. package/lib/import/converters/fields/nestable/GeooPoint.d.ts +3 -0
  39. package/lib/import/converters/fields/nestable/GeooPoint.js +15 -0
  40. package/lib/import/converters/fields/nestable/Image.d.ts +4 -0
  41. package/lib/import/converters/fields/nestable/Image.js +55 -0
  42. package/lib/import/converters/fields/nestable/Link.d.ts +4 -0
  43. package/lib/import/converters/fields/nestable/Link.js +70 -0
  44. package/lib/import/converters/fields/nestable/Nestable.d.ts +3 -1
  45. package/lib/import/converters/fields/nestable/Nestable.js +11 -1
  46. package/lib/import/converters/fields/nestable/Number.js +9 -6
  47. package/lib/import/converters/fields/nestable/Select.js +9 -6
  48. package/lib/import/converters/fields/nestable/Text.js +9 -6
  49. package/lib/import/converters/fields/nestable/Timestamp.d.ts +1 -1
  50. package/lib/import/converters/fields/nestable/Timestamp.js +9 -6
  51. package/lib/import/converters/fields/nestable/index.d.ts +5 -0
  52. package/lib/import/converters/fields/nestable/index.js +5 -0
  53. package/lib/import/validators/Document.d.ts +4 -4
  54. package/lib/import/validators/Document.js +45 -39
  55. package/lib/import/validators/fields/ImportContent.d.ts +5 -0
  56. package/lib/import/validators/fields/ImportContent.js +21 -0
  57. package/lib/import/validators/fields/ImportField.d.ts +125 -0
  58. package/lib/import/validators/fields/ImportField.js +24 -0
  59. package/lib/import/validators/fields/UID.d.ts +6 -0
  60. package/lib/import/validators/fields/UID.js +15 -0
  61. package/lib/import/validators/fields/index.d.ts +1 -5
  62. package/lib/import/validators/fields/index.js +1 -0
  63. package/lib/import/validators/fields/nestable/Boolean.d.ts +6 -0
  64. package/lib/import/validators/fields/nestable/Boolean.js +6 -0
  65. package/lib/import/validators/fields/nestable/Color.d.ts +5 -4
  66. package/lib/import/validators/fields/nestable/Color.js +4 -4
  67. package/lib/import/validators/fields/nestable/Date.d.ts +5 -3
  68. package/lib/import/validators/fields/nestable/Date.js +4 -2
  69. package/lib/import/validators/fields/nestable/Embed.d.ts +10 -0
  70. package/lib/import/validators/fields/nestable/Embed.js +36 -0
  71. package/lib/import/validators/fields/nestable/GeoPoint.d.ts +13 -0
  72. package/lib/import/validators/fields/nestable/GeoPoint.js +13 -0
  73. package/lib/import/validators/fields/nestable/Image/Decoder.d.ts +26 -0
  74. package/lib/import/validators/fields/nestable/Image/Decoder.js +40 -0
  75. package/lib/import/validators/fields/nestable/Image/Validator.d.ts +37 -0
  76. package/lib/import/validators/fields/nestable/Image/Validator.js +26 -0
  77. package/lib/import/validators/fields/nestable/Image/index.d.ts +26 -0
  78. package/lib/import/validators/fields/nestable/Image/index.js +28 -0
  79. package/lib/import/validators/fields/nestable/Image/model.d.ts +18 -0
  80. package/lib/import/validators/fields/nestable/Image/model.js +2 -0
  81. package/lib/import/validators/fields/nestable/Image.d.ts +62 -0
  82. package/lib/import/validators/fields/nestable/Image.js +76 -0
  83. package/lib/import/validators/fields/nestable/Link.d.ts +38 -0
  84. package/lib/import/validators/fields/nestable/Link.js +35 -0
  85. package/lib/import/validators/fields/nestable/Nestable.d.ts +120 -4
  86. package/lib/import/validators/fields/nestable/Nestable.js +59 -28
  87. package/lib/import/validators/fields/nestable/Number.d.ts +16 -9
  88. package/lib/import/validators/fields/nestable/Number.js +5 -4
  89. package/lib/import/validators/fields/nestable/Select.d.ts +15 -8
  90. package/lib/import/validators/fields/nestable/Select.js +4 -2
  91. package/lib/import/validators/fields/nestable/Text.d.ts +6 -3
  92. package/lib/import/validators/fields/nestable/Text.js +2 -1
  93. package/lib/import/validators/fields/nestable/Timestamp.d.ts +5 -3
  94. package/lib/import/validators/fields/nestable/Timestamp.js +4 -2
  95. package/lib/import/validators/fields/nestable/index.d.ts +6 -0
  96. package/lib/import/validators/fields/nestable/index.js +6 -0
  97. package/lib/utils/DocumentId.d.ts +1 -0
  98. package/lib/utils/DocumentId.js +7 -0
  99. package/lib/utils/Objects.d.ts +1 -0
  100. package/lib/utils/Objects.js +5 -1
  101. package/lib/validators/BasicTypes.d.ts +8 -0
  102. package/lib/validators/BasicTypes.js +19 -1
  103. package/lib/validators/DefaultOrElse.d.ts +5 -0
  104. package/lib/validators/DefaultOrElse.js +21 -0
  105. package/lib/validators/NumberRange.d.ts +32 -0
  106. package/lib/validators/NumberRange.js +40 -0
  107. package/lib/validators/function.d.ts +20 -0
  108. package/lib/validators/function.js +41 -1
  109. package/lib/validators/index.d.ts +2 -1
  110. package/lib/validators/index.js +4 -2
  111. package/package.json +3 -2
  112. package/src/common/Asset.ts +25 -0
  113. package/src/common/Embed.ts +22 -0
  114. package/src/common/index.ts +2 -0
  115. package/src/content/fields/GroupContent.ts +9 -5
  116. package/src/customtypes/CustomType.ts +13 -0
  117. package/src/customtypes/widgets/nestable/NestableWidget.ts +0 -17
  118. package/src/import/converters/Document.ts +22 -11
  119. package/src/import/converters/fields/UID.ts +13 -0
  120. package/src/import/converters/fields/index.ts +1 -0
  121. package/src/import/converters/fields/nestable/Boolean.ts +13 -0
  122. package/src/import/converters/fields/nestable/Color.ts +7 -5
  123. package/src/import/converters/fields/nestable/Date.ts +12 -13
  124. package/src/import/converters/fields/nestable/Embed.ts +37 -0
  125. package/src/import/converters/fields/nestable/GeooPoint.ts +16 -0
  126. package/src/import/converters/fields/nestable/Image.ts +73 -0
  127. package/src/import/converters/fields/nestable/Link.ts +77 -0
  128. package/src/import/converters/fields/nestable/Nestable.ts +19 -0
  129. package/src/import/converters/fields/nestable/Number.ts +7 -5
  130. package/src/import/converters/fields/nestable/Select.ts +7 -5
  131. package/src/import/converters/fields/nestable/Text.ts +7 -5
  132. package/src/import/converters/fields/nestable/Timestamp.ts +8 -6
  133. package/src/import/converters/fields/nestable/index.ts +5 -0
  134. package/src/import/validators/Document.ts +87 -63
  135. package/src/import/validators/fields/ImportContent.ts +30 -0
  136. package/src/import/validators/fields/ImportField.ts +25 -0
  137. package/src/import/validators/fields/UID.ts +27 -0
  138. package/src/import/validators/fields/index.ts +1 -7
  139. package/src/import/validators/fields/nestable/Boolean.ts +7 -0
  140. package/src/import/validators/fields/nestable/Color.ts +23 -23
  141. package/src/import/validators/fields/nestable/Date.ts +26 -27
  142. package/src/import/validators/fields/nestable/Embed.ts +54 -0
  143. package/src/import/validators/fields/nestable/GeoPoint.ts +21 -0
  144. package/src/import/validators/fields/nestable/Image/Decoder.ts +61 -0
  145. package/src/import/validators/fields/nestable/Image/Validator.ts +35 -0
  146. package/src/import/validators/fields/nestable/Image/index.ts +45 -0
  147. package/src/import/validators/fields/nestable/Image/model.ts +18 -0
  148. package/src/import/validators/fields/nestable/Link.ts +54 -0
  149. package/src/import/validators/fields/nestable/Nestable.ts +65 -26
  150. package/src/import/validators/fields/nestable/Number.ts +32 -30
  151. package/src/import/validators/fields/nestable/Select.ts +32 -30
  152. package/src/import/validators/fields/nestable/Text.ts +6 -6
  153. package/src/import/validators/fields/nestable/Timestamp.ts +29 -26
  154. package/src/import/validators/fields/nestable/index.ts +6 -0
  155. package/src/utils/DocumentId.ts +9 -0
  156. package/src/utils/Objects.ts +10 -0
  157. package/src/validators/BasicTypes.ts +48 -0
  158. package/src/validators/DefaultOrElse.ts +24 -0
  159. package/src/validators/NumberRange.ts +51 -0
  160. package/src/validators/function.ts +44 -0
  161. package/src/validators/index.ts +2 -1
  162. package/lib/import/converters/fields/utils.d.ts +0 -1
  163. package/lib/import/converters/fields/utils.js +0 -10
  164. package/lib/validators/NullOrT.d.ts +0 -2
  165. package/lib/validators/NullOrT.js +0 -13
  166. package/src/import/converters/fields/utils.ts +0 -7
  167. package/src/validators/NullOrT.ts +0 -18
@@ -0,0 +1,24 @@
1
+ import { isRight } from "fp-ts/lib/Either"
2
+ import * as t from "io-ts"
3
+
4
+ import { EmptyArray, EmptyObject } from "./BasicTypes"
5
+
6
+ export const DefaultOrElse = <I, A, O = A>(inputValidator: t.Type<I>) => {
7
+ return (codec: t.Type<A, O>) =>
8
+ new t.Type<A | null, O | undefined>(
9
+ "NullOrT",
10
+ (u: unknown): u is A | null => null === u || codec.is(u),
11
+ (u: unknown) => {
12
+ if (isRight(inputValidator.decode(u))) return t.success(null)
13
+ return codec.decode(u)
14
+ },
15
+ (chunk) => (chunk ? codec.encode(chunk) : undefined),
16
+ )
17
+ }
18
+
19
+ export const NullOrElse = <A, O = A>(codec: t.Type<A, O>) =>
20
+ DefaultOrElse<null, A, O>(t.null)(codec)
21
+ export const EmptyObjectOrElse = <A, O = A>(codec: t.Type<A, O>) =>
22
+ DefaultOrElse<Record<never, never>, A, O>(EmptyObject)(codec)
23
+ export const EmptyArrayOrElse = <A, O = A>(codec: t.Type<A, O>) =>
24
+ DefaultOrElse<never[], A, O>(EmptyArray)(codec)
@@ -0,0 +1,51 @@
1
+ import * as t from "io-ts"
2
+
3
+ import { Number } from "./BasicTypes"
4
+
5
+ /**
6
+ * Creates a custom runtime type for validating that a number falls within a specified range.
7
+ *
8
+ * @param min - The minimum value of the range.
9
+ * @param max - The maximum value of the range.
10
+ * @param fieldName - The name of the field being validated (used in error messages).
11
+ * @returns A runtime type representing the number range validation.
12
+ *
13
+ * * @example
14
+ * // Creating a custom runtime type for age validation
15
+ * const AgeType = numberInRange(18, 99, 'Age');
16
+ *
17
+ * // Valid age
18
+ * const validAgeResult = AgeType.decode(25);
19
+ * if (t.isRight(validAgeResult)) {
20
+ * console.log('Valid age:', validAgeResult.right); // Output: Valid age: 25
21
+ * } else {
22
+ * console.error('Invalid age:', t.left(validAgeResult).map(t.reporter.report));
23
+ * }
24
+ *
25
+ * @example
26
+ * // Invalid age
27
+ * const invalidAgeResult = AgeType.decode(15);
28
+ * if (t.isRight(invalidAgeResult)) {
29
+ * console.log('Valid age:', invalidAgeResult.right);
30
+ * } else {
31
+ * console.error('Invalid age:', t.left(invalidAgeResult).map(t.reporter.report));
32
+ * }
33
+ */
34
+ export default (min: number, max: number, fieldName: string) =>
35
+ Number.pipe(
36
+ new t.Type<number, number, number>(
37
+ "numberInRange",
38
+ (u: unknown): u is number => Number.is(u),
39
+ (u: number, context) => {
40
+ if (u > max || u < min) {
41
+ return t.failure(
42
+ u,
43
+ context,
44
+ `${fieldName} must be a number between ${min} and ${max}`,
45
+ )
46
+ }
47
+ return t.success(u)
48
+ },
49
+ t.identity,
50
+ ),
51
+ )
@@ -1,6 +1,7 @@
1
1
  import { either } from "fp-ts"
2
2
  import { pipe } from "fp-ts/function"
3
3
  import * as t from "io-ts"
4
+ import { withValidate } from "io-ts-types"
4
5
  import { mapOutput } from "io-ts-types/mapOutput"
5
6
 
6
7
  export function nullable<A, O>(c: t.Type<A, O>) {
@@ -69,3 +70,46 @@ export function addType<A, O extends object, I, T extends string>(
69
70
  ): t.Type<A, O & { __TYPE__: T }, I> {
70
71
  return mapOutput(codec, (o) => ({ ...o, __TYPE__: t } as const))
71
72
  }
73
+
74
+ /**
75
+ * Returns a clone of the given codec that tries to find sub-error with message already set.
76
+ * If there is such error it just returns sub-errors array.
77
+ * If there is no such error it generates new error with given message.
78
+ *
79
+ * @example
80
+ * expect(
81
+ * withFallbackMessage(
82
+ * t.type({age: withMessage(t.number, () => 'Invalid child')}),
83
+ * () => "Invalid parent"
84
+ * )
85
+ * ).toSubsetEqualLeft([{message: "Invalid child"}])
86
+ * expect(
87
+ * withFallbackMessage(
88
+ * t.type({age: t.number}),
89
+ * () => "Invalid parent"
90
+ * )
91
+ * ).toSubsetEqualLeft([{message: "Invalid parent"}])
92
+ */
93
+ export function withFallbackMessage<C extends t.Any>(
94
+ codec: C,
95
+ message: (i: t.InputOf<C>, c: t.Context) => string,
96
+ ): C {
97
+ return withValidate(codec, (i, c) => {
98
+ return either.mapLeft((errors: t.Errors) => {
99
+ if (errors.find((error) => error.message)) {
100
+ return errors
101
+ }
102
+
103
+ return [
104
+ {
105
+ value: i,
106
+ context: c,
107
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
108
+ message: message(i, c),
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
110
+ actual: i,
111
+ },
112
+ ]
113
+ })(codec.validate(i, c))
114
+ })
115
+ }
@@ -2,13 +2,14 @@ export * from "./BasicTypes"
2
2
  export { default as DateFromString } from "./DateFromString"
3
3
  export { default as DateFromStringOrNumber } from "./DateFromStringOrNumber"
4
4
  export { default as DateFromTsMs } from "./DateFromTsMs"
5
+ export * from "./DefaultOrElse"
5
6
  export * as Function from "./function"
6
7
  export { default as IntFromNumber } from "./IntFromNumber"
7
8
  export { default as IntFromPixels } from "./IntFromPixels"
8
9
  export { default as NonEmptyString } from "./NonEmptyString"
9
10
  export { default as NonEmptyStringOrNull } from "./NonEmptyStringOrNull"
10
- export * from "./NullOrT"
11
11
  export { default as NumberOrNull } from "./NumberOrNull"
12
+ export { default as NumberRange } from "./NumberRange"
12
13
  export { default as StringFromBoolean } from "./StringFromBoolean"
13
14
  export { default as StringFromNumber } from "./StringFromNumber"
14
15
  export { default as StringOrNull } from "./StringOrNull"
@@ -1 +0,0 @@
1
- export declare const nullableConverter: <I, O>(value: I | null, converter: (value: I) => O) => O | undefined;
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nullableConverter = void 0;
4
- const nullableConverter = (value, converter) => {
5
- if (value === null)
6
- return undefined;
7
- else
8
- return converter(value);
9
- };
10
- exports.nullableConverter = nullableConverter;
@@ -1,2 +0,0 @@
1
- import * as t from "io-ts";
2
- export declare const NullOrT: <T, O = T>(codec: t.Type<T, T, unknown>) => (asO: (value: T | null) => O) => t.Type<O, O, unknown>;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NullOrT = void 0;
4
- const tslib_1 = require("tslib");
5
- const fp_ts_1 = require("fp-ts");
6
- const function_1 = require("fp-ts/function");
7
- const t = (0, tslib_1.__importStar)(require("io-ts"));
8
- const NullOrT = (codec) => {
9
- return (asO) => new t.Type(`NullOr${codec.name}`, (u) => t.null.is(u) || codec.is(u), (u) => {
10
- return (0, function_1.pipe)(t.union([t.null, codec]).decode(u), fp_ts_1.either.map((decoded) => asO(decoded)));
11
- }, (f) => f);
12
- };
13
- exports.NullOrT = NullOrT;
@@ -1,7 +0,0 @@
1
- export const nullableConverter = <I, O>(
2
- value: I | null,
3
- converter: (value: I) => O,
4
- ): O | undefined => {
5
- if (value === null) return undefined
6
- else return converter(value)
7
- }
@@ -1,18 +0,0 @@
1
- import { either } from "fp-ts"
2
- import { pipe } from "fp-ts/function"
3
- import * as t from "io-ts"
4
-
5
- export const NullOrT = <T, O = T>(codec: t.Type<T>) => {
6
- return (asO: (value: T | null) => O) =>
7
- new t.Type<O>(
8
- `NullOr${codec.name}`,
9
- (u: unknown): u is O => t.null.is(u) || codec.is(u),
10
- (u: unknown) => {
11
- return pipe(
12
- t.union([t.null, codec]).decode(u),
13
- either.map((decoded) => asO(decoded)),
14
- )
15
- },
16
- (f) => f,
17
- )
18
- }